
object, no Modbus exception will be immediately returned. However, the point will always reflect the “source port” status and object value. In other words, if such an
13.1.1 Coil Mappings
The Modbus slave implementation provides read/write support for coils (0X references). Accessing coils does not reference any new physical data: coils are simply indexes into various bits of Modbus holding registers. What this means is that when a coil is accessed, that coil is resolved by the gateway into a specific holding register, and a specific bit within that holding register. The pattern of
Coils 1...16 map to holding register #1, bit0...bit15 (bit0=LSB, bit15=MSB) Coils 17...32 map to holding register #2, bit0...bit15, and so on.
Arithmetically, the
coil + 15 | | …Equation 1 | |
holding register = | 16 | | |
| |
|
Where the bracket symbols “ ” indicate the “floor” function, which means that any fractional result (or “remainder”) is to be discarded, with only the integer value being retained.
Also, for any given coil, the targeted bit in the holding register in which that coil resides can be determined by:
bit = (coil −1) % 16 | …Equation 2 |
Where “coil” ∈[1…65535], “bit” ∈[0…15], and “%” is the modulus operator, which means that any fractional result (or “remainder”) is to be retained, with the integer value being discarded (i.e. it is the opposite of the “floor” function).
From these equations, it can be seen that the largest holding register number that can be accessed via this
For clarity, let’s use Equation 1 and Equation 2 in a calculation example. Say, for instance, that we are going to read coil #34. Using Equation 1, we can determine that coil #34 resides in holding register #3, as 3.0625 = 3 r1 = 3. Then, using Equation 2, we can determine that the bit within holding register #3 that coil #34 targets is
45