paolo.francovigh Inserito: 3 ottobre 2007 Segnala Share Inserito: 3 ottobre 2007 Buongiorno a tutti,ho un piccolo problema con un DP/DP coupler che adesso vi spiego.Ho 2 CPU, una fissa 315-2DP ed una su un carrello mobile su rotaia 314C-2DP.Il sistema di comunicazione è stato realizzato con un trasmettitore profibus ad infrarossi della Sick.Dalla 315 esce il profibus che va sul DP copler, da qui esce e va al trasmettitore, sulla navetta c'è il ricevitore da cui esce il profibus che va alla 314.Ho programmato, in config hardware sul DP coupler, i primi 32 byte come ingressi consistenti da E256.0 in poi per la 315 (come uscite per la 314) e un blocco da 64 byte + un blocco da 32 byte (96 byte) come uscite consistenti da A256.0 in poi nella 315 (come ingressi sulla 314).Ho utilizzato SCF14 e SFC15 per leggere i dati da ambo le parti (usando le PAW e PEW tutto va benissimo): CALL "DPRD_DAT" LADDR :=W#16#100 RET_VAL:=#ErroreSFC14 RECORD :="P#DB50.DBX0.0 BYTE 32 CALL "DPWR_DAT" LADDR :=W#16#100 RECORD :=P#DB50.DBX32.0 BYTE 64 RET_VAL:=#ErroreSFC15 CALL "DPWR_DAT" LADDR :=W#16#100 RECORD :=P#DB50.DBX96.0 BYTE 32 RET_VAL:=#ErroreSFC15Questo su 315, sulla 314 è speculare.Lo scambio dati avviene correttamente per i primi 2 CALL mentre il terzo esce con errore 80B1.Ho sentito la Siemens, la quale mi ha consigliato di usare trasferimenti di max 32 byte e di utilizzare i "moduli univerali" del DP coupler impostando quindi:- modulo universale 32 byte ingressi consistenti- 3 moduli universali 32 byte uscite consistentiHo utilizzato quindi: CALL "DPRD_DAT" LADDR :=W#16#100 RET_VAL:=#ErroreSFC14 RECORD :="P#DB50.DBX0.0 BYTE 32 CALL "DPWR_DAT" LADDR :=W#16#100 RECORD :=P#DB50.DBX32.0 BYTE 32 RET_VAL:=#ErroreSFC15 CALL "DPWR_DAT" LADDR :=W#16#100 RECORD :=P#DB50.DBX64.0 BYTE 32 RET_VAL:=#ErroreSFC15 CALL "DPWR_DAT" LADDR :=W#16#100 RECORD :=P#DB50.DBX96.0 BYTE 32 RET_VAL:=#ErroreSFC15In questo modo riesco a trasferire tutte le aree senza errori ma con un problema: i dati scambiati ogni tanto sfarfallano, cioè se c'è scritto uno zero su una word, ogni tanto, per una frazione di secondo, appare un 16384, mentre se c'è scritto un numero, va a zero per una frazione di secondo.Tenete presente che le DB che ho utilizzato per lo scambio dati non vengono ancora scritte o aggiornate dal programma S7 quindi escludo la possibilità che il programma aggiorni qualche variabile, anche perchè il problema si presenta dal byte 32 in poi.Ringrazio in anticipo chiunque saprà aiutarmi.Paolo. Link al commento Condividi su altri siti More sharing options...
Gabriele Corrieri Inserita: 3 ottobre 2007 Segnala Share Inserita: 3 ottobre 2007 Ciaopoichè il trasmettitore sick penso sia un dispositivo trasparente, prova a tirare un cavo, tanto per escludere la cosa più ovvia, si può in casi estremi fare un filtraggio anti spurie ... ma è meglio capire e risolvere il problema che "patchare" a casaccio il software ...Ciao Link al commento Condividi su altri siti More sharing options...
paolo.francovigh Inserita: 4 ottobre 2007 Autore Segnala Share Inserita: 4 ottobre 2007 Ciao, si, il Sick è trasparente per il Profibus.Proverò ad usare un cavo al posto del Sick, spero non sia quello il motivo però.Intanto grazie. Link al commento Condividi su altri siti More sharing options...
paolo.francovigh Inserita: 4 ottobre 2007 Autore Segnala Share Inserita: 4 ottobre 2007 Ho provato a collegare direttamente la CPU al DP Coupler, senza il Sick, ma il problema rimane.Ho provato ad utilizzare aree da 16 byte (2x16 ingressi coerenti e 6x16 uscite coerenti nella 315 e speculare nella 314) ed utilizzare gli SFC per trasferire 16 byte: gli SFC non danno errori ma gli ingressi, da ambo le parti sfarfallano.L'unico modo che ho di far funzionare il tutto è con 1x32 byte di ingressi coerenti + 1x64 byte uscite coerenti + 1x32 uscite coerenti utilizzando SFC14 con i 32 IN, SFC15 con 64 out e gli ultimi 32 byte trasferirli alla DB come PEW (se utilizzo SFC15 per l'ultima area da 32 OUT mi esce con errore).Tutto questo consapevole che l'assistenza Siemens mi dice di utilizzare gli SFC con max 32 byte.Ho provato anche a togliere controlli-allarmi settati sul DP Coupler...niente da fare. Link al commento Condividi su altri siti More sharing options...
ken Inserita: 8 ottobre 2007 Segnala Share Inserita: 8 ottobre 2007 Prova a non utilizzare la consistenza tanto leggendo il manuale avevo letto che è garantita per i primi 4 byte poi non è garantita.(l'ho letto anni fa e penso di aver capito quanto ho scritto sopra, potrei però sbagliare) Link al commento Condividi su altri siti More sharing options...
paolo.francovigh Inserita: 11 ottobre 2007 Autore Segnala Share Inserita: 11 ottobre 2007 (modificato) Ciao Ken, quello che intendi tu, e che è anche riportato sul manuale degli SFC14-15 è che, essendo possibile leggere in modo coerente dalla periferia max 4 bytes (con i comandi L PED) gli SFC in questione sono usati per leggere più di 4 bytes.Questi SFC possono leggere o fino a 3 o più di 4 bytes: se leggi esattamente 4 bytes escono con errore.Comunque mi sono arreso, uso i L PEW per leggere direttamente la periferia. Proverò a ricontattare il Service Siemens Modificato: 11 ottobre 2007 da paolo.francovigh Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora