devagent-ignition 0.1.0__py3-none-any.whl

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 (133) hide show
  1. devagent_hmi.py +471 -0
  2. devagent_ignition-0.1.0.dist-info/METADATA +204 -0
  3. devagent_ignition-0.1.0.dist-info/RECORD +133 -0
  4. devagent_ignition-0.1.0.dist-info/WHEEL +4 -0
  5. devagent_ignition-0.1.0.dist-info/entry_points.txt +2 -0
  6. devagent_spatial/__init__.py +1 -0
  7. devagent_spatial/_resources/README.md +187 -0
  8. devagent_spatial/_resources/RELEASE_MANIFEST.json +312 -0
  9. devagent_spatial/_resources/SHA256SUMS.txt +270 -0
  10. devagent_spatial/_resources/SOURCE_PROVENANCE.json +186 -0
  11. devagent_spatial/_resources/assets/agent.js +102 -0
  12. devagent_spatial/_resources/assets/creator.css +247 -0
  13. devagent_spatial/_resources/assets/creator_2d.mjs +16 -0
  14. devagent_spatial/_resources/assets/creator_original_r9.mjs +58 -0
  15. devagent_spatial/_resources/assets/creator_original_v8.mjs +120 -0
  16. devagent_spatial/_resources/assets/creator_r9_diagnostics.mjs +53 -0
  17. devagent_spatial/_resources/assets/creator_scene.mjs +128 -0
  18. devagent_spatial/_resources/assets/creator_ui.mjs +60 -0
  19. devagent_spatial/_resources/assets/customer_documents.js +110 -0
  20. devagent_spatial/_resources/assets/equipment_controls.mjs +27 -0
  21. devagent_spatial/_resources/assets/facility2d.css +24 -0
  22. devagent_spatial/_resources/assets/facility2d_app.mjs +45 -0
  23. devagent_spatial/_resources/assets/facility2d_core.mjs +114 -0
  24. devagent_spatial/_resources/assets/facility2d_simulation.mjs +167 -0
  25. devagent_spatial/_resources/assets/facility2d_viewer.html +7 -0
  26. devagent_spatial/_resources/assets/fallback_scene.js +17 -0
  27. devagent_spatial/_resources/assets/flow_geometry.mjs +218 -0
  28. devagent_spatial/_resources/assets/harness.js +78 -0
  29. devagent_spatial/_resources/assets/live_design_review.js +129 -0
  30. devagent_spatial/_resources/assets/operations_ui.js +305 -0
  31. devagent_spatial/_resources/assets/operator_viewer.html +64 -0
  32. devagent_spatial/_resources/assets/project_package.js +52 -0
  33. devagent_spatial/_resources/assets/r9_transport.mjs +70 -0
  34. devagent_spatial/_resources/assets/runtime_feed.js +30 -0
  35. devagent_spatial/_resources/assets/studio.html +139 -0
  36. devagent_spatial/_resources/assets/style.css +191 -0
  37. devagent_spatial/_resources/assets/test_workspace.html +195 -0
  38. devagent_spatial/_resources/assets/three_scene.js +442 -0
  39. devagent_spatial/_resources/assets/unified_engineer.js +101 -0
  40. devagent_spatial/_resources/assets/v076_fat_ui.js +40 -0
  41. devagent_spatial/_resources/assets/v078_command_ui.js +44 -0
  42. devagent_spatial/_resources/assets/viewer.html +45 -0
  43. devagent_spatial/_resources/assets/viewer.js +112 -0
  44. devagent_spatial/_resources/design-system.json +130 -0
  45. devagent_spatial/_resources/examples/CV101-command-contract-PENDING.json +30 -0
  46. devagent_spatial/_resources/examples/cv101_guided.json +272 -0
  47. devagent_spatial/_resources/examples/make_examples.py +36 -0
  48. devagent_spatial/_resources/examples/single_floor.json +444 -0
  49. devagent_spatial/_resources/examples/v0771_training_wizard.json +11 -0
  50. devagent_spatial/_resources/examples/warehouse-3floor-standard-2d.json +708 -0
  51. devagent_spatial/_resources/examples/warehouse-operations-synthetic.json +1186 -0
  52. devagent_spatial/_resources/examples/warehouse-v07-lab-bindings-PENDING.json +372 -0
  53. devagent_spatial/_resources/examples/warehouse.json +708 -0
  54. devagent_spatial/_resources/examples/water.json +288 -0
  55. devagent_spatial/_resources/reference/r9-golden/REFERENCE_SHA256.json +13 -0
  56. devagent_spatial/_resources/reference/r9-golden/web/app.mjs +745 -0
  57. devagent_spatial/_resources/reference/r9-golden/web/index.html +213 -0
  58. devagent_spatial/_resources/reference/r9-golden/web/lab_panel.mjs +53 -0
  59. devagent_spatial/_resources/reference/r9-golden/web/model.mjs +367 -0
  60. devagent_spatial/_resources/reference/r9-golden/web/state_adapter.mjs +78 -0
  61. devagent_spatial/_resources/reference/r9-golden/web/styles.css +76 -0
  62. devagent_spatial/_resources/reference/r9-original/README_R9.md +27 -0
  63. devagent_spatial/_resources/reference/r9-original/SHA256SUMS.txt +63 -0
  64. devagent_spatial/_resources/reference/r9-original/SNAPSHOT_SHA256SUMS.txt +16 -0
  65. devagent_spatial/_resources/reference/r9-original/flow_routes.json +527 -0
  66. devagent_spatial/_resources/reference/r9-original/flow_sim.py +117 -0
  67. devagent_spatial/_resources/reference/r9-original/lab_control.py +73 -0
  68. devagent_spatial/_resources/reference/r9-original/web/app.mjs +745 -0
  69. devagent_spatial/_resources/reference/r9-original/web/index.html +213 -0
  70. devagent_spatial/_resources/reference/r9-original/web/lab_panel.mjs +53 -0
  71. devagent_spatial/_resources/reference/r9-original/web/model.mjs +367 -0
  72. devagent_spatial/_resources/reference/r9-original/web/state_adapter.mjs +78 -0
  73. devagent_spatial/_resources/reference/r9-original/web/styles.css +76 -0
  74. devagent_spatial/_resources/reference/r9-original/web/vendor/LICENSE-three.txt +21 -0
  75. devagent_spatial/_resources/reference/r9-original/web/vendor/SHA256SUMS.txt +4 -0
  76. devagent_spatial/_resources/reference/r9-original/web/vendor/addons/controls/OrbitControls.js +1860 -0
  77. devagent_spatial/_resources/reference/r9-original/web/vendor/three.core.js +58773 -0
  78. devagent_spatial/_resources/reference/r9-original/web/vendor/three.module.js +18251 -0
  79. devagent_spatial/_resources/reference/v8-original/README.md +36 -0
  80. devagent_spatial/_resources/reference/v8-original/SHA256SUMS.txt +12 -0
  81. devagent_spatial/_resources/reference/v8-original/model.py +124 -0
  82. devagent_spatial/_resources/reference/v8-original/run_demo.sh +4 -0
  83. devagent_spatial/_resources/reference/v8-original/server.py +100 -0
  84. devagent_spatial/_resources/reference/v8-original/tests/browser_smoke.py +50 -0
  85. devagent_spatial/_resources/reference/v8-original/tests/test_v8.py +144 -0
  86. devagent_spatial/_resources/reference/v8-original/topology.json +24 -0
  87. devagent_spatial/_resources/reference/v8-original/web/app.js +114 -0
  88. devagent_spatial/_resources/reference/v8-original/web/index.html +22 -0
  89. devagent_spatial/_resources/reference/v8-original/web/simulator.html +1 -0
  90. devagent_spatial/_resources/reference/v8-original/web/simulator.js +6 -0
  91. devagent_spatial/_resources/reference/v8-original/web/style.css +16 -0
  92. devagent_spatial/_resources/sample_customer_inputs/Plant_Equipment_Register.csv +4 -0
  93. devagent_spatial/_resources/sample_customer_inputs/Plant_Flow_Requirements.txt +5 -0
  94. devagent_spatial/_resources/sample_customer_inputs/Raw_PLC_Tag_Export.csv +4 -0
  95. devagent_spatial/_resources/templates/warehouse_connections.csv +12 -0
  96. devagent_spatial/_resources/templates/warehouse_equipment.csv +21 -0
  97. devagent_spatial/_resources/templates/warehouse_signals.csv +34 -0
  98. devagent_spatial/_resources/templates/water_connections.csv +7 -0
  99. devagent_spatial/_resources/templates/water_equipment.csv +10 -0
  100. devagent_spatial/_resources/templates/water_signals.csv +12 -0
  101. devagent_spatial/agent_harness.py +299 -0
  102. devagent_spatial/agent_runtime.py +314 -0
  103. devagent_spatial/contract_opc_fat.py +216 -0
  104. devagent_spatial/contract_opc_source.py +265 -0
  105. devagent_spatial/control_intents.py +38 -0
  106. devagent_spatial/customer_intake.py +235 -0
  107. devagent_spatial/engineering_expertise.py +114 -0
  108. devagent_spatial/generator.py +201 -0
  109. devagent_spatial/ignition_native.py +234 -0
  110. devagent_spatial/ignition_project.py +144 -0
  111. devagent_spatial/live_lab_binding.py +128 -0
  112. devagent_spatial/model.py +297 -0
  113. devagent_spatial/native_reference.py +69 -0
  114. devagent_spatial/opc_snapshot.py +87 -0
  115. devagent_spatial/operations.py +284 -0
  116. devagent_spatial/operations_capture.py +47 -0
  117. devagent_spatial/operations_lab.py +64 -0
  118. devagent_spatial/original_r9.py +169 -0
  119. devagent_spatial/original_v8.py +81 -0
  120. devagent_spatial/preflight.py +140 -0
  121. devagent_spatial/preview_simulation.py +189 -0
  122. devagent_spatial/project_package.py +101 -0
  123. devagent_spatial/qualification.py +152 -0
  124. devagent_spatial/strict_json.py +29 -0
  125. devagent_spatial/studio.py +894 -0
  126. devagent_spatial/studio_workflow.py +277 -0
  127. devagent_spatial/test_reporting.py +87 -0
  128. devagent_spatial/v076_opc_fat.py +180 -0
  129. devagent_spatial/v078_commands.py +277 -0
  130. devagent_spatial/v078_native_commands.py +161 -0
  131. devagent_spatial/v07_fat.py +110 -0
  132. devagent_spatial/v07_native.py +318 -0
  133. devagent_spatial/v083_native.py +349 -0
