ACT-300+ Modbus Communications Guide
ACT-300+ Modbus Communications Guide
66A7787 rev 1
ATC-300+ Modbus Communications Guide 66A7787 rev 1
This page is intentionally left blank.
Eaton Corp.
1000 Cherrington Parkway
Moon Township, PA 15108
1.1. Overview
A typical Modbus network is shown in Figure 1. The network communicates using a master-
slave technique. A single master device initiates all transactions, called queries, on the
network. Slave devices respond to the master's queries, either by returning data or performing
an action requested by the query. A query is addressed to an individual slave or broadcast to
all slaves. Slave devices do not respond to a broadcast query.
A multi-slave device Modbus network may be implemented using a 2-wire half-duplex RS-485
implementation. Various slave devices from Eaton or other Modbus compliant devices may be
connected to the Modbus network. A maximum of 32 slave devices may be connected to the
network at distances up to 4000 feet.
A 121 ohm terminating resistor can be added as an end of line terminator. The ATC-300+ has a
DIP switch on the back of the unit to switch the resistor in or out of the RS-485
receiver/transmitter circuit by the user as needed. Termination resistors are typically not
needed for baud rates of 19200 and lower at distances up to 4000 feet.
The Modbus protocol specifies two transmission modes: ASCII (American Standard Code for
Information Interchange) and RTU (Remote Terminal Unit). The ATC-300+ will support the RTU
mode of the Modbus protocol.
1.4. References
Modbus® is a registered trademark of Schneider Automation, Inc.
The following documents are referenced by this specification and may be necessary to properly
understand this material.
IL 17384 “IMPACC System Communications”,
02-PMP-01 “Modbus RTU Products Specification”, Eaton Corp., Rev 1.02, November
2004.
PI-MBUS-300 "Modicon Modbus Protocol Reference Guide", MODICON, Inc., Industrial
Automation Systems, Rev. J, June 1996. -
Query
message packet
from Modbus Master
Product Product
Address Address
Function Function
Code Code
8-bit 8-bit
Data Data
Bytes Bytes
Error Error
Check Check
Response
message packet
from Modbus
slave (ATC-300)
The Eaton ATC-300+ supports the RTU mode. The main advantage of the RTU mode is its
greater character density1, which provides for better data throughput at the same baud rate.
A RTU query or response is placed by the transmitting device into a Modbus message packet,
which has a known beginning and ending point. The message packet is made up of multiple
frame packets. This allows receiving devices to begin at the start of the message packet, read
the address portion to determine which device is addressed2 and to know when the message is
completed. Partial messages can be detected and errors can be identified as a result.
Each RTU frame packet contains a start bit, eight data bits3, and if parity is used, a bit for even /
odd parity and one stop bit. If parity is not used, another stop bit is generally used in its place4,
thus resulting in two stop bits. Each frame packet, therefore, contains a total of 11 bits for each
eight-bits of data exchanged. Each eight-bit data byte is defined as two binary encoded four-bit
hexadecimal characters 0 … 9, A … F.
RTU message packets start with a silent interval of at least 3.5 frame packet times. This is most
easily implemented as a multiple of frame packet times at the baud rate being used on the
network. The silent interval between message packets is:
(3.5 frame packets) x (11 bits / frame packet) x (1 sec / baud rate).
The silent intervals for each selectable baud rate is shown in Table 1. Networked devices
monitor the network bus continuously, including silent intervals.
1
Nearly twice as dense as the Modbus ASCII mode message protocol.
2
Or if all devices are addressed in the case of a broadcast message.
3
The least significant bit is sent first.
4
To accommodate systems which do not incorporate a second stop bit when no parity is selected, an ideal
device could be set to receive no parity and one stop bit while transmitting no parity and two stop bits.
ATC-300+ Modbus Communications Guide 4 66A7787 rev 1
Upon detecting an appropriate silent interval, all Modbus products prepare to recognize the next
received byte as the address field. If the received address is the same as the address assigned
to the slave, the slave receives the rest of the query from the master and responds
appropriately. The slave always responds with its assigned address to the master.
The entire message packet must be transmitted as a continuous stream. If a silent interval of
more than 3.5 frame times occurs before completion of the message packet, the receiving
device flushes the incomplete message and assumes the next frame packet begins a new
message.
If a new message begins earlier than 3.5 frame times following a previous message, the
receiving device considers it a continuation of the previous message. This causes an error, as
the value in the final CRC error checking field is not valid for the combined messages.
A slave device will not respond to message packets in which a computed CRC doesn’t match
the received CRC.
<
Silent
Interval
Frame Packet 0 Frame Packet 1 Frame Packet N
Start Info Parity Stop Start Info Parity Stop Start Info Parity Stop
1 bit 8 bits 1 bit 1 bit 1 bit 8 bits 1 bit 1 bit 1 bit 8 bits 1 bit 1 bit
>
Silent Interval
5
A Modbus protocol limited range of addresses.
ATC-300+ Modbus Communications Guide 5 66A7787 rev 1
By convention, this document will present the register number in decimal and the register
address in hexadecimal. Thus, Setpoint register 300110 is register address BB816 (i.e., 300010).
Function
Action Modbus definition ATC-300+ Register Group
Code
01 Read Coil status Discrete outputs
02 Read Input status Discrete inputs
03 Read Holding registers Setpoints
04 Read Input registers Actual values
05 Write Force single coil Operation command
16 Write Preset multiple registers Write Setpoints
Function code 01 reads the ON / OFF status of the 13 discrete outputs in the ATC-300+.
Register Register
Name
Number Address
(decimal) (hex)
Source 1 Available 1000 3E7
Source 2 Available 1001 3E8
Source 1 Connected 1002 3E9
Source 2 Connected 1003 3EA
ATS In Test 1004 3EB
ATS Waiting for Sync 1005 3EC
K1 Relay 1006 3ED
K2 Relay 1007 3EE
K3 Relay 1008 3EF
K4 Relay 1009 3F0
Pretransfer Relay 1010 3F1
Alarm Relay 1011 3F2
Gen Start Relay 1012 3F3
The query message format in given in Table 5. The query specifies the starting status bit
address and the quantity of status bits to be read. This example requests the Source 1 and
Source 2 Available and Connected status bits.
The response message format is given in Table 6. Each status bit requested is contained in
one bit of the data field. The least significant bit of the first data byte contains the status of the
starting addressed status bit. Each successive status bit corresponds to the next significant bit
in the data field. If the number of status bits to be returned is not a byte (8-bit) multiple, the
remaining unused bits in the last data byte are set to logical zeros. The Byte Count field
Function code 02 reads the ON / OFF status of the 5 discrete inputs in the ATC-300+. “ON”
means that the particular input feature is activated. “OFF” means that it is not.
Modbus Address
Register Register
Name
Number Address
(decimal) (hex)
The query message format in given in Table 8. The query specifies the starting address (which
is always one less than the starting register number) and the quantity of binary inputs to be
read.
The response message format is given in Table 9. Each binary input status requested is
contained in one bit of the data field. The least significant bit of the first data byte contains the
input status of the starting addressed input. Each successive input status bit corresponds to the
next significant bit in the data field. If the number of inputs to be returned is not a byte (8-bit)
multiple, the remaining unused bits in the last data byte are set to logical zeros. The Byte Count
field contains the number of data bytes being returned. A logical one indicates the ON condition
while a logical zero indicates the OFF condition.
The response message format is given in Table 11. The contents of each 16-bit register are
returned as two bytes, with the high order byte returned first. The Byte Count field contains the
number of data bytes being returned, which is calculated as two times the number of registers
requested.
Register Register
scale
Name Number Address Data Range Units
factor
(decimal) (hex)
TDES timer 3001 BB8 0 to 120 1 sec
TDNE timer 3002 BB9 0 to 1800 1 sec
TDEN timer 3003 BBA 0 to 1800 1 sec
TDEC timer 3004 BBB 0 to 1800 1 sec
Nominal Frequency 3005 BBC 50 or 60 10 Hz
Nominal Voltage 3006 BBD 120 to 600 1 V
Breaker ATS: 50 to 97%
S1 Undervoltage Dropout 3007 BBE
Contactor ATS: 78 to 97%
1 V
The response message format is given in Table 14. The contents of each 16-bit register are
returned as two bytes, with the high order byte returned first. The Byte Count field contains the
number of data bytes being returned, which is calculated as two times the number of registers
requested.
Register Register
scale
Category Name Units Address Address format
factor
(decimal) (hex)
S1 VAB V 6145 1800 1 unsigned
S1 VBC V 6146 1801 1 unsigned
S1 VCA V 6147 1802 1 unsigned
Measured Values S1 Freq Hz 6148 1803 10 unsigned
S2 VAB V 6149 1804 1 unsigned
S2 VBC V 6150 1805 1 unsigned
S2 VCA V 6151 1806 1 unsigned
S2 Freq Hz 6152 1807 10 unsigned
TDES Timer seconds 6153 1808 1 unsigned
TDNE Timer seconds 6154 1809 1 unsigned
TDEN Timer seconds 6155 180A 1 unsigned
Timers TDEC Timer seconds 6156 180B 1 unsigned
TDN Timer seconds 6157 180C 1 unsigned
TDEF Timer seconds 6158 180D 1 unsigned
Pretransfer Timer seconds 6159 180E 1 unsigned
Engine Run Timer minutes 6160 180F 1 unsigned
Sync Timer minutes 6161 1810 1 unsigned
S2 Engine Run Time hours 6162 1811
S1 Connect Time hours 6163 1812
System Counters S2 Connect Time hours 6164 1813
S1 Available Time hours 6165 1814
S2 Available Time hours 6166 1815
Load Energized Time hours 6167 1816
Primary Status - 6168 1817 1 unsigned
ATS Info Number of Transfers - 6169 1818 1 unsigned
Cause of Latest Event - 6170 1819 1 unsigned
Product ID - 6171 181A - encoded
Hardware Revision - 6172 181B - unsigned
Controller Info Firmware Version - 6173 181C - unsigned
Firmware Revision - 6174 181D - unsigned
Serial Number - high - 6175 181E - unsigned
Serial Number – low - 6176 181F - unsigned
Code Definition
4 Alarmed
8 Starting
12 Transferred
27 On Good Source
Code Definition
1 Preferred Source became Available
2 Overvoltage
3 Undervoltage
4 Overfrequency
5 Underfrequency
6 Plant Exerciser
7 Engine Test
9 Remote Engine Test
11 Voltage Unbalance
12 Phase Reversal
14 Go To Emergency
15 Lockout
16 Failed to sync (Phase angle)
17 Failed to sync (Freq difference)
18 Monitor Mode
19 Engine Test or Plant Exercise Aborted
20 Source 1 Breaker/Contactor Error
21 Source 2 Breaker/Contactor Error
The command message format is given in Table 19. This example is for initiating an ATS Test.
The response message format in given in Table 22. The response echoes the starting register
address and the number of setpoint registers from the query message.
Register Register
scale
Name Number Address Data Range Units
factor
(decimal) (hex)
TDES timer 3001 BB8 0 to 120 1 sec
TDNE timer 3002 BB9 0 to 1800 1 sec
TDEN timer 3003 BBA 0 to 1800 1 sec
TDEC timer 3004 BBB 0 to 1800 1 sec
Nominal Frequency 3005 BBC 50 or 60 10 Hz
Nominal Voltage 3006 BBD 120 to 600 1 V
Breaker ATS: 50 to 97%
S1 Undervoltage Dropout 3007 BBE
Contactor ATS: 78 to 97%
1 V
Under certain circumstances, the ATC-300+ will return an exception code. The exception codes
are shown in Table 24.
Exception
Description
Code (hex)
01 Invalid Function
02 Invalid Register
03 Invalid Data
84 Partial Register Access Error
The software displays the ModScan32 window with the Toolbar, Status Bar and Display Bar all
selected (in the View menu). A sub-window (ModSca1) allows the construction of an outgoing
message and a data transmission/reception box.
Setup
▼
Data Definitions
Configure this Display Definition window as shown to read the Product ID Actual Value register
and click OK:
Again, in the Setup main menu item, configure the Display Options submenu item as follows:
Setup
▼
Display Options ► Show Data
[ x ] Show Traffic
Binary
[ x ] Hex
Unsigned Decimal
Integer
Floating Pt
Swapped FP
Dbl Float
Swapped Dbl
[ x ] Hex Addresses
Connection
▼
Connect
Configure this Connection Details dialog box as shown, selecting the proper serial (COM) port
for your PC:
Next click the Protocol Selections button and configure the Modbus Protocol Selections dialog
box as shown:
Note: The Slave Response Timeout needs increased to 8000 msec if the Write Setpoints
function is going to be used.
File
▼
Save As…
Enter the File name ATC300+ then click Save to store the newly configured information:
The following screenshot shows a query/response for reading the ATC-300+ Product ID from the
Actual Value registers (Function Code 04).
The register address is 181A but Modbus requires that the register number (which is one more
than the register address) is entered in the Address box below. Therefore, 181B is entered and
Modbus transmits the address of [18][1A] in the query message.
Function codes 01 (Read ATS Status Bits), 02 (Read Input Status), and 03 (Read Setpoints) are
implemented the same way with Modscan. Each one can be selected using the “MODBUS Point
Type” pulldown box.
All Modbus queries can also be sent to the ATC-300+ using the User Defined Command String.
The following screenshot shows how to select User Msg for transmitting queries in Modscan.
This screenshot shows an example of how to send the Operation Command (Function Code 05)
to reset the Transfer Status. The register address for Reset Transfer Status is 138E and this is
what gets entered into the Send Data Field when using the User Defined Command String.
This example shows how to write the Setpoints buffer to the ATC-300+ using the Modscan Test
Script method. The Test Script may be written as a .csv file.
The following screenshot shows how to select the Test Script method.
Before executing the Writing Setpoints script, it is necessary to make sure that the The Slave
Response Timeout is increased to 8000 msec. This is found under Protocol Selection in the
Connection Details menu.