Sincronización de datos redundantes
Básicamente, puede utilizar el tipo de área de redundancia para influir en si y cuándo se sincronizan los datos de redundancia y desde dónde se copian los datos.
Cuando el Configuración de redundancia el objeto existe en la aplicación, el AREA_INPUT
El tipo de área de redundancia se asigna por defecto a todas las variables (en todas las listas de variables globales y todos los programas que crea el usuario). Esto también sucede si agrega el objeto a la aplicación más adelante. Como resultado, todas las variables se registran por defecto.
Una lista de estos objetos se encuentra en la Configuración de redundancia redactora en las Áreas Registradas pestaña.
Para más información, ver: General
Sincronización al iniciar el sistema de redundancia
Cuando se inicia el segundo PLC, los datos de redundancia (con AREA_INPUT
la redundancia (tipo de área) se copia primero y una vez del PLC activo al segundo PLC. A continuación, el PLC pasa al modo de espera
Sin embargo, puede anular la selección del valor predeterminado. AREA_INPUT
tipo de área de redundancia para excluir variables de la sincronización.
En el Configuración de redundancia redactor, en el Áreas Registradas pestaña, haga clic en el Variables pestaña.
Una lista de objetos (tipo Programa o Lista de variables globales) se muestra a continuación Objeto. Los objetos activados se seleccionan para la sincronización y por lo tanto obtienen la
AREA_INPUT
tipo de área de redundancia.Desactivar un objeto.
Ejemplo
Sugerencia
Esto es aconsejable para datos de diagnóstico locales del bus de campo o para un estado de redundancia local.
Sincronización en cada ciclo de tareas
Cuando el archivo de configuración del sistema de tiempo de ejecución (*.cfg) contiene la siguiente entrada, se activa una sincronización cada vez que se inicia un ciclo de tareas.
[CmpRedundancy] DataSyncAlways=1
Las variables de PROGRAM
objetos y listas de variables globales cuyo tipo de área de redundancia es AREA_INPUT
son afectados.
PROGRAM PLC_PRG VAR b: INT; END_VAR IF sReduState.eRedundancyState = RDCY.STATE.RS_CYCLE_ACTIVE THEN b := b + 1; END_IF
El b
variable solo se incrementa en el PLC activo. Como los datos del sistema de redundancia se sincronizan con cada ciclo de tareas, la variable de redundancia se transfiere de forma continua al segundo PLC
Sincronización bajo demanda
Si el archivo de configuración del sistema en tiempo de ejecución (<rts name>.cfg
) no contiene la entrada DataSyncAlways=1
, puede ser preferible activar una sincronización mediante programación en el código IEC.
Para ello, llame al RedundancySynchronizeData()
función en su código IEC. Entonces las variables con el AREA_INPUT
tipo de área de redundancia están sincronizados. Por lo tanto, verifique la configuración en el Área Registrada pestaña en el Variables pestaña. La operación de copia se realiza al principio del ciclo de la tarea.
En el modo activo/en espera, el b
variable se incrementa en el PLC activo. ¿Cuándo bUpdateData
se establece, se activa una sincronización de datos una vez y el valor se transfiere al segundo PLC.
IF bUpdateData THEN bUpdateData := FALSE; RedundancySynchronizeData(); END_IF
Sincronización del PLC activo al PLC en espera en cada ciclo de tareas
Los datos de redundancia de tipo AREA_SYNCHRO
se puede transferir durante el funcionamiento en cada ciclo de tarea desde el PLC activo al PLC pasivo. El tamaño de los datos está limitado para esto. La asignación del tipo no se admite en CODESYS, pero tiene que hacerse mediante programación como una devolución de llamada del AreaRegister
función.
El área debe estar registrada antes de que comience la aplicación. Es demasiado tarde para registrar áreas en el primer ciclo. Es por eso que el registro se realiza en la devolución de llamada del cbDownloadDone
evento del 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 llamada de cbDownloadDone
se realiza cuando el OnlineChangeDone
ocurre un evento del sistema. Los eventos del sistema se agregan a la configuración de la tarea.

Sugerencia
Tenga en cuenta que el AreaRegister
la función está oculta en algunas versiones de la biblioteca de redundancia, pero aún se puede llamar.
Sincronización del PLC en espera con el PLC activo en cada ciclo de tareas
Los datos de redundancia de tipo AREA_PASSIVE
se puede transferir durante el funcionamiento en cada ciclo de tarea desde el PLC pasivo al PLC activo. El tamaño de los datos está limitado para esto. La asignación del tipo no se admite en CODESYS, pero tiene que hacerse mediante programación como una devolución de llamada del AreaRegister
función.
El área debe estar registrada antes de que comience la aplicación. Es demasiado tarde para registrar áreas en el primer ciclo. Como resultado, el registro se realiza en la devolución de llamada del cbDownloadDone
evento del sistema (de la misma manera que en el ejemplo del capitulo anterior).
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 llamada de cbDownloadDone
se realiza cuando el OnlineChangeDone
ocurre un evento del sistema. Los eventos del sistema se agregan a la configuración de la tarea.

Sincronización del temporizador
El valor de la base de tiempo IEC se transfiere del PLC activo al PLC en espera en cada ciclo del PLC. Esto afecta TIME
, TON
, y TOF
. Los tiempos del sistema (ejemplo: SysTimeGetMs
) no se transfieren y están disponibles como hora local en cada PLC.
Configurar el tiempo de espera para la sincronización de las áreas registradas
Para establecer un valor adecuado para el Tiempo de espera de sincronización de las áreas registradas en el Configuración de redundancia, primero puede determinar esto mediante un rastreo del sistema:
En el árbol de dispositivos, añada un Rastrear objeto debajo del objeto del dispositivo.
En el Configuración de redundancia en el General pestaña, selecciona Registre el tiempo de sincronización necesario en el seguimiento del sistema opción.
Cargar e inicie el registro del rastreo del sistema.
El valor predeterminado del tiempo de espera durante la sincronización
SyncWaitTime
es el valor deStandbyWaitTime
, que a su vez está preestablecido en un valor de 30 ms.Si el conjunto
SyncWaitTime
es demasiado corto y aparece el siguiente mensaje en el registro: «La sincronización finalizó después de%» PRI_UI32 «ms because of SyncWaitTime».Cuando el set Sincronizar el tiempo de espera es lo suficientemente largo, el tiempo de sincronización realmente necesario se registra en la traza del sistema. Puedes intentar optimizar el conjunto
SyncWaitTime
para que se acerque lo más posible al SyncTime realmente requerido.