FS-8700-01_Modbus_RTU_(T28700-01) Driver Manual Page 3 of 21
1. Modbus RTU/ Modbus ASCII Description
The Modbus RTU and Modbus ASCII drivers allow the FieldServer to transfer data to and from
devices over either RS-232 or RS-485 using Modbus RTU or Modbus ASCII protocol
respectively. The driver was developed for Modbus Application Protocol Specification V1.1a"
from Modbus-IDA. The specification can be found at www.modbus.org. The FieldServer can
emulate either a Server or Client.
The information that follows describes how to expand upon the factory defaults provided in the
configuration files included with the FieldServer.
There are various register mapping models being followed by various vendors
To cover all these models FieldServer uses the following three Models
•Modicon_5digit – Use this format where addresses are defined in 0xxxx, 1xxxx, 3xxxx or
4xxxx format. A maximum of 9999 registers can be mapped of each type. This is
FieldServer driver’s default format.
•ADU –Application Data Unit address. Use this format where addresses of each type are
defined in the range 1-65536
•PDU –Protocol Data unit address. Use this format where addresses of each type are
defined in the range 0-65535.
The key difference between ADU and PDU is for example if Address_Type is ADU and address
is 1, the driver will poll for register 0. If Address_Type is PDU, the driver will poll for address 1.
Note 1: If vendor document shows addresses in extended Modicon (i.e. 6 digit) format like
4xxxxx then consider these addresses as xxxxx (omit the first digit) and use either ADU or PDU
Note 2: The purpose of providing 3 different ways of addressing the Modbus registers is to allow
the user to choose the addressing system most compatible with the address list being used. At
the protocol level, the same protocol specification is used for all three with the exception of the
limited address range for Modicon_5digit.
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.FieldServer.com
FS-8700-01_Modbus_RTU_(T28700-01) Driver Manual Page 5 of 21
3. Hardware Connections
It is possible to connect a Modbus RTU or Modbus ASCII device to any of the existing serial
ports on the FieldServer1. These ports simply need to be configured for the appropriate driver in
the configuration file.
Configure the Modbus RTU or Modbus ASCII device according to manufacturer’s instructions.
1
Not all ports shown are necessarily supported by the hardware. Consult the appropriate Instruction
manual for details of the ports available on specific hardware.
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.FieldServer.com
FS-8700-01_Modbus_RTU_(T28700-01) Driver Manual Page 6 of 21
4. Configuring the FieldServer as a Modbus RTU or Modbus ASCII Client.
For a detailed discussion on FieldServer configuration, please refer to the FieldServer
Configuration Manual. The information that follows describes how to expand upon the factory
defaults provided in the configuration files included with the FieldServer (See “.csv” sample files
provided with the FieldServer).
This section documents and describes the parameters necessary for configuring the FieldServer
to communicate with a Modbus RTU or Modbus ASCII Server.
4.1. Data Arrays/Descriptors
The configuration file tells the FieldServer about its interfaces, and the routing of data
required. In order to enable the FieldServer for Modbus RTU or Modbus ASCII
communications, the driver independent FieldServer buffers need to be declared in the
“Data Arrays” section, the destination device addresses need to be declared in the “Client
Side Nodes” section, and the data required from the Servers needs to be mapped in the
“Client Side Map Descriptors” section. Details on how to do this can be found below.
Note that in the tables, * indicates an optional parameter, with the bold legal value being the
default.
Section Title
Data_Arrays
Column Title Function Legal Values
Data_Array_Name Provide name for Data Array
Provide data format. Each
Data_Array_Format
Data Array can only take on
one format.
Number of Data Objects. Must
be larger than the data
Data_Array_Length
storage area required by the
map descriptors for the data
being placed in this array.
FS-8700-01_Modbus_RTU_(T28700-01) Driver Manual Page 8 of 21
4.3. Client Side Node Descriptors
Section Title
Nodes
Column Title Function Legal Values
Node_Name Provide name for Node
Node_ID
Modbus station address of physical
Server Node
Protocol Specify protocol used
Port
Specify which port the device is
connected to the FieldServer
Set to Block_Mode if Remote Server
Node_Type3
Node (RSN) only supports Write
Multiple – FC16 & FC15, and does
not support FC05 or FC06
Address_Type
4
Specify Register Mapping Model
Example:
Change protocol to MB_ASCII to use Modbus ASCII protocol
// Client Side Nodes
// For devices where 65536 addresses are available in each memory area.
Nodes
Node_Name, Node_ID, Protocol, Port Address_Type
Modbus device 1, 1, Modbus_RTU, P8 ADU
Modbus device 2, 2, Modbus_RTU, P8 PDU
// For devices where only 9999 registers are available in each memory area.
Nodes
Node_Name, Node_ID, Protocol, Port
Modbus device 3, 3, Modbus_RTU, P8
Up to 32 alphanumeric
characters
1-255
Modbus RTU
Modbus_RTU
Modbus ASCII
MB_ASCII
P1-P8, R1-R2
2
Block_Mode
ADU,PDU, -, Modicon_5digit
3
If this parameter is not specified the default function codes will be FC 05 (Single_Coil) and FC 06
(Single_Register). Refer to Appendix A.3 for more information.
4
Optional for Modicon 5 digit devices
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.FieldServer.com
FS-8700-01_Modbus_RTU_(T28700-01) Driver Manual Page 11 of 21
5. Configuring the FieldServer as a Modbus RTU or Modbus ASCII Server
For a detailed discussion on FieldServer configuration, please refer to the FieldServer
Configuration Manual. The information that follows describes how to expand upon the factory
defaults provided in the configuration files included with the FieldServer (See “.csv” sample files
provided with the FieldServer).
This section documents and describes the parameters necessary for configuring the FieldServer
to communicate with a Modbus RTU or Modbus ASCII Client.
The configuration file tells the FieldServer about its interfaces, and the routing of data required.
In order to enable the FieldServer for Modbus RTU or Modbus ASCII communications, the
driver independent FieldServer buffers need to be declared in the “Data Arrays” section, the
FieldServer virtual Node(s) needs to be declared in the “Server Side Nodes” section, and the
data to be provided to the clients needs to be mapped in the “Server Side Map Descriptors”
section. Details on how to do this can be found below.
Note that in the tables, * indicates an optional parameter, with the bold legal value being the
default.
5.1. Server Side Connection Descriptors
Section Title
Connections
Column Title Function Legal Values
Port
Baud* Specify baud rate
Parity* Specify parity Even, Odd, None
Data_Bits*
Stop_Bits*
Protocol
Handshaking* Handshaking is not supported.
Example
Change protocol to MB_ASCII to use Modbus ASCII protocol
// Server Side Connections
FS-8700-01_Modbus_RTU_(T28700-01) Driver Manual Page 12 of 21
5.2. Server Side Node Descriptors
Section Title
Nodes
Column Title Function Legal Values
Node_Name Provide name for Node Up to 32 alphanumeric characters
Node_ID Node ID of physical Server Node 1 – 255
Protocol Specify protocol used Modbus RTU
Address_Type7 Specify Register Mapping Model
Example
Change protocol to MB_ASCII to use Modbus ASCII protocol
// Server Side Nodes
// For devices where 65536 addresses are available in each memory area.
Nodes
Node_Name, Node_ID, Protocol Address_Type
MB_Srv_11, 11, Modbus_RTU ADU
MB_Srv_12, 12, Modbus_RTU PDU
// For devices where only 9999 registers are available in each memory area.
Nodes
MB_Srv_13, 13, Modbus_RTU
MB_Srv_14, 14, Modbus_RTU -
ADU,PDU, -, Modicon_5digit
Modicon_5digit
7
Optional for Modicon 5 digit devices
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.FieldServer.com
FS-8700-01_Modbus_RTU_(T28700-01) Driver Manual Page 13 of 21
5.3. Server Side Map Descriptors
5.3.1. FieldServer Specific Map Descriptor Parameters
Column Title Function Legal Values
Map_Descriptor_Name Name of this Map Descriptor
Data_Array_Name
Data_Array_Offset Starting location in Data Array
Function
Name of Data Array where data
is to be stored in the FieldServer
Function of Server Map
Descriptor
Up to 32 alphanumeric
characters
One of the Data Array names
from “Data Array” section above
0 to maximum specified in “Data
Array” section above
Server
5.3.2. Driver Specific Map Descriptor Parameters
Column Title Function Legal Values
Node_Name
Data_Type8 Specify memory area
Length
Address
Data_Array_Low_Scale*
Data_Array_High_Scale*
Node_Low_Scale*
Node_High_Scale*
Node_Offline_Response
Name of Node to fetch
data from
Length of Map
Descriptor
Starting address of
read block
Scaling zero in Data
Array
Scaling max in Data
Array
Scaling zero in
Connected Node
Scaling max in
Connected Node
Set the FieldServer
response to the
Modbus RTU Client
when the Server Node
supplying the data has
gone offline
One of the Node names specified in
“Client Node Descriptor” above
Address_Type = ADU
Coil, Discrete_Input, Input_Register,
Holding_Register, Single_Coil,
Single_Register
Address_Type = PDU
FC01, FC02, FC03, FC04,
FC05, FC06, FC15, FC16
Address_Type = Modicon_5digit
FS-8700-01_Modbus_RTU_(T28700-01) Driver Manual Page 16 of 21
Appendix A.2. Single Writes
For pure write operations where the function = WRBC or WRBX, the driver defaults to using
Function Codes 15 and 16 (Multiple writes). It is possible to force the driver to use Function
Codes 5 and 6 (Single Writes) by manipulating the Data_Type parameter as follows:
Add a parameter to the Modbus client side Map Descriptor called Data_Type.
If you specify the Data_Type as Single_Register and the Function as WRBC or WRBX,
then a Modbus poll with FC 6 will be generated.
Logically Single Register implies a length of one, and even if you try to set the length longer
in the csv file, the length is limited to 1 in the driver.
Appendix A.3. Read/write Operation
When using the driver as a Modbus master, the function RDBC allows read/write capability
with Register and Coil data types. If defaults are used, then Function codes 5 and 6 (Single
Writes) are used to write data back to the registers being read, regardless of data length
being read. If multiple writes (FC 15 and 16) are needed for Read/write operation, the user
needs to specify the Node_Type parameter in the Client Side Nodes Section and set it to
Block_Mode.
Note that block writes of length 1 are currently all that is supported.
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.FieldServer.com
This example multiplies the values in the data array by 100 (10000 on Node_High_Scale is 100X larger than 100 on
Data_Array_High_Scale). This is most commonly used when the user wants to introduce values after the decimal point. For
example, a value of 75.6 will be sent as 7560, which can then be rescaled by the Modbus master.
The following example shows how scaling can be achieved on the Server side of the configuration. Note that scaling can also be
done on the Client side to scale down a value that was scaled up by a Modbus vendor. Further information regarding scaling can be
found in the FieldServer Configuration manual.
Example :
FS-8700-01_Modbus_RTU_(T28700-01) Driver Manual Page 18 of 21
Modbus
Special
Transferring 32 bit values with two registers
If a Modbus Server sends two consecutive registers to the FieldServer representing either a
floating point value or a 32 bit integer value, the FieldServer can combine and decode these
registers back into their original format. To do this, the user must read the registers into an
integer data array, and then use the Moves function to move the data to a floating point or
32 bit integer data array. The “function” field in the move must be populated with the correct
move function required. Details of the available function fields are listed in the FieldServer
configuration manual along with a more detailed explanation of moves. Note that functions
also exist to split a floating point value into two integers using the reverse operation.
A diagrammatic representation of this process is depicted below:
Modbus
Device
Two 16 bit
integers
polled:
e.g: 40001,
length 2
Together, they
combine to
form a 32 bit
IEEE Floating
point number.
Source Data
Array
------------------------Offset 0: 40001
------------------------Offset 1: 40002
-------------------------
Move
Float Data Array
------------------------Offset 40: Float value
-------------------------
Sensible data
Unreadable
content
The example below shows how a floating point value is retrieved from two Modbus registers
that were placed in an integer data array.
This Move will cause two integers at offsets 0 and 1 in the integer Data Array DA1 to be
copied to offset 6 in the float Data Array DA2. In the process of copying the values, the
integers will be combined and treated as an IEEE 32 bit floating point number.
Appendix A.5. Connection to York Modbus Microgateway
If connecting the FieldServer to a York Modbus Microgateway, the Node_ID of the
Microgateway is defined by the address DIP switches. If switch 4 is set to ‘On’ and the other
switches are set to ‘off’ then Node_ID of the Microgateway is ‘247’, the parity is ‘Even’, and
the stop bits are 1. Other Node_ID combinations can be found in the York Modbus
Microgateway Installation Manual.
FieldServer Technologies 1991 Tarob Court Milpitas, California 95035 USA Web:www.FieldServer.com
FS-8700-01_Modbus_RTU_(T28700-01) Driver Manual Page 19 of 21
Appendix A.6. Node_Offline_Response
This function is specific to the Modbus RTU driver.
In systems where data is being collected from multiple Server Nodes and made available on
a FieldServer configured as a Modbus RTU Server, when a Server Node goes offline the
default behavior of the FieldServer would be to stop responding to polls for this data. This
might not be what the user wants. Various options exist making it possible to signal that the
data quality has gone bad without creating error conditions in systems sensitive to the
default option.
The following options can be configured under the Node parameter,
Node_Offline_Response, to set the response of the FieldServer to the Modbus RTU Client
when the Server Node supplying the data is offline:
• No_Response - this is the default option. The FieldServer simply does not respond when
the corresponding Server Node is offline.
• Old_Data - The FieldServer will respond, but with the last known value of the data. This
maintains the communication link in an active state, but may hide the fact that the Server
Node is offline.
• Zero_Data - The FieldServer will respond, but with the data values set to zero. If the
user normally expects non-zero values, this option will signal the offline condition without
disrupting communications.
• FFFF_Data - The FieldServer will respond, but with the data values set to FFFF (hex). If
the user normally expects other values, this option will signal the offline condition without
disrupting communications.