Sincronizzazione dei dati ridondanti
Fondamentalmente, è possibile utilizzare il tipo di area di ridondanza per influenzare se e quando i dati di ridondanza vengono sincronizzati e da dove vengono copiati i dati.
Quando il Configurazione di ridondanza oggetto esiste nell'applicazione, il AREA_INPUT
il tipo di area di ridondanza è assegnato per impostazione predefinita a tutte le variabili (in tutti gli elenchi di variabili globali e in tutti i programmi creati dall'utente). Ciò accade anche se si aggiunge successivamente l'oggetto all'applicazione. Di conseguenza, tutte le variabili vengono registrate per impostazione predefinita.
Un elenco di questi oggetti si trova nel file Configurazione di ridondanza redattore sul Aree registrate scheda.
Per ulteriori informazioni, vedere: Generale
Sincronizzazione all'avvio del sistema di ridondanza
All'avvio del secondo PLC, i dati di ridondanza (con AREA_INPUT
viene copiato prima e una volta dal PLC attivo al secondo PLC. Quindi il PLC passa in standby
Tuttavia, puoi deselezionare l'impostazione predefinita AREA_INPUT
tipo di area di ridondanza per escludere le variabili dalla sincronizzazione.
Nel Configurazione di ridondanza editore, il Aree Registrate scheda, fare clic su Variabili scheda.
Un elenco di oggetti (tipo Programma o Elenco delle variabili globali) viene visualizzato di seguito Oggetto. Gli oggetti attivati vengono selezionati per la sincronizzazione e quindi ottengono il
AREA_INPUT
tipo di area di ridondanza.Disattiva un oggetto.
Esempio
Suggerimento
Ciò è consigliabile per i dati diagnostici locali del bus di campo o per uno stato di ridondanza locale.
Sincronizzazione in ogni ciclo di attività
Se il file di configurazione del sistema di runtime (*.cfg) contiene la voce seguente, viene attivata una sincronizzazione ogni volta che viene avviato un ciclo di attività.
[CmpRedundancy] DataSyncAlways=1
Le variabili di PROGRAM
oggetti ed elenchi di variabili globali il cui tipo di area di ridondanza è AREA_INPUT
sono interessati.
PROGRAM PLC_PRG VAR b: INT; END_VAR IF sReduState.eRedundancyState = RDCY.STATE.RS_CYCLE_ACTIVE THEN b := b + 1; END_IF
Le b
la variabile viene incrementata solo nel PLC attivo. Poiché i dati nel sistema di ridondanza sono sincronizzati con ogni ciclo di attività, la variabile di ridondanza viene trasferita continuamente al
Sincronizzazione su richiesta
Se il file di configurazione del sistema di runtime (<rts name>.cfg
) non contiene la voce DataSyncAlways=1
, può essere preferibile attivare la sincronizzazione in modo programmatico nel codice IEC.
Per fare ciò, chiama il RedundancySynchronizeData()
funzione nel codice IEC. Quindi le variabili con il AREA_INPUT
tipo di area di ridondanza sono sincronizzati. Pertanto, controllare le impostazioni su Area Registrata scheda sul Variabili scheda. L'operazione di copia viene eseguita all'inizio del ciclo di attività.
In modalità attiva/standby, b
la variabile viene incrementata nel PLC attivo. Quando bUpdateData
è impostato, viene attivata una volta una sincronizzazione dei dati e il valore viene trasferito al secondo PLC.
IF bUpdateData THEN bUpdateData := FALSE; RedundancySynchronizeData(); END_IF
Sincronizzazione dal PLC attivo al PLC in standby in ogni ciclo di attività
Le AREA_SYNCHRO
I dati di ridondanza di tipo possono essere trasferiti durante il funzionamento in ogni ciclo di attività dal PLC attivo al PLC di standby. A tal fine, la dimensione dei dati è limitata. L'assegnazione del tipo non è supportata CODESYS, ma deve essere eseguita a livello di codice come richiamata di AreaRegister
funzione.
L'area deve essere registrata prima dell'inizio dell'applicazione. È troppo tardi per registrare le aree nel primo ciclo. Questo è il motivo per cui la registrazione viene eseguita nel callback del file cbDownloadDone
evento di sistema.
FUNCTION cbDownloadDone : DWORD VAR_IN_OUT EventPrm: CmpApp.EVTPARAM_CmpApp; END_VAR (* Register GVL_Synchro to be synchronized in every task cycle *) bAreaRegisterDone := AreaRegister(ADR(iSyncFirst), ADR(iSyncLast) - ADR(iSyncFirst) + sizeof(iSyncLast), AREA_TYPE.AREA_SYNCHRO); tNowDownloadDone := TIME();
La chiamata di cbDownloadDone
viene eseguito quando il OnlineChangeDone
si verifica un evento di sistema. Gli eventi di sistema vengono aggiunti alla configurazione dell'attività.

Suggerimento
Si noti che il AreaRegister
la funzione è nascosta in alcune versioni della libreria di ridondanza ma può ancora essere chiamata.
Sincronizzazione dal PLC in standby al PLC attivo in ogni ciclo di attività
I dati di ridondanza di tipo AREA_PASSIVE
possono essere trasferiti durante il funzionamento in ogni ciclo di task dal PLC passivo al PLC attivo. La dimensione dei dati è limitata per questo. L'assegnazione del tipo non è supportata in CODESYS, ma deve essere eseguito a livello di codice come callback di AreaRegister
funzione.
L'area deve essere registrata prima dell'inizio dell'applicazione. È troppo tardi per registrare le aree nel primo ciclo. Di conseguenza, la registrazione viene eseguita nel callback del file cbDownloadDone
evento di sistema (allo stesso modo del file esempio dal capitolo precedente).
FUNCTION cbDownloadDone : DWORD VAR_IN_OUT EventPrm: CmpApp.EVTPARAM_CmpApp; END_VAR (* Register GVL_Synchro to be synchronized in every task cycle *) bAreaRegisterDone := AreaRegister(ADR(iSyncFirst), ADR(iSyncLast) - ADR(iSyncFirst) + sizeof(iSyncLast), AREA_TYPE.AREA_PASSIVE); tNowDownloadDone := TIME();
La chiamata di cbDownloadDone
viene eseguito quando il OnlineChangeDone
si verifica un evento di sistema. Gli eventi di sistema vengono aggiunti alla configurazione dell'attività.

Sincronizzazione del timer
Il valore della base temporale IEC viene trasferito dal PLC attivo al PLC di standby in ogni ciclo PLC. Ciò influisce TIME
, TON
, e TOF
. I tempi di sistema (esempio: SysTimeGetMs
) non vengono trasferiti e sono disponibili come ora locale su ciascun PLC.
Impostazione del timeout per la sincronizzazione delle aree registrate
Per impostare un valore adeguato per Timeout di sincronizzazione delle aree registrate nel Impostazioni di ridondanza, è possibile determinarlo innanzitutto utilizzando una traccia del sistema:
Nell'albero dei dispositivi, aggiungete un Traccia oggetto al di sotto dell'oggetto del dispositivo.
Nel Impostazioni di ridondanza sul Generale scheda, seleziona Registra il tempo di sincronizzazione necessario in System Trace opzione.
Caricare e avvia la registrazione della traccia del sistema.
Il valore predefinito del timeout durante la sincronizzazione
SyncWaitTime
è il valore diStandbyWaitTime
, che a sua volta è preimpostato su un valore di 30 ms.Se il set
SyncWaitTime
è troppo breve, quindi nel registro viene visualizzato il seguente messaggio: «Sincronizzazione terminata dopo%» PRI_UI32 «ms a causa di SyncWaitTime».Quando il set Tempo di attesa di sincronizzazione è sufficientemente lungo, il SyncTime effettivamente richiesto viene registrato nella traccia del sistema. Puoi provare a ottimizzare il set
SyncWaitTime
in modo che si avvicini il più possibile al SyncTime effettivamente richiesto.