Tuesday, December 21, 2010

About Modbus

Modbus is a serial communications protocol published by Modicon in 1979 for use with its programmable logic controllers (PLCs). It has become a de facto standard communications protocol in industry, and is now the most commonly available means of connecting industrial electronic devices.[1] The main reasons for the extensive use of Modbus over other communications protocols are:

1. It is openly published and royalty-free
2. Relatively easy industrial network to deploy
3. It moves raw bits or words without placing many restrictions on vendors

Modbus allows for communication between many devices connected to the same network, for example a system that measures temperature and humidity and communicates the results to a computer. Modbus is often used to connect a supervisory computer with a remote terminal unit (RTU) in supervisory control and data acquisition (SCADA) systems.

Suppliers large and small, system integrators, end users, open source developers, educators and other interested parties can become Modbus organization members. Some of the prominent members are SoftDEL Systems, Precision Digital Corporation, Motor Protection Electronics, FieldServer Technologies and many more


Each device intended to communicate using Modbus is given a unique address. In serial and MB+ networks only the node assigned as the Master may initiate a command, but on Ethernet, any device can send out a Modbus command, although usually only one master device does so. A Modbus command contains the Modbus address of the device it is intended for. Only the intended device will act on the command, even though other devices might receive it (an exception is specific broadcastable commands sent to node 0 which are acted on but not acknowledged). All Modbus commands contain checking information, ensuring that a command arrives undamaged. The basic Modbus commands can instruct an RTU to change a value in one of its registers, control or read an I/O port, as well as commanding the device to send back one or more values contained in its registers.

Communication and devices

There are many modems and gateways that support Modbus, as it is a very simple protocol and often copied. Some of them were specifically designed for this protocol. Different implementations use wireline, wireless communication and even SMS or GPRS. Typical problems the designers have to overcome include high latency and timing problems.

Supported Function Codes

Modbus function codes / data types includes the following types [3] Most commonly used are given in italics.

  • 01 Read Coil Status
  • 02 Read Input Status
  • 03 Read Holding Registers
  • 04 Read Input Registers
  • 05 Force Single Coil
  • 06 Preset Single Register
  • 07 Read Exception Status
  • 08 Diagnostics
  • 09 Program 484
  • 10 Poll 484
  • 11 Fetch Communication Event Counter
  • 12 Fetch Communication Event Log
  • 13 Program Controller
  • 14 Poll Controller
  • 15 Force Multiple Coils
  • 16 Preset Multiple Registers
  • 17 Report Slave ID
  • 18 Program 884/M84
  • 19 Reset Comm. Link
  • 20 Read General Reference
  • 21 Write General Reference
  • 22 Mask Write 4X Register
  • 23 Read/Write 4X Registers
  • 24 Read FIFO Queue



Implementations

Almost all implementations have variations from the official standard. Different varieties might not communicate correctly between equipment of different suppliers. Some of the most common variations are:

Data types
  1. Floating point IEEE
  2. 32-bit integer
  3. 8-bit data
  4. Mixed data types
  5. Bit fields in integers
  6. Multipliers to change data to/from integer. 10, 100, 1000, 256 ...
Protocol extensions
  • 16-bit slave addresses
  • 32-bit data size (1 address = 32 bits of data returned.)
  • Word swapped data

No comments:

Post a Comment