-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathFbSubstReal.SCL
More file actions
86 lines (68 loc) · 2.48 KB
/
Copy pathFbSubstReal.SCL
File metadata and controls
86 lines (68 loc) · 2.48 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
FUNCTION_BLOCK "FbSubstReal"
TITLE = 'Çàìåùåíèå àíàëîãîâî ñèãíàëà äëÿ PCS7v9'
{ S7_m_c := 'true' ;
S7_tag := 'true' ;
S7_read_back := 'true' }
AUTHOR : VA
FAMILY : LIB_PLC
VERSION : '1.1'
VAR_INPUT // Âõîäíûå ïåðåìåííûå, ñîõðàíÿåìûå.
In
{ S7_dynamic := 'true' }
:STRUCT // Âõîä.
Value : REAL := 0.0 ; // Âõîä.
ST : BYTE := B#16#80; // Ñòàòóñ ñèãíàëà â íîðìå 16#80.
END_STRUCT;
Subs
{ S7_dynamic := 'true' ;
S7_m_c := 'true' ;
S7_xm_c := 'Value,true;';
S7_xqc := 'Value,true;' }
:STRUCT // Çàìåùàþùåå çíà÷åíèå.
Value : REAL := 0.0 ; // Çàìåùàþùåå çíà÷åíèå.
ST : BYTE := B#16#80; // Ñòàòóñ ñèãíàëà â íîðìå 16#80.
END_STRUCT;
SubsOn
{ S7_dynamic := 'true';
S7_m_c := 'true'}
:BOOL := FALSE; // Âêëþ÷èòü çàìåùàþùåå çíà÷åíèå íà âûõîäå.
END_VAR
//-----------------------------------------------------------------------------------------------
VAR_OUTPUT // Âûõîäíûå ïåðåìåííûå, ñîõðàíÿåìûå.
Out
{ S7_dynamic := 'true' }
:STRUCT // Âûõîä.
Value : REAL := 0.0 ; // Âûõîä.
ST : BYTE := B#16#80; // Ñòàòóñ ñèãíàëà â íîðìå 16#80.
END_STRUCT;
END_VAR
BEGIN
//-----------------------------------------------------------------------------------------------
// VA 22-03-2023
// Ôóíêöèîíàëüíûé áëîê äëÿ çàìåùåíèÿ àíàëîãîâî ñèãíàëà äëÿ PCS7 v9.1 + APL.
// Function block Substitution struct Real value.
// Ïåðâîå ïðèìåíåíèå ýòî íàäî ñäåëàòü ñèìóëÿöèþ ñ SCADA íà âðåìÿ ðåâèçèè äàò÷èêîâ.
// Âòîðîå ïðèìåíåíèå ýòî íàäî ÷òîáû äàò÷èêè ïîêàçûâàëè 0 êîãäà âûêëþ÷åíû.
// Åñëè çàìåùàþùåå çíà÷åíèå íå òðåáóåòñÿ ïåðåäàâàòü â ñêàäó òî ñíÿòü ôëàæêè OCM â CFC.
IF (SubsOn) THEN // Substitution (çàìåùåíèå).
Out.Value := Subs.Value;
Out.ST := Subs.ST;
ELSE
Out.Value := In.Value;
Out.ST := In.ST;
END_IF;
//-----------------------------------------------------------------------------------------------
// @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
// https://drive.google.com/drive/folders/16GDX0i07rwDrl_oPzL-lQAqMiAz3ouJV?usp=sharing
END_FUNCTION_BLOCK