Skip to main content

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.

procedimiento. Exclusión de objetos de la sincronización
  1. 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.

  2. Desactivar un objeto.

    Ejemplo

    rdncy_img_settings_registered_areas.png

    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.

ejemplo 4. Ejemplo
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.

ejemplo 5. Ejemplo

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.

ejemplo 6. Ejemplo
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.

rdncy_img_task_configuration_redundant.png


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

ejemplo 7. Ejemplo
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.

rdncy_img_task_configuration_redundant.png


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:

  1. En el árbol de dispositivos, añada un Rastrear objeto debajo del objeto del dispositivo.

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

  3. Cargar e inicie el registro del rastreo del sistema.

  4. El valor predeterminado del tiempo de espera durante la sincronización SyncWaitTime es el valor de StandbyWaitTime, 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.