3 addressing (modbusaddr), 4 supported function codes (function), 5 reading inverse-format registers – Campbell Scientific CR3000 Micrologger User Manual
Page 375: 4 troubleshooting, Table 93. supported modbus function codes

Section 8. Operation
375
8.6.2.3.3 Addressing (ModbusAddr)
Modbus devices have a unique address in each network. Addresses range from 1
to 247. Address 0 is reserved for universal broadcasts. When using the NL100,
use the same number as the Modbus and PakBus® address.
8.6.2.3.4 Supported Function Codes (Function)
Modbus protocol has many function codes. CR3000 commands support the
following.
Table 93. 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.3.5 Reading Inverse-Format 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 CR3000
uses the ABCD format, either the master has to make an adjustment, which is
sometimes possible, or the CR3000 needs to output reverse-byte order words. To
reverse the byte order in the CR3000, 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).
8.6.2.4 Troubleshooting
Test Modbus functions on the CR3000 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