rddiego Inserito: 22 ottobre 2007 Segnala Share Inserito: 22 ottobre 2007 sto cercando di fare una diagnostica un po' accurata e vorrei sapere fino a che punto ci si può spingere e come.ho delle ET200M collegate in profibus su tre diverse reti DP (1,2,3).Ciascuna ET200M è composta di diversi moduli I/O e devo diagnosticarne il guasto.Normalmente utilizzo l'OB86 per diagnosticare un guasto generico sullo slave DP.Ma come si fa a diagnosticare il guasto per esempio del modulo di ingressi SM321 al posto connettore 4 dell'ET200M ? Link al commento Condividi su altri siti More sharing options...
Gianmario Pedrani Inserita: 22 ottobre 2007 Segnala Share Inserita: 22 ottobre 2007 si puoi farlo utilizzarlo vai qui e scaricati gli esempi devi usare un FB125ciao Link al commento Condividi su altri siti More sharing options...
vebernasconi Inserita: 30 ottobre 2007 Segnala Share Inserita: 30 ottobre 2007 (modificato) Di seguito un sorgente con un semplice esempio ( che di solito uso io).--------------------------------------------------------------------------------------DATA_BLOCK "Diagnostica"TITLE =VERSION : 0.1 STRUCT ET_200_3_1 : BOOL ; ET_200_3_2 : BOOL ; ET_200_4_1 : BOOL ; ET_200_4_2 : BOOL ; ET_200_5_1 : BOOL ; ET_200_5_2 : BOOL ; ET_200_6_1 : BOOL ; ET_200_6_2 : BOOL ; ET_200_7_1 : BOOL ; ET_200_7_2 : BOOL ; ET_200_8_1 : BOOL ; ET_200_8_2 : BOOL ; spare1_4 : BOOL ; spare1_5 : BOOL ; spare1_6 : BOOL ; spare1_7 : BOOL ; Errore_CPU1 : BOOL ; Errore_CPU2 : BOOL ; Master_1 : BOOL ; Master_2 : BOOL ; spare2_4 : BOOL ; spare2_5 : BOOL ; spare2_6 : BOOL ; spare2_7 : BOOL ; Fault_Batteria : BOOL ; spare3_1 : BOOL ; spare3_2 : BOOL ; spare3_3 : BOOL ; spare3_4 : BOOL ; spare3_5 : BOOL ; spare3_6 : BOOL ; spare3_7 : BOOL ; ALlarme_Periferia_In : BOOL ; ALlarme_Periferia_Out : BOOL ; Indirizzo : WORD ; Scheda_Estratta : BOOL ; SchedaErrata : BOOL ; SchedaGuasta : BOOL ; Indirizzo_Scheda_Estr : WORD ; Errore_Accesso_Scheda_In : BOOL ; Errore_Accesso_Scheda_Ou : BOOL ; Indirizzo_Scheda_In : WORD ; Indirizzo_Scheda_Out : WORD ; SlaveDP3 : BOOL ; SlaveDP4 : BOOL ; SlaveDP5 : BOOL ; SlaveDP6 : BOOL ; SlaveDP7 : BOOL ; SlaveDP8 : BOOL ; Diagnostica_H : ARRAY [1 .. 20 ] OF BYTE ; Appoggio : DWORD ; Rack1_sch_I0 : BOOL ; Rack1_sch_I1 : BOOL ; Rack1_sch_I2 : BOOL ; Rack_sch_I3 : BOOL ; Rack_sch_I4 : BOOL ; Rack_sch_I5 : BOOL ; Rack_sch_I6 : BOOL ; Rack1_sch_I7 : BOOL ; Rack2_schI0 : BOOL ; Rack2_schI1 : BOOL ; Rack2_schI2 : BOOL ; Rack2_schI3 : BOOL ; Rack2_schI4 : BOOL ; Rack2_schI5 : BOOL ; Rack2_schI6 : BOOL ; Rack2_schI7 : BOOL ; Rack3_schO0 : BOOL ; Rack3_schO1 : BOOL ; Rack3_schO2 : BOOL ; Rack3_schO3 : BOOL ; Rack3_schO4 : BOOL ; Rack3_schO5 : BOOL ; Rack3_schO6 : BOOL ; Rack3_schO7 : BOOL ; Rack4_schAI512 : BOOL ; Rack4_schAI528 : BOOL ; Rack4_schAI544 : BOOL ; Rack4_schAI560 : BOOL ; Rack4_schAI576 : BOOL ; Rack4_schAI592 : BOOL ; Rack4_schAO512 : BOOL ; Rack4_schO46 : BOOL ; Rack5_schO48 : BOOL ; Rack5_schO50 : BOOL ; Rack5_schO52 : BOOL ; Rack5_schO54 : BOOL ; Rack5_schO56 : BOOL ; Rack5_schO58 : BOOL ; Rack5_schO60 : BOOL ; Rack5_schO62 : BOOL ; Rack6_NU64 : BOOL ; Rack6_NU66 : BOOL ; Rack6_NU68 : BOOL ; Rack6_NU70 : BOOL ; Rack6_NU72 : BOOL ; Rack6_NU74 : BOOL ; Rack6_NU76 : BOOL ; Rack6_NU78 : BOOL ; Ma2 : BOOL ; Ma3 : BOOL ; Ma4 : BOOL ; Profibus_3_ok_4 : BOOL ; Profibus_3_ok_5 : BOOL ; Profibus_3_ok_6 : BOOL ; Profibus_3_ok_7 : BOOL ; Profibus_3_ok_8 : BOOL ; Profibus_3_ok_9 : BOOL ; Profibus_3_ok_10 : BOOL ; Profibus_3_ok_11 : BOOL ; Profibus_3_ok_12 : BOOL ; Profibus_3_ok_13 : BOOL ; Profibus_3_ok_14 : BOOL ; Profibus_3_ok_15 : BOOL ; Profibus_3_ok_16 : BOOL ; Profibus_3_ok_17 : BOOL ; Profibus_3_ok_18 : BOOL ; Profibus_3_ok_19 : BOOL ; Profibus_3_ok_20 : BOOL ; Profibus_3_ok_21 : BOOL ; Profibus_3_ok_22 : BOOL ; Profibus_3_ok_23 : BOOL ; Profibus_3_ok_24 : BOOL ; Profibus_3_ok_25 : BOOL ; Profibus_3_ok_26 : BOOL ; Profibus_3_ok_27 : BOOL ; Profibus_3_ok_28 : BOOL ; Profibus_3_ok_29 : BOOL ; Profibus_3_ok_30 : BOOL ; Profibus_3_ok_31 : BOOL ; Profibus_3_ok_32 : BOOL ; Profibus_3_ok_33 : BOOL ; Profibus_3_ok_34 : BOOL ; Profibus_3_ok_35 : BOOL ; Profibus_3_ok_36 : BOOL ; Profibus_3_ok_37 : BOOL ; Profibus_3_ok_38 : BOOL ; Profibus_3_ok_39 : BOOL ; Profibus_3_ok_40 : BOOL ; Profibus_3_ok_41 : BOOL ; Profibus_3_ok_42 : BOOL ; Profibus_3_ok_43 : BOOL ; Profibus_3_ok_44 : BOOL ; Profibus_3_ok_45 : BOOL ; Profibus_3_ok_46 : BOOL ; Profibus_3_ok_47 : BOOL ; Profibus_3_ok_48 : BOOL ; Profibus_3_ok_49 : BOOL ; Profibus_3_ok_50 : BOOL ; Profibus_3_ok_51 : BOOL ; Profibus_3_ok_52 : BOOL ; Profibus_3_ok_53 : BOOL ; Profibus_3_ok_54 : BOOL ; Profibus_3_ok_55 : BOOL ; Spare57 : BYTE ; Ma11 : BOOL ; Ma21 : BOOL ; Ma31 : BOOL ; Ma41 : BOOL ; Profibus_6_ok_4 : BOOL ; Profibus_6_ok_5 : BOOL ; Profibus_6_ok_6 : BOOL ; Profibus_6_ok_7 : BOOL ; Profibus_6_ok_8 : BOOL ; Profibus_6_ok_9 : BOOL ; Profibus_6_ok_10 : BOOL ; Profibus_6_ok_11 : BOOL ; Profibus_6_ok_12 : BOOL ; Profibus_6_ok_13 : BOOL ; Profibus_6_ok_14 : BOOL ; Profibus_6_ok_15 : BOOL ; Profibus_6_ok_16 : BOOL ; Profibus_6_ok_17 : BOOL ; Profibus_6_ok_18 : BOOL ; Profibus_6_ok_19 : BOOL ; Profibus_6_ok_20 : BOOL ; Profibus_6_ok_21 : BOOL ; Profibus_6_ok_22 : BOOL ; Profibus_6_ok_23 : BOOL ; Profibus_6_ok_24 : BOOL ; Profibus_6_ok_25 : BOOL ; Profibus_6_ok_26 : BOOL ; Profibus_6_ok_27 : BOOL ; Profibus_6_ok_28 : BOOL ; Profibus_6_ok_29 : BOOL ; Profibus_6_ok_30 : BOOL ; Profibus_6_ok_31 : BOOL ; Profibus_6_ok_32 : BOOL ; Profibus_6_ok_33 : BOOL ; Profibus_6_ok_34 : BOOL ; Profibus_6_ok_35 : BOOL ; Profibus_6_ok_36 : BOOL ; Profibus_6_ok_37 : BOOL ; Profibus_6_ok_38 : BOOL ; Profibus_6_ok_39 : BOOL ; Profibus_6_ok_40 : BOOL ; Profibus_6_ok_41 : BOOL ; Profibus_6_ok_42 : BOOL ; Profibus_6_ok_43 : BOOL ; Profibus_6_ok_44 : BOOL ; Profibus_6_ok_45 : BOOL ; Profibus_6_ok_46 : BOOL ; Profibus_6_ok_47 : BOOL ; Profibus_6_ok_48 : BOOL ; Profibus_6_ok_49 : BOOL ; Profibus_6_ok_50 : BOOL ; Profibus_6_ok_51 : BOOL ; Profibus_6_ok_52 : BOOL ; Profibus_6_ok_53 : BOOL ; Profibus_6_ok_54 : BOOL ; Profibus_6_ok_55 : BOOL ; CP441A_IF1_Fault : BOOL ; CP441A_IF2_Fault : BOOL ; CP441B_IF1_Fault : BOOL ; CP441B_IF2_Fault : BOOL ; CP443A_Fault : BOOL ; CP443B_Fault : BOOL ; spare656 : BOOL ; spare657 : BOOL ; Diagnostica_CP441 : ARRAY [1 .. 10 ] OF BYTE ; Alim1Rack1_Fault : BOOL ; //Alimentatore 1 Rack 1 Fault Alim2Rack1_Fault : BOOL ; //Alimentatore 2 Rack 1 Fault Alim1Rack2_Fault : BOOL ; //Alimentatore 1 Rack 2 Fault Alim2Rack2_Fault : BOOL ; //Alimentatore 2 Rack 2 Fault AlimSpare1 : BOOL ; //spare per allarmi alimentatore AlimSpare2 : BOOL ; //spare per allarmi alimentatore AlimSpare3 : BOOL ; //spare per allarmi alimentatore AlimSpare4 : BOOL ; //spare per allarmi alimentatore Spare770 : BOOL ; //spare Spare771 : BOOL ; //spare Spare772 : BOOL ; //spare Spare773 : BOOL ; //spare Spare774 : BOOL ; //spare Spare775 : BOOL ; //spare Spare776 : BOOL ; //spare Spare777 : BOOL ; //spare END_STRUCT ; BEGIN ET_200_3_1 := FALSE; ET_200_3_2 := FALSE; ET_200_4_1 := FALSE; ET_200_4_2 := FALSE; ET_200_5_1 := FALSE; ET_200_5_2 := FALSE; ET_200_6_1 := FALSE; ET_200_6_2 := FALSE; ET_200_7_1 := FALSE; ET_200_7_2 := FALSE; ET_200_8_1 := FALSE; ET_200_8_2 := FALSE; spare1_4 := FALSE; spare1_5 := FALSE; spare1_6 := FALSE; spare1_7 := FALSE; Errore_CPU1 := FALSE; Errore_CPU2 := FALSE; Master_1 := FALSE; Master_2 := FALSE; spare2_4 := FALSE; spare2_5 := FALSE; spare2_6 := FALSE; spare2_7 := FALSE; Fault_Batteria := FALSE; spare3_1 := FALSE; spare3_2 := FALSE; spare3_3 := FALSE; spare3_4 := FALSE; spare3_5 := FALSE; spare3_6 := FALSE; spare3_7 := FALSE; ALlarme_Periferia_In := FALSE; ALlarme_Periferia_Out := FALSE; Indirizzo := W#16#0; Scheda_Estratta := FALSE; SchedaErrata := FALSE; SchedaGuasta := FALSE; Indirizzo_Scheda_Estr := W#16#0; Errore_Accesso_Scheda_In := FALSE; Errore_Accesso_Scheda_Ou := FALSE; Indirizzo_Scheda_In := W#16#0; Indirizzo_Scheda_Out := W#16#0; SlaveDP3 := FALSE; SlaveDP4 := FALSE; SlaveDP5 := FALSE; SlaveDP6 := FALSE; SlaveDP7 := FALSE; SlaveDP8 := FALSE; Diagnostica_H[1] := B#16#0; Diagnostica_H[2] := B#16#0; Diagnostica_H[3] := B#16#0; Diagnostica_H[4] := B#16#0; Diagnostica_H[5] := B#16#0; Diagnostica_H[6] := B#16#0; Diagnostica_H[7] := B#16#0; Diagnostica_H[8] := B#16#0; Diagnostica_H[9] := B#16#0; Diagnostica_H[10] := B#16#0; Diagnostica_H[11] := B#16#0; Diagnostica_H[12] := B#16#0; Diagnostica_H[13] := B#16#0; Diagnostica_H[14] := B#16#0; Diagnostica_H[15] := B#16#0; Diagnostica_H[16] := B#16#0; Diagnostica_H[17] := B#16#0; Diagnostica_H[18] := B#16#0; Diagnostica_H[19] := B#16#0; Diagnostica_H[20] := B#16#0; Appoggio := DW#16#0; Rack1_sch_I0 := FALSE; Rack1_sch_I1 := FALSE; Rack1_sch_I2 := FALSE; Rack_sch_I3 := FALSE; Rack_sch_I4 := FALSE; Rack_sch_I5 := FALSE; Rack_sch_I6 := FALSE; Rack1_sch_I7 := FALSE; Rack2_schI0 := FALSE; Rack2_schI1 := FALSE; Rack2_schI2 := FALSE; Rack2_schI3 := FALSE; Rack2_schI4 := FALSE; Rack2_schI5 := FALSE; Rack2_schI6 := FALSE; Rack2_schI7 := FALSE; Rack3_schO0 := FALSE; Rack3_schO1 := FALSE; Rack3_schO2 := FALSE; Rack3_schO3 := FALSE; Rack3_schO4 := FALSE; Rack3_schO5 := FALSE; Rack3_schO6 := FALSE; Rack3_schO7 := FALSE; Rack4_schAI512 := FALSE; Rack4_schAI528 := FALSE; Rack4_schAI544 := FALSE; Rack4_schAI560 := FALSE; Rack4_schAI576 := FALSE; Rack4_schAI592 := FALSE; Rack4_schAO512 := FALSE; Rack4_schO46 := FALSE; Rack5_schO48 := FALSE; Rack5_schO50 := FALSE; Rack5_schO52 := FALSE; Rack5_schO54 := FALSE; Rack5_schO56 := FALSE; Rack5_schO58 := FALSE; Rack5_schO60 := FALSE; Rack5_schO62 := FALSE; Rack6_NU64 := FALSE; Rack6_NU66 := FALSE; Rack6_NU68 := FALSE; Rack6_NU70 := FALSE; Rack6_NU72 := FALSE; Rack6_NU74 := FALSE; Rack6_NU76 := FALSE; Rack6_NU78 := FALSE; Ma2 := FALSE; Ma3 := FALSE; Ma4 := FALSE; Profibus_3_ok_4 := FALSE; Profibus_3_ok_5 := FALSE; Profibus_3_ok_6 := FALSE; Profibus_3_ok_7 := FALSE; Profibus_3_ok_8 := FALSE; Profibus_3_ok_9 := FALSE; Profibus_3_ok_10 := FALSE; Profibus_3_ok_11 := FALSE; Profibus_3_ok_12 := FALSE; Profibus_3_ok_13 := FALSE; Profibus_3_ok_14 := FALSE; Profibus_3_ok_15 := FALSE; Profibus_3_ok_16 := FALSE; Profibus_3_ok_17 := FALSE; Profibus_3_ok_18 := FALSE; Profibus_3_ok_19 := FALSE; Profibus_3_ok_20 := FALSE; Profibus_3_ok_21 := FALSE; Profibus_3_ok_22 := FALSE; Profibus_3_ok_23 := FALSE; Profibus_3_ok_24 := FALSE; Profibus_3_ok_25 := FALSE; Profibus_3_ok_26 := FALSE; Profibus_3_ok_27 := FALSE; Profibus_3_ok_28 := FALSE; Profibus_3_ok_29 := FALSE; Profibus_3_ok_30 := FALSE; Profibus_3_ok_31 := FALSE; Profibus_3_ok_32 := FALSE; Profibus_3_ok_33 := FALSE; Profibus_3_ok_34 := FALSE; Profibus_3_ok_35 := FALSE; Profibus_3_ok_36 := FALSE; Profibus_3_ok_37 := FALSE; Profibus_3_ok_38 := FALSE; Profibus_3_ok_39 := FALSE; Profibus_3_ok_40 := FALSE; Profibus_3_ok_41 := FALSE; Profibus_3_ok_42 := FALSE; Profibus_3_ok_43 := FALSE; Profibus_3_ok_44 := FALSE; Profibus_3_ok_45 := FALSE; Profibus_3_ok_46 := FALSE; Profibus_3_ok_47 := FALSE; Profibus_3_ok_48 := FALSE; Profibus_3_ok_49 := FALSE; Profibus_3_ok_50 := FALSE; Profibus_3_ok_51 := FALSE; Profibus_3_ok_52 := FALSE; Profibus_3_ok_53 := FALSE; Profibus_3_ok_54 := FALSE; Profibus_3_ok_55 := FALSE; Spare57 := B#16#0; Ma11 := FALSE; Ma21 := FALSE; Ma31 := FALSE; Ma41 := FALSE; Profibus_6_ok_4 := FALSE; Profibus_6_ok_5 := FALSE; Profibus_6_ok_6 := FALSE; Profibus_6_ok_7 := FALSE; Profibus_6_ok_8 := FALSE; Profibus_6_ok_9 := FALSE; Profibus_6_ok_10 := FALSE; Profibus_6_ok_11 := FALSE; Profibus_6_ok_12 := FALSE; Profibus_6_ok_13 := FALSE; Profibus_6_ok_14 := FALSE; Profibus_6_ok_15 := FALSE; Profibus_6_ok_16 := FALSE; Profibus_6_ok_17 := FALSE; Profibus_6_ok_18 := FALSE; Profibus_6_ok_19 := FALSE; Profibus_6_ok_20 := FALSE; Profibus_6_ok_21 := FALSE; Profibus_6_ok_22 := FALSE; Profibus_6_ok_23 := FALSE; Profibus_6_ok_24 := FALSE; Profibus_6_ok_25 := FALSE; Profibus_6_ok_26 := FALSE; Profibus_6_ok_27 := FALSE; Profibus_6_ok_28 := FALSE; Profibus_6_ok_29 := FALSE; Profibus_6_ok_30 := FALSE; Profibus_6_ok_31 := FALSE; Profibus_6_ok_32 := FALSE; Profibus_6_ok_33 := FALSE; Profibus_6_ok_34 := FALSE; Profibus_6_ok_35 := FALSE; Profibus_6_ok_36 := FALSE; Profibus_6_ok_37 := FALSE; Profibus_6_ok_38 := FALSE; Profibus_6_ok_39 := FALSE; Profibus_6_ok_40 := FALSE; Profibus_6_ok_41 := FALSE; Profibus_6_ok_42 := FALSE; Profibus_6_ok_43 := FALSE; Profibus_6_ok_44 := FALSE; Profibus_6_ok_45 := FALSE; Profibus_6_ok_46 := FALSE; Profibus_6_ok_47 := FALSE; Profibus_6_ok_48 := FALSE; Profibus_6_ok_49 := FALSE; Profibus_6_ok_50 := FALSE; Profibus_6_ok_51 := FALSE; Profibus_6_ok_52 := FALSE; Profibus_6_ok_53 := FALSE; Profibus_6_ok_54 := FALSE; Profibus_6_ok_55 := FALSE; CP441A_IF1_Fault := FALSE; CP441A_IF2_Fault := FALSE; CP441B_IF1_Fault := FALSE; CP441B_IF2_Fault := FALSE; CP443A_Fault := FALSE; CP443B_Fault := FALSE; spare656 := FALSE; spare657 := FALSE; Diagnostica_CP441[1] := B#16#0; Diagnostica_CP441[2] := B#16#0; Diagnostica_CP441[3] := B#16#0; Diagnostica_CP441[4] := B#16#0; Diagnostica_CP441[5] := B#16#0; Diagnostica_CP441[6] := B#16#0; Diagnostica_CP441[7] := B#16#0; Diagnostica_CP441[8] := B#16#0; Diagnostica_CP441[9] := B#16#0; Diagnostica_CP441[10] := B#16#0; Alim1Rack1_Fault := FALSE; Alim2Rack1_Fault := FALSE; Alim1Rack2_Fault := FALSE; Alim2Rack2_Fault := FALSE; AlimSpare1 := FALSE; AlimSpare2 := FALSE; AlimSpare3 := FALSE; AlimSpare4 := FALSE; Spare770 := FALSE; Spare771 := FALSE; Spare772 := FALSE; Spare773 := FALSE; Spare774 := FALSE; Spare775 := FALSE; Spare776 := FALSE; Spare777 := FALSE; END_DATA_BLOCKFUNCTION "DiagnosticaHW" : VOIDTITLE =VERSION : 0.1VAR_TEMP AKT_SZL_HEADER : STRUCT //Struttura come operando attuale per SFC 51 LENTHDR : WORD ; //Lunghezza di un record di dati N_DR : WORD ; //Numero dei record di dati END_STRUCT ; AKT_SZL_HEADER_1 : STRUCT //Struttura come operando attuale per SFC 51 LENTHDR : WORD ; //Lunghezza di un record di dati END_STRUCT ; END_VARBEGINNETWORKTITLE =Redundancy Fault and Check wich one is master or slave CALL "RDSYSST" (//SFC 51 "RDSYSST" (Read system status) REQ := TRUE, SZL_ID := W#16#71,//Read diagnostic data INDEX := W#16#0, RET_VAL := DB90.DBW 40, BUSY := DB90.DBX 42.0, SZL_HEADER := #AKT_SZL_HEADER, DR := P#DB90.DBX 20.0 WORD 20); UN DB90.DBX 42.0; U( ; U( ; L DB90.DBW 28; L W#16#7; <=I ; ) ; O ; U( ; L DB90.DBW 28; L W#16#A; >=I ; ) ; ) ; L S5T#5S; SE "TDelayCPUFault"; U "TDelayCPUFault"; = "Diagnostica".Errore_CPU1; UN DB90.DBX 42.0; U( ; U( ; L DB90.DBW 30; L W#16#7; <=I ; ) ; O ; U( ; L DB90.DBW 30; L W#16#A; >=I ; ) ; ) ; L S5T#5S; SE "TDelayCPU2Fault"; U "TDelayCPU2Fault"; = "Diagnostica".Errore_CPU2; UN DB90.DBX 42.0; U DB90.DBX 22.4; = "Diagnostica".Master_1; UN DB90.DBX 42.0; U DB90.DBX 22.5; = "Diagnostica".Master_2; NETWORKTITLE =Fault ET 200 Node 3// ET200 3 CALL "RDSYSST" (//SFC 51 "RDSYSST" (lettura lista stati di sistema) REQ := TRUE, SZL_ID := W#16#C75,//Read diagnostic status data INDEX := W#16#1FF2,//Card diagnostic address RET_VAL := DB90.DBW 40, BUSY := DB90.DBX 42.0, SZL_HEADER := #AKT_SZL_HEADER, DR := P#DB90.DBX 20.0 WORD 20);//Master DP1 e problemi di comunicazione su DP0 UN DB90.DBX 42.0; U DB90.DBX 34.0; U DB90.DBX 35.1; = "Diagnostica".ET_200_3_2; //Master DP0 e problemi di comunicazione su DP1 UN DB90.DBX 42.0; U DB90.DBX 34.1; U DB90.DBX 35.0; = "Diagnostica".ET_200_3_1; //Non comunica ne DP0 ne DP1 UN DB90.DBX 42.0; U DB90.DBX 35.0; U DB90.DBX 35.1; = "Diagnostica".SlaveDP3; NETWORKTITLE =Fault ET 200 Node 4// ET200 4// ET200 4 CALL "RDSYSST" (//SFC 51 "RDSYSST" (Read system status list) REQ := TRUE, SZL_ID := W#16#C75,//Read disgnostic data INDEX := W#16#1FEE, RET_VAL := DB90.DBW 40, BUSY := DB90.DBX 42.0, SZL_HEADER := #AKT_SZL_HEADER, DR := P#DB90.DBX 20.0 WORD 20);//Master DP1 e problemi di comunicazione su DP0 UN DB90.DBX 42.0; U DB90.DBX 34.0; U DB90.DBX 35.1; = "Diagnostica".ET_200_4_2; //Master DP0 e problemi di comunicazione su DP1 UN DB90.DBX 42.0; U DB90.DBX 34.1; U DB90.DBX 35.0; = "Diagnostica".ET_200_4_1; //Non comunica ne DP0 ne DP1 UN DB90.DBX 42.0; U DB90.DBX 35.0; U DB90.DBX 35.1; = "Diagnostica".SlaveDP4; NETWORKTITLE =Fault ET 200 Node 5// ET200 5// ET200 5 CALL "RDSYSST" (//SFC 51 "RDSYSST" (lettura lista stati di sistema) REQ := TRUE, SZL_ID := W#16#C75,//read system status data INDEX := W#16#1FEC,// Diagnostic address of the card RET_VAL := DB90.DBW 40, BUSY := DB90.DBX 42.0, SZL_HEADER := #AKT_SZL_HEADER, DR := P#DB90.DBX 20.0 WORD 20);//Master DP1 e problemi di comunicazione su DP0 UN DB90.DBX 42.0; U DB90.DBX 34.0; U DB90.DBX 35.1; = "Diagnostica".ET_200_5_2; //Master DP0 e problemi di comunicazione su DP1 UN DB90.DBX 42.0; U DB90.DBX 34.1; U DB90.DBX 35.0; = "Diagnostica".ET_200_5_1; //Non comunica ne DP0 ne DP1 UN DB90.DBX 42.0; U DB90.DBX 35.0; U DB90.DBX 35.1; = "Diagnostica".SlaveDP5; NETWORKTITLE =Errore ET 200 Nodo 6// ET200 6// ET200 6 CALL "RDSYSST" (//SFC 51 "RDSYSST" (lettura lista stati di sistema) REQ := TRUE, SZL_ID := W#16#C75,//Read status diagnostic data INDEX := W#16#1FEA, RET_VAL := DB90.DBW 40, BUSY := DB90.DBX 42.0, SZL_HEADER := #AKT_SZL_HEADER, DR := P#DB90.DBX 20.0 WORD 20);//Master DP1 e problemi di comunicazione su DP0 UN DB90.DBX 42.0; U DB90.DBX 34.0; U DB90.DBX 35.1; = "Diagnostica".ET_200_6_2; //Master DP0 e problemi di comunicazione su DP1 UN DB90.DBX 42.0; U DB90.DBX 34.1; U DB90.DBX 35.0; = "Diagnostica".ET_200_6_1; //Non comunica ne DP0 ne DP1 UN DB90.DBX 42.0; U DB90.DBX 35.0; U DB90.DBX 35.1; = "Diagnostica".SlaveDP6; END_FUNCTION---------------------------------------------------------------------------------Basta copiarlo come file di testo, salvarlo come diagnosi.awl, importarlo come sorgente e poi ricompilarlo, creerà una FC90 ed una db90.Spero che ti sia utile. Usa molto anche l'aiuto sulla funzione SFC51 che è la chiave di tutta la diagnostica siemens.Ciao,Vittorio Modificato: 30 ottobre 2007 da vebernasconi Link al commento Condividi su altri siti More sharing options...
vebernasconi Inserita: 30 ottobre 2007 Segnala Share Inserita: 30 ottobre 2007 Eccoti anche un altro ob, in effetti l'OB82, ma è troppo lungo per postarlo. Te ne copio un pezzettino...-------------------------------------------------------------------------------------------------------ORGANIZATION_BLOCK "I/O_FLT1"TITLE = "I/O Point Fault"//INTERVENTO PER RICHIAMO DA SCHEDE CON INTERRUPT DI DIAGNOST(AI) //Call on Fault by peripheral with diagnostic interruptVERSION : 0.1VAR_TEMP OB82_EV_CLASS : BYTE ; //16#39, Event class 3, Entering event state, Internal fault event OB82_FLT_ID : BYTE ; //16#XX, Fault identifcation code OB82_PRIORITY : BYTE ; //Priority of OB Execution OB82_OB_NUMBR : BYTE ; //82 (Organization block 82, OB82) OB82_RESERVED_1 : BYTE ; //Reserved for system OB82_IO_FLAG : BYTE ; //Input (01010100), Output (01010101) OB82_MDL_ADDR : WORD ; //Base address of module with fault OB82_MDL_DEFECT : BOOL ; //Module defective OB82_INT_FAULT : BOOL ; //Internal fault OB82_EXT_FAULT : BOOL ; //External fault OB82_PNT_INFO : BOOL ; //Point information OB82_EXT_VOLTAGE : BOOL ; //External voltage low OB82_FLD_CONNCTR : BOOL ; //Field wiring connector missing OB82_NO_CONFIG : BOOL ; //Module has no configuration data OB82_CONFIG_ERR : BOOL ; //Module has configuration error OB82_MDL_TYPE : BYTE ; //Type of module OB82_SUB_MDL_ERR : BOOL ; //Sub-Module is missing or has error OB82_COMM_FAULT : BOOL ; //Communication fault OB82_MDL_STOP : BOOL ; //Module is stopped OB82_WTCH_DOG_FLT : BOOL ; //Watch dog timer stopped module OB82_INT_PS_FLT : BOOL ; //Internal power supply fault OB82_PRIM_BATT_FLT : BOOL ; //Primary battery is in fault OB82_BCKUP_BATT_FLT : BOOL ; //Backup battery is in fault OB82_RESERVED_2 : BOOL ; //Reserved for system OB82_RACK_FLT : BOOL ; //Rack fault, only for bus interface module OB82_PROC_FLT : BOOL ; //Processor fault OB82_EPROM_FLT : BOOL ; //EPROM fault OB82_RAM_FLT : BOOL ; //RAM fault OB82_ADU_FLT : BOOL ; //ADU fault OB82_FUSE_FLT : BOOL ; //Fuse fault OB82_HW_INTR_FLT : BOOL ; //Hardware interupt input in fault OB82_RESERVED_3 : BOOL ; //Reserved for system OB82_DATE_TIME : DATE_AND_TIME ; //Date and time OB82 started ALLARME : BOOL ; RIENTRO : BOOL ; INGRESSI : BOOL ; USCITE : BOOL ; END_VARBEGINNETWORKTITLE =Evento entrante o uscente?(Check if alarm is gone or incoming)//Controllo il tipo di periferica in errore e se l'evento si è verificato oppure //se l'evento è stato risolto////Check wich peripheral type is in fault and if the event is coming or gone // U( ; L #OB82_EV_CLASS; // tipo di evento (TYPE OF EVENT) L B#16#39; // evento in arrivo (EVENT COMING) ==I ; ) ; = #ALLARME; TAK ; // Scambia ACCU1 con ACCU2 ( exchange ACCU1 and ACCU2) L B#16#38; // evento in partenza (ALARM GOING) ==I ; = #RIENTRO; // allarme rientrato (NO ALARM)// Se ho l'allarme allora controllo se la periferica è in ingresso// Got the alarm? then check if it's on input peripheral U #ALLARME; // allarme arrivato (ALARM PRESENT) U( ; L #OB82_IO_FLAG; L B#16#54; // SCHEDA DI INGRESSO (INPUT MODULE) ==I ; ) ; S "Diagnostica".ALlarme_Periferia_In; // Oppure se la scheda è di uscita// Or the failure in on output card U #ALLARME; U( ; L #OB82_IO_FLAG; L B#16#55; // scheda di Uscita (Output module) ==I ; ) ; S "Diagnostica".ALlarme_Periferia_Out; // Se invece l'allame è rientrato, allora resetto l'allarme// Alarm on input peripheral gone? Reset alarm U #RIENTRO; // allarme arrivato (ALARM PRESENT) U( ; L #OB82_IO_FLAG; L B#16#54; // SCHEDA DI INGRESSO (INPUT MODULE) ==I ; ) ; R "Diagnostica".ALlarme_Periferia_In; // Oppure se la scheda è di uscita// Alarm on ouput peripheral gone? Reset it U #RIENTRO; U( ; L #OB82_IO_FLAG; L B#16#55; // scheda di Uscita (Output module) ==I ; ) ; R "Diagnostica".ALlarme_Periferia_Out; NETWORKTITLE =INDIRIZZO MODULO IN ERRORE ( Address of fault module) L #OB82_MDL_ADDR; T "Diagnostica".Indirizzo; NETWORKTITLE =Individuo la scheda con errore (Check wich card got fault)//Controllo se ho il bit di scheda con errore e se così confronto l'indirizzo //della scheda estratta con quello delle schede fino a scoprire quale scheda ho //in avaria.//Check if I've got the error bit on the card, if so, compare the address to find //out wich is the card with failure////*************************************************************************// Rack1 Pos 0 scheda DI //************************************************************************* U "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta (Fault Card taked out) U #ALLARME; U( ; L "Diagnostica".Indirizzo; L 0; ==I ; ) ; S "Diagnostica".Rack1_sch_I0; UN "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #RIENTRO; U( ; L "Diagnostica".Indirizzo; L 0; ==I ; ) ; R "Diagnostica".Rack1_sch_I0; //*************************************************************************// Rack1 Pos 1 scheda DI //************************************************************************* U "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #ALLARME; U( ; L "Diagnostica".Indirizzo; L 4; ==I ; ) ; S "Diagnostica".Rack1_sch_I1; UN "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #RIENTRO; U( ; L "Diagnostica".Indirizzo; L 4; ==I ; ) ; R "Diagnostica".Rack1_sch_I1; //*************************************************************************// Rack1 Pos 2 scheda DI //************************************************************************* U "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #ALLARME; U( ; L "Diagnostica".Indirizzo; L 8; ==I ; ) ; S "Diagnostica".Rack1_sch_I2; UN "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #RIENTRO; U( ; L "Diagnostica".Indirizzo; L 8; ==I ; ) ; R "Diagnostica".Rack1_sch_I2; //*************************************************************************// Rack1 Pos 3 scheda DI //************************************************************************* U "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #ALLARME; U( ; L "Diagnostica".Indirizzo; L 12; ==I ; ) ; S "Diagnostica".Rack_sch_I3; UN "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #RIENTRO; U( ; L "Diagnostica".Indirizzo; L 12; ==I ; ) ; R "Diagnostica".Rack_sch_I3; //*************************************************************************// Rack 2 Pos 5 scheda DI //************************************************************************* U "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #ALLARME; U( ; L "Diagnostica".Indirizzo; L 52; ==I ; ) ; S "Diagnostica".Rack2_schI5; UN "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #RIENTRO; U( ; L "Diagnostica".Indirizzo; L 52; ==I ; ) ; R "Diagnostica".Rack2_schI5; //*************************************************************************// Rack 2 Pos 6 scheda DI //************************************************************************* U "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #ALLARME; U( ; L "Diagnostica".Indirizzo; L 56; ==I ; ) ; S "Diagnostica".Rack2_schI6; UN "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #RIENTRO; U( ; L "Diagnostica".Indirizzo; L 56; ==I ; ) ; R "Diagnostica".Rack2_schI6; //*************************************************************************// Rack 2 Pos 7 scheda DI //************************************************************************* U "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #ALLARME; U( ; L "Diagnostica".Indirizzo; L 60; ==I ; ) ; S "Diagnostica".Rack2_schI7; UN "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #RIENTRO; U( ; L "Diagnostica".Indirizzo; L 60; ==I ; ) ; R "Diagnostica".Rack2_schI7; //////////////////////////////////////////////////////////////////////////=====================================================================/////////////////////////////////////////////////////////////////////////*************************************************************************// Rack 3 Pos 0 scheda DO //************************************************************************* U "Diagnostica".ALlarme_Periferia_Out; // errore scheda estratta ( Fault Card taked Out) U #ALLARME; U( ; L "Diagnostica".Indirizzo; L 0; ==I ; ) ; S "Diagnostica".Rack3_schO0; UN "Diagnostica".ALlarme_Periferia_Out; // errore scheda estratta ( Fault Card taked Out) U #RIENTRO; U( ; L "Diagnostica".Indirizzo; L 0; ==I ; ) ; R "Diagnostica".Rack3_schO0; //*************************************************************************// Rack 4 Pos 0 scheda AI512 //************************************************************************* U "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #ALLARME; U( ; L "Diagnostica".Indirizzo; L 512; ==I ; ) ; S "Diagnostica".Rack4_schAI512; UN "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #RIENTRO; U( ; L "Diagnostica".Indirizzo; L 512; ==I ; ) ; R "Diagnostica".Rack4_schAI512; //*************************************************************************// Rack4 Pos 1 scheda AI528//************************************************************************* U "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #ALLARME; U( ; L "Diagnostica".Indirizzo; L 528; ==I ; ) ; S "Diagnostica".Rack4_schAI528; UN "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #RIENTRO; U( ; L "Diagnostica".Indirizzo; L 528; ==I ; ) ; R "Diagnostica".Rack4_schAI528; //*************************************************************************// Rack4 Pos 2 scheda AI544//************************************************************************* U "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #ALLARME; U( ; L "Diagnostica".Indirizzo; L 544; ==I ; ) ; S "Diagnostica".Rack4_schAI544; UN "Diagnostica".ALlarme_Periferia_In; // errore scheda estratta ( Fault Card taked Out) U #RIENTRO; U( ; L "Diagnostica".Indirizzo; L 544; ==I ; ) ; R "Diagnostica".Rack4_schAI544; //////////////////////////////////////////////////////////////////////////=====================================================================///////////////////////////////////////////////////////////////////////NETWORKTITLE =Diagnosi CP443A U #ALLARME; U "Diagnostica".ALlarme_Periferia_In; U( ; L "Diagnostica".Indirizzo; L 8177; ==I ; ) ; S "AlmCP443A"; U #RIENTRO; UN "Diagnostica".ALlarme_Periferia_In; U( ; L "Diagnostica".Indirizzo; L 8177; ==I ; ) ; R "AlmCP443A"; NETWORKTITLE =Diagnosi CP443B U #ALLARME; U "Diagnostica".ALlarme_Periferia_In; U( ; L "Diagnostica".Indirizzo; L 8176; ==I ; ) ; S "AlmCP443B"; U #ALLARME; UN "Diagnostica".ALlarme_Periferia_In; U( ; L "Diagnostica".Indirizzo; L 8176; ==I ; ) ; R "AlmCP443B"; END_ORGANIZATION_BLOCK----------------------------------------------------------------------------Se trovi altre notizie posta!Ciao,Vittorio Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 7 novembre 2007 Autore Segnala Share Inserita: 7 novembre 2007 per motivi di tempo (troppo lavoro) non ho valutato il codice postato, ma a priori so che mi sarà utile.Comunque la FB125 scaricabile dal sito di Siemens è un ottimo strumento.Ad ogni modo ho optato per una diagnostica più generica così segnalerò un generico fault sul remotato xyz e questo tranquillamente in OB82 Link al commento Condividi su altri siti More sharing options...
Martinelli.Paolo Inserita: 5 dicembre 2008 Segnala Share Inserita: 5 dicembre 2008 Buonasera a tutti...Ho guardato i post precedenti perchè devo realizzare la diagnostica di tre moduli ET200M. Devo diagnosticare se il modulo Et200 è ok e anche se le schede I/O dei moduli sono ok.Avevo fatto quanche tempo fa la diagnostica dei moduli ET200s utilizzando la funzione SFC13 (Diagnostica di Slave DP) è funzionava bene. Con i moduli ET200M non funziona correttamente anche se in teoria (anche secondo il tecnico siemens che ho cantattato) dovrebbe funzionare.Qualcuno mi saprebbe dire se ha mai fatto la diagnostica con la SFC13 ed ha avuto problemi? Ho guardato anche la FB105 come postato in precedenza ma l'. che ho scaricato non spiega molto bene come funziona e come deve essere gestita...Qualcuno mi saprebbe dare qualche consiglio?GrazieBuona serata e buon fine settimana....Ciao ciao 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