Vai al contenuto
PLC Forum


Diagnostica ET200S


drugo66

Messaggi consigliati

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: da drugo66
Link al commento
Condividi su altri siti


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

 

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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 ......:whistling:

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...