Skip to main content

Controls — UV disinfection latch

FieldDetail
Primary artifact(s)controls/water/st/uv-lockout.st
SpecRO-SPEC-001 §3.5 / §5.6 ; WIRE-001 §5 (X10–X16 spare → Pulsar contacts)

Summary

Pulsar dry-contact ingest, disinfection lockout latch, and SV distribution inhibits. DO_SV_RECIRC is not written here — recirculation semantics stay in fill / ice / P-102 sequence tasks per §5.6.

Inputaddress_refRole
DI_UV_LAMP_FLTDI:Slot1:X10Hard alarm / lamp expired (rising edge → ALM_UV_LAMP_FLT)
DI_UV_LAMP_30DAYDI:Slot1:X1130-day caution mirror
DI_UV_LAMP_7DAYDI:Slot1:X127-day chirp mirror
DI_UV_LAMP_DAYS_B0B3DI:Slot1:X13X16Optional 406-PUV-MD-RAM 4-bit day bucket (commissioning assumption)
Output / latchBehaviour
SEQ_DISINFECT_LOCKOUT_ACTIVESet on hard fault; clears only when HMI_DISINFECT_CHK01 and HMI_DISINFECT_CHKCOMPLETE (checklist parity), Pulsar hard contact clear, and ALM_UV_LAMP_FLT cleared via alarms.st ack path
DO_SV_ICE, DO_SV_TREATForced FALSE (N.C. coils de-energised → path closed / safe) while lockout active
STAT_UV_LAMP_DAYS_REMUINT days remaining — BCD nibble when wired, else tier decode (0 / 7 / 30 / 365 healthy default)

New fault resets HMI_DISINFECT_CHK01 and HMI_DISINFECT_CHKCOMPLETE so the UVWizard must be completed again.

Test

controls/water/sim-tests/sim-uv-fault-mid-fill.md — pulse DI_UV_LAMP_FLT (or force ALM_UV_LAMP_FLT on bench); confirm DO_SV_TREAT dropout mid-fill, DO_SV_RECIRC unchanged, lockout holds through ack until checklist parity.

Open items

  • Confirm 406-PUV-MD-RAM bit weighting vs Pulsar manual on commissioning PC
  • Point alarms.st uv_lamp_*_raw placeholders at the same DI_UV_* tags (remove duplicate FALSE bench stubs)

Reviewer sign-off

  • UV lockout reviewed against RO-SPEC-001 §5.6 post-fault disinfection — _______________