Skip to main content

Sección: alg.Alarma

La sección SEC alg.Alarm describe una alarma de módulo. Una alarma de módulo corresponde esencialmente a una alarma del CODESYS gestión de alarmas que se ha configurado en un grupo de alarmas. Sin embargo, una alarma de módulo aún contiene adiciones específicas del módulo.

Para más información ver capítulo Sintaxis de declaración de módulo y Objeto: grupo de alarmas

Especificación

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

Las subsecciones de SetAlarm definir todas las propiedades que son necesarias o posibles para una alarma. el objetivo de SetAlarm identifica la alarma de las otras alarmas en el módulo y se utiliza para hacer referencia a ella (principalmente en la definición HigherPrioAlarm).

Class

Nombre de clase de alarma, bajo el cual se creará la alarma.

Si esta clase de alarma ya existe en la aplicación, la alarma se creará bajo esta clase. Si esta clase no existe, se busca un objeto de plantilla de clase de alarma, que debe estar presente en el POU vista. Si no se encuentra un objeto de plantilla de clase de alarma apropiado, se emite un error cuando se escanea el módulo.

Message

DNI (de la forma TextListenName.TextListenEintragID) de una entrada de lista de texto para el texto de alarma

El mensaje al que hace referencia el ID puede contener los mismos marcadores de posición que el texto en una configuración de alarma. Por ejemplo, marcadores de posición como LATCH1 o LATCH2 puede ser usado

Si no se puede encontrar una entrada de lista de texto específica, se emite una advertencia durante la exploración.

corresponde a la Mensaje ajuste en el Grupo de alarma objeto.

LatchVar1

LatchVar2

Variables de marcador de posición

En el presente caso de alarmas específicas del módulo, las variables solo se pueden especificar directamente desde el bloque de función del módulo (al igual que las variables se especifican en la declaración del módulo, por ejemplo, parámetros)

Corresponde a la configuración Variable de bloqueo 1 / Variable de bloqueo 2 para marcadores de posición <LATCH1> / <LATCH2> en el Grupo de alarma objeto.

Deactivation

Variable de desactivación (BOOL).

TRUE: Desactiva la alarma definida, donde solo se pueden usar las variables del bloque de funciones del módulo.

Si el tipo de variable que se ingresa no es BOOL, luego se emite un error durante el escaneo

corresponde a la Desactivación ajuste en el Grupo de alarma objeto.

PendingTime

Tiempo mínimo de espera. Define la cantidad de tiempo antes de que la alarma suene realmente después de alcanzar sus límites.

Ejemplo: TIME#5S

Corresponde al ajuste mín. tiempo pendiente en el Grupo de alarma objeto.

PendingTimeParameter

Parámetro para establecer el tiempo mínimo de espera.

El valor asignado al parámetro es una cadena que puede interpretarse como tiempo. O como una expresión que consta de parámetros de módulo y literales de tiempo.

. Ejemplo:
  • TIME#5S

  • 'NoVar'

  • 'WithVar'

  • 'WithVar - NoVar + TIME#5S'

HigherPrioAlarm

ID de las alarmas de mayor prioridad

Para identificar la alarma bajo la cual se debe clasificar la alarma actual, una ID de destino de un SetAlarm La sección se especifica para las alarmas del módulo existente. para encontrar el SetAlarm sección con el ID de destino correspondiente, se realiza una búsqueda jerárquica desde el propio módulo hacia arriba en las instancias del módulo principal para encontrar ID coincidentes entre las declaraciones de alarma. Si no se encuentra ninguna alarma principal correspondiente, se emite un error durante la verificación del generador

Corresponde al ajuste Mayor prioridad. alarma en el Grupo de alarma objeto.

ModuleCalls

Para la gestión de alarmas específicas del módulo, los FB de módulo pueden ofrecer interfaces específicas a las que se puede llamar si se produce una alarma de módulo. Las banderas definen en qué casos sucederá esto.

. Disponible ModuleCallFlags:
  • NONE: No se producirán llamadas

  • THIS: Se producirá una llamada para las alarmas del módulo presente

  • PARENTS: Se realizará una llamada a todos los módulos principales del módulo actual

  • ALL: Se producirá una llamada a todos los módulos.

Los FBs de módulo que serán llamados por esta bandera deben implementar el IModuleAlarming interfaz. La llamada es realizada por el ConsumeModuleAlarm función de esta interfaz

Si el PARENTS se estableció un indicador para un módulo de nivel superior, se muestra una advertencia si se ejecuta un análisis (porque estos indicadores no existen para los módulos de nivel superior).

