Sterlco M2B+ Controller User Manual
Page 49

49 of 68
MODBUS Protocol 
Every message sent from a MODBUS master to a slave on to the network contains a function 
code that represents the action the slave device should take in response to the message. So 
that a MODBUS master can read and write the controller parameters, setpoints, and status 
values in an Athena Temperature controller, the Athena implementation of the MODBUS 
protocol supports the following function codes: 
function 03 ($03) This function is used to read to one or more contiguous “holding registers” 
(database locations that are next to one another in the register map). 
function 06 ($06) This function is used to write to a single holding register. A message 
containing function 06 can be broadcast to all controllers on the network simultaneously by 
sending the message to the controller ID of 0 (zero), instead of to the controller ID of a 
specific device. 
function 16 ($010) This function is used to write to a single register or to multiple contiguous 
holding registers, that is, to two or more registers that are next to one another in the register 
map. A message containing function 16 ($10) can be broadcast to all controllers on the 
network simultaneously by sending the message to the controller ID of 0 (zero), instead of to 
the controller ID of a specific device. 
So that you can test communication over the MODBUS network, Athena also supports the 
diagnostic function 08 ($08), subfunction 00 ($00) to perform a loopback test. When a 
loopback test is performed, the MODBUS master sends a message to a controller and the 
controller sends the same message back to the master. (No changes are made to the controller 
database as a result of processing the command.) If the master does not receive a reply, it is 
time to troubleshoot the network or the controller’s communication setup. 
The controllers will not take any action, nor will they reply in response to any messages they 
cannot interpret. This includes any messages that contain a function code other than 03, 06, 
16 ($10), or 08 subfunction 00. 
Modbus Register Addressing Regions. The regions (ranges) of register relative addresses 
used for the various types of representations of controller values are shown in the table 
below. Each register type used to transmit controller values was described in more detail 
earlier in this section (see the cross-references in the table). 
Figure 3: Modbus Address Regions
Register Address 
Range
Region
Type of Value Used 
by the Controller
How Data is 
Transmitted in the 
Register
0000 to 0999
Integer
Integer
16-bit Integer
1000 to 1999
10X mirror of 0000 
to 0999 base region
Can include 
fractional values
16-bit Integer
4000 to 4999
32-bit IEEE mirror 
of 0000 to 0999 base 
region
Can include 
fractional values
32-bit IEEE floating 
point
All others
Reserved
Reserved
Reserved
The Register Address field in the Message protocol should be offset (-1), 
from the point number shown in Table 13 
