-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathFb2PosControl.SCL
More file actions
128 lines (111 loc) · 3.54 KB
/
Fb2PosControl.SCL
File metadata and controls
128 lines (111 loc) · 3.54 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
FUNCTION_BLOCK "Fb2PosControl"
TITLE = 'Ðåãóëÿòîð äâóõïîçèöèîííûé.'
{ S7_read_back := 'true' ;
S7_blockview := 'big' }
AUTHOR : VA
FAMILY : LIB_PLC
VERSION : '2.1'
VAR_INPUT // Âõîäíûå ïåðåìåííûå, ñîõðàíÿåìûå.
PV :REAL := 0.0; // Èçìåðåííîå çíà÷åíèå ðåãóëèðóåìîãî ïàðàìåòðà.
SP :REAL := 0.0; // Çàäàííîå çíà÷åíèå ðåãóëèðóåìîãî ïàðàìåòðà.
HYST :REAL := 5.0; // Ãèñòåðåçèñ > 0.
END_VAR
VAR_OUTPUT // Âûõîäíûå ïåðåìåííûå, ñîõðàíÿåìûå.
OP :BOOL := FALSE; // Âûõîä óïðàâëÿþùåãî ñèãíàëà.
END_VAR
VAR // Âíóòðåííèå ïåðåìåííûå, ñîõðàíÿåìûå.
ER :REAL := 0.0; // Îøèáêà ðåãóëèðîâàíèÿ.
END_VAR
BEGIN
// Ðåãóëÿòîð äâóõïîçèöèîííûé.
// Db2PosControl
// +---------------+
// | Fb2PosControl |
// ->-|PV OP|->-
// -|SP |
// -|HYST |
// +---------------+
// Îøèáêà ðåãóëèðîâàíèÿ.
ER := SP - PV;
// Ðåãóëÿòîð äâóõïîçèöèîííûé.
IF (ER >= HYST) THEN
OP:=TRUE;
END_IF;
IF (ER <= HYST * (-1.0)) THEN
OP := FALSE;
END_IF;
// Ïðèìåíåíèå.
//
// Äâóõïîçèöèîííûé ðåãóëÿòîð èñïîëüçóåòñÿ êàê ïðîñòåéøèé ðåãóëÿòîð òåìïåðàòóðû, äàâëåíèÿ, óðîâíÿ.
// Óñëîâíîå ãðàôè÷åñêîå îáîçíà÷åíèå.
//
// +---------------+
// | |
// | +--<--+-- |
// | | | |
// ER->-| v ^ |->-OP
// | | | |
// | --+-->--+ |
// | |
// +---------------+
// Ñòàòè÷åñêàÿ õàðàêòåðèñòèêà.
//
// OP
// ^
// |
// ***<***1***<******
// * | *
// v | ^
// * | *
// -ER <--******>***0***>***--> +ER
// | | |
// |<---->|<---->|
// HYST HYST
// Âðåìåííàÿ õàðàêòåðèñòèêà.
//
// ^ PV,SP
// | PV
// |----------*---------------*------
// | * * * * |
// | * * * * | SP + HYST
// | * * * |
// |======*=======*=======*========== SP
// | * * * |
// | * * * | SP - HYST
// | * * * |
// |--*---------------*--------------
// | *
// |*
// +-----------------------------------------> t[s]
//
// ^ OP
// |
// 1*********** *********
// | * * *
// 0----------*********-------***------------> t[s]
// Ñõåìà âêëþ÷åíèÿ.
//
// +---------------+
// | | Îáúåêò óïðàâëåíèÿ
// | +--<--+-- | +-----------+
// +---+ ER | | | | OP | K |
// SP-->--| + |-->--| v ^ |-->--| --------- |-->--+-->PV
// PV +--| - | | | | | | T * s + 1 | |
// | +---+ | --+-->--+ | +-----------+ |
// | | | |
// | +---------------+ |
// | |
// +----------------------------------------------------+
// @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