Nesus Inserito: 23 dicembre 2010 Segnala Share Inserito: 23 dicembre 2010 Salve!Ho un piccolo problemino con la CPU, per fare delle prove ho modificato il programma andando a toccare l'OB1 ed ora non si riavvia più probabilmente perchè ho scritto male qualche cosa. Secondo voi nel codice che vi incollo qui di seguito c'è qualche passaggio errato? nel codice c'e' un pezzo preso dal getting started per SM331-AI8x12b / configurato in 4-20mA e riadattato alle mie esigenze.Grazie per l'aiutoORGANIZATION_BLOCK OB 1 TITLE = "Main Program Sweep (Cycle)" VERSION : 0.1 VAR_TEMP OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) OB1_PRIORITY : BYTE ; //Priority of OB Execution OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1) OB1_RESERVED_1 : BYTE ; //Reserved for system OB1_RESERVED_2 : BYTE ; //Reserved for system OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds) OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds) OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 started END_VAR BEGIN NETWORK TITLE =Bit sempre a 1 O "bit_1"; ON "bit_1"; = "bit_1"; // Bit sempre a 1 U "bit_0"; UN "bit_0"; = "bit_0"; // Bit sempre a 0 CALL "STATI_CONSENSI" ;// Stato interruttori U "M_assenza_allarmi"; // Se assenza allarmi è 0 SPBN m001; // Salta a passo 001 U "M_comando"; SPB m002; // Salta a passo 002 m001: CALL "ALLARMI" ; m002: CALL "COMANDI" ; CALL "USCITE" ; NETWORK TITLE =Lettura canali //I valori dei canali (0 . 7) vengono caricati e memorizzati in DB1 (valori dei //canali) L PEW 320; // Canale 0 T DB2.DBW 0; L PEW 322; // Canale 1 T DB2.DBW 2; L PEW 324; // Canale 2 T DB2.DBW 4; L PEW 326; // Canale 3 T DB2.DBW 6; L PEW 328; // Canale 4 T DB2.DBW 8; L PEW 330; // Canale 5 T DB2.DBW 10; L PEW 332; // Canale 6 T DB2.DBW 12; L PEW 334; // Canale 7 T DB2.DBW 14; NETWORK TITLE =Conversione //Conversione dei valori grezzi dei canali in valori di corrente (mA) CALL FC 10 ( Raw := DB2.DBW 0, Current := DB3.DBD 0); CALL FC 10 ( Raw := DB2.DBW 2, Current := DB3.DBD 4); CALL FC 10 ( Raw := DB2.DBW 4, Current := DB3.DBD 8); CALL FC 10 ( Raw := DB2.DBW 6, Current := DB3.DBD 12); CALL FC 10 ( Raw := DB2.DBW 8, Current := DB3.DBD 16); CALL FC 10 ( Raw := DB2.DBW 10, Current := DB3.DBD 20); CALL FC 10 ( Raw := DB2.DBW 12, Current := DB3.DBD 24); CALL FC 10 ( Raw := DB2.DBW 14, Current := DB3.DBD 28); NETWORK TITLE =Reset di interrupt di processo //Nonostante l.interrupt di processo sia stato confermato dall.hardware alla //chiusura dell.OB40 // la parola dell.interrupt di processo deve essere resettata manualmente. U M 200.0; SPBN lbl0; L MW 100; SSI 4; T MW 100; lbl0: NOP 0; NETWORK TITLE =The End BE ; END_ORGANIZATION_BLOCK Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 23 dicembre 2010 Segnala Share Inserita: 23 dicembre 2010 Potrebbe andare in stop perchè punti a una PEW o una DBW inesistente, o richiami un FC che non hai ancora caricato, oppure l'errore è dentro uno degli FC richiamati.... Per chiarirti le idee guarda la causa di stop nella apposita finestra (clicca sulla cartella blocchi e premi CTRL+D), vi trovi tutti gli eventi dall'accensione fino all'errore con descrizione (ulteriori dettagli premendo H e l p) e con il tasto "Apri blocco" ti si apre il blocco incriminato nel punto esatto dell'interruzione (se vuoi su un altra scheda trovi tutto lo stack dei blcchi eseguiti/ DB aperte).Ciao Link al commento Condividi su altri siti More sharing options...
Nesus Inserita: 24 dicembre 2010 Autore Segnala Share Inserita: 24 dicembre 2010 Intanto grazie per la risposta Ieri rileggendo il getting started mi sono accorto di non aver creato il blocco OB82 ( anche se vuoto comporta qualcosa? ) e con un riavvio manuale la CPU è andata in RUN solo che al momento è presente un errore e andando a vedere nel buffer di diagnostica mi dice Unità guasta con riferimento proprio alla SM analogica ciò vuol dire che il problema è esterno (quindi trova dei problemi nei collegamenti sull'unità)? oppure interno al programma che ho fatto?Dicitura buffer di diagnosticaUnità guasta(o)Tipo di unità: SM analogicheIndirizzo di ingresso: 320presenza di informazioni di canaleerrore all'esterno dell'unitàpresenza errore di canaleOB richiesto: OB di allarme di diagnostica (OB 82)classe di priorità: 26Errore esterno, Evento entrante Link al commento Condividi su altri siti More sharing options...
gaserma Inserita: 25 dicembre 2010 Segnala Share Inserita: 25 dicembre 2010 L'OB82 ti permette di mantenere la Cpu in run anche in presenza di errori Harware, ma non ti risolve il problema.L'errore normalmente scaturisce da una configurazione errata del modulo analogico, per cui devi aprire la configurazione Hardware e controllare le impostazioni del modulo:- Indirizzo iniziale- Tipo di ingresso- ecc.Attenzione che ci sono dei moduli analogici che hanno un settaggio hardware (zoccolo sul fianco del modulo) per la impostazione del tipo di ingresso (4 zoccoli, uno ogni due ingressi); quindi quanto impostato sullo zoccolo esterno, deve essere ribadito nella configurazione hardware.Buon Natale 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