scada-points.csv led with a scada_tag column of PS_* names derived from
the PLC register map - PS_STN_WET_WELL_LEVEL and the like. CI Server never
adopted them. They named nothing that exists, nothing in this repo read
them, and read as if authoritative they have already caused a real defect
in a downstream project.
Replaced with ci-server-points.csv, the as-built delivery from the CI
Server side (copied from yau-plant-assistant, not re-derived). It is keyed
on the CI Server item, with the station and point name beside it:
ci_item,ci_station,ci_point,description,poll_group,...
gen_scada_points.py now reproduces that file byte-identically, taking the
names from the LEAF table in gen_ciserver_qli.py so the CSV and the .qli
cannot disagree. tag_for() is gone. Verified: the CSV and all three .qli
regenerate unchanged, and all six displays still build.
The four poll groups keep their PS_ names - PS_STATUS_BITS, PS_PUBLISHED,
PS_SETPOINTS, PS_SIM_CONTROL. Those are live configuration, and are the
only legitimate PS_ names.
modbus_points/README.md gains a 'four namespaces' section - instrument tag,
PLC address, CI Server point, CI Server item - since confusing them is what
produced the placeholder column in the first place.
Also settles the historian drift left open in the previous commit. The
live export is the authority: the server runs WRPS_ONE_SEC at 5 SECONDS,
not 1, and WRPS_THIRTY_SEC at 30 seconds rather than a 60 second
WRPS_ONE_MIN. Code assuming 60 s was wrong by twelvefold. Recorded in
historian/README.md with a caution never to hardcode a sample interval.
Every .qli in the delivery was byte-identical to ours - only the CSV
differed.
49 lines
2.2 KiB
Markdown
49 lines
2.2 KiB
Markdown
# ciserver-backup-2026-08 — ⚠️ OUTDATED. Evidence only.
|
|
|
|
> [!CAUTION]
|
|
> **Do not import anything in this folder.** These are exports taken *out of*
|
|
> CI Server around **2026-08-20**. They are a record of what the server held at
|
|
> that moment, not source, and they are known to be superseded.
|
|
|
|
## Why they are kept
|
|
|
|
The CI Server side of this project has no other record. `cicore1` was not
|
|
reachable during the 2026-09 audit, so nothing here could be checked against the
|
|
live system. These exports are the only evidence of what was actually configured,
|
|
as opposed to what the repo believes was configured.
|
|
|
|
| File | Class | Contains |
|
|
|---|---|---|
|
|
| `export_items.qli` | `ITEM_DF` | 147 records mentioning `AID.WRPS` |
|
|
| `export_his_group.qli` | `HIS_GROUP_DF` | historian collection groups |
|
|
| `export_item_his_df.qli` | `ITEM_HIS_DF` | item → group bindings |
|
|
|
|
An export holds **every** record of its class, not only this project's. Filter on
|
|
`AID.WRPS` when comparing.
|
|
|
|
## The drift they revealed — and settled
|
|
|
|
Comparing these against `../modbus_points/historian/` shows the two do not agree.
|
|
**These exports are the authority**: they record what the running server actually
|
|
did, whereas `his_group.qli` records what the source project intended.
|
|
|
|
| In this export | In the repo's source |
|
|
|---|---|
|
|
| `WRPS_EVENT`, `WRPS_ONE_SEC` | ✅ both |
|
|
| `WRPS_THIRTY_SEC` | ❌ absent |
|
|
| `FIVE_SECONDS` (binding `STN.LEVEL`, `STN.INFLOW`) | ❌ absent — not a WRPS group |
|
|
| — | `WRPS_ONE_MIN`, absent from the export |
|
|
|
|
That is the whole reason this folder exists rather than being deleted.
|
|
|
|
**The rates matter more than the names.** The live `WRPS_ONE_SEC` runs at **5
|
|
seconds**, not 1, and the second group is `WRPS_THIRTY_SEC` at **30 seconds**, not
|
|
a 60 second `WRPS_ONE_MIN`. Code that assumed 60 seconds was wrong by twelvefold.
|
|
Never hardcode a sample interval — read it from the item.
|
|
|
|
## Replacing it
|
|
|
|
When `cicore1` is reachable, re-export the five classes (`../../QUICKLOAD.md`),
|
|
diff them against `../modbus_points/`, resolve the differences, and **replace this
|
|
folder** with a dated export that has been verified. Do not accumulate backups —
|
|
one known-good snapshot is more useful than three of uncertain age.
|