S.angioni Inserito: 30 luglio 2008 Segnala Share Inserito: 30 luglio 2008 Salve a tutti,vorrei implementare la diagnostica dei moduli I/O tramite software, ovvero utilizzare una qualche funzione che mi sappia dire "il modulo tot è in fault/spento/programmato male". Mamma siemens ha già preparato qualcosa di simile?GrazieSA Link al commento Condividi su altri siti More sharing options...
dott.cicala Inserita: 1 agosto 2008 Segnala Share Inserita: 1 agosto 2008 Certo che sì, leggi la guida di Step 7 sezione "guida ai blocchi organizzativi" troverai fra i tanti ob anche i seguenti, utilizzabili in base al tipo di cpu impiegata.OB 80 Errore temporaleOB 81 Errore di alimentazioneOB 82 Allarme di diagnosticaOB 83 Allarme di estrazione/inserimentoOB 84 Errore hardware CPUOB 85 Errore di esecuzione programmaOB 86 Avaria di un'apparecchiatura di ampliamento, di un sistema master DP o di una stazione con periferia decentrataOB 87 Errore di comunicazioneOB 121 Errore di programmazioneOB 122 Errore di accesso alla periferiaBasta lavorare sulle variabili locali magari trasferendole da qualche parte ad esempio CALL "BLKMOV" SRCBLK :=P#L 0.0 BYTE 20 RET_VAL:=#RTV DSTBLK :="Fault OB82".FAULTSCiao Link al commento Condividi su altri siti More sharing options...
S.angioni Inserita: 1 agosto 2008 Autore Segnala Share Inserita: 1 agosto 2008 Grazie per la risposta!Quindi se ho ben capito (questo è il primo programma step7 che scrivo completamente, da zero), appena la CPU rileva un fault hardware, richiama l'esecuzione dell'ob specifico per quel fault (nel nostro caso dovrebbe essere l'82), e nelle variabili locali di quell'OB è contenuta l'informazione sul'errore, che io poi posso trasferire sulla zona allarmi che ho progettato.Ma l'esecuzione dell'ob 82 è one shot o continua finchè c'è il fault? Link al commento Condividi su altri siti More sharing options...
dott.cicala Inserita: 1 agosto 2008 Segnala Share Inserita: 1 agosto 2008 L' Ob viene richiamato finchè persiste la causa dell'errore.Se ad esempio hai un errore di accesso alla periferia, la cpu tenta di richiamare l' OB122, nel caso questo non sia stato caricato, la cpu passa in stop.Questo vuol dire che bisogna stare molto attenti perchè in caso di errore con ob122 caricato, stando all'esempio che ti ho fatto, se non si gestisce bene il sistema, la cpu non va in stop e ciò potrabbe costituire una condizione di pericolo.Leggiti bene gli . e se hai la cpu sotto mano fai qualche prova....nessuna spiegazione è meglio di una verifica sul campo....ciao Link al commento Condividi su altri siti More sharing options...
batta Inserita: 2 agosto 2008 Segnala Share Inserita: 2 agosto 2008 L' Ob viene richiamato finchè persiste la causa dell'errore.Gli OB vengono richiamati su evento. In particolare, per usare la terminologia Siemens, vengono richiamati su evento "entrante" e su evento "uscente". In parole più comprensibili, l'OB viene richiamato una volta quando viene rilevato un tipo di anomalia, ed una volta quando viene rilevato il ritorno alla normalità.Nel caso di errori di accesso alla periferia l'OB relativo viene richiamato continuamente perché continuamente da programma si cerca di accedere alla periferia. Link al commento Condividi su altri siti More sharing options...
S.angioni Inserita: 4 agosto 2008 Autore Segnala Share Inserita: 4 agosto 2008 (modificato) Ho provato a scrivere una bozza di OB 82 per rilevare errori generici sui moduli:ORGANIZATION_BLOCK "I/O_FLT1"TITLE = "I/O Point Fault"VERSION : 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 END_VARBEGINNETWORKTITLE =I/O MODULES FAULT - INCOMING EVENT//Questa parte di OB82 viene eseguita in caso di evento "entrante" ovvero al //verificarsi del fault SET ; U( ; L #OB82_EV_CLASS; L B#16#39; /// INCOMING EVENT CODE ==I ; ) ; SPBN OUT; ////// DIGITAL INPUT MODULE FAULT/// SET ; U( ; L #OB82_MDL_ADDR; L 0; /// MODULE BASE ADDRESS ==I ; ) ; U( ; L #OB82_IO_FLAG; L B#16#54; /// INPUT MODULE CODE ==I ; ) ; S "Electronic Diag DB".DI_Module_1_Fault; ////// DIGITAL OUTPUT MODULE FAULT/// SET ; U( ; L #OB82_MDL_ADDR; L 0; /// MODULE BASE ADDRESS ==I ; ) ; U( ; L #OB82_IO_FLAG; L B#16#55; /// INPUT MODULE CODE ==I ; ) ; S "Electronic Diag DB".DO_Module_1_Fault; ////// ANALOG INPUT MODULE 1 FAULT/// SET ; U( ; L #OB82_MDL_ADDR; L 304; /// MODULE BASE ADDRESS ==I ; ) ; S "Electronic Diag DB".AI_Module_1_Fault; ////// ANALOG INPUT MODULE 2 FAULT/// SET ; U( ; L #OB82_MDL_ADDR; L 320; /// MODULE BASE ADDRESS ==I ; ) ; S "Electronic Diag DB".AI_Module_2_Fault; ////// ANALOG OUTPUT MODULE 1 FAULT/// SET ; U( ; L #OB82_MDL_ADDR; L 336; /// MODULE BASE ADDRESS ==I ; ) ; S "Electronic Diag DB".AO_Module_1_Fault; NETWORKTITLE =I/O MODULES FAULT - OUTCOMING EVENT//Questa parte di OB82 viene eseguita in caso di evento "uscente" ovvero alla //cessazione del faultOUT: SET ; ////// DIGITAL INPUT MODULE FAULT/// SET ; U( ; L #OB82_MDL_ADDR; L 0; /// MODULE BASE ADDRESS ==I ; ) ; U( ; L #OB82_IO_FLAG; L B#16#54; /// INPUT MODULE CODE ==I ; ) ; R "Electronic Diag DB".DI_Module_1_Fault; ////// DIGITAL OUTPUT MODULE FAULT/// SET ; U( ; L #OB82_MDL_ADDR; L 0; /// MODULE BASE ADDRESS ==I ; ) ; U( ; L #OB82_IO_FLAG; L B#16#55; /// INPUT MODULE CODE ==I ; ) ; R "Electronic Diag DB".DO_Module_1_Fault; ////// ANALOG INPUT MODULE 1 FAULT/// SET ; U( ; L #OB82_MDL_ADDR; L 304; /// MODULE BASE ADDRESS ==I ; ) ; R "Electronic Diag DB".AI_Module_1_Fault; ////// ANALOG INPUT MODULE 2 FAULT/// SET ; U( ; L #OB82_MDL_ADDR; L 320; /// MODULE BASE ADDRESS ==I ; ) ; R "Electronic Diag DB".AI_Module_2_Fault; ////// ANALOG OUTPUT MODULE 1 FAULT/// SET ; U( ; L #OB82_MDL_ADDR; L 336; /// MODULE BASE ADDRESS ==I ; ) ; R "Electronic Diag DB".AO_Module_1_Fault; END_ORGANIZATION_BLOCKAl di là degli indirizzi dei moduli che dipendono dalla mia configurazione hardware, può funzionare? Inparticolare, è corretto il modo di distinguere il modulo DI da quello DO, che hanno lo stesso base address? Non ho a disposizione la CPU per provare, mi sapreste dire se almeno in linea di principio sto lavorando correttamente?Se inoltre volessi disabilitare l'errore di broken wire sui moduli AI, al di là di disabilitarlo in questa routine utilizzando le variabili riservate dell'ob82, posso agire sulla configurazione hardware disabilitando la diagnostica del singolo canale? Normalmente faccio i test di conduttore rotto via software in modo da poterli parametrizzare come preferisco.Grazie a tutti Modificato: 4 agosto 2008 da S.angioni 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