@kuriousdesign/machine-sdk 1.0.65 → 1.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish.yml +28 -0
- package/README.md +28 -51
- package/dist/custom-types/BaseDevice/Device.d.ts +1 -1
- package/dist/custom-types/BaseDevice/Device.js +1 -1
- package/dist/custom-types/BaseDevice/index.d.ts +1 -0
- package/dist/custom-types/BaseDevice/index.js +1 -0
- package/dist/custom-types/Devices/index.d.ts +0 -2
- package/dist/custom-types/Devices/index.js +0 -2
- package/dist/custom-types/Recipe.d.ts +1 -0
- package/dist/custom-types/Recipe.js +2 -0
- package/package.json +1 -1
- package/src/abb/enums/GCs.mod +44 -44
- package/src/abb/enums/PartLocationIds.mod +13 -13
- package/src/abb/enums/RobTasks.mod +18 -18
- package/src/abb/enums/States.mod +20 -20
- package/src/abb/procs/MainModule.mod +188 -188
- package/src/abb/records/DeviceDataTypes.mod +35 -35
- package/src/custom-types/AppState.ts +115 -115
- package/src/custom-types/BaseDevice/Actions.ts +45 -45
- package/src/custom-types/BaseDevice/ApiOpcua.ts +71 -71
- package/src/custom-types/BaseDevice/Device.ts +224 -224
- package/src/custom-types/BaseDevice/DeviceCmds.ts +45 -45
- package/src/custom-types/BaseDevice/DeviceConstants.ts +9 -9
- package/src/custom-types/{Devices → BaseDevice}/DeviceTypes.ts +60 -60
- package/src/custom-types/BaseDevice/Processes.ts +38 -38
- package/src/custom-types/BaseDevice/index.ts +7 -6
- package/src/custom-types/Bridge.ts +8 -8
- package/src/custom-types/Com.ts +19 -19
- package/src/custom-types/Devices/Axis.ts +222 -222
- package/src/custom-types/Devices/Conductor.ts +14 -14
- package/src/custom-types/Devices/Pot.ts +24 -24
- package/src/custom-types/Devices/Robot.ts +208 -208
- package/src/custom-types/Devices/index.ts +3 -4
- package/src/custom-types/GlobalConstants.ts +98 -98
- package/src/custom-types/HMI.ts +52 -52
- package/src/custom-types/Machine.ts +130 -130
- package/src/custom-types/Part.ts +238 -238
- package/src/custom-types/RackData.ts +22 -22
- package/src/custom-types/Recipe.ts +250 -247
- package/src/custom-types/RecipeManagerFB.ts +10 -10
- package/src/custom-types/TaskQueue.ts +86 -86
- package/src/custom-types/UserManagerFB.ts +7 -7
- package/src/custom-types/index.ts +14 -14
- package/src/enums/Colors.ts +79 -79
- package/src/enums/DeviceId.ts +116 -116
- package/src/enums/ExtrusionType.ts +5 -5
- package/src/enums/OpcuaDatatype.ts +27 -27
- package/src/enums/Pages.ts +21 -21
- package/src/enums/States.ts +173 -173
- package/src/enums/TaskId.ts +37 -37
- package/src/enums/index.ts +9 -9
- package/src/functions/colorMapping.ts +43 -43
- package/src/functions/index.ts +2 -2
- package/src/functions/mqtt-helpers.ts +20 -20
- package/src/functions/topicMapping.ts +6 -6
- package/src/index.ts +3 -3
- package/src/plc-tags/index.ts +38 -38
- package/src/plc-tags/mqtt.ts +9 -9
- package/src/plc-tags/opcua.ts +3 -3
- package/src/styles/animations.css +15 -15
- package/tsconfig.json +13 -13
- package/dist/custom-types/Devices/Device.d.ts +0 -111
- package/dist/custom-types/Devices/Device.js +0 -108
- package/dist/custom-types/PartData.d.ts +0 -11
- package/dist/custom-types/PartData.js +0 -2
- package/dist/custom-types/RecipeData.d.ts +0 -7
- package/dist/custom-types/RecipeData.js +0 -2
- package/dist/enums/Errors.d.ts +0 -6
- package/dist/enums/Errors.js +0 -28
- package/dist/enums/Priorities.d.ts +0 -18
- package/dist/enums/Priorities.js +0 -24
- package/dist/enums/RobPositions.d.ts +0 -12
- package/dist/enums/RobPositions.js +0 -16
- package/dist/enums/Warnings.d.ts +0 -6
- package/dist/enums/Warnings.js +0 -18
- /package/dist/custom-types/{Devices → BaseDevice}/DeviceTypes.d.ts +0 -0
- /package/dist/custom-types/{Devices → BaseDevice}/DeviceTypes.js +0 -0
|
@@ -1,188 +1,188 @@
|
|
|
1
|
-
!************************************************************
|
|
2
|
-
! RAPID MAIN PROGRAM — State Machine Framework (PLC-style)
|
|
3
|
-
!************************************************************
|
|
4
|
-
MODULE MainModule
|
|
5
|
-
|
|
6
|
-
!========================================================
|
|
7
|
-
! GLOBAL STATE VARIABLES
|
|
8
|
-
!========================================================
|
|
9
|
-
PERS num StepNum := States.INACTIVE;
|
|
10
|
-
VAR bool FirstScan := TRUE;
|
|
11
|
-
VAR bool StepMode := FALSE;
|
|
12
|
-
VAR bool GoToNextStep := FALSE;
|
|
13
|
-
VAR clock StepStartTime;
|
|
14
|
-
|
|
15
|
-
!========================================================
|
|
16
|
-
! SIMULATED DEVICE & ENGINE FLAGS (replace with real I/O)
|
|
17
|
-
!========================================================
|
|
18
|
-
VAR bool ErrorPresent := FALSE;
|
|
19
|
-
VAR bool ChildrenErrorPresent := FALSE;
|
|
20
|
-
VAR bool InstantKill_ON := FALSE;
|
|
21
|
-
VAR bool Reset_REQ := FALSE;
|
|
22
|
-
VAR bool Clear_REQ := FALSE;
|
|
23
|
-
VAR bool AutoReset := FALSE;
|
|
24
|
-
|
|
25
|
-
VAR bool RequestTask := FALSE;
|
|
26
|
-
VAR bool RequestProcess := FALSE;
|
|
27
|
-
|
|
28
|
-
!========================================================
|
|
29
|
-
! HELPER PROCEDURES / FUNCTIONS
|
|
30
|
-
!========================================================
|
|
31
|
-
PROC preRun()
|
|
32
|
-
! Overhead logic before state processing
|
|
33
|
-
ENDPROC
|
|
34
|
-
|
|
35
|
-
PROC updateStatus()
|
|
36
|
-
! Update status or communications
|
|
37
|
-
ENDPROC
|
|
38
|
-
|
|
39
|
-
PROC postRun()
|
|
40
|
-
! Cleanup or end-of-cycle logic
|
|
41
|
-
ENDPROC
|
|
42
|
-
|
|
43
|
-
PROC desc(msg STRING)
|
|
44
|
-
TPWrite "STATE: "\msg;
|
|
45
|
-
ENDPROC
|
|
46
|
-
|
|
47
|
-
PROC setNextStep(nextState num)
|
|
48
|
-
StepNum := nextState;
|
|
49
|
-
FirstScan := TRUE;
|
|
50
|
-
StepStartTime := Clock();
|
|
51
|
-
TPWrite "→ Next State: "\numtostr(nextState, 0);
|
|
52
|
-
ENDPROC
|
|
53
|
-
|
|
54
|
-
FUNC bool Aborting()
|
|
55
|
-
! Insert abort handling logic
|
|
56
|
-
RETURN TRUE;
|
|
57
|
-
ENDFUNC
|
|
58
|
-
|
|
59
|
-
FUNC bool Resetting()
|
|
60
|
-
! Insert reset logic
|
|
61
|
-
RETURN TRUE;
|
|
62
|
-
ENDFUNC
|
|
63
|
-
|
|
64
|
-
FUNC bool Stopping()
|
|
65
|
-
! Insert stop logic
|
|
66
|
-
RETURN TRUE;
|
|
67
|
-
ENDFUNC
|
|
68
|
-
|
|
69
|
-
PROC Clear()
|
|
70
|
-
ErrorPresent := FALSE;
|
|
71
|
-
ChildrenErrorPresent := FALSE;
|
|
72
|
-
TPWrite "Cleared errors";
|
|
73
|
-
ENDPROC
|
|
74
|
-
|
|
75
|
-
!========================================================
|
|
76
|
-
! MAIN EXECUTION LOOP
|
|
77
|
-
!========================================================
|
|
78
|
-
PROC main()
|
|
79
|
-
TPWrite "=== Starting Main State Machine ===";
|
|
80
|
-
StepStartTime := Clock();
|
|
81
|
-
|
|
82
|
-
WHILE TRUE DO
|
|
83
|
-
preRun;
|
|
84
|
-
updateStatus;
|
|
85
|
-
|
|
86
|
-
! Step mode logic
|
|
87
|
-
IF StepMode THEN
|
|
88
|
-
IF GoToNextStep THEN
|
|
89
|
-
GoToNextStep := FALSE;
|
|
90
|
-
FirstScan := TRUE;
|
|
91
|
-
ENDIF
|
|
92
|
-
ENDIF
|
|
93
|
-
|
|
94
|
-
!----------------------------------------------------
|
|
95
|
-
! STATE MACHINE
|
|
96
|
-
!----------------------------------------------------
|
|
97
|
-
SELECT StepNum
|
|
98
|
-
|
|
99
|
-
CASE States.ABORTING:
|
|
100
|
-
desc("ABORTING");
|
|
101
|
-
IF Aborting() THEN
|
|
102
|
-
setNextStep(States.KILLED);
|
|
103
|
-
ENDIF
|
|
104
|
-
|
|
105
|
-
CASE States.KILLED:
|
|
106
|
-
desc("KILLED");
|
|
107
|
-
IF NOT InstantKill_ON THEN
|
|
108
|
-
IF ErrorPresent OR ChildrenErrorPresent THEN
|
|
109
|
-
setNextStep(States.ERROR);
|
|
110
|
-
ELSE
|
|
111
|
-
setNextStep(States.INACTIVE);
|
|
112
|
-
ENDIF
|
|
113
|
-
ENDIF
|
|
114
|
-
|
|
115
|
-
CASE States.ERROR:
|
|
116
|
-
desc("ERROR");
|
|
117
|
-
IF NOT ErrorPresent AND NOT ChildrenErrorPresent THEN
|
|
118
|
-
setNextStep(States.INACTIVE);
|
|
119
|
-
ELSIF Clear_REQ THEN
|
|
120
|
-
Clear;
|
|
121
|
-
ENDIF
|
|
122
|
-
|
|
123
|
-
CASE States.INACTIVE:
|
|
124
|
-
desc("INACTIVE");
|
|
125
|
-
IF ErrorPresent OR ChildrenErrorPresent THEN
|
|
126
|
-
setNextStep(States.ERROR);
|
|
127
|
-
ELSIF Reset_REQ OR AutoReset THEN
|
|
128
|
-
setNextStep(States.RESETTING);
|
|
129
|
-
ENDIF
|
|
130
|
-
|
|
131
|
-
CASE States.RESETTING:
|
|
132
|
-
desc("RESETTING");
|
|
133
|
-
IF Resetting() THEN
|
|
134
|
-
setNextStep(States.IDLE);
|
|
135
|
-
ENDIF
|
|
136
|
-
|
|
137
|
-
CASE States.IDLE:
|
|
138
|
-
desc("IDLE");
|
|
139
|
-
checkForNewTaskRequest(); --> going to read the pLC variable for task Request and those task params
|
|
140
|
-
SWITCH requestedTaskId ! Pseudo-variable for requested task
|
|
141
|
-
CASE RobTasks.WEIGHING:
|
|
142
|
-
PROC WeighingTask();
|
|
143
|
-
setNextStep(States.RUNNING);
|
|
144
|
-
! Idle logic here
|
|
145
|
-
! check for any task requests and transition to running if so
|
|
146
|
-
! setNextStep(States.RUNNING);
|
|
147
|
-
|
|
148
|
-
CASE States.RUNNING:
|
|
149
|
-
desc("RUNNING");
|
|
150
|
-
SELECT requestedTaskId ! Pseudo-variable for requested task
|
|
151
|
-
CASE 1:
|
|
152
|
-
! Execute Task 1
|
|
153
|
-
|
|
154
|
-
CASE States.STOPPING:
|
|
155
|
-
desc("STOPPING");
|
|
156
|
-
IF Stopping() THEN
|
|
157
|
-
IF ErrorPresent OR ChildrenErrorPresent THEN
|
|
158
|
-
setNextStep(States.ABORTING);
|
|
159
|
-
ELSE
|
|
160
|
-
setNextStep(States.IDLE);
|
|
161
|
-
ENDIF
|
|
162
|
-
ENDIF
|
|
163
|
-
|
|
164
|
-
CASE States.DONE:
|
|
165
|
-
desc("DONE");
|
|
166
|
-
! Final state logic
|
|
167
|
-
|
|
168
|
-
CASE States.PAUSED:
|
|
169
|
-
desc("PAUSED");
|
|
170
|
-
! Handle paused logic
|
|
171
|
-
|
|
172
|
-
CASE States.MANUAL:
|
|
173
|
-
desc("MANUAL");
|
|
174
|
-
! Handle manual mode logic
|
|
175
|
-
|
|
176
|
-
DEFAULT:
|
|
177
|
-
desc("UNKNOWN STATE");
|
|
178
|
-
setNextStep(States.INACTIVE);
|
|
179
|
-
|
|
180
|
-
ENDSELECT
|
|
181
|
-
|
|
182
|
-
postRun;
|
|
183
|
-
FirstScan := FALSE;
|
|
184
|
-
WaitTime 0.1; ! 100ms scan cycle
|
|
185
|
-
ENDWHILE
|
|
186
|
-
ENDPROC
|
|
187
|
-
|
|
188
|
-
ENDMODULE
|
|
1
|
+
!************************************************************
|
|
2
|
+
! RAPID MAIN PROGRAM — State Machine Framework (PLC-style)
|
|
3
|
+
!************************************************************
|
|
4
|
+
MODULE MainModule
|
|
5
|
+
|
|
6
|
+
!========================================================
|
|
7
|
+
! GLOBAL STATE VARIABLES
|
|
8
|
+
!========================================================
|
|
9
|
+
PERS num StepNum := States.INACTIVE;
|
|
10
|
+
VAR bool FirstScan := TRUE;
|
|
11
|
+
VAR bool StepMode := FALSE;
|
|
12
|
+
VAR bool GoToNextStep := FALSE;
|
|
13
|
+
VAR clock StepStartTime;
|
|
14
|
+
|
|
15
|
+
!========================================================
|
|
16
|
+
! SIMULATED DEVICE & ENGINE FLAGS (replace with real I/O)
|
|
17
|
+
!========================================================
|
|
18
|
+
VAR bool ErrorPresent := FALSE;
|
|
19
|
+
VAR bool ChildrenErrorPresent := FALSE;
|
|
20
|
+
VAR bool InstantKill_ON := FALSE;
|
|
21
|
+
VAR bool Reset_REQ := FALSE;
|
|
22
|
+
VAR bool Clear_REQ := FALSE;
|
|
23
|
+
VAR bool AutoReset := FALSE;
|
|
24
|
+
|
|
25
|
+
VAR bool RequestTask := FALSE;
|
|
26
|
+
VAR bool RequestProcess := FALSE;
|
|
27
|
+
|
|
28
|
+
!========================================================
|
|
29
|
+
! HELPER PROCEDURES / FUNCTIONS
|
|
30
|
+
!========================================================
|
|
31
|
+
PROC preRun()
|
|
32
|
+
! Overhead logic before state processing
|
|
33
|
+
ENDPROC
|
|
34
|
+
|
|
35
|
+
PROC updateStatus()
|
|
36
|
+
! Update status or communications
|
|
37
|
+
ENDPROC
|
|
38
|
+
|
|
39
|
+
PROC postRun()
|
|
40
|
+
! Cleanup or end-of-cycle logic
|
|
41
|
+
ENDPROC
|
|
42
|
+
|
|
43
|
+
PROC desc(msg STRING)
|
|
44
|
+
TPWrite "STATE: "\msg;
|
|
45
|
+
ENDPROC
|
|
46
|
+
|
|
47
|
+
PROC setNextStep(nextState num)
|
|
48
|
+
StepNum := nextState;
|
|
49
|
+
FirstScan := TRUE;
|
|
50
|
+
StepStartTime := Clock();
|
|
51
|
+
TPWrite "→ Next State: "\numtostr(nextState, 0);
|
|
52
|
+
ENDPROC
|
|
53
|
+
|
|
54
|
+
FUNC bool Aborting()
|
|
55
|
+
! Insert abort handling logic
|
|
56
|
+
RETURN TRUE;
|
|
57
|
+
ENDFUNC
|
|
58
|
+
|
|
59
|
+
FUNC bool Resetting()
|
|
60
|
+
! Insert reset logic
|
|
61
|
+
RETURN TRUE;
|
|
62
|
+
ENDFUNC
|
|
63
|
+
|
|
64
|
+
FUNC bool Stopping()
|
|
65
|
+
! Insert stop logic
|
|
66
|
+
RETURN TRUE;
|
|
67
|
+
ENDFUNC
|
|
68
|
+
|
|
69
|
+
PROC Clear()
|
|
70
|
+
ErrorPresent := FALSE;
|
|
71
|
+
ChildrenErrorPresent := FALSE;
|
|
72
|
+
TPWrite "Cleared errors";
|
|
73
|
+
ENDPROC
|
|
74
|
+
|
|
75
|
+
!========================================================
|
|
76
|
+
! MAIN EXECUTION LOOP
|
|
77
|
+
!========================================================
|
|
78
|
+
PROC main()
|
|
79
|
+
TPWrite "=== Starting Main State Machine ===";
|
|
80
|
+
StepStartTime := Clock();
|
|
81
|
+
|
|
82
|
+
WHILE TRUE DO
|
|
83
|
+
preRun;
|
|
84
|
+
updateStatus;
|
|
85
|
+
|
|
86
|
+
! Step mode logic
|
|
87
|
+
IF StepMode THEN
|
|
88
|
+
IF GoToNextStep THEN
|
|
89
|
+
GoToNextStep := FALSE;
|
|
90
|
+
FirstScan := TRUE;
|
|
91
|
+
ENDIF
|
|
92
|
+
ENDIF
|
|
93
|
+
|
|
94
|
+
!----------------------------------------------------
|
|
95
|
+
! STATE MACHINE
|
|
96
|
+
!----------------------------------------------------
|
|
97
|
+
SELECT StepNum
|
|
98
|
+
|
|
99
|
+
CASE States.ABORTING:
|
|
100
|
+
desc("ABORTING");
|
|
101
|
+
IF Aborting() THEN
|
|
102
|
+
setNextStep(States.KILLED);
|
|
103
|
+
ENDIF
|
|
104
|
+
|
|
105
|
+
CASE States.KILLED:
|
|
106
|
+
desc("KILLED");
|
|
107
|
+
IF NOT InstantKill_ON THEN
|
|
108
|
+
IF ErrorPresent OR ChildrenErrorPresent THEN
|
|
109
|
+
setNextStep(States.ERROR);
|
|
110
|
+
ELSE
|
|
111
|
+
setNextStep(States.INACTIVE);
|
|
112
|
+
ENDIF
|
|
113
|
+
ENDIF
|
|
114
|
+
|
|
115
|
+
CASE States.ERROR:
|
|
116
|
+
desc("ERROR");
|
|
117
|
+
IF NOT ErrorPresent AND NOT ChildrenErrorPresent THEN
|
|
118
|
+
setNextStep(States.INACTIVE);
|
|
119
|
+
ELSIF Clear_REQ THEN
|
|
120
|
+
Clear;
|
|
121
|
+
ENDIF
|
|
122
|
+
|
|
123
|
+
CASE States.INACTIVE:
|
|
124
|
+
desc("INACTIVE");
|
|
125
|
+
IF ErrorPresent OR ChildrenErrorPresent THEN
|
|
126
|
+
setNextStep(States.ERROR);
|
|
127
|
+
ELSIF Reset_REQ OR AutoReset THEN
|
|
128
|
+
setNextStep(States.RESETTING);
|
|
129
|
+
ENDIF
|
|
130
|
+
|
|
131
|
+
CASE States.RESETTING:
|
|
132
|
+
desc("RESETTING");
|
|
133
|
+
IF Resetting() THEN
|
|
134
|
+
setNextStep(States.IDLE);
|
|
135
|
+
ENDIF
|
|
136
|
+
|
|
137
|
+
CASE States.IDLE:
|
|
138
|
+
desc("IDLE");
|
|
139
|
+
checkForNewTaskRequest(); --> going to read the pLC variable for task Request and those task params
|
|
140
|
+
SWITCH requestedTaskId ! Pseudo-variable for requested task
|
|
141
|
+
CASE RobTasks.WEIGHING:
|
|
142
|
+
PROC WeighingTask();
|
|
143
|
+
setNextStep(States.RUNNING);
|
|
144
|
+
! Idle logic here
|
|
145
|
+
! check for any task requests and transition to running if so
|
|
146
|
+
! setNextStep(States.RUNNING);
|
|
147
|
+
|
|
148
|
+
CASE States.RUNNING:
|
|
149
|
+
desc("RUNNING");
|
|
150
|
+
SELECT requestedTaskId ! Pseudo-variable for requested task
|
|
151
|
+
CASE 1:
|
|
152
|
+
! Execute Task 1
|
|
153
|
+
|
|
154
|
+
CASE States.STOPPING:
|
|
155
|
+
desc("STOPPING");
|
|
156
|
+
IF Stopping() THEN
|
|
157
|
+
IF ErrorPresent OR ChildrenErrorPresent THEN
|
|
158
|
+
setNextStep(States.ABORTING);
|
|
159
|
+
ELSE
|
|
160
|
+
setNextStep(States.IDLE);
|
|
161
|
+
ENDIF
|
|
162
|
+
ENDIF
|
|
163
|
+
|
|
164
|
+
CASE States.DONE:
|
|
165
|
+
desc("DONE");
|
|
166
|
+
! Final state logic
|
|
167
|
+
|
|
168
|
+
CASE States.PAUSED:
|
|
169
|
+
desc("PAUSED");
|
|
170
|
+
! Handle paused logic
|
|
171
|
+
|
|
172
|
+
CASE States.MANUAL:
|
|
173
|
+
desc("MANUAL");
|
|
174
|
+
! Handle manual mode logic
|
|
175
|
+
|
|
176
|
+
DEFAULT:
|
|
177
|
+
desc("UNKNOWN STATE");
|
|
178
|
+
setNextStep(States.INACTIVE);
|
|
179
|
+
|
|
180
|
+
ENDSELECT
|
|
181
|
+
|
|
182
|
+
postRun;
|
|
183
|
+
FirstScan := FALSE;
|
|
184
|
+
WaitTime 0.1; ! 100ms scan cycle
|
|
185
|
+
ENDWHILE
|
|
186
|
+
ENDPROC
|
|
187
|
+
|
|
188
|
+
ENDMODULE
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
MODULE DeviceDataTypes
|
|
2
|
-
|
|
3
|
-
! Maximum parameters constant (from your DeviceConstants)
|
|
4
|
-
CONST num MAX_NUM_PARAMS := 10; ! replace 10 with actual value from DeviceConstants
|
|
5
|
-
|
|
6
|
-
! Define ProcessData record
|
|
7
|
-
TYPE ProcessData
|
|
8
|
-
STRUCT
|
|
9
|
-
!------------------------------------------------------
|
|
10
|
-
! Parameters that must only be written by SendProcessRequest()
|
|
11
|
-
!------------------------------------------------------
|
|
12
|
-
UniqueActionRequestId : num; ! DINT in ST
|
|
13
|
-
RequestId : num; ! INT in ST
|
|
14
|
-
RequestParamArray : array[0..MAX_NUM_PARAMS-1] of num; ! LREAL in ST
|
|
15
|
-
SenderId : num; ! INT in ST
|
|
16
|
-
|
|
17
|
-
!------------------------------------------------------
|
|
18
|
-
! Internal parameters
|
|
19
|
-
!------------------------------------------------------
|
|
20
|
-
ActiveId : num;
|
|
21
|
-
ActiveName : string[255];
|
|
22
|
-
LastId : num;
|
|
23
|
-
firstScan : bool;
|
|
24
|
-
isStepNum : num; ! read-only in ST
|
|
25
|
-
StepDescription : string[255];
|
|
26
|
-
isDone : bool;
|
|
27
|
-
isError : bool;
|
|
28
|
-
NextStepNum : num;
|
|
29
|
-
DeviceStateThatCalled : num;
|
|
30
|
-
DeviceStepThatCalled : num;
|
|
31
|
-
ParamArray : array[0..MAX_NUM_PARAMS-1] of num;
|
|
32
|
-
END_STRUCT
|
|
33
|
-
END_TYPE
|
|
34
|
-
|
|
35
|
-
ENDMODULE
|
|
1
|
+
MODULE DeviceDataTypes
|
|
2
|
+
|
|
3
|
+
! Maximum parameters constant (from your DeviceConstants)
|
|
4
|
+
CONST num MAX_NUM_PARAMS := 10; ! replace 10 with actual value from DeviceConstants
|
|
5
|
+
|
|
6
|
+
! Define ProcessData record
|
|
7
|
+
TYPE ProcessData
|
|
8
|
+
STRUCT
|
|
9
|
+
!------------------------------------------------------
|
|
10
|
+
! Parameters that must only be written by SendProcessRequest()
|
|
11
|
+
!------------------------------------------------------
|
|
12
|
+
UniqueActionRequestId : num; ! DINT in ST
|
|
13
|
+
RequestId : num; ! INT in ST
|
|
14
|
+
RequestParamArray : array[0..MAX_NUM_PARAMS-1] of num; ! LREAL in ST
|
|
15
|
+
SenderId : num; ! INT in ST
|
|
16
|
+
|
|
17
|
+
!------------------------------------------------------
|
|
18
|
+
! Internal parameters
|
|
19
|
+
!------------------------------------------------------
|
|
20
|
+
ActiveId : num;
|
|
21
|
+
ActiveName : string[255];
|
|
22
|
+
LastId : num;
|
|
23
|
+
firstScan : bool;
|
|
24
|
+
isStepNum : num; ! read-only in ST
|
|
25
|
+
StepDescription : string[255];
|
|
26
|
+
isDone : bool;
|
|
27
|
+
isError : bool;
|
|
28
|
+
NextStepNum : num;
|
|
29
|
+
DeviceStateThatCalled : num;
|
|
30
|
+
DeviceStepThatCalled : num;
|
|
31
|
+
ParamArray : array[0..MAX_NUM_PARAMS-1] of num;
|
|
32
|
+
END_STRUCT
|
|
33
|
+
END_TYPE
|
|
34
|
+
|
|
35
|
+
ENDMODULE
|