DEIF AGC 150 Modbus TCP data reaches Rapid SCADA through several independent address layers: the Ethernet endpoint selects the controller, the Modbus unit address selects the protocol endpoint, the function code selects a data table, and the group start address selects the first register. A tag code identifies data inside Rapid SCADA; it is not the Modbus register address.
How does the request travel through Rapid SCADA?
Follow the packet from the requester to the register. Rapid SCADA Communicator initiates the request. The communication-line settings provide the controller IP address and TCP port. The device configuration supplies the Modbus device or unit address. The template then supplies the data area, function, start address, quantity, and interpretation of the returned bytes.
| Layer | Setting | Purpose | Common mistake |
|---|---|---|---|
| Physical and Ethernet path | Network interface, cable, IP path | Carries the TCP connection | Editing register settings when the connection itself is unavailable |
| Transport endpoint | IP:port |
Selects the Modbus TCP service | Confusing register 501 with a TCP port |
| Modbus endpoint | Device or unit address | Identifies the target device within the Modbus transaction | Entering a register offset here |
| Data table | Input Registers, function 04
|
Selects the read-only input-register area | Treating reference notation as a literal offset |
| Register range | Group start address and quantity | Defines the contiguous registers requested | Putting the register number in the tag code |
| SCADA identity | Tag code | Links the template item to the corresponding channel | Changing the code in only one configuration |
A stable communication log and changing values prove that requests and responses are crossing the network. They do not prove that the template selected the intended register or decoded it with the correct type.
Which DEIF address should the template use?
The DEIF AGC 150 map example describes the same point with several fields: Modbus address 501, logical reference 300502, function code 04, and data type INT16s. These fields are related but are not interchangeable.
| Map field | Example | Meaning in this case | Rapid SCADA use |
|---|---|---|---|
| Modbus address | 501 |
Raw register offset shown by the map | Use as the group start address when the template interprets addresses from zero |
| Logical reference | 300502 |
Input-register reference notation; the leading 3 identifies the table |
Do not transmit the full reference as the raw offset |
| Function code | 04 |
Read Input Registers | Create an Input Register group |
| Data type | INT16s |
Signed 16-bit integer occupying one register | Select the driver type corresponding to a signed 16-bit value |
The relationship between 501 and 300502 indicates a zero-based offset: offset 501 corresponds to the 502nd input register. Configure zero-based addressing and keep the register field decimal because the map lists decimal addresses. Hexadecimal notation belongs to packet representation or to maps that explicitly publish hexadecimal offsets; selecting hexadecimal while entering decimal 501 targets a different offset.
Which mapping approach should be used?
| Approach | Result | Use |
|---|---|---|
Put 501 in the tag code |
Names the SCADA item but does not move the Modbus request to register 501 | Reject |
Create one group beginning at 501
|
Requests the documented register through function 04
|
Recommended for the first diagnostic point |
| Create one very large group across gaps | Reads unused addresses and makes failures harder to isolate | Reject when the map contains large gaps |
| Create multiple contiguous groups | Uses one request range for each compact block or Modbus data type | Recommended after the first point is verified |
Start with one known, live, 16-bit input value. The example at offset 501 is suitable because it occupies one register and can be compared with the controller display. A 32-bit value spans two registers and introduces register-order as well as byte-order questions, so it is a poor first test.
How should the first input register be configured?
- Confirm layer one and the TCP path first. Retain the line configuration that produces stable polls and valid responses.
- Set the device or unit address in the device properties. Keep it separate from both
IP:portand register offset501. - Create an Input Register group so the request uses function
04. - Select decimal notation and addressing from zero.
- Set the group start address to
501and the quantity to one register. - Add one item to that group. Give it a unique, descriptive tag code such as
Voltage_L1_L2; do not use the tag code as the register-address field. - Select the signed 16-bit type corresponding to map type
INT16s. Leave byte reordering unset for this initial one-register test. - Save the template, assign or upload it to the configured device, transfer the configuration, and restart or reload the affected communication configuration as required by the installation.
- Compare the raw tag value with the live value shown by the controller. The working diagnostic produced
413, matching the current controller value.
After the first item works, extend its group only across adjacent registers of the same table. Start another group at the next documented offset when addresses have a large gap or when the data area changes. This keeps request ranges small and makes each returned word traceable to a map row.
How should type, byte order, and scaling be selected?
Modbus transports 16-bit registers. The template data type determines how Rapid SCADA interprets one or more returned registers.
| Map type | Width | Interpretation | Diagnostic point |
|---|---|---|---|
INT16s |
One register | Signed 16-bit integer; driver type commonly named short | Signed and unsigned readings match for positive values whose high bit is clear |
UINT16 |
One register | Unsigned 16-bit integer; driver type commonly named ushort | A successful positive reading does not by itself prove that unsigned is the documented type |
Signed 32-bit with ABCD
|
Two registers | Four bytes in the documented order | The stated ABCD order requires no byte or register reversal |
| Float/real | Two registers, four bytes | Floating-point value | Use a known value to test address base, byte order, and register order |
The 413 result obtained with ushort can also appear as 413 when decoded as a correctly configured signed 16-bit value. Signedness becomes visible when the most significant bit is set or when the process value can be negative. Match INT16s with the signed driver type, then test across the operating range before changing the map interpretation.
Do not apply a four-byte reorder setting to a one-register value. For multi-register values, follow the map order exactly. A plausible but incorrect value often means that the request began one register early or late, or that the two registers or their bytes were combined in the wrong order.
Apply engineering-unit scaling in the input channel rather than changing the raw register address. If the map defines a raw value multiplied by ten, enable the channel formula and use:
Cnl/10
The identifier is case-sensitive in the described configuration. Transfer the channel configuration after enabling the formula, then compare both raw and scaled values with the controller display. Do not divide when the map’s scaling field is 0 and the value already represents the engineering quantity directly.
Why can a changing value still be wrong?
| Symptom | Likely layer | Check | Correction |
|---|---|---|---|
Stable polling but an implausible changing number such as 27 317 345
|
Register selection or data width | Function, group start, quantity, and type | Read one documented register beginning at 501 before expanding the group |
Entering byte order AB changes the value to 0
|
Decode configuration | Whether the item is only one 16-bit register | Remove the unnecessary reorder entry |
| Decimal map addresses target unexpected values | Address notation | Decimal versus hexadecimal template selection | Select decimal notation for the published 501 value |
Values appear as 0013h or 019eh
|
Tag interpretation | Bit-mask option on the item | Clear the bit-mask setting for a numeric frequency value |
| Correct template tag has no matching server value | SCADA binding | Tag code in the template and channel | Make the codes identical and unique within the device |
| Values are correct but ten times too large | Engineering scaling | Manufacturer scaling entry and channel formula | Enable the formula and apply Cnl/10 when the documented multiplier is ten |
A changing number proves only that bytes arrived. Diagnose in order: physical path, TCP endpoint, device address, function code, register base, group start, width, signedness, byte/register order, bit mask, and scaling.
Why can the register sequence differ from the table?
The AGC 150 map can assign the same offset 501 to labels such as generator, mains, or bus voltage. The active controller configuration determines which named quantity that common register represents. A unit configured as a mains controller should therefore be interpreted using the applicable configuration context, not by counting rows or assuming that every repeated label occupies a new register.
If verified values progress through voltage, frequency, current, and power in an order that does not match the selected map, record the controller firmware identification and the exact document revision. Obtain the register map that matches that firmware and configuration through DEIF or the supplier’s official support route. Do not identify coils or discrete outputs by trial writes: verify their table, function, offset, active state, and write permissions from the matching documentation first.
How is the completed template verified?
- Capture one request and response for the known point. Confirm function
04, start offset501, and quantity one. - Verify that the raw returned word decodes to the controller’s displayed value using the documented signedness.
- Add adjacent points one at a time and compare each with a known live value. Use a new group for gaps or another Modbus table.
- Test 32-bit points separately. Confirm their two-register span and the documented
ABCDorder before accepting them. - Check every template tag code against its input-channel code after any rename.
- Apply documented scaling formulas, transfer the configuration, and compare the final engineering values across more than one operating condition.
FAQ
Why does Modbus address 501 not belong in the tag code?
The group start address controls the Modbus request. The tag code is a unique Rapid SCADA identifier that must match the corresponding channel code.
Why does DEIF register 300502 use offset 501?
300502 is logical input-register notation, while 501 is its zero-based raw offset. Use function 04, zero-based addressing, decimal notation, and group start 501.
Why does INT16s appear to work only as ushort?
Signed and unsigned 16-bit decoding produces the same result for positive values such as 413 when the high bit is clear. Use the signed type specified by INT16s and verify it with negative or upper-range values if the process can reach them.
Why does Rapid SCADA show 0013h instead of frequency?
A selected bit mask can make a numeric tag appear in hexadecimal form, as with 0013h or 019eh. Clear the bit-mask option, reload the configuration, and verify the numeric frequency against the controller display.