Skip to main content

Indicateurs SFC

Les indicateurs SFC sont des variables créées implicitement, portant des noms prédéfinis, qui fournissent des fonctions de contrôle et de diagnostic des diagrammes SFC. Ces indicateurs permettent de déclencher des transitions de manière ciblée.

Par exemple

  • Détection des dépassements de délai

  • Réinitialisation des séquences d'étapes

  • Activation du mode pas à pas

Pour accéder à ces variables, les indicateurs correspondants doivent être déclarés et activés.

Nom

Type de données

Description

SFCInit

BOOL

TRUE : réinitialise la séquence à l'étape initiale. Les autres indicateurs SFC sont également réinitialisés (initialisation). Tant que la variable est TRUE, l'étape initiale reste activée (active), mais elle n'est pas exécutée. Le POU n'est à nouveau traité normalement qu'après que vous avez remis SFCInit à FALSE.

SFCReset

BOOL

Se comporte de manière similaire à SFCInit

En revanche, après l'initialisation, l'étape initiale continue d'être exécutée. Vous pouvez par exemple remettre immédiatement l'indicateur SFCReset à FALSE dans l'étape initiale.

SFCError

BOOL

Passe à TRUE lorsqu'un dépassement de délai s'est produit dans un diagramme SFC.

Si un autre dépassement de délai se produit dans le programme après le premier, il n'est détecté que si la variable SFCError a été réinitialisée au préalable. Dans le cas contraire, l'indicateur reste activé et les dépassements de délai supplémentaires ne sont pas enregistrés.

La déclaration de SFCError est nécessaire au fonctionnement des autres variables d'indicateur de surveillance temporelle : SFCErrorStep, SFCErrorPOU, SFCQuitError

SFCEnableLimit

BOOL

Sert à activer (TRUE) et à désactiver (FALSE) de manière ciblée le contrôle des dépassements de délai dans les étapes par SFCError

Si vous déclarez et activez cette variable (paramètres SFC), vous devez également la mettre à TRUE pour que SFCError fonctionne ; sinon, les éventuels dépassements de délai sont ignorés. Cela peut être utile, par exemple, lors de la mise en service ou en fonctionnement manuel. Si vous ne déclarez pas la variable, SFCError fonctionne automatiquement.

La condition requise est la déclaration de SFCError.

SFCErrorStep

STRING

Mémorise le nom de l'étape qui a provoqué un dépassement de délai enregistré par SFCError

Le nom est conservé jusqu'à ce que l'erreur d'étape enregistrée soit réinitialisée au moyen de SFCQuitError (FALSE -> TRUE).

La condition requise est la déclaration de SFCError.

SFCErrorPOU

STRING

En cas de dépassement de délai, mémorise le nom du POU dans lequel s'est produit un dépassement de délai enregistré par SFCError. Le nom est mémorisé jusqu'à ce que le dépassement de délai soit réinitialisé par SFCQuitError.

La condition requise est la déclaration de SFCError.

SFCQuitError

BOOL

Tant que cette variable booléenne est TRUE, le traitement du diagramme SFC est interrompu. Un éventuel dépassement de délai, mémorisé dans la variable SFCError, est alors réinitialisé. Si vous remettez la variable à FALSE, tous les temps précédents des étapes actives sont réinitialisés.

La condition requise est la déclaration de SFCError.

SFCPause

BOOL

Tant que cette variable est TRUE, le traitement du diagramme SFC est interrompu.

SFCTrans

BOOL

Passe à TRUE lorsqu'une transition est franchie.

SFCCurrentStep

STRING

Affiche le nom de l'étape actuellement active, indépendamment de la vérification du temps

Dans le cas d'un branchement parallèle, c'est toujours le nom de l'étape de la branche située le plus à droite qui est mémorisé.

SFCTip

SFCTipMode

BOOL

TRUE : active le mode pas à pas du POU SFC

Lorsque vous activez le mode pas à pas en définissant SFCTipMode := TRUE, vous ne pouvez passer à l'étape suivante qu'en définissant SFCTip sur TRUE. Tant que vous définissez SFCTipMode sur FALSE, vous pouvez également passer à l'étape suivante au moyen des transitions.

SFCErrorAnalyzation

Contient une chaîne de toutes les variables qui contribuent à la valeur totale TRUE de SFCError (dépassement de délai dans une étape)

SFCError doit être activé pour que cela fonctionne.

Pour cela, SFCErrorAnalyzation utilise implicitement la fonction du POU AnalyzeExpression de la bibliothèque Analyzation.

