io-commissioning-kit

I/O-list-driven commissioning toolkit for a simulated instrumentation rack of a laser amplifier test bench. By Pavan Yadava Annappa.

Everything on this page is simulated. The rack, the field devices, the wiring faults and the OPC UA server are a local Python simulation. No real hardware, PLC or plant data is involved. The interlock logic is a test harness, not a safety function.

Documentation chain: I/O list (YAML) → lint → cable schedule, interface description, loop-check procedure → loop check over OPC UA → commissioning record → issue log.

I/O list (38 points, revision C)

TagDescriptionSignalRange / normalChannelCableJBCabinet
FT-101Coolant flow, amplifier head circuitAI_4_20mA0 .. 20 L/minA1-AI1.1W-FT-101JB-1A1-X2:1 A1-X2:2
FT-102Coolant flow, diode pump modulesAI_4_20mA0 .. 40 L/minA1-AI1.2W-FT-102JB-1A1-X2:3 A1-X2:4
PT-101Coolant supply pressureAI_4_20mA0 .. 10 barA1-AI1.3W-PT-101JB-1A1-X2:5 A1-X2:6
LT-101Coolant tank levelAI_4_20mA0 .. 100 %A1-AI1.4W-LT-101JB-1A1-X2:7 A1-X2:8
TT-101Coolant supply temperatureAI_RTD0 .. 50 degCA1-RT1.1W-TT-101JB-1A1-X2:9 A1-X2:10 A1-X2:11
TT-102Coolant return temperatureAI_RTD0 .. 50 degCA1-RT1.2W-TT-102JB-1A1-X2:12 A1-X2:13 A1-X2:14
TT-103Amplifier head body temperatureAI_RTD0 .. 100 degCA1-RT1.3W-TT-103JB-1A1-X2:15 A1-X2:16 A1-X2:17
CH-101-RUNChiller runningDInormal TRUEA1-DI1.1W-CH-101-RUNJB-1A1-X2:18 A1-X2:19
CH-101-FLTChiller healthy (opens on fault)DInormal TRUEA1-DI1.2W-CH-101-FLTJB-1A1-X2:20 A1-X2:21
CH-101-ENChiller remote startDOnormal FALSEA1-DO1.1W-CH-101-ENJB-1A1-X2:22 A1-X2:23
PT-201Vacuum, spatial filter tubeAI_0_10V1e-08 .. 100 mbarA1-AV1.1W-PT-201JB-2A1-X2:24 A1-X2:25 A1-X2:26
PT-202Vacuum, forevacuum lineAI_0_10V0.001 .. 1000 mbarA1-AV1.2W-PT-202JB-2A1-X2:27 A1-X2:28 A1-X2:29
VP-201-RUNRoughing pump runningDInormal TRUEA1-DI1.3W-VP-201-RUNJB-2A1-X2:30 A1-X2:31
VV-201-CMDGate valve open commandDOnormal FALSEA1-DO1.2W-VV-201-CMDJB-2A1-X2:32 A1-X2:33
VV-201-ZSOGate valve open limitDInormal TRUEA1-DI1.4W-VV-201-ZSOJB-2A1-X2:34 A1-X2:35
VV-201-ZSCGate valve closed limitDInormal FALSEA1-DI1.5W-VV-201-ZSCJB-2A1-X2:36 A1-X2:37
PT-301N2 purge supply pressureAI_4_20mA0 .. 6 barA1-AI2.1W-PT-301JB-3A1-X2:38 A1-X2:39
FT-301N2 purge flowAI_4_20mA0 .. 50 L/minA1-AI2.2W-FT-301JB-3A1-X2:40 A1-X2:41
PT-302Instrument air pressureAI_4_20mA0 .. 10 barA1-AI2.3W-PT-302JB-3A1-X2:42 A1-X2:43
XV-301-CMDN2 purge valve open commandDOnormal FALSEA1-DO1.3W-XV-301-CMDJB-3A1-X2:44 A1-X2:45
XV-301-ZSON2 purge valve open feedbackDInormal FALSEA1-DI1.6W-XV-301-ZSOJB-3A1-X2:46 A1-X2:47
MT-401Lab room humidityAI_4_20mA0 .. 100 %rHA1-AI2.4W-MT-401JB-3A1-X2:48 A1-X2:49
TT-401Lab room temperatureAI_RTD0 .. 50 degCA1-RT1.4W-TT-401JB-3A1-X2:50 A1-X2:51 A1-X2:52
AT-402Lab oxygen concentrationAI_0_10V0 .. 25 %volA1-AV1.3W-AT-402JB-3A1-X2:53 A1-X2:54 A1-X2:55
PD-501-ENDiode pump driver enableDOnormal FALSEA1-DO1.4W-PD-501-ENJB-4A1-X2:56 A1-X2:57
PD-501-FLTDiode pump driver healthy (opens on fault)DInormal TRUEA1-DI1.7W-PD-501-FLTJB-4A1-X2:58 A1-X2:59
PD-501-RDYDiode pump driver readyDInormal TRUEA1-DI1.8W-PD-501-RDYJB-4A1-X2:60 A1-X2:61
JT-501Diode pump current monitorAI_0_10V0 .. 500 AA1-AV1.4W-JT-501JB-4A1-X2:62 A1-X2:63 A1-X2:64
TT-501Diode heat sink temperatureAI_RTD0 .. 100 degCA1-RT2.1W-TT-501JB-4A1-X2:65 A1-X2:66 A1-X2:67
SH-501-CMDBeam shutter open commandDOnormal FALSEA1-DO1.5W-SH-501-CMDJB-4A1-X2:68 A1-X2:69
SH-501-ZSOBeam shutter open limitDInormal FALSEA1-DI2.1W-SH-501-ZSOJB-4A1-X2:70 A1-X2:71
SH-501-ZSCBeam shutter closed limitDInormal TRUEA1-DI2.2W-SH-501-ZSCJB-4A1-X2:72 A1-X2:73
XL-501Laser-on warning lampDOnormal FALSEA1-DO1.6W-XL-501JB-4A1-X2:74 A1-X2:75
ZS-601AEnclosure door closed, channel ADInormal TRUEA1-DI2.3W-ZS-601AJB-4A1-X2:76 A1-X2:77
ZS-601BEnclosure door closed, channel BDInormal TRUEA1-DI3.1W-ZS-601BJB-4A1-X2:78 A1-X2:79
HS-602AE-stop chain healthy, channel ADInormal TRUEA1-DI2.4W-HS-602AJB-4A1-X2:80 A1-X2:81
HS-602BE-stop chain healthy, channel BDInormal TRUEA1-DI3.2W-HS-602BJB-4A1-X2:82 A1-X2:83
HS-604Interlock reset pushbuttonDInormal FALSEA1-DI2.5W-HS-604JB-4A1-X2:84 A1-X2:85

