Skip to main content

Controls — Tag database

FieldDetail
Primary artifact(s)controls/water/tags/tags.csv
SpecRO-SPEC-001 §5.2 ; WIRE-001 §4–§9

Summary

140 rows mapping physical I/O per WIRE-001 slot tables plus Modbus VFD mirrors, alarms, CM5 recipe NV, and internal ST symbols. All ten .st files under controls/water/st/ resolve against this CSV (zero gaps).

ModuleWIRE §Points populatedaddress_ref pattern
P2-16ND3-1 Slot 1§5X1–X9 (9 DI)DI:Slot1:Xn
P2-08TRS Slot 2§8Y1–Y8 (8 relay)DQ:RelayM1:Yn
P2-08TRS Slot 3§9Y1–Y5 (5 relay)DQ:RelayM2:Yn
P2-08AD-2 Slot 4§6CH1–CH8 (8 AI)AI:Slot4_CHn
P2-06RTD Slot 5§7CH1–CH2 (2 RTD)RTD:Slot5_CHn

Test

Import CSV in Productivity Suite after hardware config readback.

Offline validation (from repo root):

python3 - <<'PY'
import csv
from collections import Counter
rows = list(csv.reader(open("controls/water/tags/tags.csv", encoding="utf-8")))
assert rows[0] == "tag_name,data_type,address_ref,scope,scaling_notes,eng_units,description,alarm_class".split(",")
names = [r[0] for r in rows[1:] if r]
assert not [n for n,c in Counter(names).items() if c>1]
open("controls/water/tags/tags.csv","rb").read().decode("utf-8")
print("OK:", len(names), "tags, UTF-8, no duplicate tag_name")
PY

Changelog

  • 2026-05-24 — Added SP_PT102_RO_SET_PSI and SP_VFD101_RAMP_SEC Retain setpoints for RO sequence SK02 (ro-sequence.st). 140 unique tag_name values.
  • 2026-05-24 — Normalised physical address_ref to AGENTS schema (DI:Slot1:Xn, AI:Slot4_CHn, RTD:Slot5_CHn, DQ:RelayM1/M2:Yn ↔ WIRE-001 §5–§9). Expanded relay/DO descriptions to device tags (BV-101, UV-101, MP-101…103, SV-, FAN-). Cross-checked all ten controls/water/st/*.st fragments: 56 tag references, zero missing from CSV. Offline validation: UTF-8, 138 unique tag_name values.

Open items

  • Cross-check unnamed spare columns post hardware readback
  • Add RCP_APPLY_TRIG when HMI commissioning wires Apply button (see hmi/screens.md)

Reviewer sign-off

  • Tag CSV reviewed against WIRE-001 §5–§9 slot tables — _______________