This video will go over the basic characteristics of the Modbus protocol,
with special emphasis for Rockwell Automation users.
We'll be covering some of the broad differences between Modbus over serial
and over Ethernet.
We'll also discuss the different wiring standards for serial communications.
Next, we'll cover the dynamics of Modbus as a Master and Slave network
over serial and as a Client and Server over Ethernet.
We'll delve into my Modbus data addressing and the associated
function codes and breakdown coils, bits, bytes,
and registers. We'll also talk about float
and double integer values and how they're handled by my Modbus.
First, a brief history lesson.
Modbus is a serial communications protocol developed by Modicon in 1979.
It was created specifically for use in Modicon PLC's
for industrial applications. Today it is an
open protocol, used by a wide range of automation products.
Modbus can be used over Ethernet as well as serial cable.
There are three major types or variations of the Modbus protocol:
Modbus ASCII, Modbus RTU,
and Modbus TCP/IP. Modbus was originally developed using ASCII characters to encode messages
and this version of the protocol is still in use today.
Modbus RTU is, by far, the most common implementation,
using binary coding and CRC error checking.
The two modes are incompatible so a device configured for ASCII mode cannot
communicate with one using RTU.
Modbus RTU devices typically use one of three electrical interfaces,
RS232, RS485
and RS422. RS232 is a simple point to point arrangement.
If you only need to connect one device to another,
and the distance between the two devices is less than 50 feet,
or 15 meters, then RS232 will do the job.
To connect more than two devices on the same line,
and/or have a distance greater than 50 feet,
you should use RS485 or RS422
For a master communicating with multiple slave devices,
RS485 is by far the most popular method.
This standard can support up to 32 nodes over a range up to 4,000 feet,
roughly 1200 meters without a repeater.
The speed that Modbus messages are sent at is referred to as the baud rate
or bit per second. All devices on an RTU network must use the same baud rate.
Different devices support different transmission speeds, but between 9,600
and 19,200 bps is a typical range.
Modbus modules can be configured from as low as 300 to as high as
over a 100,000. A Modbus serial network has a master device that issues
commands to the slave devices.
The slaves will not transmit information unless they receive a command to do so
from the master. There can only be one master on a network
and a maximum up 247 slaves,
each with a unique slave ID from 1 to 247.
RS485 cannot drive
more than 32 nodes in a single single segment;
so for the rare application that needs more than 32 nodes,
a repeater is required. The master, can write data to the slaves as well as read
data from them.
SCADA/HMI systems, typically would be the master, communicating with a series
of Modbus slave devices.
Here is a diagram of a serial network where the master is connected to a slave which is then
daisy chained along to all the other slaves on the line.
The devices must be connected in a daisy chain manner;
they cannot be connected in a star topology.
Modbus over Ethernet operates exactly like it sounds:
Modbus devices using regular Ethernet cables and switches to communicate with each other.
The big difference with Modbus TCP/IP is
that an MBAP header or Modbus application header
is added to the star each message. The slave ID at the beginning at the message is removed
as well as the cyclic redundancy check at the end.
The MBAP header contains all the identifying information needed to route
the data to the addressed device.
Modbus uses port 502 for TCP/IP communication.
this is important if your data needs to go through a firewall.
ProSoft uses that port for MBAP messaging specifically.
Modbus serial messages can also be sent as regular RTU messages encapsulated
inside and Ethernet TCP/IP packet.
Encapsulated messages can use any port, but ProSoft products are set to use
port 2,000 by default.
Note that MBAP and RTU encapsulation are not compatible;
devices must be set to use one or the other.
MBAP messaging is by far the most popular Modbus TCP/IP communication method.
So, for this video, we will be focusing on Modbus RTU
and Modbus TCP/IP using the MBAP.
Modbus TCP/IP uses the terms client and server
instead of master and slave. The TCP/IP network consists of the client
connected to a switch or series of switches,
to which all the servers on the network are also connected.
Modbus TCP/IP devices use Internet Protocol addressing
and require a subnet mask. The IP address and subnet mask are both
represented by for 8-bit numerical group or
octets. The IP addresses the location
of a particular device on a network and the subnet masks serves to simplify the task
of routing traffic within the network. If you don't know your IP addressing
your IT group or network administrator will let you know the IP addresses and
subnet mask your devices will need.
The default gateway is optional and not required for networks that do not use a
default gateway.
Again you can consult your IT group or network administrator.
Now let's talk about modbus' eccentric
addressing system and the different data tables.
There are four tables where information is stored.
Two tables store simple discrete values called coils
and two store numerical 16-bit values
known as registers. For each type data there
is one read only table and one
read write table. There are no tables for 32-bit data types because back when
Modbus was defined,
double integers and floating-point values were not available in PLC's.
There is a way to use those data types though,
we'll get to that in a moment. Each table has a maximum love 9,999 addresses.
Data table addresses 1 through 9,999
are the read write table for coils,
addresses 10,001 through 19,999
are the read only for discrete inputs.
Data table addresses 30,001 through 39,999
are the read only for input registers
and addresses 40001 through 49,999
are the read write table for holding registers.
At this point it might be helpful to explain the terms used for data types
in Modbus. Coils in discrete inputs
are the Modbus vernacular for 1-bit of data or
in Rockwell terms a bool; basically on or off.
A register is the term for 1 word
or 16-bits or 2-bites of data
or in Rockwell terms an INT. There are no
registers for floats or double integers although, they can be sent
by dividing them into two registers. Float values are
any real number with a decimal point that is represented by a
32-bit register. Double integers, or DINT's
are simply two 16-bit values stacked together,
also represented by 32-bits. This presents a small problem since Modbus does not
have a float
or DINT data type. The solution,
obviously enough, is that did 32-bit value is broken into 2 separate 16-bit registers
and then recombined into a 32-bit real value.
This is accomplished by copying the two 16-bit registers to 1 REAL tag
in the Rockwell processor. Modbus function codes are simple
numerical codes that tell the slave which table to
access and whether to read or write to that table.
Each function code relates to a specific data table address range.
For instance, function code 1 is the code to read and individual bit status
Function code 16 is the code to write
multiple holding registers. Here are some of the most commonly used
function codes. Modbus as a protocol does not define exactly how the data
should be stored in registers.
Different vendors have different ways of storing and transmitting data.
Some devices will transmit the higher byte first,
followed by the lower byte. Others will do it the other way around.
By the same token, when registers are combined to represent 32-bit real values,
some devices will transmit the higher 16-bit
in the first register and the lower 16-bits in the second register.
Other vendors do it the other way around. The order that bytes or words are sent
in doesn't matter as long as the receiving device knows which way they
are ordered.
If the data is not appearing correctly
because the byte or word order is incorrect; ProSoft products feature
a byte and words swap function which will reverse the order in which the data is stored
and sent, resolving the issue instantly.
To wrap up, we'll take a look at Modbus RTU message being sent from a master
out to a slave device. The message contains the slave ID
of the device the command is intended for, the function code to read or write data
and the message data itself. Once the slave receives the command, it will
return the requested data to the master in the case
of read command, or it will write the data to its own database and send an echo of
the original message back to the Master
to confirm that the message was received. We hope this video gives you a better
understanding of Modbus serial
and TCP/IP. For additional training videos using Modbus and other protocols
in Rockwell Automation Systems,
visit our website at www.Prosoft-technology.com - Happy Training!