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
|
TYPE UDT 1
VERSION : 0.1
STRUCT
VAR1_INT : INT := 11;
VAR2_DINT : DINT := L#22;
VAR3_DWORD : DWORD;
VAR4_REAL : REAL;
VAR5_BOOL : BOOL := TRUE;
VAR6_BOOL : BOOL;
VAR7_INT : INT := 42;
VAR8_UDT2 : UDT 2;
END_STRUCT;
END_TYPE
TYPE UDT 2
VERSION : 0.1
STRUCT
VAR0_INT : INT := 101;
VAR1_BOOL : BOOL;
VAR2_BOOL : BOOL := TRUE;
VAR3_DINT : DINT := L#102;
END_STRUCT;
END_TYPE
DATA_BLOCK DB 1
STRUCT
DBVAR_UDT1 : UDT 1;
DBVAR2 : INT;
END_STRUCT;
BEGIN
DBVAR2 := 99;
END_DATA_BLOCK
FUNCTION FC 1 : VOID
VAR_INPUT
FCINVAR_UDT1 : UDT 1;
FCINVAR_INT : INT;
END_VAR
BEGIN
L #FCINVAR_INT
__ASSERT== __ACCU 1, 123
NOP 0
END_FUNCTION
FUNCTION_BLOCK FB 1
VAR_INPUT
FBINVAR_UDT1 : UDT 1;
END_VAR
BEGIN
NOP 0
END_FUNCTION_BLOCK
DATA_BLOCK DB 2
FB 1
BEGIN
END_DATA_BLOCK
ORGANIZATION_BLOCK OB 1
BEGIN
// Check DB 1 initial values
AUF DB 1
L DBW 0 // DBVAR_UDT1.VAR1_INT
__ASSERT== __ACCU 1, 11
L DBD 2 // DBVAR_UDT1.VAR2_DINT
__ASSERT== __ACCU 1, 22
L DBD 6 // DBVAR_UDT1.VAR3_DWORD
__ASSERT== __ACCU 1, 0
L DBD 10 // DBVAR_UDT1.VAR4_REAL
__ASSERT== __ACCU 1, 0.0
L DBB 14 // DBVAR_UDT1.VAR5/6_BOOL
__ASSERT== __ACCU 1, 1
L DBB 15 // Reserved space after VAR6_BOOL
__ASSERT== __ACCU 1, 0
L DBW 16 // DBVAR_UDT1.VAR7_INT
__ASSERT== __ACCU 1, 42
L DBW 18 // DBVAR_UDT1.VAR8_UDT2.VAR0_INT
__ASSERT== __ACCU 1, 101
L DBB 20 // DBVAR_UDT1.VAR8_UDT2.VAR1/2_BOOL
__ASSERT== __ACCU 1, 2
L DBB 21 // Reserved space after VAR2_BOOL
__ASSERT== __ACCU 1, 0
L DBD 22 // DBVAR_UDT1.VAR8_UDT2.VAR3_DINT
__ASSERT== __ACCU 1, 102
L DBW 26 // DBVAR2
__ASSERT== __ACCU 1, 99
// Check DB 2 initial values
AUF DB 2
L DBW 0 // FBINVAR_UDT1.VAR1_INT
__ASSERT== __ACCU 1, 11
L DBD 2 // FBINVAR_UDT1.VAR2_DINT
__ASSERT== __ACCU 1, 22
// CALL FC 1 (
// FCINVAR_INT := 123,
// )
CALL SFC 46 // STOP CPU
END_ORGANIZATION_BLOCK
|