@kuriousdesign/machine-sdk 1.0.65 → 1.0.70

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.
Files changed (78) hide show
  1. package/.github/workflows/publish.yml +28 -0
  2. package/README.md +28 -51
  3. package/dist/custom-types/BaseDevice/Device.d.ts +1 -1
  4. package/dist/custom-types/BaseDevice/Device.js +1 -1
  5. package/dist/custom-types/BaseDevice/index.d.ts +1 -0
  6. package/dist/custom-types/BaseDevice/index.js +1 -0
  7. package/dist/custom-types/Devices/Conductor.js +0 -1
  8. package/dist/custom-types/Devices/index.d.ts +0 -2
  9. package/dist/custom-types/Devices/index.js +0 -2
  10. package/dist/custom-types/Recipe.d.ts +1 -0
  11. package/dist/custom-types/Recipe.js +2 -0
  12. package/package.json +1 -1
  13. package/src/abb/enums/GCs.mod +44 -44
  14. package/src/abb/enums/PartLocationIds.mod +13 -13
  15. package/src/abb/enums/RobTasks.mod +18 -18
  16. package/src/abb/enums/States.mod +20 -20
  17. package/src/abb/procs/MainModule.mod +188 -188
  18. package/src/abb/records/DeviceDataTypes.mod +35 -35
  19. package/src/custom-types/AppState.ts +115 -115
  20. package/src/custom-types/BaseDevice/Actions.ts +45 -45
  21. package/src/custom-types/BaseDevice/ApiOpcua.ts +71 -71
  22. package/src/custom-types/BaseDevice/Device.ts +224 -224
  23. package/src/custom-types/BaseDevice/DeviceCmds.ts +45 -45
  24. package/src/custom-types/BaseDevice/DeviceConstants.ts +9 -9
  25. package/src/custom-types/{Devices → BaseDevice}/DeviceTypes.ts +60 -60
  26. package/src/custom-types/BaseDevice/Processes.ts +38 -38
  27. package/src/custom-types/BaseDevice/index.ts +7 -6
  28. package/src/custom-types/Bridge.ts +8 -8
  29. package/src/custom-types/Com.ts +19 -19
  30. package/src/custom-types/Devices/Axis.ts +222 -222
  31. package/src/custom-types/Devices/Conductor.ts +14 -14
  32. package/src/custom-types/Devices/Pot.ts +24 -24
  33. package/src/custom-types/Devices/Robot.ts +208 -208
  34. package/src/custom-types/Devices/index.ts +3 -4
  35. package/src/custom-types/GlobalConstants.ts +98 -98
  36. package/src/custom-types/HMI.ts +52 -52
  37. package/src/custom-types/Machine.ts +130 -130
  38. package/src/custom-types/Part.ts +238 -238
  39. package/src/custom-types/RackData.ts +22 -22
  40. package/src/custom-types/Recipe.ts +250 -247
  41. package/src/custom-types/RecipeManagerFB.ts +10 -10
  42. package/src/custom-types/TaskQueue.ts +86 -86
  43. package/src/custom-types/UserManagerFB.ts +7 -7
  44. package/src/custom-types/index.ts +14 -14
  45. package/src/enums/Colors.ts +79 -79
  46. package/src/enums/DeviceId.ts +116 -116
  47. package/src/enums/ExtrusionType.ts +5 -5
  48. package/src/enums/OpcuaDatatype.ts +27 -27
  49. package/src/enums/Pages.ts +21 -21
  50. package/src/enums/States.ts +173 -173
  51. package/src/enums/TaskId.ts +37 -37
  52. package/src/enums/index.ts +9 -9
  53. package/src/functions/colorMapping.ts +43 -43
  54. package/src/functions/index.ts +2 -2
  55. package/src/functions/mqtt-helpers.ts +20 -20
  56. package/src/functions/topicMapping.ts +6 -6
  57. package/src/index.ts +3 -3
  58. package/src/plc-tags/index.ts +38 -38
  59. package/src/plc-tags/mqtt.ts +9 -9
  60. package/src/plc-tags/opcua.ts +3 -3
  61. package/src/styles/animations.css +15 -15
  62. package/tsconfig.json +13 -13
  63. package/dist/custom-types/Devices/Device.d.ts +0 -111
  64. package/dist/custom-types/Devices/Device.js +0 -108
  65. package/dist/custom-types/PartData.d.ts +0 -11
  66. package/dist/custom-types/PartData.js +0 -2
  67. package/dist/custom-types/RecipeData.d.ts +0 -7
  68. package/dist/custom-types/RecipeData.js +0 -2
  69. package/dist/enums/Errors.d.ts +0 -6
  70. package/dist/enums/Errors.js +0 -28
  71. package/dist/enums/Priorities.d.ts +0 -18
  72. package/dist/enums/Priorities.js +0 -24
  73. package/dist/enums/RobPositions.d.ts +0 -12
  74. package/dist/enums/RobPositions.js +0 -16
  75. package/dist/enums/Warnings.d.ts +0 -6
  76. package/dist/enums/Warnings.js +0 -18
  77. /package/dist/custom-types/{Devices → BaseDevice}/DeviceTypes.d.ts +0 -0
  78. /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