Ogni PLC contiene almeno tre compiti/programmi principali:
- 
                           
Programma HA
 - 
                           
Programma di applicazione
 - 
                           
Modbus programma
 
I programmi di un PLC comunicano attraverso le strutture interne delle librerie e le aree di memoria interna dedicate per l'array HA-Sync e la/e memoria/e CI52x di Modbus CiModDataxx.
| 
                                  Elemento di layout  | 
                              
                                  Significato  | 
                           
|---|---|
| 
                                  Riquadro con contorno punteggiato  | 
                              
                                  Indica i blocchi funzione o i programmi opzionali.  | 
                           
| 
                                  Riquadro di contorno solido  | 
                              
                                  Indica i blocchi funzione o i programmi obbligatori. Tutti i blocchi obbligatori vengono richiamati quando viene creata un'esportazione da Bulk data manager.  | 
                           
| 
                                  Carattere italico  | 
                              
                                  Indica il programma o le funzioni che l'utente deve richiamare nel suo progetto e che non sono state create dal Bulk data manager.  | 
                           
| 
                                  Blocco di sfondo giallo chiaro / freccia blu  | 
                              
                                  Indica le operazioni gestite internamente alla libreria.  | 
                           
| 
                                  Scatola solida verde  | 
                              
                                  Indica i tre diversi compiti che l'utente deve configurare.  | 
                           
Modbus programma
Il blocco funzione CIModCI52x (V3) / CI_MOD_CI52x (V2) legge i valori di ingresso dai moduli CI52x e li memorizza nella struttura CiModDataxx. Se la CPU è primaria, scrive anche le uscite sui moduli CI52x. Il blocco funzione parametrizza anche il modulo CI come configurato, ad esempio, nello strumento Bulk data manager durante la prima messa in servizio o quando viene scambiato un modulo CI.
Normalmente la libreria HA-Modbus TCP si occupa del monitoraggio delle comunicazioni. Tuttavia, se la comunicazione viene interrotta completamente, le interfacce di comunicazione del CI52x e i suoi moduli I/O devono reagire da soli per ottenere un comportamento privo di effetti o desiderato: È necessario considerare i seguenti parametri per le interfacce di comunicazione e i moduli I/O del CI52x:
- 
                                 
- CI52x: parametro "Timeout" per la supervisione del bus: 2)
Consente di rilevare gli errori anche dal lato dell'interfaccia di comunicazione e di intervenire per garantire un comportamento sicuro in caso di interruzione della comunicazione. Può essere impostato con incrementi di 10 ms. Se è impostato su 0, non è attiva la supervisione del bus. Valore proposto: 50 = 500 ms = valore predefinito nel Bulk data manager; questo valore deve essere aumentato, ad esempio al valore 65, se si utilizzano le porte CPU AC500 per la comunicazione di campo, per tenere conto del maggiore tempo di ritrasmissione TCP.
 - 
                                 
«Comportamento Uscite» a «Timeout per la supervisione del bus» 1), 2). Questo parametro di fail-safe deve essere impostato in modo consi- derato: sono possibili impostazioni separate per ogni modulo (e interfaccia di comunicazione): "off"; "last" o "substitute": 5 s, 10 s, ∞ s 1).
 
Osservazioni:
1) I parametri «Comportamento Uscite su comm. L'errore» viene analizzato solo se il modo Failsafe è [ON].
2) Entrambi sono parametri CI52x impostati ad esempio tramite lo strumento Bulk data manager del programma.
Programma di applicazione
- 
                           
All'inizio dell'attività applicativa deve essere richiamato il programma InputRefresh. Copia i dati da Modbus attraverso la struttura CiModDataxx nelle variabili utente, definite in BDM come segnali. Per ulteriori informazioni, consultare la documentazione BDM, disponibile nel percorso: %ALLUSERSPROFILE%\Documents\Automation Builder Examples\PS5601-HA-MTCP\BulkDataManager\Documentation.
 - 
                           
Solo i programmi applicativi principali dovrebbero svolgere questo compito e utilizzare queste variabili per le funzioni definite dall'utente. Ad esempio, in questo caso i programmi e la logica dell'utente dovrebbero essere richiamati e utilizzare i blocchi di utilità delle librerie HA (che sincronizzano automaticamente i loro dati storici) e i blocchi HA_MOD_DATA_SYNC per ulteriori dati utente che devono essere sincronizzati.
 - 
                           
I dati dei blocchi di utilità e dei blocchi HA_MOD_DATA_SYNC vengono copiati nell'array HA Sync della CPU primaria (che viene inviato alla CPU secondaria dal programma HA).
 - 
                           
Il programma OutputRefresh viene richiamato come ultimo passo. Copia i dati dalle variabili utente attraverso la struttura CiModDataxx in Modbus.
 
