In the documented case, communication was already established, but register addressing, data types, and byte-order settings caused incorrect values and output behavior.
Separate communication from data-mapping faults
A successful poll proves that messages are reaching the controller; it does not prove that Rapid SCADA is decoding the intended register correctly. The OWEN OPC server successfully accessed registers 512 through 527, which confirmed that the controller exposed the required data. Rapid SCADA initially worked only through address 11, then accessed register 512 after its template was changed to zero-based decimal addressing.
| Observation | Engineering conclusion |
|---|---|
| OPC access to registers 512–527 succeeds | The controller and its register map can supply the data. |
| Rapid SCADA reports no polling errors but shows incorrect I/O states | Check address interpretation, data type, and byte order before investigating the physical link. |
| The input indicator changes on the PR200 but not in SCADA | Compare the raw register value with the configured channel rather than treating the poll status as verification. |
Configure zero-based decimal register addressing
Set the Rapid SCADA device template to zero-based addressing and decimal notation. Under that configuration, PR200 register 512 is entered as 512.
This conversion matters when a command appears to operate the neighboring output. Verify both the displayed number base and the effective Modbus address before changing channel logic.
Select types and byte order by register width
Use a 16-bit integer type such as short or unsigned short for discrete input and output registers. A float occupies two 16-bit registers and is appropriate only when the mapped value is actually a floating-point analog value or floating-point variable. Do not assign float merely to make a discrete channel writable.
The final working configuration used byte sequence 0123. Sequence 1032 was an incorrect substitution for the default sequence and produced a value of 256 where 1 was expected. Byte-order configuration is relevant to multi-byte decoding; the evidence also states that the PR200 master-side byte-order setting does not change slave-mode communication.
Choose individual registers or a bit mask
The original implementation converted each Boolean point to an integer network variable, assigning separate registers beginning at 512 for eight discrete inputs and at 520 for outputs. This consumes more registers but keeps each command independent.
A packed 16-bit register can carry multiple discrete states. In Rapid SCADA, read the complete register and create additional calculated status input channels that extract its individual bits. Packing and unpacking macros in the PR200 program can provide one variable for all inputs and another for outputs.
Writing one output bit requires read-modify-write handling: retain the current register value, set or clear only the target bit, and write the complete updated word. Writing a newly constructed value without preserving the other bits can change unrelated outputs. If no PR200 program is planned, confirm whether the controller's I/O-module mode provides a direct register map suitable for the required expansion architecture before selecting it.
Apply and verify the working configuration
- Configure the Rapid SCADA template for zero-based, decimal addressing and enter register 512 as 512.
- Map discrete input and output registers as 16-bit integers. Reserve float for values that are actually floating point and therefore span two registers.
- Restore byte sequence 0123; remove the incorrect 1032 sequence that caused 1 to appear as 256.
- For a floating-point write, configure a multiple-register command so the complete value is transmitted. Do not apply this requirement to a single 16-bit discrete register.
- Energize one physical discrete input and compare the controller indication, raw register value, and Rapid SCADA channel state.
- Command one output on and off, then verify both the physical relay and the returned register value. If another relay changes, recheck decimal-versus-hexadecimal conversion and the effective address.
- If using a packed output word, verify that changing one bit leaves every other output bit unchanged.
FAQ
Why does Rapid SCADA show 256 when the PR200 value is 1?
The byte sequence is wrong.
Should PR200 discrete inputs use float in Rapid SCADA?
No. Map a discrete register as a 16-bit integer; float spans two registers and is intended for mapped floating-point analog values or variables.
How do I control one output in a PR200 bit-mask register?
Read the current 16-bit word, set or clear only the target bit, and write the complete updated word. Preserve all other bits so the command does not change unrelated outputs.