Skip to main content

Section : alg.Alarme

La section SEC alg.Alarm décrit une alarme de module. Une alarme de module correspond essentiellement à une alarme du CODESYS gestion des alarmes qui a été configurée dans un groupe d'alarmes. Cependant, une alarme de module contient toujours des ajouts spécifiques au module.

Pour plus d'informations, consultez le Déclaration du module chapitre et Objet : Alarm Group

spécification

SEC alg.Alarm                                       //optional: yes, modifier: [UPDATE]
    SEC SetAlarm <alarm identifier>                 //optional: yes, modifier [UPDATE]
            Class := <class name>;                    //optional: no, type: ID
            Message := <TextlistEntry>;                 //optional: no, type: TextListEntry
            LatchVar1 := <LatchVariable1>;              //optional: yes, type: InstancePath
            LatchVar2 := <LatchVariable2>;              //optional: yes, type: InstancePath
            Deactivation := <DeactivationVariable>;     //optional: yes, type: InstancePath
            PendingTime := <PendingTime>;               //optional: yes, type: LiteralOrConstant
            PendingTimeParameter := <string>            //optional: no, type: literal/string
            HigherPrioAlarm := <HigherPrioAlarm_ID>;    //optional: yes, type: ID
            ModuleCalls := <ModuleCallFlags>;           //optional: yes, type:  ModuleCallFlag
            SEC Messages : <alarm identifier>           //optional: yes, modifier: [UPDATE]
                    Message := <TextlistEntry>;             //optional: no, type: TextListEntry
                    Number := <ColumnNumber>;               //optional: no, type: Literal
            END_SEC
            SEC LatchVar <latch var identifier>         //optional: yes, modifier [UPDATE]
                    LatchVar := <LatchVariable>;            //optional: no, type: InstancePath
                    Number := <LatchVarNumber>              //optional: no, type: LiteralOrConstant
            END_SEC
            SEC UpperLimit                              //optional: yes, modifier: [UPDATE]
                    Expression := <Expression>;             //optional: no, type: Literal/String
                    IncludeBorder := TRUE/FALSE;            //optional: no, type: FlagBool
                    UpperExpression := <UpperExpression>;   //optional: no, type: Literal/String
                    Hyteresis := <HysteresisValue>;         //optional: yes, type: LiteralOrConstant
            END_SEC
            SEC LowerLimit                              //optional: yes, modifier: [UPDATE]
                    Expression := <Expression>;             //optional: no, type: Literal/String
                    IncludeBorder := TRUE/FALSE;            //optional: no, type: FlagBool
                    LowerExpression := <LowerExpression>;   //optional: no, type: Literal/String
                    Hyteresis := <HysteresisValue>;         //optional: yes, type: LiteralOrConstant
            END_SEC
            SEC InsideRange                             //optional: yes, modifier: [UPDATE]
                    Expression := <Expression>;             //optional: no, type: Literal/String
                    AreaLow := <AreaLowValue>;              //optional: no, type: Literal/String
                    LowIncludeBorder := TRUE/FALSE;         //optional: no, type: FlagBool
                    HighIncludeBorder := TRUE/FALSE;        //optional: no, type: FlagBool
                    AreaHigh := <AreaHighValue>;            //optional: no, type: Literal/String
                    Hyteresis := <HysteresisValue>;         //optional: yes, type: LiteralOrConstant
            END_SEC
            SEC OutsideRange                            //optional: yes, modifier: [UPDATE]
                    Expression := <Expression>;             //optional: no, type: Literal/String
                    AreaLow := <AreaLowValue>;              //optional: no, type: Literal/String
                    LowIncludeBorder := TRUE/FALSE;         //optional: no, type: FlagBool
                    HighIncludeBorder := TRUE/FALSE;        //optional: no, type: FlagBool
                    AreaHigh := <AreaHighValue>;            //optional: no, type: Literal/String
                    Hyteresis := <HysteresisValue>;         //optional: yes, type: LiteralOrConstant
            END_SEC
            SEC Digital                                 //optional: yes, modifier: [UPDATE]
                    Expression := <Expression>;             //optional: no, type: Literal/String
                    Equal := TRUE/FALSE;                    //optional: no, type: FlagBool
                    EqualsExpression := <Expression>;       //optional: no, type: Literal/String
            END_SEC
            SEC Change                                  //optional: yes, modifier: [UPDATE]
                    Expression := <Expression>;             //optional: no, type: Literal/String
            END_SEC
            SEC Event                                  //optional: yes, modifier: [UPDATE]
            END_SEC
    END_SEC
