Skip to main content

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.

Procedura. Esclusione di oggetti dalla sincronizzazione
  1. 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.

  2. Disattiva un oggetto.

    Esempio

    rdncy_img_settings_registered_areas.png

    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.

Esempio 4. Esempio
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à.

Esempio 5. Esempio

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.

Esempio 6. Esempio
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à.

rdncy_img_task_configuration_redundant.png


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

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

rdncy_img_task_configuration_redundant.png


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:

  1. Nell'albero dei dispositivi, aggiungete un Traccia oggetto al di sotto dell'oggetto del dispositivo.

  2. Nel Impostazioni di ridondanza sul Generale scheda, seleziona Registra il tempo di sincronizzazione necessario in System Trace opzione.

  3. Caricare e avvia la registrazione della traccia del sistema.

  4. Il valore predefinito del timeout durante la sincronizzazione SyncWaitTime è il valore di StandbyWaitTime, 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.