Jump to content
PLC Forum


marviw

Diagnostica Rete

Recommended Posts

marviw

Buonasera a tutti,

 

dovrei creare una diagnostica dei nodi profinet presenti in rete con relativo allarme a pannello.

Leggendo in giro ho capito che ci sono tantissime strade. Io ho usato l'istruzione SFB52, ma non riesco a visualizzare alcun cambio di stato o variazioni se stacco il cavo.

 

Dove sbaglio?

 

Grazie.Untitled.thumb.png.c8844e470052690840db22fcf5cd3c9a.pngUntitled1.thumb.png.3f2e1a42934e6ebe8db8a80933aaa110.pngUntitled2.thumb.png.0685cd978b861851656cd906890272ee.png

 

Untitled3.thumb.png.7c59bfe016f6df40cbb61d86dcfd47bf.pngUntitled.thumb.png.c8844e470052690840db22fcf5cd3c9a.png

Share this post


Link to post
Share on other sites

TravelMen

Ciao

io ho usato questa serie di funzione che fanno parte di PNIODiag. (FB126)

 

Saluti

 

Edited by TravelMen

Share this post


Link to post
Share on other sites
TravelMen
4 ore fa, TravelMen ha scritto:

Ciao

io ho usato questa serie di funzione che fanno parte di PNIODiag. (FB126)

 

Saluti

 

Controllo se il tuo SFB52 debba essere richiamato anche all'interno di qualche OB, nel coso di quello che ti ho indicato, se non lo richiami nel OB100 non funziona.

Share this post


Link to post
Share on other sites
battistella.roberto

Ciao @TravelMen

Ho scaricato il file del progetto PNIODiag (link che hai lasciato) ; ho trovato il file WinCC e lo posso vedere, ma il progetto S7 dove lo trovo ?

Puoi aiutarmi ? Grazie mille. Ciao.

Share this post


Link to post
Share on other sites
TravelMen

Buongiorno @battistella.roberto

 

Purtroppo non devi fartelo, anche se non servono molte cose, se richiami FB126 in ob 100 e poi una FC e leggi il DB il gioco è fatto, io mi sono creato un FB che mi da uno alla volta i nodi in errore vedi il codice qua sotto:

FUNCTION_BLOCK FB 1110
TITLE =
//ALPG 28/03/2019 creato da Gianluca (GLP)
//
//Funzione di diagnostica rete PROFINET, la funzione analizza e fornisce quali 
//nodi PROFINET sono in errore, visto il numero variabile di nodi, la funzione 
//genera un unico allarme assime ad numero del nodo in allarme, in modo ciclico, 
//ovvero nel caso ci siano più nodi in allarme, l'allarme viene resettato per poi 
//essere setteto con il nuovo numero di nodo in errore
//
//    DATA   | Ver |                 NOTE                               | FIRMA |
//24/03/2019 | 1.0 | Prima stesura a banco                              |  GLP  |
//25/03/2019 | 2.0 | Rifinitura messa in servizio                       |  GLP  |
//28/03/2019 | 2.1 | Test su macchina                                   |  GLP  |
VERSION : 0.1


VAR_INPUT
  Num_of_NODE : INT ;	//Number of node to checks
END_VAR
VAR_OUTPUT
  Node_in_ERROR : INT ;	
  PROFINET_NODE_ERROR : BOOL ;	//System profinet in error
  PROFINET_SYSTEM_ERROR : BOOL ;	
END_VAR
VAR
  Node_COUNTER : INT ;	
  Show_Next : INT ;	
  Time_SHOW_Error : INT ;	
  Next_Node_error : BOOL ;	
  _PROFINET_ERROR : BOOL ;	