END_SEC

SEC SetAlarm

Les sous-sections de SetAlarm définir toutes les propriétés nécessaires ou possibles pour une alarme. La cible de SetAlarm identifie l'alarme parmi les autres alarmes du module et sert à la référencer (principalement dans la définition HigherPrioAlarm).

Class

Nom de la classe d'alarme sous laquelle l'alarme sera créée.

Si cette classe d'alarme existe déjà dans l'application, l'alarme sera créée sous cette classe. Si cette classe n'existe pas, un objet modèle de classe d'alarme est recherché, qui doit être présent dans la POU voir. Si aucun objet de modèle de classe d'alarme approprié n'est trouvé, une erreur est émise lors de l'analyse du module.

Message

ID (de la forme TextListenName.TextListenEintragID) d'une entrée de liste de textes pour le texte d'alarme

Le message référencé par l'ID peut contenir les mêmes espaces réservés que le texte dans une configuration d'alarme. Par exemple, des espaces réservés tels que LATCH1 ou LATCH2 peut être utilisé

Si une entrée de liste de textes spécifiée est introuvable, un avertissement est émis pendant l'analyse.

Correspond à la Un message réglage dans le Groupe d'alarme objet.

LatchVar1

LatchVar2

Variables d'espace réservé

Dans le cas présent d'alarmes spécifiques au module, les variables ne peuvent être spécifiées que directement à partir du bloc fonctionnel du module (tout comme les variables sont spécifiées dans la déclaration du module, par exemple pour les paramètres)

Correspond aux paramètres Variable de verrouillage 1 / Variable de verrouillage 2 pour les espaces réservés <LATCH1> / <LATCH2> dans le Groupe d'alarme objet.

Deactivation

Variable de désactivation (BOOL).

TRUE: Désactive l'alarme définie, où seules les variables du bloc fonction du module peuvent être utilisées.

Si le type de la variable saisie n'est pas BOOL, une erreur est émise lors de l'analyse

Correspond à la Désactivation réglage dans le Groupe d'alarme objet.

PendingTime

Temps d'attente minimal. Définit la durée avant que l'alarme ne se déclenche après avoir atteint ses limites.

Exemple: TIME#5S

Correspond au réglage Min. temps d'attente dans le Groupe d'alarme objet.

PendingTimeParameter

Paramètre pour définir le temps d'attente minimum

La valeur attribuée au paramètre est une chaîne qui peut être interprétée comme une heure. Ou aussi comme une expression composée de paramètres de module et de littéraux temporels.

. Exemple:
  • TIME#5S

  • 'NoVar'

  • 'WithVar'

  • 'WithVar - NoVar + TIME#5S'

HigherPrioAlarm

ID des alarmes de priorité supérieure

Pour identifier l'alarme sous laquelle l'alarme actuelle doit être classée, un ID cible d'un SetAlarm section est spécifiée pour les alarmes de module existantes. Pour trouver le SetAlarm section avec l'ID cible correspondant, une recherche hiérarchique est effectuée à partir du propre module vers le haut dans les instances du module parent pour trouver les ID correspondants parmi les déclarations d'alarme. Si aucune alarme parent correspondante n'est trouvée, une erreur est émise lors de la vérification du générateur

Correspond au réglage Priorité plus élevée. alarme dans le Groupe d'alarme objet.

