Controls — UV disinfection latch
| Field | Detail |
|---|---|
| Primary artifact(s) | controls/water/st/uv-lockout.st |
| Spec | RO-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.
| Input | address_ref | Role |
|---|---|---|
DI_UV_LAMP_FLT | DI:Slot1:X10 | Hard alarm / lamp expired (rising edge → ALM_UV_LAMP_FLT) |
DI_UV_LAMP_30DAY | DI:Slot1:X11 | 30-day caution mirror |
DI_UV_LAMP_7DAY | DI:Slot1:X12 | 7-day chirp mirror |
DI_UV_LAMP_DAYS_B0…B3 | DI:Slot1:X13–X16 | Optional 406-PUV-MD-RAM 4-bit day bucket (commissioning assumption) |
| Output / latch | Behaviour |
|---|---|
SEQ_DISINFECT_LOCKOUT_ACTIVE | Set 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_TREAT | Forced FALSE (N.C. coils de-energised → path closed / safe) while lockout active |
STAT_UV_LAMP_DAYS_REM | UINT 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.stuv_lamp_*_rawplaceholders at the sameDI_UV_*tags (remove duplicateFALSEbench stubs)
Reviewer sign-off
- UV lockout reviewed against RO-SPEC-001 §5.6 post-fault disinfection — _______________