Vai al contenuto
PLC Forum


Problema Cpu


Nesus

Messaggi consigliati

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'aiuto

ORGANIZATION_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


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

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

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 diagnostica

Unità guasta(o)

Tipo di unità: SM analogiche

Indirizzo di ingresso: 320

presenza di informazioni di canale

errore all'esterno dell'unità

presenza errore di canale

OB richiesto: OB di allarme di diagnostica (OB 82)

classe di priorità: 26

Errore esterno, Evento entrante

Link al commento
Condividi su altri siti

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

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