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:
parent
a042b7936f
commit
5be48b6bbb
5 changed files with 19 additions and 9 deletions
|
|
@ -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`
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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 —
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue