48 lines
1.3 KiB
Smalltalk
48 lines
1.3 KiB
Smalltalk
(*
|
||
===============================================================================
|
||
Project : PLC_Library
|
||
Device : -
|
||
Path : Общие
|
||
Name : HYST
|
||
Type : FUNCTION_BLOCK
|
||
===============================================================================
|
||
*)
|
||
|
||
FUNCTION_BLOCK HYST
|
||
(*
|
||
Гистерезисный компаратор с зоной нечувствительности между ON и OFF.
|
||
Поддерживает как прямую (ON >= OFF), так и обратную (ON < OFF) логику переключения.
|
||
*)
|
||
VAR_INPUT
|
||
In : REAL; (* Входное контролируемое значение *)
|
||
ON : REAL; (* Порог включения (срабатывания) *)
|
||
OFF : REAL; (* Порог выключения (возврата) *)
|
||
END_VAR
|
||
VAR_OUTPUT
|
||
Q : BOOL; (* Выходное состояние компаратора *)
|
||
win : BOOL; (* Флаг: входное значение находится в зоне гистерезиса *)
|
||
END_VAR
|
||
(*----- IMPLEMENTATION -----*)
|
||
IF ON >= OFF THEN
|
||
IF IN < OFF THEN
|
||
Q := FALSE;
|
||
WIN := FALSE;
|
||
ELSIF IN > ON THEN
|
||
Q := TRUE;
|
||
WIN := FALSE;
|
||
ELSE
|
||
WIN := TRUE;
|
||
END_IF;
|
||
ELSE
|
||
IF IN > OFF THEN
|
||
Q := FALSE;
|
||
WIN := FALSE;
|
||
ELSIF IN < ON THEN
|
||
Q := TRUE;
|
||
WIN := FALSE;
|
||
ELSE
|
||
WIN := TRUE;
|
||
END_IF;
|
||
END_IF;
|
||
END_FUNCTION_BLOCK
|