Skip to main content

Sezione: alg.Allarme

La sezione SEC alg.Alarm descrive un allarme del modulo. Un allarme del modulo corrisponde essenzialmente ad un allarme del CODESYS gestione allarmi configurata in un gruppo allarmi. Tuttavia, un allarme del modulo contiene ancora aggiunte specifiche del modulo.

Per ulteriori informazioni, vedere il Dichiarazione del modulo capitolo e Oggetto: Gruppo Allarme

Specifica

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

Le sottosezioni di SetAlarm definire tutte le proprietà necessarie o possibili per un allarme. L'obiettivo di SetAlarm identifica l'allarme dagli altri allarmi nel modulo e viene utilizzato per farvi riferimento (principalmente nella definizione HigherPrioAlarm).

Class

Nome della classe di allarme con la quale verrà creato l'allarme.

Se questa classe di allarme esiste già nell'applicazione, l'allarme verrà creato in questa classe. Se questa classe non esiste viene ricercato un oggetto template classe allarme, che deve essere presente nel file POU visualizzazione. Se non viene trovato alcun oggetto modello di classe di allarme appropriato, viene emesso un errore durante la scansione del modulo.

Message

ID (del modulo TextListenName.TextListenEintragID) di una voce dell'elenco testi per il testo dell'allarme

Il messaggio a cui fa riferimento l'ID può contenere gli stessi segnaposto del testo in una configurazione di allarme. Ad esempio i segnaposto come LATCH1 O LATCH2 può essere utilizzata

Se non è possibile trovare una determinata voce dell'elenco di testi, durante la scansione viene emesso un avviso.

Corrisponde a Messaggio impostazione nel Gruppo allarme oggetto.

LatchVar1

LatchVar2

Variabili segnaposto

Nel caso attuale degli allarmi specifici del modulo, le variabili possono essere specificate solo direttamente dal blocco funzione del modulo (proprio come le variabili vengono specificate nella dichiarazione del modulo, ad esempio, i parametri)

Corrisponde alle impostazioni Variabile di blocco 1 / Latch variabile 2 per i segnaposto <LATCH1> / <LATCH2> nel Gruppo allarme oggetto.

Deactivation

Variabile di disattivazione (BOOL).

TRUE: Disattiva l'allarme definito, in cui è possibile utilizzare solo le variabili dei blocchi funzione del modulo.

Se il tipo della variabile immessa non lo è BOOL, durante la scansione viene generato un errore

Corrisponde a Disattivazione impostazione nel Gruppo allarme oggetto.

PendingTime

Tempo di attesa minimo. Definisce l'intervallo di tempo prima che l'allarme si attivi effettivamente dopo aver raggiunto i suoi limiti.

Esempio: TIME#5S

Corrisponde all'impostazione minimo tempo in sospeso nel Gruppo allarme oggetto.

PendingTimeParameter

Parametro per impostare il tempo minimo di attesa

Il valore assegnato al parametro è una stringa che può essere interpretata come tempo. O anche come espressione composta da parametri del modulo e valori letterali temporali.

. Esempio:
  • TIME#5S

  • 'NoVar'

  • 'WithVar'

  • 'WithVar - NoVar + TIME#5S'

HigherPrioAlarm

ID degli allarmi con priorità più alta

Per identificare l'allarme sotto il quale dovrebbe essere classificato l'allarme attuale, un ID target di a SetAlarm è specificata la sezione per gli allarmi del modulo esistente. Per trovare il SetAlarm sezione con l'ID di destinazione corrispondente, viene eseguita una ricerca gerarchica dal proprio modulo verso l'alto nelle istanze del modulo genitore per abbinare gli ID tra le dichiarazioni di allarme. Se non viene trovato alcun allarme genitore corrispondente, viene emesso un errore durante il controllo del generatore

Corrisponde all'impostazione Prezzo più alto. allarme nel Gruppo allarme oggetto.

ModuleCalls

Per la gestione degli allarmi specifici del modulo, gli FB del modulo possono offrire interfacce specifiche che possono essere richiamate se si verifica un allarme del modulo. I flag definiscono in quali casi ciò accadrà.

. Disponibile ModuleCallFlags:
  • NONE: Non verranno effettuate chiamate

  • THIS: Verrà effettuata una chiamata per gli allarmi del modulo presente

  • PARENTS: Verrà effettuata una chiamata a tutti i moduli principali del modulo presente

  • ALL: Verrà effettuata una chiamata a tutti i moduli

Gli FB del modulo che verranno chiamati da questo flag devono implementare il file IModuleAlarming interfaccia. La chiamata viene eseguita da ConsumeModuleAlarm funzione di questa interfaccia

Se la PARENTS è stato impostato un flag per un modulo di livello superiore, viene visualizzato un avviso se viene eseguita una scansione (perché questo flag non esiste per i moduli di livello superiore).

SEC Messages

