Controllo del Programma
Flusso ed Esecuzione
Padroneggia il flusso logico del tuo programma. Dai salti condizionati agli strumenti di diagnostica in tempo reale, ottimizza la struttura di esecuzione del tuo controllore.
Cosa sono le operazioni di controllo in TIA Portal?
Le operazioni di controllo del programma consentono di modificare l'ordine sequenziale di esecuzione dei segmenti. Vengono utilizzate per saltare parti di codice (Salti), creare diramazioni complesse (Distributori) o gestire il comportamento interno della CPU (Stop, Watchdog, Misura del tempo).
Queste istruzioni sono potenti ma devono essere usate con cautela, in particolare l'istruzione WAIT che blocca il ciclo, o i salti che possono rendere il programma difficile da debuggare se troppo numerosi. TIA Portal offre anche strumenti moderni per intercettare gli errori localmente in ogni blocco.
Salti e Flusso
Istruzioni di deviazione del programma
JMP / JMPN — Salti condizionati
JMPCosa fa
JMP interrompe l'esecuzione sequenziale e salta a un'etichetta (LABEL) se l'RLO è 1. JMPN fa lo stesso se l'RLO è 0.
Quando usarlo
Saltare una sezione di codice che non deve essere eseguita in una modalità specifica, o creare cicli semplici in LAD/FBD.
Consigli Pro
La destinazione del salto (LABEL) deve trovarsi nello stesso blocco (FC o FB).
Non usare salti all'indietro per creare cicli senza condizione di uscita, poiché si rischia il superamento del tempo di ciclo.
In SCL, usa preferibilmente le strutture IF...THEN o CASE...OF.
SWITCH — Distributore multi-caso
SWITCHCosa fa
Confronta un valore di ingresso con diversi valori target e salta al segmento corrispondente al primo caso verificato. Equivalente grafico di Switch/Case.
Quando usarlo
Gestione degli stati macchina (Grafcet semplice), selezione delle modalità di marcia o smistamento pezzi secondo un codice tipo.
Consigli Pro
Più pulito e leggibile di una serie di comparatori == in serie.
Usa l'ingresso 'ELSE' per gestire il caso in cui nessun valore corrisponda.
Ideale per strutture di menu su HMI.
RET — Ritorno
RETCosa fa
Forza la fine dell'esecuzione del blocco corrente (FC/FB) e ritorna al blocco chiamante.
Quando usarlo
Terminazione anticipata di una funzione se viene rilevato un errore all'inizio del blocco, o se una condizione di sicurezza non è soddisfatta.
Consigli Pro
Utile per ottimizzare il tempo di ciclo non elaborando inutilmente il resto del codice.
Sii vigile: le uscite del blocco non ancora elaborate manterranno il loro ultimo stato.
In SCL, usa l'istruzione RETURN;
Controllo del Runtime
Gestione del ciclo CPU e misure di performance
RUNTIME — Misura tempo
RUNTIMECosa fa
Misura il tempo di esecuzione di una porzione di programma o dell'intero blocco in microsecondi (µs).
Quando usarlo
Ottimizzazione del codice, diagnostica di segmenti pesanti o calcoli di performance della macchina.
Consigli Pro
Chiama RUNTIME una volta per inizializzare la misura, poi una seconda volta per ottenere il risultato.
Usa il tipo di dati LReal per memorizzare il risultato della misura.
Comodo per verificare se un ciclo FOR complesso si avvicina ai limiti del watchdog.
WAIT — Ritardo fisso
WAITCosa fa
Sospende l'esecuzione del programma per una durata specificata in microsecondi. ATTENZIONE: a differenza di un Timer, WAIT blocca completamente il ciclo della CPU.
Quando usarlo
Attendere alcuni microsecondi per stabilizzare un segnale elettronico su una scheda di I/O ultra-rapida.
Consigli Pro
Da usare con estrema moderazione. Un WAIT troppo lungo attiverà un errore Watchdog e fermerà il PLC.
Non usare mai per ritardi di processo (secondi/minuti); usa i Timer TON per quello.
Disponibile solo su S7-1500.
STP — Arresto CPU
STPCosa fa
Forza il passaggio della CPU in modalità STOP.
Quando usarlo
Condizione di errore fatale in cui la macchina non deve più essere pilotata, o test di diagnostica.
Consigli Pro
L'arresto è immediato. Sarà necessario un intervento manuale (HMI o selettore) per riavviare.
Preferisci la gestione degli allarmi con modalità sicura piuttosto che l'arresto brusco della CPU quando possibile.
Utile nei progetti di messa in servizio per fare un 'break' in un punto preciso.
Gestione Errori
Intercettazione locale dei guasti di esecuzione
GET_ERROR / GET_ERR_ID
Cosa fanno
Recuperano informazioni sul primo errore verificatosi all'interno di un blocco (es: accesso a un indice di array inesistente).
Quando usarlo
Rendere i blocchi robusti intercettando gli errori di programmazione senza fermare il PLC.
Consigli Pro
GET_ERROR fornisce una struttura dettagliata, GET_ERR_ID restituisce solo il numero dell'errore.
Posiziona queste istruzioni alla fine dei tuoi blocchi critici.
Consente di creare un registro errori personalizzato.
Salti vs Strutture di controllo
Quale metodo usare per deviare il programma?
| Hai bisogno di... | Istruzione consigliata | Perché? |
|---|---|---|
| Salto semplice in Ladder | JMP | Saltare un segmento |
| Scelta multipla complessa | SWITCH / CASE | Più leggibile di 10 JMP |
| Misurare durata interna | RUNTIME | Ottimizzazione performance |
| Arresto immediato | STP | Errore critico hardware |
| Attesa brevissima | WAIT | Stabilizzazione elettronica |
| Diagnostica locale | GET_ERROR | Evitare lo STOP della CPU |
Domande Frequenti
Qual è la differenza tra JMP e JMP_LIST?
JMP è un salto singolo. JMP_LIST consente di definire un elenco di destinazioni. In base a un indice numerico, il programma salta alla 1ª, 2ª o N-esima etichetta dell'elenco.
L'istruzione WAIT è pericolosa?
Sì, se usata male. Sospende l'esecuzione di TUTTO il programma utente. Se la somma dei tuoi WAIT e del tuo codice supera il tempo di watchdog (spesso 150ms), la CPU andrà in STOP.
Come misurare il tempo di ciclo totale del PLC?
Non hai bisogno dell'istruzione RUNTIME per questo. Puoi leggere l'informazione direttamente nelle proprietà della CPU online o usare le variabili di sistema dell'OB1.
Dove posizionare le etichette LABEL?
I LABEL possono essere posizionati all'inizio di qualsiasi segmento. In LAD appaiono sopra il binario sinistro. Il nome dell'etichetta deve essere unico all'interno del blocco.