ModuleCalls

Pour la gestion des alarmes spécifiques au module, les FB de module peuvent offrir des interfaces spécifiques qui peuvent être appelées en cas d'alarme de module. Les drapeaux définissent dans quels cas cela se produira.

. Disponible ModuleCallFlags:
  • NONE: Aucun appel n'aura lieu

  • THIS: Un appel se produira pour les alarmes du module actuel

  • PARENTS: Un appel se produira à tous les modules parents du module actuel

  • ALL: Un appel se produira à tous les modules

Les FB de module qui seront appelés par cet indicateur doivent implémenter le IModuleAlarming interface. L'appel est effectué par le ConsumeModuleAlarm fonction de cette interface

Si la PARENTS drapeau a été défini pour un module de niveau supérieur, un avertissement s'affiche si un scan est exécuté (car ce drapeau n'existe pas pour les modules de niveau supérieur).

SEC Messages

La sous-section gère la même tâche que la Message paramètre, mais autorise plusieurs messages pour une alarme. Pour des raisons de compatibilité, l'(ancien) paramètre Message est toujours valide. Le message peut contenir les mêmes espaces réservés que le texte réel dans une configuration d'alarme. Cela signifie que les espaces réservés tels que <LATCH1> et <LATCH2> peut être utilisé. Si une entrée de liste de textes spécifiée est introuvable, un avertissement est émis pendant l'analyse.

Messages: Texte d'alarme sous la forme d'une entrée de liste de textes (de la forme TextListenName.TextListenEintragID)

Number: Colonne du tableau des alarmes où le message est affiché.

SEC LatchVar

Verrouiller les variables. Jusqu'à 10 variables de verrouillage peuvent être définies dans cette section.

Si, en plus de cette rubrique, LatchVar1 ou LatchVar2 est défini, la variable de cette section sera utilisée.

LatchVar: variable de verrouillage

Number: Numéro pour identifier la variable de verrouillage.

SEC UpperLimit

SEC LowerLimit

Conditions d'alarme pour les alarmes qui se déclenchent si les limites supérieures ou inférieures sont franchies.

La section ne peut apparaître qu'une seule fois sous le SEC SetAlarm section. Si ce n'est pas le cas, une erreur est émise lors de l'analyse.

Expression: expression ou valeur CEI qui est testée. Dans les expressions, des variables locales des FB du module ainsi que des constantes globales peuvent être utilisées.

IncludeBorder: TRUE Correspond à <= (UpperLimit) ou >= (LowerLimit). FALSE Correspond à < (UpperLimit) ou > (LowerLimit).

UpperExpresssion, LowerExpresssion: expression ou valeur CEI par rapport à laquelle Expression est testé. Dans les expressions, des variables locales des FB du module ainsi que des constantes globales peuvent être utilisées.

Hysteresis: Hystérésis d'alarme en %.

Correspond aux réglages Limite supérieure / Limite inférieure pour les types d'observation dans Groupe d'alarme objet.

SEC InsideRange

SEC OutsideRange

Conditions d'alarme pour les alarmes qui se déclenchent si une expression est à l'intérieur ou à l'extérieur d'une certaine plage de valeurs.

La section ne peut apparaître qu'une seule fois sous le SEC SetAlarm section. Si ce n'est pas le cas, une erreur est émise lors de l'analyse.

Hysteresis: Hystérésis d'alarme en %

  • Expression: expression ou valeur CEI qui est testée. Dans les expressions, des variables locales des FB du module ainsi que des constantes globales peuvent être utilisées.

  • AreaLow: Limites inférieures de la gamme (valeur ou expression CEI). Dans les expressions, des variables locales des FB du module ainsi que des constantes globales peuvent être utilisées.

  • LowIncludeBorder: Cet indicateur booléen détermine si la limite inférieure elle-même est incluse dans la plage de comparaison (correspond à <=)

  • HighIncludeBorder: Cet indicateur booléen détermine si la limite supérieure elle-même est incluse dans la plage de comparaison (correspond à >=)

  • AreaHigh: Bornes hautes de la gamme (valeur ou expression CEI). Dans les expressions, des variables locales des FB du module ainsi que des constantes globales peuvent être utilisées.

