beautypg.com

3 addressing (modbusaddr), 4 supported function codes (function), 5 reading inverse-format registers – Campbell Scientific CR800 and CR850 Measurement and Control Systems User Manual

Page 353: 4 troubleshooting, Figure 110: loggernet network-map setup: com port

background image

Section 8. Operation

353

 

Syntax 

MoveBytes(Dest, DestOffset, Source, SourceOffset, NumBytes)

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. CR800 commands support the
following.

Table 86. 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 CR800 uses
the ABCD format, either the master has to make an adjustment, which is
sometimes possible, or the CR800 needs to output reverse-byte order words. To
reverse the byte order in the CR800, 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 CR800 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