Synchronisation des données redondantes
Fondamentalement, vous pouvez utiliser le type de zone de redondance pour influencer si et quand les données de redondance sont synchronisées et d'où vers où les données sont copiées.
Quand le Configuration de la redondance objet existe dans l'application, le AREA_INPUT
le type de zone de redondance est affecté par défaut à toutes les variables (dans toutes les listes de variables globales et tous les programmes créés par l'utilisateur). Cela se produit également si vous ajoutez l'objet à l'application ultérieurement. Par conséquent, toutes les variables sont enregistrées par défaut.
Une liste de ces objets se trouve dans le Configuration de la redondance éditeur sur le Zones enregistrées languette.
Pour plus d'informations, consultez : Général
Synchronisation au démarrage du système de redondance
Lorsque le deuxième automate est démarré, les données de redondance (avec AREA_INPUT
type de zone de redondance) est copié en premier et une fois de l'automate actif vers le second automate programmable. Ensuite, l'automate passe en mode veille.
Cependant, vous pouvez désélectionner la valeur par défaut AREA_INPUT
type de zone de redondance pour exclure des variables de la synchronisation.
Dans le Configuration de la redondance éditeur, sur le Zones enregistrées onglet, cliquez sur l'onglet variables languette.
Une liste d'objets (type Programme ou Liste des variables globales) est affiché ci-dessous Objet. Les objets activés sont sélectionnés pour la synchronisation et obtiennent ainsi le
AREA_INPUT
type de zone de redondance.Désactiver un objet.
Exemple
Astuce
Ceci est recommandé pour les données de diagnostic locales du bus de terrain ou pour un état de redondance local.
Synchronisation à chaque cycle de tâche
Lorsque le fichier de configuration du système d'exécution (*.cfg) contient l'entrée suivante, une synchronisation est déclenchée à chaque démarrage d'un cycle de tâche.
[CmpRedundancy] DataSyncAlways=1
Les variables de PROGRAM
objets et listes de variables globales dont le type de zone de redondance est AREA_INPUT
sont affectés.
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 variable est incrémentée uniquement dans l'automate actif. Comme les données du système de redondance sont synchronisées avec chaque cycle de tâches, la variable de redondance est transférée en continu au
Synchronisation à la demande
Si le fichier de configuration du système d'exécution (<rts name>.cfg
) ne contient pas l'entrée DataSyncAlways=1
, il peut être préférable de déclencher une synchronisation par programme dans le code CEI.
Pour ce faire, appelez le RedundancySynchronizeData()
fonction dans votre code CEI. Alors les variables avec le AREA_INPUT
type de zone de redondance sont synchronisés. Par conséquent, vérifiez les paramètres sur le Zone enregistrée onglet sur le variables languette. L'opération de copie est effectuée au début du cycle de la tâche.
En mode actif/veille, b
la variable est incrémentée dans l'automate actif. bUpdateData
est réglé, une synchronisation des données est déclenchée une fois et la valeur est transférée au second automate.
IF bUpdateData THEN bUpdateData := FALSE; RedundancySynchronizeData(); END_IF
Synchronisation de l'API actif à l'API de secours à chaque cycle de tâche
Les données de redondance de type AREA_SYNCHRO
peuvent être transférés en cours de fonctionnement dans chaque cycle de tâche de l'automate actif vers l'automate passif. La taille des données est limitée pour cela. L'affectation du type n'est pas prise en charge dans CODESYS, mais doit être fait par programme en tant que rappel de la AreaRegister
fonction.
La zone doit être enregistrée avant le début de l'application. Il est trop tard pour enregistrer des zones au premier cycle. C'est pourquoi l'enregistrement se fait dans le callback du cbDownloadDone
événement système.
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();
L'appel de cbDownloadDone
est effectué lorsque le OnlineChangeDone
événement système se produit. Les événements système sont ajoutés à la configuration de la tâche.

Astuce
Notez que le AreaRegister
La fonction est masquée dans certaines versions de la bibliothèque de redondance mais peut toujours être appelée.
Synchronisation de l'API de secours à l'API actif à chaque cycle de tâche
Les données de redondance de type AREA_PASSIVE
peuvent être transférés en cours de fonctionnement dans chaque cycle de tâche de l'automate passif vers l'automate actif. La taille des données est limitée pour cela. L'affectation du type n'est pas prise en charge dans CODESYS, mais doit être fait par programme en tant que rappel de la AreaRegister
fonction.
La zone doit être enregistrée avant le début de l'application. Il est trop tard pour enregistrer des zones au premier cycle. De ce fait, l'enregistrement se fait dans le callback du cbDownloadDone
événement système (de la même manière que dans exemple du chapitre précédent).
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();
L'appel de cbDownloadDone
est effectué lorsque le OnlineChangeDone
événement système se produit. Les événements système sont ajoutés à la configuration de la tâche.

Synchronisation de la minuterie
La valeur de la base de temps IEC est transférée de l'API actif à l'API de secours à chaque cycle de l'API. Cela affecte TIME
, TON
, et TOF
. Les horaires du système (exemple : SysTimeGetMs
) ne sont pas transférés et sont disponibles en heure locale sur chaque automate.
Réglage du délai pour la synchronisation des zones enregistrées
Pour définir une valeur appropriée pour Délai de synchronisation des zones enregistrées dans le Paramètres de redondance, vous pouvez d'abord le déterminer à l'aide d'une trace du système :
Dans l'arborescence des appareils, ajoutez un Trace objet situé en dessous de l'objet de l'appareil.
Dans le Paramètres de redondance sur le Général onglet, sélectionnez Enregistrez le temps de synchronisation nécessaire dans System Trace option.
Charger et lancez l'enregistrement de la trace du système.
La valeur par défaut du délai d'attente lors de la synchronisation
SyncWaitTime
est la valeur deStandbyWaitTime
, qui à son tour est préréglée à une valeur de 30 ms.Si le set
SyncWaitTime
est trop court, le message suivant s'affiche dans le journal : « La synchronisation s'est terminée après % » PRI_UI32 « ms à cause de SyncWaitTime ».Quand le set Synchroniser le temps d'attente est suffisamment long, le SyncTime réellement requis est enregistré dans la trace du système. Vous pouvez essayer d'optimiser l'ensemble
SyncWaitTime
afin qu'il se rapproche le plus possible du SyncTime réellement requis.