Variables implicites - Drapeaux SFC

Présentation

Chaque étape SFC et chaque action IEC fournissent des variables générées de manière implicite permettant de contrôler l'état des étapes et des actions IEC pendant l'exécution. Vous pouvez également définir des variables pour surveiller et contrôler l'exécution d'un SFC (timeouts, réinitialisation, mode conseil). Ces variables peuvent aussi être générées implicitement par l'objet SFC.

En fait, pour chaque étape et chaque action IEC, une variable implicite est générée. Il s'agit d'une instance de structure, nommée d'après l'élément, par exemple, step1 pour une étape nommée step1. Dans les propriétés de l'élément, vous pouvez définir si, pour ce drapeau, une définition de symbole doit être exportée vers la configuration de symbole, ainsi que le mode d'accès au symbole dans le contrôleur.

Les types de données de ces variables implicites sont définis dans la bibliothèque IecSFC.library. Cette bibliothèque est incluse automatiquement dans le projet dès qu'un objet SFC est ajouté.

État des étapes et des actions et durée des étapes

En fait, pour chaque étape et chaque action IEC, une variable de structure implicite de type SFCStepType ou SFCActionType est créée. Les composants de la structure (drapeaux) décrivent l'état d'une étape ou d'une action, ou bien la durée de traitement en cours d'une étape active.

La syntaxe de la déclaration de variable implicite est la suivante :

<nom de l'étape>: SFCStepType;

ou

_<nom de l'action>:SFCActionType;

NOTE : Les variables implicites des actions CEI sont précédées d'un trait de soulignement.

Les drapeaux booléens ci-dessous sont disponibles pour décrire l'état des étapes ou des actions.

Drapeaux booléens pour les étapes :

Drapeau booléen

Description

<nom de l'étape>.x

indique l'état d'activation actuel.

<nom de l'étape>._x

indique l'état d'activation pour le cycle suivant.

Si <nom de l'étape>.x = TRUE, l'étape est exécutée pendant le cycle en cours.

Si <nom de l'étape>._x = TRUE et <nom de l'étape>.x = FALSE, l'étape est exécutée dans le cycle suivant. En conséquence, <nom de l'étape>._x est copié dans <nom de l'étape>.x au début d'un cycle.

Drapeaux booléens pour les actions :

Drapeau booléen

Description

_<nom de l'action>.x

a la valeur TRUE si l'action est exécutée.

_<nom de l'action>._x

a la valeur TRUE si l'action est active.

Génération de symboles

Vous pouvez définir dans les propriétés d'élément d'une étape ou d'une action si une définition de symbole doit être ajoutée à une configuration de symbole éventuellement créée et téléchargée, pour le drapeau de l'étape ou de l'action. A cet effet, créez une entrée correspondant au droit d'accès voulu dans la colonne Symbole de la vue des propriétés de l'élément.

NOTE : Si vous forcez la valeur d'état d'une étape (pour activer l'étape) à l'aide du drapeau booléen <nom de l'étape>.x, sachez que cela aura une incidence sur les états non contrôlés du diagramme SFC.
 AVERTISSEMENT
FONCTIONNEMENT IMPRÉVU DE L'ÉQUIPEMENT
N’utilisez pas le drapeau booléen <nom de l'étape>.x pour forcer une valeur d'état afin de d’activer une étape.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels.

Durée via les variables TIME :

Le drapeau t indique la durée écoulée depuis l'activation de l'étape. Cela s'applique uniquement aux étapes, qu'une durée minimale soit configurée ou non dans les attributs d'étape (voir ci-dessous : SFCError).

Pour les étapes :

<nom d'étape>.t (<nom d'étape>._t non utilisable à des fins externes)

Pour les actions :

Les variables de durée implicites ne sont pas utilisées.

Contrôle de l'exécution du SFC (timeouts, réinitialisation, mode conseil)

