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 . 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é.
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;
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 de la vue des propriétés de l'élément.
AVERTISSEMENT | |
---|---|
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.
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
. Il s'agit d'une sous-boîte de dialogue de la boîte de dialogue 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
de la boîte de dialogue . 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 .Notez qu'une déclaration de variable de drapeau effectuée seulement dans la boîte de dialogue
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
.
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 ( ), 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 par le drapeau SFCError.
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
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.