Pour plus d'informations sur la configuration avancée de l'analyse, voir également : SFC

SFCErrorAnalyzationTable

Contient un tableau des variables qui contribuent à la valeur totale TRUE de SFCError (dépassement de délai dans une étape)

SFCError doit être activé pour que cela fonctionne.

Pour cela, SFCErrorAnalyzationTable utilise implicitement la fonction du POU AnalyzeExpressionTable de la bibliothèque Analyzation.

Pour plus d'informations sur la configuration avancée de l'analyse, voir également : SFC

Génération implicite des indicateurs SFC

Les indicateurs SFC sont déclarés automatiquement lorsque vous avez activé l'option correspondante. Vous pouvez définir cette option dans la boîte de dialogue des propriétés Paramètres SFC pour des POU individuels ou dans la boîte de dialogue des paramètres du projet SFC pour tous les POU SFC du projet.

Astuce

Les paramètres SFC des indicateurs SFC de POU individuels ne sont effectifs que si vous n'avez pas activé l'option Utiliser les valeurs par défaut. Si vous avez activé cette option, ce sont les paramètres définis dans les paramètres du projet qui s'appliquent.

Astuce

Les indicateurs SFC que vous avez déclarés dans la boîte de dialogue des paramètres SFC ne sont visibles que dans la vue en ligne du POU SFC.

Astuce

Dans la Propriétés des éléments SFC, vous pouvez définir si une définition de symbole doit être exportée vers la configuration des symboles pour un indicateur.

Génération explicite des indicateurs SFC

Une déclaration manuelle, comme celle requise auparavant dans CoDeSys V2.3, n'est encore nécessaire que si un accès en écriture aux indicateurs doit être possible à partir d'un autre POU. Tenez compte des points suivants à ce sujet :

Important

Si les indicateurs ont été déclarés dans une liste de variables globales, vous devez désactiver le paramètre Déclarer dans la boîte de dialogue des paramètres SFC. Dans le cas contraire, un indicateur SFC local est également créé implicitement. Cet indicateur est alors utilisé à la place de la variable globale.

Exemple d'application pour SFCError

Exemple 1. Exemple

Vous avez créé un POU SFC nommé sfc1, qui contient une étape s1. Vous avez défini des limites de temps dans les propriétés de l'étape.

Si la durée d'activité de l'étape s1 dépasse la limite définie dans ses propriétés de temps, l'indicateur SFCError est activé. L'application peut évaluer cet indicateur afin de réagir au dépassement de délai.

Pour permettre cet accès, vous devez activer et déclarer l'indicateur dans les paramètres SFC. Si vous le déclarez uniquement, l'indicateur SFC est affiché dans la partie déclaration de la vue en ligne de sfc1, mais il ne fonctionne pas.

_cds_img_sfc_sfc_flags.png

Vous pouvez maintenant adresser l'indicateur SFC au sein du POU, par exemple dans une action (2), ou depuis l'extérieur du POU (1).

_cds_img_sfc_sfcerror_example.png

Vue en ligne du POU SFC sfc1 :

_cds_img_sfc_sfcerror_example_online.png

SFCError passe à TRUE dès qu'un dépassement de délai se produit dans sfc1.

Vous pouvez utiliser les indicateurs SFCErrorAnalyzation et SFCErrorAnalyzationTable de la bibliothèque Analyzation pour analyser la cause d'un dépassement de délai. Ces indicateurs permettent d'identifier les différents composants de l'expression qui contribuent à ce que SFCError prenne la valeur TRUE.



Accès aux indicateurs

Syntaxe d'accès

Au sein du POU, vous affectez directement l'indicateur : <variable name> := <sfc flag>

Exemple 2. Exemple
checkerror := SFCError;


À partir d'un autre POU avec le nom : <variable name> := <pou name>.<sfc flag>

Exemple 3. Exemple :
checkerror := SFC_prog.SFCError;


Si vous avez besoin d'un accès en écriture à partir d'un autre POU, vous devez également déclarer explicitement l'indicateur SFC en tant que variable VAR_INPUT dans le POU SFC ou globalement dans une GVL.

Exemple 4. Exemple

Déclaration locale

PROGRAM SFC_prog
VAR_INPUT
    SFCInit : BOOL;
END_VAR

Ou déclaration globale dans une liste de variables globales

VAR_GLOBAL
    SFCInit : BOOL;
END_VAR
PROGRAM PLC_PRG
VAR
    SetInit : BOOL;
END_VAR
SFC_prog.SFCInit := SetInit;  //Write access to SFCInit in SFC_prog