beautypg.com

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

background image

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