END_VAR
VAR_TEMP
  POINTER_WORD : DWORD ;	
  PNIODiag_OUT : DWORD ;	
  SYTEM : STRUCT 	
   PROFINET_Had_Failed : BOOL ;	
   PROFINET_bit_9 : BOOL ;	
   PROFINET_bit_10 : BOOL ;	
   PROFINET_bit_11 : BOOL ;	
   PROFINET_bit_12 : BOOL ;	
   PROFINET_bit_13 : BOOL ;	
   PROFINET_bit_14 : BOOL ;	
   PROFINET_bit_15 : BOOL ;	
   PROFINET_OK : BOOL ;	
   PROFINET_Maintenance : BOOL ;	
   PROFINET_Faulty : BOOL ;	
   PROFINET_Failed : BOOL ;	
   PROFINET_bit_4 : BOOL ;	
   PROFINET_bit_5 : BOOL ;	
   PROFINET_Was_Mainten : BOOL ;	
   PROFINET_Was_Faulty : BOOL ;	
  END_STRUCT ;	
  PROFINET : STRUCT 	
   NODE_Had_Failed : BOOL ;	
   NODE_bit_9 : BOOL ;	
   NODE_bit_10 : BOOL ;	
   NODE_bit_11 : BOOL ;	
   NODE_bit_12 : BOOL ;	
   NODE_bit_13 : BOOL ;	
   NODE_bit_14 : BOOL ;	
   NODE_bit_15 : BOOL ;	
   NODE_OK : BOOL ;	
   NODE_Maintenance : BOOL ;	
   NODE_Faulty : BOOL ;	
   NODE_Failed : BOOL ;	
   NODE_bit_4 : BOOL ;	
   NODE_bit_5 : BOOL ;	
   NODE_Was_Mainten : BOOL ;	
   NODE_Was_Faulty : BOOL ;	
  END_STRUCT ;	
  Show_Next_Node_Error : BOOL ;	
  Next_Error_Show : BOOL ;	
  Reset_NODE_in_ALARM : BOOL ;	
