Données cycliques
Tous les blocs de fonction qui accèdent aux données cycliques utilisent deux variables d’interface pour paramétrer l’accès aux données cycliques :
-
i_hwStartAddress pour les données d’entrée cycliques
-
iq_hwQWAddress pour les données de sortie cycliques
La variable d’interface « i_hwStartAddress » (type de données « Variant ») est utilisée par les blocs de fonction pour récupérer la totalité des données d’entrée cycliques associées à l’avatar. Pour ce faire, le bloc fonction doit être paramétré avec l’adresse de début de la plage d’entrée de l’avatar (sous-module d’entrée de l’avatar pour PROFINET IO, module de l’avatar pour PROFIBUS DP). La méthode habituelle consiste à créer des étiquettes d’automate pour une adresse en début de plage. La taille des données de l’étiquette d’automate est sans importance, tant qu’elle se trouve au début de la plage (par exemple, BOOL « PompeAv02_AdresseDébut » pointant sur l’adresse « %I4.0 » pour l’avatar Pompe dans l’exemple ci-dessous).
Pour la direction des données de sortie, les blocs de fonction utilisent la variable d’entrée/sortie « iq_hwQWAddress » (dans certains cas également « iq_hwQBAddress » car il n’y a qu’un seul octet de données de sortie pour l’avatar). Contrairement aux données d’entrée, cette variable se réfère aux données de sortie complètes de l’îlot (dans la plupart des cas de type Mot) et est connectée comme variable d’entrée/sortie au bloc de fonction. En effet, dans certains cas, plusieurs blocs de fonction accèdent aux données de sortie du même avatar dans différentes zones (par exemple, le bloc de fonction de contrôle d’avatar en conjonction avec un bloc de fonction de diagnostic d’avatar). L’état actuel doit donc être lu avant qu’une modification ne soit écrite sur la sortie. Habituellement, l’accès à la zone de sortie de l’avatar doit également être configuré à l’aide d’une étiquette d’automate pour la zone de sortie complète (dans l’exemple ci-dessus, « RépTransporteurUneDir03_AdresseSor » de type Mot faisant référence à « %QW5 »).
Dès que la variable d’entrée « i_xEnable » est définie sur VRAI dans le programme, les blocs de fonction impliquant une communication cyclique exécutent et mettent à jour les données cycliques. Cela signifie que toute variable d’entrée à l’interface du bloc de fonction contrôlant l’avatar par communication cyclique (par exemple, « i_xRunFwd » dans l’exemple ci-dessus) sera écrite dans la zone de données de sortie de l’avatar. En même temps, toute information d’état pertinente provenant de la zone de données d’entrée de l’avatar est lue par le bloc de fonction et copiée sur l’interface de sortie (par exemple, « q_xRunFwd »).
La sortie d’état « q_xActive » des blocs de fonction est la contrepartie de « i_xEnable ». Si l’exécution du bloc de fonction est activée et qu’aucune erreur n’a été détectée, « q_xActive » est réglée sur VRAI. Si une erreur détectée se produit pendant l’exécution du bloc de fonction, elle est signalée par un front montant sur « q_xError ». La récupération des données d’entrée cycliques et l’exécution du bloc de fonction sont interrompues. En outre, « q_dwErrorID » indique le type d’erreur détectée à l’aide de l’une des valeurs de code d’erreur du bloc de données ConstTeSysIsland (voir Bloc de données ConstTeSysIsland). En même temps, toutes les sorties du bloc de fonction résultant d’une communication cyclique ou acyclique avec TeSys island sont réinitialisées à leurs valeurs par défaut respectives. Il s’ensuit que :
-
Tous les résultats de type numérique (INT, UINT, etc.) de champ binaire (WORD, DWORD, etc.) sont mis à 0
. -
Tous les résultats de type chaîne de caractères sont définis comme chaîne vide.
-
Tous les résultats de type booléen sont réglés sur FAUX.
-
Tous les résultats de type date et heure (DTL dans cette bibliothèque) sont réinitialisés à la valeur minimale pour ce type (DTL#1970-01-01-00:00:00.0).
-
Tous les résultats regroupés dans un type défini par l’utilisateur (UDT) ou struct sont réinitialisés aux valeurs par défaut spécifiées dans la définition du type. En général, ces derniers suivent également les règles ci-dessus.
AVERTISSEMENT |
|---|
|
Risque de fonctionnement inattendu
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou
des dommages matériels.
|
Le bloc de fonction ne sort de l’état d’erreur détectée qu’après qu’un nouveau front montant sur « i_xEnable » a été détecté et si la condition qui a conduit le bloc de fonction à entrer en état d’erreur détectée a été résolue.
AVERTISSEMENT