Esempio di blocco funzione di utilità (con dati di sincronizzazione integrati)
Si consideri il timer di ritardo HA_MOD_TON (V2)/HaModTon (V3).
Entrambi i PLC richiedono lo stesso blocco funzione richiamato nel programma. In condizioni operative normali, il tempo trascorso ET e l'uscita Q del timer sono sincronizzati internamente dalla CPU primaria a quella secondaria. I dati ET e Q sono disponibili e possono essere collegati a variabili locali o globali del programma in base ai requisiti dell'applicazione. Se il PLC A si spegne per un guasto, lo stato primario passa al PLC B.
In caso di commutazione, nel momento in cui il PLC B diventa primario, il timer di questo PLC continuerà a funzionare. Fino al momento del guasto del PLC A, il timer del PLC B era sincronizzato. Ciò è particolarmente importante nei casi in cui una CPU non era in funzione o spenta e deve "recuperare" i valori integrali o storici del sistema (timer, contatori, impostazioni dell'operatore, ...). Il processo vero e proprio rimane quindi inalterato dalla commutazione.
Programma HA
HA_MOD_CONTROL ha due funzioni:
- 
                           
Scambio di dati di stato (lifecom1 e lifecom2) e passaggio dal PLC secondario a quello primario (o viceversa) in base allo stato secondo i casi d'uso descritti in "Guasti e casi d'uso"⮫ «Guasti e casi d'uso».
 - 
                           
Inviare l'array di sincronizzazione "HA SYNC" dal PLC primario a quello secondario per garantire che il PLC secondario sia sempre in hot-stand-by e possa subentrare immediatamente. Il protocollo UDP viene utilizzato per la sincronizzazione dei dati tra le CPU.
 
Sincronizzazione dei dati tramite UDP
Questo capitolo spiega come avviene la sincronizzazione dei dati tra il PLC primario e quello secondario tramite UDP.
Tutti i dati di sincronizzazione preparati vengono sincronizzati con il PLC secondario. In genere devono essere sincronizzati solo i valori integrali (timer, contatori, PID, ...) o le impostazioni eventualmente ricevute. Ad esempio, nei casi di avvio rapido quando una CPU secondaria è stata riavviata, poiché entrambi i PLC funzionano e calcolano in parallelo e sulla base degli stessi valori di ingresso, la sincronizzazione farà sì che il secondario si avvii con il valore corrente anziché con il valore predefinito. Per informazioni dettagliate su come configurare o utilizzare il blocco funzione di sincronizzazione dei dati, consultare i progetti di esempio.
Vengono eseguite le seguenti fasi:
- 
                           
L'array HA SYNC viene trasferito via UDP alla CPU secondaria. Questo include lo scambio dello stato di vita tra la CPU primaria e quella secondaria.
 - 
                           
Nel programma HA, il blocco funzione HA_MOD_CONTROL raccoglie tutti i dati di diagnosi, sincronizzazione e lifecom2 dal campo e/o dall'altro PLC. La necessità o meno di uno switchover viene decisa sulla base di una semplice matrice decisionale.
 - 
                           
Lifecom2 viene scambiato tra le CPU tramite Modbus TCP a ogni ciclo.
 - 
                           
Un compito per programma, vedi figura precedente.
 - 
                           
Lo stato degli ingressi collegati alle stazioni I/O decentralizzate CI52x viene trasferito a entrambi i PLC contemporaneamente in ogni ciclo PLC. Vengono ricevuti dal blocco funzione CI52x.
 - 
                           
Al termine del programma, i valori di uscita generati vengono inviati, trasferendoli dai rispettivi buffer del PLC primario ai moduli CI52x-MODTCP tramite il blocco funzione CI52x e Modbus TCP. Il PLC secondario è pronto a inviare, ma rimane "silenzioso" (non invia valori di uscita).
 
Il PLC ha bisogno di un ciclo HA per inviare un frame ETH dalla CPU primaria a quella secondaria e ricevere la conferma dalla CPU secondaria. Analogamente, il PLC V3 necessita di due cicli HA.
Un frame ETH copia circa 1412 byte di dati. Il numero di frame ETH necessari per sincronizzare HA Sync Array dipende completamente dal numero di byte di sincronizzazione dei dati. La variabile globale iNoOfEthFrames fornisce all'utente questa informazione, che deve essere utilizzata per calcolare il tempo di ciclo del task applicativo.
⮫ «Raccomandazioni per la configurazione dei compiti per il sistema HA»
È possibile sincronizzare fino a max. 60 kB di dati di sincronizzazione.
La sincronizzazione tra il PLC primario e quello secondario avviene nell'arco di alcuni cicli del tempo del task HA, a seconda dei byte di dati di sincronizzazione totali configurati nel sistema. Lifecom1 viene scambiato anche tra il PLC primario e quello secondario. Il PLC primario invia lifecom1 al PLC secondario insieme ai dati di sincronizzazione. All'indietro, il PLC secondario invia lifecom1 al PLC primario ogni ciclo.
Le figure seguenti mostrano un esempio di PLC V2. Se nel progetto i dati di sincronizzazione sono pari a 4 iNoOfEthFrames, sono necessari 4 cicli HA per sincronizzare i dati tra i PLC.
Quando i dati di sincronizzazione nel progetto sono pari a 6 iNoOfEthFrames allora sono necessari 6 cicli HA per sincronizzare i dati tra i PLC.