Sample commissioning record

Run with 8 planted wiring faults (config/demo_faults.yaml), tolerance +/- 0.5 % of span, tester "simulated run". Result: 28/38 passed, 10 failed. Sign-off fields are left blank on purpose.

TagChannelSignalAs foundResultSuspected cause
FT-101A1-AI1.1AI_4_20mA0%: 0.003949 / 25%: 4.993 / 50%: 9.997 / 75%: 15.01 / 100%: 20PASS-
FT-102A1-AI1.2AI_4_20mA0%: -9.983 / 25%: 5.023 / 50%: 20.01 / 75%: 34.98 / 100%: 49.99FAILscaling mismatch between field device and controller channel
PT-101A1-AI1.3AI_4_20mA0%: 0.0005416 / 25%: 2.5 / 50%: 4.999 / 75%: 7.499 / 100%: 10.01PASS-
LT-101A1-AI1.4AI_4_20mA0%: 70 / 25%: 70 / 50%: 70 / 75%: 70 / 100%: 70FAILstuck / frozen value
TT-101A1-RT1.1AI_RTD0%: -0.02328 / 25%: 12.49 / 50%: 24.97 / 75%: 37.5 / 100%: 50.01PASS-
TT-102A1-RT1.2AI_RTD0%: 2.571e+04 / 25%: 2.571e+04 / 50%: 2.571e+04 / 75%: 2.571e+04 / 100%: 2.571e+04FAILopen circuit
TT-103A1-RT1.3AI_RTD0%: -0.01903 / 25%: 25 / 50%: 50.01 / 75%: 75.02 / 100%: 100PASS-
CH-101-RUNA1-DI1.1DIclose contact: T / open contact: FPASS-
CH-101-FLTA1-DI1.2DIclose contact: T / open contact: FPASS-
CH-101-ENA1-DO1.1DOcommand FALSE: F / command TRUE: T / command FALSE: FPASS-
PT-201A1-AV1.1AI_0_10V0%: 9.993e-09 / 25%: 3.168e-06 / 50%: 0.0009951 / 75%: 0.319 / 100%: 98.89PASS-
PT-202A1-AV1.2AI_0_10V0%: 0.001 / 25%: 0.03162 / 50%: 1.002 / 75%: 31.61 / 100%: 996.5PASS-
VP-201-RUNA1-DI1.3DIclose contact: T / open contact: FPASS-
VV-201-CMDA1-DO1.2DOcommand FALSE: F / command TRUE: T / command FALSE: FPASS-
VV-201-ZSOA1-DI1.4DIclose contact: T / open contact: FPASS-
VV-201-ZSCA1-DI1.5DIclose contact: T / open contact: FPASS-
PT-301A1-AI2.1AI_4_20mA0%: 3.899 / 25%: 3.9 / 50%: 3.901 / 75%: 3.902 / 100%: 3.898FAILswapped with A1-AI2.3 (PT-302)
FT-301A1-AI2.2AI_4_20mA0%: 0.003372 / 25%: 12.49 / 50%: 25.01 / 75%: 37.51 / 100%: 50.01PASS-
PT-302A1-AI2.3AI_4_20mA0%: 4.995 / 25%: 5.002 / 50%: 4.995 / 75%: 5 / 100%: 4.998FAILswapped with A1-AI2.1 (PT-301)
XV-301-CMDA1-DO1.3DOcommand FALSE: F / command TRUE: T / command FALSE: FPASS-
XV-301-ZSOA1-DI1.6DIclose contact: T / open contact: FPASS-
MT-401A1-AI2.4AI_4_20mA0%: -0.1633 / 25%: 25.25 / 50%: 49.23 / 75%: 74.9 / 100%: 99.4FAILnoisy signal (unstable reading)
TT-401A1-RT1.4AI_RTD0%: -0.01396 / 25%: 12.49 / 50%: 25 / 75%: 37.5 / 100%: 49.99PASS-
AT-402A1-AV1.3AI_0_10V0%: -0.002713 / 25%: 6.242 / 50%: 12.5 / 75%: 18.76 / 100%: 25PASS-
PD-501-ENA1-DO1.4DOcommand FALSE: F / command TRUE: T / command FALSE: FPASS-
PD-501-FLTA1-DI1.7DIclose contact: T / open contact: FPASS-
PD-501-RDYA1-DI1.8DIclose contact: T / open contact: FPASS-
JT-501A1-AV1.4AI_0_10V0%: 0.05945 / 25%: 125.2 / 50%: 249.8 / 75%: 374.8 / 100%: 500PASS-
TT-501A1-RT2.1AI_RTD0%: 0.04905 / 25%: 25 / 50%: 49.99 / 75%: 75.02 / 100%: 100PASS-
SH-501-CMDA1-DO1.5DOcommand FALSE: F / command TRUE: T / command FALSE: FPASS-
SH-501-ZSOA1-DI2.1DIclose contact: T / open contact: TFAILswapped with A1-DI2.2 (SH-501-ZSC)
SH-501-ZSCA1-DI2.2DIclose contact: F / open contact: FFAILswapped with A1-DI2.1 (SH-501-ZSO)
XL-501A1-DO1.6DOcommand FALSE: T / command TRUE: F / command FALSE: TFAILoutput polarity reversed
ZS-601AA1-DI2.3DIclose contact: T / open contact: FPASS-
ZS-601BA1-DI3.1DIclose contact: F / open contact: TFAILinverted contact (NO wired as NC or vice versa)
HS-602AA1-DI2.4DIclose contact: T / open contact: FPASS-
HS-602BA1-DI3.2DIclose contact: T / open contact: FPASS-
HS-604A1-DI2.5DIclose contact: T / open contact: FPASS-

