8.6.2.2.4 Supported Modbus Function Codes 
Modbus protocol has many function codes. CR1000 commands support the 
following. 
 
Table 108. Supported Modbus Function Codes 
Code  Name  Description 
01 
Read coil/port status  Reads the on/off status of discrete output(s) in the 
ModBusSlave 
02 
Read input status  Reads the on/off status of discrete input(s) in the 
ModBusSlave 
03 
Read holding registers  Reads the binary contents of holding register(s) in 
the ModBusSlave 
04 
Read input registers  Reads the binary contents of input register(s) in 
the ModBusSlave 
05 
Force single coil/port  Forces a single coil/port in the ModBusSlave to 
either on or off 
06 
Write single register  Writes a value into a holding register in the 
ModBusSlave 
15 
Force multiple coils/ports  Forces multiple coils/ports in the ModBusSlave to 
either on or off 
16 
Write multiple registers  Writes values into a series of holding registers in 
the ModBusSlave 
 
 
8.6.2.2.5 Reading Inverse-Format Modbus Registers 
Some Modbus devices require reverse byte order words (CDAB vs. ABCD).  This 
can be true for either floating point, or integer formats.  Since a slave CR1000 
uses the ABCD format, either the master has to make an adjustment, which is 
sometimes possible, or the CR1000 needs to output reverse-byte order words.  To 
reverse the byte order in the CR1000, use the MoveBytes() instruction as shown 
in the sample code below. 
for i = 1 to k 
 MoveBytes(InverseFloat(i),2,Float(i),0,2) 
 MoveBytes(InverseFloat(i),0,Float(i),2,2) 
next 
In the example above, InverseFloat(i) is the array holding the inverse-byte 
ordered word (CDAB).  Array Float(i) holds the obverse-byte ordered word 
(ABCD). 
See the appendix Endianness
 (p. 643). 
 
8.6.2.3  Troubleshooting (Modbus) 
Test Modbus functions on the CR1000 with third party Modbus software.  Further 
information is available at the following links: 
•  www.simplyModbus.ca/FAQ.htm 
•  www.Modbus.org/tech.php 
•  www.lammertbies.nl/comm/info/modbus.html 
 
415