END_VAR
BEGIN
NETWORK
TITLE =DIGNOSTICA FROFINET


      CALL FB   126 , DB  1260 (
           IN0                      := 2000,
           OUT1                     := #PNIODiag_OUT);

      LAR1  P##SYTEM; 
      L     DB1260.DBW 1642; // PROFINET IO sysstem 100
      T     LW [AR1,P#0.0]; 

      U     #SYTEM.PROFINET_OK; 
      R     #_PROFINET_ERROR; 

      U     #Next_Node_error; 
      O     #SYTEM.PROFINET_OK; 
      SPB   end; 

      L     #Node_COUNTER; 
      L     1; 
      >=I   ; 
      SPB   ok1; 
      T     #Node_COUNTER; 

NETWORK
TITLE =RICERCA NODO PROFINET in FAULT


ok1:  AUF   DB  2000;  // DB creato da FB126

      L     #Node_COUNTER; 
      L     1; 
      -I    ; 
      L     2; 
      *I    ; 
      SLD   3; 
      L     P#DBX 0.0; 
      +D    ; 
      T     #POINTER_WORD; 

      LAR1  P##PROFINET; 

      L     DBW [#POINTER_WORD]; 
      T     LW [AR1,P#0.0]; 

      U(    ; 
      O     #PROFINET.NODE_Faulty; 
      O     #PROFINET.NODE_Failed; 
      )     ; 
      SPBN  noFL; 
      =     #Next_Node_error; 

      L     #Node_COUNTER; 
      T     #Node_in_ERROR; 

noFL: NOP   0; 
      L     #Node_COUNTER; 
      L     1; 
      +I    ; 
      L     #Num_of_NODE; // numero massino di nodi da controllare
      TAK   ; 
      <I    ; 
      SPBN  okND; 
      L     1; // riparto dal primo nodo in fault
okND: T     #Node_COUNTER; 

NETWORK
TITLE =Visualizzazione di tutti i nodi in FAULT


end:  NOP   0; 

      U     #Next_Node_error; 
      UN    #_PROFINET_ERROR; 
      =     #Show_Next_Node_Error; 

      CALL FC     1 ( 											// FUNZIONE TON CREATA UTILIZZANDO OB1 Cycle tiemr
           START                    := #Show_Next_Node_Error,
           PRESET                   := 500,
           Q                        := #Next_Error_Show,
           ACCUM                    := #Show_Next);

      U     #Next_Error_Show; 
      R     #Next_Node_error; 
      S     #_PROFINET_ERROR; 

      CALL FC     1 (
           START                    := #_PROFINET_ERROR,
           PRESET                   := 5000,
           Q                        := #Reset_NODE_in_ALARM,
           ACCUM                    := #Time_SHOW_Error);

      U     #Reset_NODE_in_ALARM; 
      R     #_PROFINET_ERROR; 

      U     #_PROFINET_ERROR; 
      =     #PROFINET_NODE_ERROR; 

      UN    #SYTEM.PROFINET_OK; 
      =     #PROFINET_SYSTEM_ERROR; 

END_FUNCTION_BLOCK

Se poi ti serve qualche info fammi sapere.

saluti

P.S. L'FB riportato qua sopra può essere replicato da tutti, chiedo solo di lasciare l'autore.

Share this post


Link to post
Share on other sites
TravelMen

Dimenticavo il richiamo del mio FB l'ho fatto in OB1:

// Controllo nodi PROFINET
// Num_of_NODE data input max number of profinet nodes to check
// Node_in_ERROR data output number of node in FAULT refresh every 5 seconds
// PROFINET_ERROR data output cycle for 5 seconds up and 500 millisecond down

      CALL  "PN_DP_System_CHECK" , "PN_DP_Dignose"
       Num_of_NODE          :=10
       Node_in_ERROR        :=
       PROFINET_NODE_ERROR  :=
       PROFINET_SYSTEM_ERROR:=

// Unico allarme per ogni nodo su OP viene fatta la lista dei nodi
// Lista Nodi aganciata a Node_in_Error
// "DB_MMI_ALLARMI".ASSI.ALLARME980 

Saluti

Share this post


Link to post
Share on other sites
battistella.roberto

Ciao @TravelMen

Grazie per le spiegazioni.

Se ho ben capito tutto quello che hai incollato sopra è scritto in AWL e i blocchi interessati sono :

FB1110 - FB126 - FC1 e il tutto gestito da OB1

Non mi è chiaro cosa sia FC1 (viene menzionato OB1 nel commento....)

Se possibile, potresti farmi avere il file S7 di questo progetto, vorrei studiare bene questa applicazione.

Grazie mille. Ciao.

Share this post


Link to post
Share on other sites
TravelMen

Ciao

FC1 è una funzione che fa da temporizzatore ritardato all'inserzione, il classico TON, scritto in AWL che usa il tempo di ciclo di OB1 per incrementare un contatore.

 

Al posto di FC1 tu puoi mettere ad esempio un T250 ed un T251, oppure un SFB4 all'interno deì' FB1110 (che la funzione che ti ho postato)

 

Purtroppo il progetto intero non posso passarlo

 

Saluti

Share this post


Link to post
Share on other sites
battistella.roberto

Ciao @TravelMen

Comprendo per il progetto, potresti fare uno screen shot delle sole videate per i blocchi che hai incollato sopra ? Grazie.

Share this post


Link to post
Share on other sites
TravelMen

Ciao

forse mi sono spiegato male il post con il codice del FB1110 è l'interno del blocco chiamato da me "PN_DP_System_CHECK" nel post seguente e richiamato in OB1, mentre FB126 è il blocco PNIODiag della Siemens.

Quello che posso fare e mettere parti con i simboli tipo questa

     // Richiamo del FB della Siemens dove ho scelto il DB2000 (IN0 = 2000)
     CALL "PNIODiag" , "PNIODiag_DATA" (
           IN0                      := 2000,
           OUT1                     := #PNIODiag_OUT);

      LAR1  P##SYTEM; 
      L     "PNIODiag_DATA".STAT7[33]; // PROFINET IO sysstem 100
      T     LW [AR1,P#0.0]; 

Io ho incollato un solo blocco quello creato da me ovvero l'FB1110, di quali altri blocchi hai bisogno?

 

Saluti

Share this post


Link to post
Share on other sites
battistella.roberto

Ciao @TravelMen

Scusami, ma non riesco a ricostruire la corretta sequenza dei blocchi. Ti chiederei soltanto di poter avere tutte le parti di codice che interessano questa "progetto di diagnostica".

Un idea potrebbe anche quella di farmi avere il progetto S7 archiviato ma dove prima tu avrai tolto tutto quello che non interessa e che non puoi farmi avere/vedere.

Siccome sono molto interessato a creare questa parte di diagnostica, ti sarei veramente grato per la condivisione del file. Grazie.

Share this post


Link to post
Share on other sites
TravelMen

Ciao

 

va be, lo trovi sotto la sezione download con il nome "Plc_DP_PN_Diagnose", ti ho lasciato la configurazione hardware.

 

Saluti

Share this post


Link to post
Share on other sites
battistella.roberto

grazie mille.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...