drugo66 Inserito: 28 novembre 2015 Segnala Inserito: 28 novembre 2015 (modificato) Salve a tutti,ho un impianto con una CPU IM151-8, un paio di IM151-3 e un paio di lettori RFID, tutti collegati in Profinet; ho eseguito un po' di prove con la CPU e non mi richiama l'OB82 in caso di guasto dei moduli, ma l'OB85; fin qui, anche se non me lo aspettavo, ok.Mi piacerebbe, in caso di guasto, avvisare tramite messaggio OP quale modulo è sconnesso e/o guasto; in Profibus ho sempre utilizzato RDSYSST per sapere chi è connesso o meno (con 0x292 mi sembra), ma in Profinet, anche se lo ho provate un po' tutte, non ci riesco; mi basta sapere il modulo e non il tipo di guasto, anche perchè manca il tempo di fare una diagnostica per bene, anche se, con calma e tempo, mi piacerebbe approfondire.Qualche anima buona che mi indica la via ...Dimenticavo: per questioni che non sto qui a spiegare, sto utilizzando TIA Portal V13 SP1. Modificato: 28 novembre 2015 da drugo66
pigroplc Inserita: 29 novembre 2015 Segnala Inserita: 29 novembre 2015 Drugo,la diagnostica Profinet che io faccio è quella sotto descitta. L'avevo già allegata in una discussione precedente che ora non riesco a trovare.Io non adoro la gestione degli OB di interrupt quindi ho sempre privilegiato una diagnosica che possa sempre ciclare.TYPE UDT 996 VERSION : 0.1 STRUCT INDEX_struttura : WORD ; //0 telaio centrale; 1-64 Profibus 100-115 Profinet Bitmap_status : ARRAY [1 .. 2048 ] OF //Stazione difettosa 0-2047 BOOL ; END_STRUCT ; END_TYPE FUNCTION_BLOCK "Profinet-Dia" TITLE =DIAGNOSTICA RETI PROFINET AUTHOR : pigroplc VERSION : 0.1 VAR Profinet_100 : STRUCT flagREQ : BOOL ; flagBusy : BOOL ; FineAggiornamento : BOOL ; Nodo : UDT 996; END_STRUCT ; END_VAR VAR_TEMP ERROR : INT ; header : STRUCT lunghezza : WORD ; n_dr : WORD ; END_STRUCT ; END_VAR BEGIN NETWORK TITLE =Trigger per elaborazione ciclica UN #Profinet_100.flagREQ; UN #Profinet_100.flagBusy; L S5T#1S; SE T 72; U T 72; S #Profinet_100.flagREQ; NETWORK TITLE =SCANSIONE RETE PROFIBUS DP 100 // // Lettura Stazioni Presenti Profibus DP 100 CALL "RDSYSST" ( REQ := #Profinet_100.flagREQ, SZL_ID := W#16#694, INDEX := W#16#64,// Dorsale Profinet = 100 nella config Hw RET_VAL := #ERROR, BUSY := #Profinet_100.flagBusy, SZL_HEADER := #header, DR := "DB31".Profinet_100.Nodo); U #Profinet_100.flagREQ; UN #Profinet_100.flagBusy; R #Profinet_100.flagREQ; END_FUNCTION_BLOCK
drugo66 Inserita: 30 novembre 2015 Autore Segnala Inserita: 30 novembre 2015 PigroPlc grazie !!E' proprio vero che, a volte e soprattutto se sei stanco, basta poco per incasinarti la vita: non va, non funziona, ma l'errore è lì davanti a te e non lo vedi ...Poi basta poco, una pausa (sono in ritardo come pochi e non se parla) oppure un amico (se così posso permettermi di definirti) che ti da la dritta corretta.... continuavo a chiamare la funzione con INDEX = W#16#100 invece di W#16#64 e non l'ho "visto" finchè non ho scorso la tua di funzione.Grazie ancora
pigroplc Inserita: 30 novembre 2015 Segnala Inserita: 30 novembre 2015 Drugo,vai tranquillo, puoi considerarmi un tuo amico (è reciproco), è stato un piacere esserti stato d'aiuto.Pensa che se mi sono pure messo a commentarlo ci sarà pure stato un motivo ......
drugo66 Inserita: 30 novembre 2015 Autore Segnala Inserita: 30 novembre 2015 Allora spero di ricambiare un giorno (magari quando avrò finito sta' benedetta linea), anche se credo di aver capito che le tue applicazioni sono più sofisticate di quelle che devo scrivere io ...Ancora grazie
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