Vous pouvez utiliser certaines variables disponibles de manière implicite, également nommées drapeaux SFC (voir le tableau ci-dessous) pour contrôler le fonctionnement d'un SFC. Vous pouvez par exemple indiquer les dépassements de temps ou activer le mode conseil pour les changements de transitions.

Pour avoir accès à ces drapeaux, vous devez les déclarer et les activer. Pour ce faire, utilisez la boîte de dialogue Paramètres SFC. Il s'agit d'une sous-boîte de dialogue de la boîte de dialogue Propriétés de l'objet.

La déclaration manuelle, requise dans SoMachine/SoMachine Motion V3.1, n'est nécessaire que pour activer l'accès en écriture depuis un autre POU (voir le paragraphe Accès aux drapeaux).

Dans ce cas, tenez compte des points suivants :

Si vous déclarez le drapeau de manière globale, vous devez désactiver l'option Déclarer de la boîte de dialogue Paramètres SFC. Sinon, un drapeau local déclaré implicitement est créé et utilisé à la place du drapeau global. Gardez à l'esprit qu'au départ, les paramètres SFC d'un POU SFC sont déterminés par les définitions figurant dans la boîte de dialogue Options > SFC.

Notez qu'une déclaration de variable de drapeau effectuée seulement dans la boîte de dialogue Paramètres SFC n'est visible que dans l'affichage en ligne du POU SFC.

Les variables implicites (drapeaux) ci-dessous peuvent être utilisées. Vous devez pour cela les déclarer et les activer dans la boîte de dialogue Paramètres SFC.

Variable

Type

Description

SFCInit

BOOL

Si cette variable prend la valeur TRUE, le SFC revient à l'étape initiale. Les étapes, actions et autres drapeaux SFC sont tous réinitialisés (initialisation). L'étape initiale reste active, mais elle n'est pas exécutée tant que la valeur de la variable est TRUE. Rétablissez SFCInit sur FALSE pour revenir au traitement normal.

SFCReset

BOOL

Cette variable se comporte comme SFCInit. La différence réside dans le fait que la suite du traitement a lieu après l'initialisation de l'étape initiale. Ainsi, le rétablissement du drapeau SFCReset sur FALSE peut être effectué lors de l'étape initiale.

SFCError

BOOL

Dès qu'un timeout se produit à une étape du SFC, cette variable prend la valeur TRUE. Condition préalable : SFCEnableLimit doit avoir la valeur TRUE.

Notez qu'aucun autre timeout ne peut être enregistré avant une réinitialisation de SFCError. SFCError doit être défini pour que les autres drapeaux de contrôle de durée (SFCErrorStep, SFCErrorPOU, SFCQuitError) puissent être utilisés.

NOTE : Vous pouvez utiliser les drapeaux SFCErrorAnalyzation et SFCErrorAnalyzationTable pour déterminer les composants de l'expression qui contribue à la value TRUE du SFCError. Dans l'éditeur SFC, le drapeau SFCErrorAnalyzationTable utilise cette fonction de manière implicite pour analyser les expressions dans les transitions.

SFCEnableLimit

BOOL

Vous pouvez utiliser cette variable pour l'activation (TRUE) et la désactivation (FALSE) explicites du contrôle de durée des étapes via SFCError. Cela signifie que, si cette variable est déclarée et activée (Paramètres SFC), elle doit avoir la valeur TRUE pour que SFCError fonctionne. Sinon, les timeouts des étapes ne sont pas enregistrés. L'utilisation peut être raisonnable pendant les démarrages ou le fonctionnement manuel. Si cette variable n'est pas définie, SFCError fonctionne automatiquement.

Condition préalable : SFCError doit être défini.

SFCErrorStep

STRING

Cette variable contient le nom d'une étape à laquelle un timeout a été enregistré par SFCError.timeout.

Condition préalable : SFCError doit être défini.

SFCErrorPOU

STRING

Cette variable contient le nom du POU SFC dans lequel un timeout s'est produit.

Condition préalable : SFCError doit être défini.

SFCQuitError

BOOL