La sottosezione gestisce la stessa attività di Message parametro, ma consente più messaggi per un allarme. Per ragioni di compatibilità il (vecchio) parametro Message è ancora valido. Il messaggio può contenere gli stessi segnaposto del testo vero e proprio in una configurazione di allarme. Ciò significa che anche i segnaposto come <LATCH1> E <LATCH2> può essere utilizzata. Se non è possibile trovare una determinata voce dell'elenco di testi, durante la scansione viene emesso un avviso.

Messages: testo di allarme sotto forma di voce di un elenco di testi (del formato TextListenName.TextListenEintragID)

Number: Colonna nella tabella degli allarmi in cui viene visualizzato il messaggio.

SEC LatchVar

Variabili di latch. In questa sezione è possibile definire fino a 10 variabili latch.

Se, oltre a questa sezione, LatchVar1 O LatchVar2 è definita, verrà utilizzata la variabile di questa sezione.

LatchVar: Variabile di blocco

Number: Numero per identificare la variabile latch.

SEC UpperLimit

SEC LowerLimit

Condizioni di allarme per gli allarmi che si attivano se vengono superati i limiti superiori o inferiori.

La sezione può verificarsi solo una volta sotto il SEC SetAlarm sezione. In caso contrario verrà emesso un errore durante la scansione.

Expression: espressione o valore IEC testato. Nelle espressioni si possono utilizzare variabili locali degli FB del modulo nonché costanti globali.

IncludeBorder: TRUE corrisponde a <= (UpperLimit) O >= (LowerLimit). FALSE corrisponde a < (UpperLimit) O > (LowerLimit).

UpperExpresssion, LowerExpresssion: espressione o valore IEC rispetto al quale Espressione è testato. Nelle espressioni si possono utilizzare variabili locali degli FB del modulo nonché costanti globali.

Hysteresis: Isteresi di allarme in %.

Corrisponde alle impostazioni Limite superiore / Limite inferiore per i tipi di osservazione in Gruppo allarme oggetto.

SEC InsideRange

SEC OutsideRange

Condizioni di allarme per gli allarmi che si attivano se un'espressione è all'interno o all'esterno di un determinato intervallo di valori.

La sezione può verificarsi solo una volta sotto il SEC SetAlarm sezione. In caso contrario verrà emesso un errore durante la scansione.

Hysteresis: Isteresi di allarme in %

  • Expression: espressione o valore IEC testato. Nelle espressioni si possono utilizzare variabili locali degli FB del modulo nonché costanti globali.

  • AreaLow: Limiti inferiori dell'intervallo (valore o espressione IEC). Nelle espressioni si possono utilizzare variabili locali degli FB del modulo nonché costanti globali.

  • LowIncludeBorder: Questo flag booleano determina se il limite inferiore stesso è compreso nell'intervallo di confronto (corrisponde a <=)

  • HighIncludeBorder: Questo flag booleano determina se il limite superiore stesso è compreso nell'intervallo di confronto (corrisponde a >=)

  • AreaHigh: Limiti superiori dell'intervallo (valore o espressione IEC). Nelle espressioni si possono utilizzare variabili locali degli FB del modulo nonché costanti globali.

Corrisponde alle impostazioni All'interno del raggio d'azione / Fuori portata per i tipi di osservazione in Gruppo allarme oggetto.

SEC Digital

Allarme che viene generato se due espressioni vengono confrontate tra loro.

La sezione può verificarsi solo una volta sotto il SEC SetAlarm sezione. In caso contrario verrà emesso un errore durante la scansione.

  • Expression: espressione o valore IEC testato. Nelle espressioni si possono utilizzare variabili locali degli FB del modulo nonché costanti globali.

  • Equal: TRUE/FALSE: L'espressione verrà controllata per verificare l'uguaglianza/disuguaglianza.

  • EqualsExpression: espressione o valore IEC con cui viene effettuato il controllo Expression. Nelle espressioni si possono utilizzare variabili locali degli FB del modulo nonché costanti globali.

Corrisponde al tipo di osservazione Digitale nel Gruppo allarme oggetto.

SEC Change

Allarme che viene lanciato se un'espressione cambia il suo valore.

La sezione può verificarsi solo una volta sotto il SEC SetAlarm sezione. In caso contrario verrà emesso un errore durante la scansione.

Expression: espressione o valore IEC di cui viene verificata la presenza di modifiche. Nelle espressioni si possono utilizzare variabili locali degli FB del modulo nonché costanti globali.

Corrisponde al tipo di osservazione Modifica nel Gruppo allarme oggetto.

SEC Event

Determina che la sezione dell'allarme corrente crei un allarme evento. Questo allarme può essere attivato dalla funzione RaiseModuleEvent() dal AC_Alarming biblioteca.

Esempio

Esempio 37. Intervallo di valori
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
Esempio 38. Sezione: 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