Injected faults (simulation only, hidden from the checker): swap PT-301<->PT-302; swap SH-501-ZSO<->SH-501-ZSC; open TT-102; scaling FT-102; inverted ZS-601B; stuck LT-101; polarity XL-501; noise MT-401

Issue log (10 open)

ISSUE-001: FT-102 (A1-AI1.2) - scaling mismatch between field device and controller channel
ISSUE-002: LT-101 (A1-AI1.4) - stuck / frozen value
ISSUE-003: TT-102 (A1-RT1.2) - open circuit
ISSUE-004: PT-301 (A1-AI2.1) - swapped with A1-AI2.3 (PT-302)
ISSUE-005: PT-302 (A1-AI2.3) - swapped with A1-AI2.1 (PT-301)
ISSUE-006: MT-401 (A1-AI2.4) - noisy signal (unstable reading)
ISSUE-007: SH-501-ZSO (A1-DI2.1) - swapped with A1-DI2.2 (SH-501-ZSC)
ISSUE-008: SH-501-ZSC (A1-DI2.2) - swapped with A1-DI2.1 (SH-501-ZSO)
ISSUE-009: XL-501 (A1-DO1.6) - output polarity reversed
ISSUE-010: ZS-601B (A1-DI3.1) - inverted contact (NO wired as NC or vice versa)

Fault-injection campaign

200 seeded scenarios with 0-3 random wiring faults each (288 faults). Kit = 5-step loop check with cross-talk check; naive = one mid-scale reading or one digital state per point. False alarms on healthy points: kit 0/7277, naive 0/7277. Wall time per scenario over local OPC UA: kit 0.74 s, naive 0.09 s.

Fault classFaultsKit detectedKit classifiedNaive detected
Inverted DI contact (NO/NC)48100.0 %100.0 %100.0 %
Noise37100.0 %100.0 %62.2 %
Open circuit33100.0 %100.0 %100.0 %
DO polarity reversal39100.0 %100.0 %100.0 %
Scaling mismatch53100.0 %100.0 %62.3 %
Stuck / frozen value43100.0 %100.0 %55.8 %
Swapped channels (crossed cores)35100.0 %100.0 %77.1 %
Scaling: wrong RTD curve (alpha 0.003926)18100.0 %100.0 %100.0 %
Scaling: span 25 % too large15100.0 %100.0 %100.0 %
Scaling: range widened both ends (mid-scale unchanged)20100.0 %100.0 %0.0 %
All faults288100.0 %100.0 %78.8 %

Cause-and-effect test: 15 causes x 6 effects (90 matrix cells), 327 checks, 327 passed, 0 failed.

Page generated by scripts/build_site.py from the JSON outputs of the runs. Numbers are not edited by hand.