-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathFb3PosControl.SCL
More file actions
135 lines (118 loc) · 4.49 KB
/
Fb3PosControl.SCL
File metadata and controls
135 lines (118 loc) · 4.49 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
FUNCTION_BLOCK "Fb3PosControl"
TITLE = 'Регулятор трехпозиционный.'
{ S7_read_back := 'true' ;
S7_blockview := 'big' }
AUTHOR : VA
FAMILY : LIB_PLC
VERSION : '2.2'
VAR_INPUT // Входные переменные, сохраняемые.
PV :REAL := 0.0; // Измеренное значение регулируемого параметра.
SP :REAL := 0.0; // Заданное значение регулируемого параметра.
DBand :REAL := 2.0; // Зона нечувствительности > 0.
HystPos :REAL := 1.0; // Гистерезис > 0.
HystNeg :REAL := 1.0; // Гистерезис > 0.
END_VAR
VAR_OUTPUT // Выходные переменные, сохраняемые.
OpPos :BOOL :=FALSE; // Выход управляющего сигнала положительный.
OpNeg :BOOL :=FALSE; // Выход управляющего сигнала отрицательный.
END_VAR
VAR // Внутренние переменные, сохраняемые.
ER :REAL := 0.0; // Ошибка регулирования.
END_VAR
BEGIN
// Регулятор трехпозиционный.
// Db3PosControl
// +---------------+
// | Fb3PosControl |
// ->-|PV OpPos|->-
// -|SP OpNeg|->-
// -|DBand |
// -|HystPos |
// -|HystNeg |
// +---------------+
// Ошибка регулирования.
ER := SP - PV;
// ВКЛ нагрев или движение вперед.
IF (ER >= (DBand + HystPos))
THEN
OpPos := TRUE;
END_IF;
// ВЫКЛ нагрев или движение вперед.
IF (ER <= (DBand - HystPos))
THEN
OpPos := FALSE;
END_IF;
// ВКЛ охлаждение или движение назад.
IF (ER <= (0.0 - DBand - HystNeg))
THEN
OpNeg := TRUE;
END_IF;
// ВЫКЛ охлаждение или движение назад.
IF (ER >= (0.0 - DBand + HystNeg))
THEN
OpNeg := FALSE;
END_IF;
// Применение.
//
// Трехпозиционный регулятор используется как простейший регулятор температуры или положения.
// Статическая характеристика.
//
// OpPos
// ^
// | DBand
// |<-------->|
// | |
// | HystPos|HystPos
// | |<---->|<---->|
// | | | |
// 1|---***<***1***<******
// | * | *
// | v | ^
// | * | *
// -ER <-----***<*******<******0******>*******>***-----> +ER
// * | * |
// v | ^ |
// * | * |
// ******>***1***>***---|-1
// | | | |
// |<---->|<---->| |
// HystHeg|HystHeg |
// | |
// |<-------->|
// DBand |
// v
// OpNeg
// Схема включения.
//
// +---------------+ +-------------+ +-------------+
// SP-->--|SP OpPos|-->--| Нагреватель |-->--| Датчик |--+-->PV
// | | +-------------+ | температуры | |
// | | | | |
// | | +-------------+ | | |
// +--|PV OpNeg|-->--| Охладитель |-->--| | |
// | +---------------+ +-------------+ +-------------+ |
// | |
// +-------------------------------------------------------------+
//
// +---------------+ +--------------+ +-------------+
// SP-->--|SP OpPos|-->--| Мотор вперед |-->--| Датчик |--+-->PV
// | | +--------------+ | положения | |
// | | | | |
// | | +--------------+ | | |
// +--|PV OpNeg|-->--| Мотор назад |-->--| | |
// | +---------------+ +--------------+ +-------------+ |
// | |
// +--------------------------------------------------------------+
// @COPYLEFT ALL WRONGS RESERVED :)
// Author: VA
// Contacts: DIY.PLC.314@gmail.com
// Date start LIB_PLC: 2014
// License: GNU GPL-2.0-or-later
// https://www.gnu.org/licenses/old-licenses/gpl-2.0.html
// https://www.youtube.com/watch?v=n1F_MfLRlX0
// https://www.youtube.com/@DIY_PLC
// https://github.com/DIYPLC/LIB_PLC
// https://oshwlab.com/diy.plc.314/PLC_HW1_SW1
// https://3dtoday.ru/3d-models/mechanical-parts/body/korpus-na-din-reiku
// https://t.me/DIY_PLC
END_FUNCTION_BLOCK