SEC Messages

La subsección gestiona la misma tarea que la Message parámetro, pero permite múltiples mensajes para una alarma. Por razones de compatibilidad, el parámetro (antiguo) Message aun es válido. El mensaje puede contener los mismos marcadores de posición que el texto real en una configuración de alarma. Esto significa que también los marcadores de posición como <LATCH1> y <LATCH2> puede ser usado. Si no se puede encontrar una entrada de lista de texto específica, se emite una advertencia durante la exploración.

Messages: Texto de alarma en forma de una entrada de lista de texto (de la forma TextListenName.TextListenEintragID)

Number: Columna de la tabla de alarmas donde se muestra el mensaje.

SEC LatchVar

Fijar variables. En esta sección se pueden definir hasta 10 variables de latch.

Si, además de esta sección, LatchVar1 o LatchVar2 se define, se utilizará la variable de esta sección.

LatchVar: Variable de enganche

Number: Número para identificar la variable latch.

SEC UpperLimit

SEC LowerLimit

Condiciones de alarma para alarmas que se disparan si se cruzan los límites superior o inferior.

Se permite que la sección ocurra solo una vez debajo de la SEC SetAlarm sección. Si este no es el caso, se emite un error durante el escaneo.

Expression: expresión IEC o valor que se prueba. En las expresiones, se pueden utilizar variables locales de los FB del módulo, así como constantes globales.

IncludeBorder: TRUE corresponde a <= (UpperLimit) o >= (LowerLimit). FALSE corresponde a < (UpperLimit) o > (LowerLimit).

UpperExpresssion, LowerExpresssion: Expresión IEC o valor contra el cual se Expresión se prueba En las expresiones, se pueden utilizar variables locales de los FB del módulo, así como constantes globales.

Hysteresis: Histéresis de alarma en %.

Corresponde a la configuración Limite superior / Límite inferior para los tipos de observación en el Grupo de alarma objeto.

SEC InsideRange

SEC OutsideRange

Condiciones de alarma para alarmas que se disparan si una expresión está dentro o fuera de un cierto rango de valores.

Se permite que la sección ocurra solo una vez debajo de la SEC SetAlarm sección. Si este no es el caso, se emite un error durante el escaneo.

Hysteresis: Histéresis de alarma en %

  • Expression: expresión IEC o valor que se prueba. En las expresiones, se pueden utilizar variables locales de los FB del módulo, así como constantes globales.

  • AreaLow: Límites inferiores del rango (valor o expresión IEC). En las expresiones, se pueden utilizar variables locales de los FB del módulo, así como constantes globales.

  • LowIncludeBorder: Este indicador booleano determina si el propio límite inferior está incluido en el rango de comparación (corresponde a <=)

  • HighIncludeBorder: Este indicador booleano determina si el propio límite superior está incluido en el rango de comparación (corresponde a >=)

  • AreaHigh: Límites superiores del rango (valor o expresión IEC). En las expresiones, se pueden utilizar variables locales de los FB del módulo, así como constantes globales.

Corresponde a la configuración Rango interior / Fuera de rango para los tipos de observación en el Grupo de alarma objeto.

SEC Digital

Alarma que salta si se comparan dos expresiones entre sí.

Se permite que la sección ocurra solo una vez debajo de la SEC SetAlarm sección. Si este no es el caso, se emite un error durante el escaneo.

  • Expression: expresión IEC o valor que se prueba. En las expresiones, se pueden utilizar variables locales de los FB del módulo, así como constantes globales.

  • Equal: TRUE/FALSE: Se comprobará la expresión para igualdad/desigualdad.

  • EqualsExpression: Expresión o valor IEC que se compara con Expression. En las expresiones, se pueden utilizar variables locales de los FB del módulo, así como constantes globales.

Corresponde al tipo de observación. Digital en el Grupo de alarma objeto.

SEC Change

Alarma que salta si una expresión cambia de valor.

Se permite que la sección ocurra solo una vez debajo de la SEC SetAlarm sección. Si este no es el caso, se emite un error durante el escaneo.

Expression: Expresión IEC o valor que se comprueba para cambios. En las expresiones, se pueden utilizar variables locales de los FB del módulo, así como constantes globales.

Corresponde al tipo de observación. Cambiar en el Grupo de alarma objeto.

SEC Event

Determina que la sección de alarma actual crea una alarma de evento. Esta alarma puede ser disparada por la función RaiseModuleEvent() desde el AC_Alarming Biblioteca.

Ejemplo

ejemplo 37. Rango de valores
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
ejemplo 38. sección 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