Correspond aux paramètres À l'intérieur de la plage / Hors plage pour les types d'observation dans Groupe d'alarme objet.

SEC Digital

Alarme déclenchée si deux expressions sont comparées l'une à l'autre.

La section ne peut apparaître qu'une seule fois sous le SEC SetAlarm section. Si ce n'est pas le cas, une erreur est émise lors de l'analyse.

  • Expression: expression ou valeur CEI qui est testée. Dans les expressions, des variables locales des FB du module ainsi que des constantes globales peuvent être utilisées.

  • Equal: TRUE/FALSE: L'expression sera vérifiée pour l'égalité/l'inégalité.

  • EqualsExpression: expression ou valeur CEI qui est vérifiée Expression. Dans les expressions, des variables locales des FB du module ainsi que des constantes globales peuvent être utilisées.

Correspond au type d'observation Numérique dans le Groupe d'alarme objet.

SEC Change

Alarme déclenchée si une expression change de valeur.

La section ne peut apparaître qu'une seule fois sous le SEC SetAlarm section. Si ce n'est pas le cas, une erreur est émise lors de l'analyse.

Expression: expression ou valeur CEI dont les modifications sont vérifiées. Dans les expressions, des variables locales des FB du module ainsi que des constantes globales peuvent être utilisées.

Correspond au type d'observation Changement dans le Groupe d'alarme objet.

SEC Event

Détermine que la section d'alarme actuelle crée une alarme d'événement. Cette alarme peut être déclenchée par la fonction RaiseModuleEvent() du AC_Alarming bibliothèque.

Exemple

Exemple 37. Plage de valeurs
SEC SetAlarm : ValueRange
        Class := Error;
        Message := TL.Alarm_Temperature;
        LatchVar1 := rAlarmValueLow;
        LatchVar2 := rAlarmValueHigh;
        ModuleCalls := THIS | PARENTS;
        SEC Messages : msg2
                Message := TL.msg5_Message;
                Number := 5;
        END_SEC
        SEC OutsideRange
                Expression := 'rValue';
                AreaLow := 'rAlarmValueLow';
                LowIncludeBorder := TRUE;
                HighIncludeBorder := TRUE;
                AreaHigh := 'rAlarmValueHigh';
        END_SEC
END_SEC
Exemple 38. Section: PendingTime
SEC alg.Alarm
	SEC SetAlarm : NoVar
		Class := AlarmClassTemplate;
		Message := TL.NoVar_Message;
		PendingTimeParameter := 'NoVar';
		SEC Digital
			Expression := 'xAlarm';
			Equal := TRUE;
			EqualsExpression :='TRUE'; 
		END_SEC
	END_SEC
	SEC SetAlarm : WithVar
		Class := AlarmClassTemplate;
		Message := TL.NoVar_Message;
		PendingTimeParameter := 'WithVar';
		SEC Digital
			Expression := 'xAlarm';
			Equal := TRUE;
			EqualsExpression :='TRUE'; 
		END_SEC
	END_SEC
	SEC SetAlarm : SimpleMath
		Class := AlarmClassTemplate;
		Message := TL.NoVar_Message;
		PendingTimeParameter := 'WithVar - NoVar + TIME#5S';
		SEC Digital
			Expression := 'xAlarm';
			Equal := TRUE;
			EqualsExpression :='TRUE'; 
		END_SEC
	END_SEC	
	SEC SetAlarm : NoParam
		Class := AlarmClassTemplate;
		Message := TL.NoVar_Message;
		PendingTime := TIME#5S;
		SEC Digital
			Expression := 'xAlarm';
			Equal := TRUE;
			EqualsExpression :='TRUE'; 
		END_SEC
	END_SEC
END_SEC