@@ -0,0 +1,708 @@
1
+ {
2
+ "schema_version": 1,
3
+ "name": "Three Floor Warehouse \u2014 2D Flow Demo",
4
+ "industry": "Warehouse automation",
5
+ "theme": "devagent_spatial_v1",
6
+ "layout": "standard_2d_flow",
7
+ "description": "Three-floor material flow with sortation, scanner stations and vertical spirals. Concept reference; coordinates require approval.",
8
+ "equipment": [
9
+ {
10
+ "id": "INFEED01",
11
+ "name": "Receiving infeed",
12
+ "kind": "conveyor",
13
+ "floor": 1,
14
+ "zone": "ZONE-F1",
15
+ "position": {
16
+ "x": -18,
17
+ "y": 0,
18
+ "z": 0
19
+ }
20
+ },
21
+ {
22
+ "id": "CV101",
23
+ "name": "Line conveyor 101",
24
+ "kind": "conveyor",
25
+ "floor": 1,
26
+ "zone": "ZONE-F1",
27
+ "position": {
28
+ "x": -11,
29
+ "y": 0,
30
+ "z": 0
31
+ }
32
+ },
33
+ {
34
+ "id": "DWS01",
35
+ "name": "Dimension-weight-scan",
36
+ "kind": "scanner",
37
+ "floor": 1,
38
+ "zone": "ZONE-F1",
39
+ "position": {
40
+ "x": -7,
41
+ "y": 0,
42
+ "z": -2
43
+ }
44
+ },
45
+ {
46
+ "id": "PE101",
47
+ "name": "Infeed photoeye",
48
+ "kind": "photoeye",
49
+ "floor": 1,
50
+ "zone": "ZONE-F1",
51
+ "position": {
52
+ "x": -10,
53
+ "y": 0,
54
+ "z": 2
55
+ }
56
+ },
57
+ {
58
+ "id": "CV102",
59
+ "name": "Main feed conveyor",
60
+ "kind": "conveyor",
61
+ "floor": 1,
62
+ "zone": "ZONE-F1",
63
+ "position": {
64
+ "x": -4,
65
+ "y": 0,
66
+ "z": 0
67
+ }
68
+ },
69
+ {
70
+ "id": "SPIRAL01",
71
+ "name": "Spiral ascent 1",
72
+ "kind": "spiral",
73
+ "floor": 1,
74
+ "zone": "ZONE-F1",
75
+ "position": {
76
+ "x": 2,
77
+ "y": 0,
78
+ "z": 2
79
+ }
80
+ },
81
+ {
82
+ "id": "CV201",
83
+ "name": "Sorter infeed",
84
+ "kind": "conveyor",
85
+ "floor": 2,
86
+ "zone": "ZONE-F2",
87
+ "position": {
88
+ "x": 6,
89
+ "y": 8,
90
+ "z": 0
91
+ }
92
+ },
93
+ {
94
+ "id": "SORT201",
95
+ "name": "Crossbelt sorter",
96
+ "kind": "sorter",
97
+ "floor": 2,
98
+ "zone": "ZONE-F2",
99
+ "position": {
100
+ "x": 13,
101
+ "y": 8,
102
+ "z": 1
103
+ }
104
+ },
105
+ {
106
+ "id": "CV202",
107
+ "name": "Exit chute left",
108
+ "kind": "conveyor",
109
+ "floor": 2,
110
+ "zone": "ZONE-F2",
111
+ "position": {
112
+ "x": 20,
113
+ "y": 8,
114
+ "z": -5
115
+ }
116
+ },
117
+ {
118
+ "id": "CV203",
119
+ "name": "Exit chute right",
120
+ "kind": "conveyor",
121
+ "floor": 2,
122
+ "zone": "ZONE-F2",
123
+ "position": {
124
+ "x": 20,
125
+ "y": 8,
126
+ "z": 6
127
+ }
128
+ },
129
+ {
130
+ "id": "PE201",
131
+ "name": "Sorter entry photoeye",
132
+ "kind": "photoeye",
133
+ "floor": 2,
134
+ "zone": "ZONE-F2",
135
+ "position": {
136
+ "x": 10,
137
+ "y": 8,
138
+ "z": -2
139
+ }
140
+ },
141
+ {
142
+ "id": "SCN201",
143
+ "name": "Destination scanner",
144
+ "kind": "scanner",
145
+ "floor": 2,
146
+ "zone": "ZONE-F2",
147
+ "position": {
148
+ "x": 16,
149
+ "y": 8,
150
+ "z": -2
151
+ }
152
+ },
153
+ {
154
+ "id": "SPIRAL02",
155
+ "name": "Spiral ascent 2",
156
+ "kind": "spiral",
157
+ "floor": 2,
158
+ "zone": "ZONE-F2",
159
+ "position": {
160
+ "x": 24,
161
+ "y": 8,
162
+ "z": 2
163
+ }
164
+ },
165
+ {
166
+ "id": "CV301",
167
+ "name": "Upper receiving conveyor",
168
+ "kind": "conveyor",
169
+ "floor": 3,
170
+ "zone": "ZONE-F3",
171
+ "position": {
172
+ "x": 22,
173
+ "y": 16,
174
+ "z": 0
175
+ }
176
+ },
177
+ {
178
+ "id": "CV302",
179
+ "name": "Upper distribution",
180
+ "kind": "conveyor",
181
+ "floor": 3,
182
+ "zone": "ZONE-F3",
183
+ "position": {
184
+ "x": 15,
185
+ "y": 16,
186
+ "z": -2
187
+ }
188
+ },
189
+ {
190
+ "id": "CV303",
191
+ "name": "Outbound line",
192
+ "kind": "conveyor",
193
+ "floor": 3,
194
+ "zone": "ZONE-F3",
195
+ "position": {
196
+ "x": 8,
197
+ "y": 16,
198
+ "z": -6
199
+ }
200
+ },
201
+ {
202
+ "id": "PE301",
203
+ "name": "Outbound photoeye",
204
+ "kind": "photoeye",
205
+ "floor": 3,
206
+ "zone": "ZONE-F3",
207
+ "position": {
208
+ "x": 5,
209
+ "y": 16,
210
+ "z": -5
211
+ }
212
+ },
213
+ {
214
+ "id": "VFD101",
215
+ "name": "Conveyor motor drive",
216
+ "kind": "vfd",
217
+ "floor": 1,
218
+ "zone": "ZONE-F1",
219
+ "position": {
220
+ "x": -13,
221
+ "y": 0,
222
+ "z": 4
223
+ }
224
+ },
225
+ {
226
+ "id": "VFD201",
227
+ "name": "Sorter motor drive",
228
+ "kind": "vfd",
229
+ "floor": 2,
230
+ "zone": "ZONE-F2",
231
+ "position": {
232
+ "x": 11,
233
+ "y": 8,
234
+ "z": 5
235
+ }
236
+ },
237
+ {
238
+ "id": "VFD301",
239
+ "name": "Outbound drive",
240
+ "kind": "vfd",
241
+ "floor": 3,
242
+ "zone": "ZONE-F3",
243
+ "position": {
244
+ "x": 12,
245
+ "y": 16,
246
+ "z": 3
247
+ }
248
+ }
249
+ ],
250
+ "connections": [
251
+ {
252
+ "from": "INFEED01",
253
+ "to": "CV101"
254
+ },
255
+ {
256
+ "from": "CV101",
257
+ "to": "CV102"
258
+ },
259
+ {
260
+ "from": "CV102",
261
+ "to": "SPIRAL01"
262
+ },
263
+ {
264
+ "from": "SPIRAL01",
265
+ "to": "CV201"
266
+ },
267
+ {
268
+ "from": "CV201",
269
+ "to": "SORT201"
270
+ },
271
+ {
272
+ "from": "SORT201",
273
+ "to": "CV202"
274
+ },
275
+ {
276
+ "from": "SORT201",
277
+ "to": "CV203"
278
+ },
279
+ {
280
+ "from": "CV203",
281
+ "to": "SPIRAL02"
282
+ },
283
+ {
284
+ "from": "SPIRAL02",
285
+ "to": "CV301"
286
+ },
287
+ {
288
+ "from": "CV301",
289
+ "to": "CV302"
290
+ },
291
+ {
292
+ "from": "CV302",
293
+ "to": "CV303"
294
+ }
295
+ ],
296
+ "signals": [
297
+ {
298
+ "id": "S_INFEED01_RUN_FEEDBACK",
299
+ "asset_id": "INFEED01",
300
+ "role": "run_feedback",
301
+ "datatype": "Boolean",
302
+ "unit": "",
303
+ "polarity": "active_high",
304
+ "source": {
305
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
306
+ "node_id": "Line01/INFEED01/RunFeedback"
307
+ }
308
+ },
309
+ {
310
+ "id": "S_INFEED01_FAULT",
311
+ "asset_id": "INFEED01",
312
+ "role": "fault",
313
+ "datatype": "Boolean",
314
+ "unit": "",
315
+ "polarity": "active_high",
316
+ "source": {
317
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
318
+ "node_id": "Line01/INFEED01/MotorFault"
319
+ }
320
+ },
321
+ {
322
+ "id": "S_CV101_RUN_FEEDBACK",
323
+ "asset_id": "CV101",
324
+ "role": "run_feedback",
325
+ "datatype": "Boolean",
326
+ "unit": "",
327
+ "polarity": "active_high",
328
+ "source": {
329
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
330
+ "node_id": "Line01/CV101/RunFeedback"
331
+ }
332
+ },
333
+ {
334
+ "id": "S_CV101_FAULT",
335
+ "asset_id": "CV101",
336
+ "role": "fault",
337
+ "datatype": "Boolean",
338
+ "unit": "",
339
+ "polarity": "active_high",
340
+ "source": {
341
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
342
+ "node_id": "Line01/CV101/MotorFault"
343
+ }
344
+ },
345
+ {
346
+ "id": "S_CV102_RUN_FEEDBACK",
347
+ "asset_id": "CV102",
348
+ "role": "run_feedback",
349
+ "datatype": "Boolean",
350
+ "unit": "",
351
+ "polarity": "active_high",
352
+ "source": {
353
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
354
+ "node_id": "Line01/CV102/RunFeedback"
355
+ }
356
+ },
357
+ {
358
+ "id": "S_CV102_FAULT",
359
+ "asset_id": "CV102",
360
+ "role": "fault",
361
+ "datatype": "Boolean",
362
+ "unit": "",
363
+ "polarity": "active_high",
364
+ "source": {
365
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
366
+ "node_id": "Line01/CV102/MotorFault"
367
+ }
368
+ },
369
+ {
370
+ "id": "S_CV201_RUN_FEEDBACK",
371
+ "asset_id": "CV201",
372
+ "role": "run_feedback",
373
+ "datatype": "Boolean",
374
+ "unit": "",
375
+ "polarity": "active_high",
376
+ "source": {
377
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
378
+ "node_id": "Line01/CV201/RunFeedback"
379
+ }
380
+ },
381
+ {
382
+ "id": "S_CV201_FAULT",
383
+ "asset_id": "CV201",
384
+ "role": "fault",
385
+ "datatype": "Boolean",
386
+ "unit": "",
387
+ "polarity": "active_high",
388
+ "source": {
389
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
390
+ "node_id": "Line01/CV201/MotorFault"
391
+ }
392
+ },
393
+ {
394
+ "id": "S_SORT201_RUN_FEEDBACK",
395
+ "asset_id": "SORT201",
396
+ "role": "run_feedback",
397
+ "datatype": "Boolean",
398
+ "unit": "",
399
+ "polarity": "active_high",
400
+ "source": {
401
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
402
+ "node_id": "Line01/SORT201/RunFeedback"
403
+ }
404
+ },
405
+ {
406
+ "id": "S_SORT201_FAULT",
407
+ "asset_id": "SORT201",
408
+ "role": "fault",
409
+ "datatype": "Boolean",
410
+ "unit": "",
411
+ "polarity": "active_high",
412
+ "source": {
413
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
414
+ "node_id": "Line01/SORT201/MotorFault"
415
+ }
416
+ },
417
+ {
418
+ "id": "S_CV202_RUN_FEEDBACK",
419
+ "asset_id": "CV202",
420
+ "role": "run_feedback",
421
+ "datatype": "Boolean",
422
+ "unit": "",
423
+ "polarity": "active_high",
424
+ "source": {
425
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
426
+ "node_id": "Line01/CV202/RunFeedback"
427
+ }
428
+ },
429
+ {
430
+ "id": "S_CV202_FAULT",
431
+ "asset_id": "CV202",
432
+ "role": "fault",
433
+ "datatype": "Boolean",
434
+ "unit": "",
435
+ "polarity": "active_high",
436
+ "source": {
437
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
438
+ "node_id": "Line01/CV202/MotorFault"
439
+ }
440
+ },
441
+ {
442
+ "id": "S_CV203_RUN_FEEDBACK",
443
+ "asset_id": "CV203",
444
+ "role": "run_feedback",
445
+ "datatype": "Boolean",
446
+ "unit": "",
447
+ "polarity": "active_high",
448
+ "source": {
449
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
450
+ "node_id": "Line01/CV203/RunFeedback"
451
+ }
452
+ },
453
+ {
454
+ "id": "S_CV203_FAULT",
455
+ "asset_id": "CV203",
456
+ "role": "fault",
457
+ "datatype": "Boolean",
458
+ "unit": "",
459
+ "polarity": "active_high",
460
+ "source": {
461
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
462
+ "node_id": "Line01/CV203/MotorFault"
463
+ }
464
+ },
465
+ {
466
+ "id": "S_CV301_RUN_FEEDBACK",
467
+ "asset_id": "CV301",
468
+ "role": "run_feedback",
469
+ "datatype": "Boolean",
470
+ "unit": "",
471
+ "polarity": "active_high",
472
+ "source": {
473
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
474
+ "node_id": "Line01/CV301/RunFeedback"
475
+ }
476
+ },
477
+ {
478
+ "id": "S_CV301_FAULT",
479
+ "asset_id": "CV301",
480
+ "role": "fault",
481
+ "datatype": "Boolean",
482
+ "unit": "",
483
+ "polarity": "active_high",
484
+ "source": {
485
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
486
+ "node_id": "Line01/CV301/MotorFault"
487
+ }
488
+ },
489
+ {
490
+ "id": "S_CV302_RUN_FEEDBACK",
491
+ "asset_id": "CV302",
492
+ "role": "run_feedback",
493
+ "datatype": "Boolean",
494
+ "unit": "",
495
+ "polarity": "active_high",
496
+ "source": {
497
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
498
+ "node_id": "Line01/CV302/RunFeedback"
499
+ }
500
+ },
501
+ {
502
+ "id": "S_CV302_FAULT",
503
+ "asset_id": "CV302",
504
+ "role": "fault",
505
+ "datatype": "Boolean",
506
+ "unit": "",
507
+ "polarity": "active_high",
508
+ "source": {
509
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
510
+ "node_id": "Line01/CV302/MotorFault"
511
+ }
512
+ },
513
+ {
514
+ "id": "S_CV303_RUN_FEEDBACK",
515
+ "asset_id": "CV303",
516
+ "role": "run_feedback",
517
+ "datatype": "Boolean",
518
+ "unit": "",
519
+ "polarity": "active_high",
520
+ "source": {
521
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
522
+ "node_id": "Line01/CV303/RunFeedback"
523
+ }
524
+ },
525
+ {
526
+ "id": "S_CV303_FAULT",
527
+ "asset_id": "CV303",
528
+ "role": "fault",
529
+ "datatype": "Boolean",
530
+ "unit": "",
531
+ "polarity": "active_high",
532
+ "source": {
533
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
534
+ "node_id": "Line01/CV303/MotorFault"
535
+ }
536
+ },
537
+ {
538
+ "id": "S_PE101_PHOTOEYE_BLOCKED",
539
+ "asset_id": "PE101",
540
+ "role": "photoeye_blocked",
541
+ "datatype": "Boolean",
542
+ "unit": "",
543
+ "polarity": "active_high",
544
+ "source": {
545
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
546
+ "node_id": "Line01/PE101/Blocked"
547
+ }
548
+ },
549
+ {
550
+ "id": "S_PE101_PHOTOEYE_COUNT",
551
+ "asset_id": "PE101",
552
+ "role": "photoeye_count",
553
+ "datatype": "Int32",
554
+ "unit": "count",
555
+ "polarity": "",
556
+ "source": {
557
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
558
+ "node_id": "Line01/PE101/EdgeCount"
559
+ }
560
+ },
561
+ {
562
+ "id": "S_PE201_PHOTOEYE_BLOCKED",
563
+ "asset_id": "PE201",
564
+ "role": "photoeye_blocked",
565
+ "datatype": "Boolean",
566
+ "unit": "",
567
+ "polarity": "active_high",
568
+ "source": {
569
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
570
+ "node_id": "Line01/PE201/Blocked"
571
+ }
572
+ },
573
+ {
574
+ "id": "S_PE201_PHOTOEYE_COUNT",
575
+ "asset_id": "PE201",
576
+ "role": "photoeye_count",
577
+ "datatype": "Int32",
578
+ "unit": "count",
579
+ "polarity": "",
580
+ "source": {
581
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
582
+ "node_id": "Line01/PE201/EdgeCount"
583
+ }
584
+ },
585
+ {
586
+ "id": "S_PE301_PHOTOEYE_BLOCKED",
587
+ "asset_id": "PE301",
588
+ "role": "photoeye_blocked",
589
+ "datatype": "Boolean",
590
+ "unit": "",
591
+ "polarity": "active_high",
592
+ "source": {
593
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
594
+ "node_id": "Line01/PE301/Blocked"
595
+ }
596
+ },
597
+ {
598
+ "id": "S_PE301_PHOTOEYE_COUNT",
599
+ "asset_id": "PE301",
600
+ "role": "photoeye_count",
601
+ "datatype": "Int32",
602
+ "unit": "count",
603
+ "polarity": "",
604
+ "source": {
605
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
606
+ "node_id": "Line01/PE301/EdgeCount"
607
+ }
608
+ },
609
+ {
610
+ "id": "S_DWS01_SCANNER_RESULT",
611
+ "asset_id": "DWS01",
612
+ "role": "scanner_result",
613
+ "datatype": "String",
614
+ "unit": "",
615
+ "polarity": "",
616
+ "source": {
617
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
618
+ "node_id": "Line01/DWS01/LastResult"
619
+ }
620
+ },
621
+ {
622
+ "id": "S_DWS01_NO_READ_COUNT",
623
+ "asset_id": "DWS01",
624
+ "role": "no_read_count",
625
+ "datatype": "Int32",
626
+ "unit": "count",
627
+ "polarity": "",
628
+ "source": {
629
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
630
+ "node_id": "Line01/DWS01/NoReadCount"
631
+ }
632
+ },
633
+ {
634
+ "id": "S_SCN201_SCANNER_RESULT",
635
+ "asset_id": "SCN201",
636
+ "role": "scanner_result",
637
+ "datatype": "String",
638
+ "unit": "",
639
+ "polarity": "",
640
+ "source": {
641
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
642
+ "node_id": "Line01/SCN201/LastResult"
643
+ }
644
+ },
645
+ {
646
+ "id": "S_SCN201_NO_READ_COUNT",
647
+ "asset_id": "SCN201",
648
+ "role": "no_read_count",
649
+ "datatype": "Int32",
650
+ "unit": "count",
651
+ "polarity": "",
652
+ "source": {
653
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
654
+ "node_id": "Line01/SCN201/NoReadCount"
655
+ }
656
+ },
657
+ {
658
+ "id": "S_VFD101_VFD_FREQUENCY",
659
+ "asset_id": "VFD101",
660
+ "role": "vfd_frequency",
661
+ "datatype": "Double",
662
+ "unit": "Hz",
663
+ "polarity": "",
664
+ "source": {
665
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
666
+ "node_id": "Line01/VFD101/ActualHz"
667
+ }
668
+ },
669
+ {
670
+ "id": "S_VFD201_VFD_FREQUENCY",
671
+ "asset_id": "VFD201",
672
+ "role": "vfd_frequency",
673
+ "datatype": "Double",
674
+ "unit": "Hz",
675
+ "polarity": "",
676
+ "source": {
677
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
678
+ "node_id": "Line01/VFD201/ActualHz"
679
+ }
680
+ },
681
+ {
682
+ "id": "S_VFD301_VFD_FREQUENCY",
683
+ "asset_id": "VFD301",
684
+ "role": "vfd_frequency",
685
+ "datatype": "Double",
686
+ "unit": "Hz",
687
+ "polarity": "",
688
+ "source": {
689
+ "namespace_uri": "urn:customer:warehouse:opc:preview",
690
+ "node_id": "Line01/VFD301/ActualHz"
691
+ }
692
+ }
693
+ ],
694
+ "requirements": [
695
+ {
696
+ "id": "REQ001",
697
+ "text": "Each conveyor must show verified run feedback and fault state."
698
+ },
699
+ {
700
+ "id": "REQ002",
701
+ "text": "Scanner NO_READ events must be traceable to a specific scanner."
702
+ },
703
+ {
704
+ "id": "REQ003",
705
+ "text": "Three-floor topology and spiral transfer must be reviewed against approved drawings."
706
+ }
707
+ ]
708
+ }