Tant que cette variable a la valeur TRUE, l'exécution du diagramme SFC est interrompue et la variable SFCError est réinitialisée. Une fois la valeur FALSE rétablie, tous les états en cours dans les étapes actives sont réinitialisés.

Condition préalable : SFCError doit être défini.

SFCPause

BOOL

Tant que cette variable a la valeur TRUE, l'exécution du diagramme SFC est interrompue.

SFCTrans

BOOL

Cette variable prend la valeur TRUE dès qu'une transition est déclenchée.

SFCCurrentStep

STRING

Cette variable contient le nom de l'étape actuellement active, indépendamment du contrôle de durée. En cas de séquences simultanées, le nom de l'étape extérieure droite est enregistré.

SFCTipSFCTipMode

BOOL

Ces variables permettent d'utiliser le mode par à-coups dans le diagramme actuel. Une fois ce mode activé via SFCTipMode=TRUE, vous ne pouvez passer à l'étape suivante qu'en définissant SFCTip=TRUE (front montant). Tant que SFCTipMode a la valeur FALSE, il est possible de passer les transitions.

SFCErrorAnalyzation

Variable de type chaîne qui contient les variables contribuant à la valeur totale TRUE de SFCError (timeout dans une étape). Condition préalable : SFCError doit être activé.

SFCErrorAnalyzation utilise de manière implicite la fonction du POU AnalyzeExpression de la bibliothèque Analyzation.

SFCErrorAnalyzationTable

Table qui contient les variables contribuant à la valeur totale TRUE de SFCError (timeout dans une étape). Condition préalable : SFCError doit être activé.

SFCErrorAnalyzationTable utilise de manière implicite la fonction du POU AnalyzeExpressionTable de la bibliothèque Analyzation.

La figure suivante montre un exemple de certains drapeaux SFC d'erreur détectée en mode en ligne de l'éditeur.

Un délai d'attente a été détecté à l'étape s1 dans l'objet SFC POU par le drapeau SFCError.

Accès aux drapeaux

Pour permettre l'accès aux drapeaux de contrôle de l'exécution du SFC (timeouts, réinitialisation, mode conseil), déclarez et activez les variables des drapeaux comme décrit ci-dessus (Contrôle de l'exécution du SFC).

Syntaxe d'accès à partir d'une action ou d'une transition dans le POU SFC :

<nom d'étape>.<drapeau>

ou

_<nom d'action>.<drapeau>

Exemples :

status:=step1._x;
checkerror:=SFCerror;

Syntaxe d'accès à partir d'un autre POU :

<POU SFC>.<nom d'étape>.<drapeau>

ou

<POU SFC>._<nom d'action>.<drapeau>

Exemples :

status:=SFC_prog.step1._x;
checkerror:=SFC_prog.SFCerror;

Pour l'accès en écriture depuis un autre POU, tenez compte des points suivants :

  • La variable implicite doit également être déclarée explicitement comme variable VAR_INPUT du POU SFC.

  • Sinon, elle doit être déclarée globalement dans une GVL (liste de variables globales).

Exemple : Déclaration locale

PROGRAM SFC_prog
VAR_INPUT
  SFCinit:BOOL;
END_VAR

Exemple : Déclaration globale dans une GVL

VAR_GLOBAL
  SFCinit:BOOL;
END_VAR

Accès au drapeau dans PLC_PRG :

PROGRAM PLC_PRG
VAR
  setinit: BOOL;
END_VAR
SFC_prog.SFCinit:=setinit;  //Write access to SFCinit in SFC_prog

Analyse des expressions

La bibliothèque Analyzation permet d'analyser des expressions. Elle peut s'utiliser, par exemple, dans le diagramme SFC pour examiner le résultat du drapeau SFCError. Ce drapeau sert à surveiller les timeouts dans le diagramme SFC.

Vous pouvez utiliser les drapeaux SFCErrorAnalyzation et SFCErrorAnalyzationTable pour déterminer les composants de l'expression qui contribue à la value TRUE du SFCError.