fix: CI Server on cicore1 is R1.05, not R1.03

Corrected in README.md, CLAUDE.md, 02-environment/README.md and
03-plc/VERSIONS.md.

The @VERSION 1.03.00 header inside the .qli files is the quickload FILE
FORMAT version, not the CI Server release. Left alone.

This also sharpens a caveat that was previously stated wrongly. The
EQP-E-DUP_ITEM rejection - an item import fails if two items share an
IO_ADDRESS - was observed on 2026-08-14 on the DEVELOPMENT machine, which
ran R1.03. Production runs R1.05, where it has never been tested. The
design still works around it by publishing level and speed in % only, and
that workaround costs nothing; but anyone wanting a second unit for a
measurement should try it on R1.05 before assuming they need a second PLC
register to carry it.
This commit is contained in:
Clio Liu 2026-09-02 17:34:58 +10:00
parent a042b7936f
commit 5be48b6bbb
5 changed files with 19 additions and 9 deletions

View file

@ -5,7 +5,7 @@ Two machines. One runs the PLC, the other runs the SCADA. Both sit on the
| Role | Hostname | LAN | Notes | | Role | Hostname | LAN | Notes |
|---|---|---|---| |---|---|---|---|
| **SCADA** — Yokogawa CI Server R1.03 | `yau-poc-cicore1` | `10.0.0.21` | Windows. Polls the PLC over Modbus TCP. | | **SCADA** — Yokogawa CI Server R1.05 | `yau-poc-cicore1` | `10.0.0.21` | Windows. Polls the PLC over Modbus TCP. |
| **PLC** — OpenPLC Runtime v4 in Docker | `yau-sls-poc-lin001` | `10.0.0.17` | Ubuntu 22.04 on Azure, public IP `20.211.144.151`. **Shared, live host** — see below. | | **PLC** — OpenPLC Runtime v4 in Docker | `yau-sls-poc-lin001` | `10.0.0.17` | Ubuntu 22.04 on Azure, public IP `20.211.144.151`. **Shared, live host** — see below. |
Also on the network: an Active Directory domain controller at `10.0.0.5` Also on the network: an Active Directory domain controller at `10.0.0.5`

View file

@ -39,7 +39,7 @@ differently — that is said explicitly.
| Component | Version | Where | | Component | Version | Where |
|---|---|---| |---|---|---|
| **Yokogawa CI Server** | R1.03 | `yau-poc-cicore1` (`10.0.0.21`) | | **Yokogawa CI Server** | R1.05 | `yau-poc-cicore1` (`10.0.0.21`) |
## Versions that actually matter ## Versions that actually matter
@ -67,7 +67,13 @@ See `register-map.csv`, which carries resolved addresses.
`qw_count: 1024` is *why* `%MW0` is holding register 1024. Change that file and `qw_count: 1024` is *why* `%MW0` is holding register 1024. Change that file and
every SCADA address moves. every SCADA address moves.
**CI Server R1.03 vs R1.05.** One R1.03 behaviour is load-bearing here: an item **One CI Server behaviour is load-bearing, and it was observed on a different
import is rejected if two items share an `IO_ADDRESS` (`EQP-E-DUP_ITEM`). The SCADA release.** An item import is rejected if two items share an `IO_ADDRESS`
design works around it by publishing one unit per register. If you move to R1.05, (`EQP-E-DUP_ITEM`). The SCADA design works around it by publishing one unit per
re-check that before assuming the workaround is still needed. register — level and speed in % only, not in both % and engineering units.
That rejection was seen on **2026-08-14 on the development machine, which ran
R1.03**. Production `yau-poc-cicore1` runs **R1.05**, where the constraint has
never been tested. The workaround is harmless either way, but if you need a second
unit for a measurement, try it on R1.05 before assuming you need a second PLC
register for it.

View file

@ -131,7 +131,8 @@ HMI masks.
> [!IMPORTANT] > [!IMPORTANT]
> **One item per I/O address — a register carries exactly one unit.** Publishing > **One item per I/O address — a register carries exactly one unit.** Publishing
> level in m *and* % as two Modbus points on the same `IO_ADDRESS` was tried on > level in m *and* % as two Modbus points on the same `IO_ADDRESS` was tried on
> 2026-08-14 and CI Server R1.03 refused the item import: > 2026-08-14 on the development machine (R1.03) and CI Server refused the
> item import:
> >
> ``` > ```
> EQP-E-DUP_ITEM, I/O address of item already defined > EQP-E-DUP_ITEM, I/O address of item already defined
@ -142,6 +143,9 @@ HMI masks.
> for the same measurement needs a second **PLC** register publishing it, not a > for the same measurement needs a second **PLC** register publishing it, not a
> second view of one register — a register-map change, not a SCADA change. > second view of one register — a register-map change, not a SCADA change.
> Level and speed are therefore published in % alone. > Level and speed are therefore published in % alone.
>
> **Not retested on R1.05**, which is what production runs. The workaround costs
> nothing, but if you need a second unit, try it before assuming you cannot.
**Setpoints are written in %.** A setpoint entered as 70.0% arrives at the PLC as **Setpoints are written in %.** A setpoint entered as 70.0% arrives at the PLC as
4200 mm. One decimal of % is a 6 mm step, so not every mm value is reachable — 4200 mm. One decimal of % is a 6 mm step, so not every mm value is reachable —

View file

@ -38,7 +38,7 @@ is polled by CI Server. Treat everything on those machines as production.
| Role | Host | Address | | Role | Host | Address |
|---|---|---| |---|---|---|
| SCADA — CI Server R1.03 | `yau-poc-cicore1` | `10.0.0.21` | | SCADA — CI Server R1.05 | `yau-poc-cicore1` | `10.0.0.21` |
| PLC — OpenPLC Runtime v4 container | `yau-sls-poc-lin001` | `10.0.0.17`, public `20.211.144.151` | | PLC — OpenPLC Runtime v4 container | `yau-sls-poc-lin001` | `10.0.0.17`, public `20.211.144.151` |
SSH alias `lin001``azureuser@20.211.144.151`. `10.0.0.17` is only routable from SSH alias `lin001``azureuser@20.211.144.151`. `10.0.0.17` is only routable from

View file

@ -17,7 +17,7 @@ polled over Modbus TCP by CI Server, with operator displays that command it.
| Role | Host | Address | | Role | Host | Address |
|---|---|---| |---|---|---|
| **SCADA** — Yokogawa CI Server R1.03 | `yau-poc-cicore1` | `10.0.0.21` | | **SCADA** — Yokogawa CI Server R1.05 | `yau-poc-cicore1` | `10.0.0.21` |
| **PLC** — OpenPLC Runtime v4, in Docker | `yau-sls-poc-lin001` | `10.0.0.17` | | **PLC** — OpenPLC Runtime v4, in Docker | `yau-sls-poc-lin001` | `10.0.0.17` |
**Architecture invariant:** OpenPLC Runtime is the Modbus TCP **server** (slave) on **Architecture invariant:** OpenPLC Runtime is the Modbus TCP **server** (slave) on