-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathFbTask100ms.SCL
More file actions
82 lines (70 loc) · 2.77 KB
/
FbTask100ms.SCL
File metadata and controls
82 lines (70 loc) · 2.77 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
FUNCTION_BLOCK "FbTask100ms"
TITLE = 'Çàäà÷à âûçûâàåòñÿ êàæäûå 100ms.'
{ S7_read_back := 'true' ;
S7_blockview := 'big' }
AUTHOR : VA
FAMILY : LIB_PLC
VERSION : '2.1'
VAR_INPUT // Âõîäíûå ïåðåìåííûå, íå ñîõðàíÿåìûå.
Ts_ms :DINT := 100 ; // Øàã äèñêðåòèçàöèè ïî âðåìåíè [ìñ].
Reset :BOOL := FALSE; // Ñáðîñ ïðè ïåðåçàãðóçêå.
END_VAR
VAR // Âíóòðåííèå ïåðåìåííûå, ñîõðàíÿåìûå.
DbBlink :FbBlink ; // Ìèãàþùèé ñâåòîäèîä.
DbFilterA :FbFilterA; // Ôèëüòð àïåðèîäè÷åñêèé.
END_VAR
VAR_TEMP // Âðåìåííûå ïåðåìåííûå, íå ñîõðàíÿåìûå.
Ts :REAL; // Øàã äèñêðåòèçàöèè ïî âðåìåíè â ñåêóíäàõ.
END_VAR
BEGIN
// Çàäà÷à âûçûâàåòñÿ êàæäûå 100ms.
// DbTask100ms
// +-------------+
// | FbTask100ms |
// ->-|Ts_ms |
// ->-|Reset |
// +-------------+
Ts := DINT_TO_REAL(Ts_ms) * 0.001; // Øàã äèñêðåòèçàöèè ïî âðåìåíè â ñåêóíäàõ.
// *** Ïðèìåð ðàáîòû ñ äèñêðåòíûì àëãîðèòìîì. ***
// Ìèãàþùèé ñâåòîäèîä.
// DbBlink
// +---------------------+
// | FbBlink |
// -|TimeOn BlinkLamp|->-
// -|TimeOff |
// -|Ts_ms |
// -|Reset |
// +---------------------+
DbBlink.TimeOn := 2000 ; // Âðåìÿ âêëþ÷åíèÿ ëàìïî÷êè [ìñ].
DbBlink.TimeOff := 2000 ; // Âðåìÿ âûêëþ÷åíèÿ ëàìïî÷êè [ìñ].
DbBlink.Ts_ms := Ts_ms ; // Øàã äèñêðåòèçàöèè ïî âðåìåíè [ìñ].
DbBlink.Reset := Reset ; // Ñáðîñ ïðè ïåðåçàãðóçêå.
DbBlink() ; // Ìèãàþùèé ñâåòîäèîä.
// := DbBlink.BlinkLamp; // Ìèãàþùàÿ ëàìïî÷êà.
// *** Ïðèìåð ðàáîòû ñ àíàëîãîâûì àëãîðèòìîì. ***
// Ôèëüòð àïåðèîäè÷åñêèé.
// DbFilterA
// +-----------+
// | FbFilterA |
// ->-|In Out|->-
// -|Tf |
// -|Ts |
// +-----------+
DbFilterA.In := INT_TO_REAL(BOOL_TO_INT(DbBlink.BlinkLamp)); // Âõîäíîé ñèãíàë äî ôèëüòðàöèè.
DbFilterA.Tf := 0.5 ; // Ïîñòîÿííàÿ âðåìåíè ôèëüòðà [ñ].
DbFilterA.Ts := Ts ; // Øàã äèñêðåòèçàöèè ïî âðåìåíè [ñ].
DbFilterA() ; // Ôèëüòð àïåðèîäè÷åñêèé.
// := DbFilterA.Out ; // Âûõîäíîé ñèãíàë ïîñëå ôèëüòðàöèè.
// @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