forked from komatic1/SCL_modular_PID
-
Notifications
You must be signed in to change notification settings - Fork 0
/
LIMALARM.scl
44 lines (44 loc) · 1.97 KB
/
LIMALARM.scl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
FUNCTION_BLOCK FB111
TITLE =" limit alarm"
AUTHOR : AUT_1
FAMILY : MODCONT
NAME : LIMALARM
VERSION : " 1.0"
// reverse by komatic
(*
Контроль граничных условий.
Проверяет заданные граничные значения входного сигнала.
*)
VAR_INPUT
H_LM_ALM : REAL := 1.000000e+002; //верхняя граница нарушения
H_LM_WRN : REAL := 9.000000e+001; //верхняя граница предупреждения
L_LM_WRN : REAL := 1.000000e+001; //нижняя граница предупреждения
L_LM_ALM : REAL ; //нижняя граница нарушения
INV : REAL ; //входная переменная
HYS : REAL := 1.000000e+000; //гистерезис
COM_RST : BOOL ; //полный рестарт
END_VAR
VAR_OUTPUT
QH_LMALM : BOOL ; //верхняя граница нарушения достигнута
QH_LMWRN : BOOL ; //верхняя граница предупреждения достигнута
QL_LMWRN : BOOL ; //нижняя граница предупреждения достигнута
QL_LMALM : BOOL ; //нижняя граница нарушения достигнута
END_VAR
BEGIN
IF COM_RST
THEN
QH_LMALM:=0;
QH_LMWRN:=0;
QL_LMWRN:=0;
QL_LMALM:=0;
ELSE
IF INV >= H_LM_ALM THEN QH_LMALM:=1; END_IF;
IF INV < (H_LM_ALM - HYS) THEN QH_LMALM:=0; END_IF;
IF INV >= H_LM_WRN THEN QH_LMWRN:=1; END_IF;
IF INV < (H_LM_WRN - HYS) THEN QH_LMWRN:=0; END_IF;
IF INV <= L_LM_ALM THEN QL_LMALM:=1; END_IF;
IF INV > (L_LM_ALM + HYS) THEN QL_LMALM:=0; END_IF;
IF INV <= L_LM_WRN THEN QL_LMWRN:=1; END_IF;
IF INV > (L_LM_WRN + HYS) THEN QL_LMWRN:=0; END_IF;
END_IF;
END_FUNCTION_BLOCK