HOME

TheInfoList



OR:

Modbus (or MODBUS) is a client/server data
communications protocol A communication protocol is a system of rules that allows two or more entities of a communications system to transmit information via any variation of a physical quantity. The protocol defines the rules, syntax, semantics (computer science), sem ...
in the
application layer An application layer is an abstraction layer that specifies the shared communication protocols and interface methods used by hosts in a communications network. An ''application layer'' abstraction is specified in both the Internet Protocol Su ...
. It was originally designed for use with
programmable logic controller A programmable logic controller (PLC) or programmable controller is an industrial computer that has been ruggedized and adapted for the control of manufacturing processes, such as assembly lines, machines, robotic devices, or any activity that ...
s (PLCs), but has become a '' de facto'' standard communication protocol for communication between industrial electronic devices in a wide range of
buses A bus (contracted from omnibus, with variants multibus, motorbus, autobus, etc.) is a motor vehicle that carries significantly more passengers than an average car or van, but fewer than the average rail transport. It is most commonly used ...
and networks. Modbus is popular in industrial environments because it is openly published and
royalty-free Royalty-free (RF) material subject to copyright or other intellectual property rights may be used without the need to pay royalties or license fees for each use, per each copy or volume sold or some time period of use or sales. Computer standards ...
. It was developed for industrial applications, is relatively easy to deploy and maintain compared to other standards, and places few restrictions on the format of the data to be transmitted. The Modbus protocol uses serial communication lines,
Ethernet Ethernet ( ) is a family of wired computer networking technologies commonly used in local area networks (LAN), metropolitan area networks (MAN) and wide area networks (WAN). It was commercially introduced in 1980 and first standardized in 198 ...
, or the
Internet protocol suite The Internet protocol suite, commonly known as TCP/IP, is a framework for organizing the communication protocols used in the Internet and similar computer networks according to functional criteria. The foundational protocols in the suite are ...
as a
transport layer In computer networking, the transport layer is a conceptual division of methods in the layered architecture of protocols in the network stack in the Internet protocol suite and the OSI model. The protocols of this layer provide end-to-end c ...
. Modbus supports communication to and from multiple devices connected to the same cable or Ethernet network. For example, there can be a device that measures temperature and another device to measure humidity connected to the same cable, both communicating measurements to the same
computer A computer is a machine that can be Computer programming, programmed to automatically Execution (computing), carry out sequences of arithmetic or logical operations (''computation''). Modern digital electronic computers can perform generic set ...
, via Modbus. Modbus is often used to connect a plant/system supervisory computer with a remote terminal unit (RTU) in supervisory control and data acquisition (
SCADA SCADA (an acronym for supervisory control and data acquisition) is a control system architecture comprising computers, networked data communications and graphical user interfaces for high-level supervision of machines and processes. It also cove ...
) systems. Many of the data types are named from industrial control of factory devices, such as
ladder logic Ladder logic was originally a written method to document the design and construction of relay logic, relay racks as used in manufacturing and process control. Each device in the relay rack would be represented by a symbol on the ladder diagram w ...
because of its use in driving relays: a single-bit physical output is called a ''coil'', and a single-bit physical input is called a ''discrete input'' or a ''contact''. It was originally published by in 1979 Modicon (a company later acquired by Schneider Electric in 1997). In 2004, they transferred the rights to the Modbus Organization which is a
trade association A trade association, also known as an industry trade group, business association, sector association or industry body, is an organization founded and funded by businesses that operate in a specific Industry (economics), industry. Through collabor ...
of users and suppliers of Modbus-compliant devices that advocates for the continued use of the technology.


Protocol description

Modbus standards or buses include: * TCP/IP over Ethernet * Asynchronous serial communication in a wide range of standards, technologies: EIA/TIA-232-E, EIA-422, EIA/TIA-485-A, fiber, radio frequency,... * MODBUS PLUS, a high speed token passing network. To support Modbus communication on a network, many modems and gateways incorporate proprietary designs (refer to the diagram: ''Architecture of a network for Modbus communication''). Implementations may deploy either wireline or wireless communication, such as in the ISM radio band, and even
Short Message Service Short Message Service, commonly abbreviated as SMS, is a text messaging service component of most telephone, Internet and mobile device systems. It uses standardized communication protocols that let mobile phones exchange short text messages, ...
(SMS) or
General Packet Radio Service General Packet Radio Service (GPRS), also called 2.5G, is a mobile data standard on the 2G cellular communication network's global system for mobile communications (GSM). Networks and mobile devices with GPRS started to roll out around the ...
(GPRS).


PDU and ADU

Modbus defines a ''client'' which is an entity that initiates a transaction to request any specific task from its ''request receiver''. The client's "request receiver", which the client has initiated the transaction with, is then called the ''server''. For example, when a Microcontroller unit (MCU) connects to a sensor to read its data by Modbus on a wired network, e.g RS485 bus, the MCU in this context is the client and the sensor is the server. In former terminology, the client was named master and the server named slave. Modbus defines a
protocol data unit In telecommunications, a protocol data unit (PDU) is a single unit of information transmitted among peer entities of a computer network. It is composed of protocol-specific control information and user data. In the layered architectures of c ...
(PDU) independently to its lower layer protocols in its protocol stack. Mapping MODBUS protocol on specific buses or networks requires some additional fields, defined as the application data unit (ADU). The ADU is formed by a ''client'' inside a Modbus network when the client initiates a transaction. Contents are: * PDU = Function code + data * ADU = Additional address + PDU + error check The ADU is officially called a ''Modbus frame'' by the Modbus Organization, although ''frame'' is used as the data unit in the data-link layer in the OSI and TCP/IP model (while Modbus is an application layer protocol). PDU max size is 253 bytes. ADU max size on RS232/RS485 network is 256 bytes, and with TCP is 260 bytes. For data encoding, Modbus uses a big-endian representation for addresses and data fields. Thus, for a 16-bit value, the most significant byte is sent first. For example, when a 16-bit register has value 0x1234, byte 0x12 is sent before byte 0x34. ''Function code'' is 1 byte which gives the code of the function to execute. Function codes are integer values, ranging from 1 to 255, and the range from 128 to 255 is for exception responses. The data field of the PDU has the address from 0 to 65535 (not to be confused with the address of the Additional address field of ADU). The data field of the PDU can be empty, and then has a size of 0. In this case, the server will not request any information and the function code defines the function to be executed. If there is no error during the execution process, the data field of the ADU response from server to client will include the data requested, i.e. the data the client previously received. If there is any error, the server will respond with an exception code.


Modbus transaction and PDU

A Modbus transaction between client and server includes: * Step 1: Client initiates a request with PDU = Function code + data request * Step 2: Server receives the request from client. Server will then read/parse the function code, get the address of the data field of the PDU, then get this data field value and finally perform the action based on the function code. If there is no error during those steps, the server will respond with PDU = Function code + data response. As long as there is no error during those steps, the server's responding function code will also be the function code sent from the client. If there is any error during those steps, the server will respond with PDU = Exception Function code + Exception code (Reference to PDU mb_excep_rsp_pdu defined below). * Step 3: Client receives the response and ends the transaction. Based on that, Modbus defines 3 PDU types: * MODBUS Request PDU, mb_req_pdu * MODBUS Response PDU, mb_rsp_pdu * MODBUS Exception Response PDU, mb_excep_rsp_pdu :mb_req_pdu = Function code (1 byte) + request data (n bytes) ::''request data'' field's size depends on the function code and usually includes values like variable values, data offset, and sub-function codes. :mb_rsp_pdu = Function code (1 byte) + response data (n bytes) ::As in mb_req_pdu, ''response data'' field's size depends on the function code and usually includes values like variable values, data offset, and sub-function codes. :mb_excep_rsp_pdu = Exception Function code (1 byte) + exception code (1 byte) ::''Exception Function code'' = Function code (1 byte) + 0x80. ''Exception Function code'' is equal to the Function code, except that its MSB is set to 1. ::Exception code (1 byte) of mb_excep_rsp_pdu is defined in the MODBUS Exception Codes table.


Modbus data model

Modbus defines its data model based on a series of tables of four primary types: For each of the primary tables, the protocol allows individual selection of 65536 data items, and the operations of read or write of those items are designed to span multiple consecutive data items up to a data size limit which is dependent on the transaction function code.


Function code

Modbus defines three types of function codes: Public, User-Defined and Reserved.


Public function codes

Note: Some sources use terminology that differs from the standard; for example ''Force Single Coil'' instead of ''Write Single Coil''.


Function code 01 (read coils) as an example of public function code

Function code 01 (read coils) allows reading the state from 1 to 2000 coils of a remote device. mb_req_pdu (request PDU) will then have 2 bytes to indicate the address of the first coil to read (from 0x0000 to 0xFFFF), and 2 bytes to indicate the number of coils to read. mb_req_pdu defines coil address by index 0, i.e the first coil has address 0x0. On a successful execution, mb_rsp_pdu will return one byte to note the function code (0x01), followed by one byte to indicate the number of data bytes it is returning (n), which will be the number of coils requested by mb_req_pdu, divided by 8 bits per byte, and rounded up. The remainder of the response will be the specified number (n) of data bytes. That is, the mb_req_pdu and mb_rsp_pdu of function code 01 will take the following form: :mb_req_pdu: :* Function code: 0x01 (1 byte) :* Starting Address (1st coil address to read): From 0x0000 to 0xFFFF (2 bytes) :* Quantity of coils to read: Range from 1 to 2000 (0x7D0) (2 bytes) :mb_rsp_pdu: :* Function code: 0x01 (1 byte) :* Byte count: 1 byte (n=quantity of coils/8, rounded up) :* Coil Status: n bytes For instance, mb_req_pdu and mb_rsp_pdu to read coils status from 20-38 will be: :mb_req_pdu: :* Function code: 0x01 :* Starting Address High byte: 0x00 :* Starting Address Low byte: 0x13 :* Quantity of Outputs High byte: 0x00 :* Quantity of Outputs Low byte: 0x13 ::Starting Address (2 bytes) is 0x0013, (or 19 in decimal) which is the 20th coil. ::Quantity of Outputs (2 bytes) is 0x0013, (or 19 in decimal) which corresponds to 19 values of status of coils 20th to 38th. :mb_rsp_pdu: :* Function code: 0x01 :* Byte Count: 0x03 :* Outputs status 27-20: 0xCD :* Outputs status 35-28: 0x6B :* Outputs status 38-36: 0x05 ::As 19 coils (20-38) are required, 3 bytes is used to indicate the coil's state. So that Byte Count is 0x03. States of coil from 20 to 27 is 0xCD, which is 1100 1101 in binary. So coil 27 is MSb, and coil 20 is LSb. Same for coil 28 to 35. With coil from 36 to 38, the state will be 0x05, which is 0000 0101. Coil 38 state is the 3rd bit (count from the right), i.e 1, coil 37 is 0, and coil 36 state is LSb bit, i.e. 1. 5 left bits are all 0.


User-defined function codes

User-Defined Function Codes are function codes defined by users. Modbus gives two range of values for user-defined function codes: 65 to 72 and 100 to 110. Obviously, user-defined function codes are not unique.


Reserved function codes

Reserved Function Codes are function codes used by some companies for legacy product and are not available for public use.


Exception responses

When a client sends a request to a server, there can be four possible events for that request: * If server receives the request and execute successfully, server will return a normal response. * If server cannot receive the request as having communication channel error, server will not respond anything to the client. Client will then have the timeout request error. * If server receives the request and detect an error on the communication channel (e.g parity, LRC, CRC), server will not response anything to the client. Client will then have the timeout request error. * If server receives the request and is unable to execute it (e.g client requests to read a non-existent register), server will return an ''exception response'' to client to indicate the nature of the error. Exception response message includes two other fields when compared to a normal response message: * Function Code: Function code's MSB bit of Exception is 1. This will make this function code 0x80 higher than then request message function code. * Data: Server returns the exception code inside the Data field. This field defines the nature of the error. All Modbus exception code:


Modbus over Serial Line protocol

Modbus standard also defines Modbus over Serial Line, a protocol over the
data link layer The data link layer, or layer 2, is the second layer of the seven-layer OSI model of computer networking. This layer is the protocol layer that transfers data between nodes on a network segment across the physical layer. The data link layer p ...
of the OSI model for the Modbus application layer protocol to be communicated over a serial bus. Modbus Serial Line protocol is a master-slave protocol which supports one master and multiple slaves in the serial bus. With Modbus protocol on the application layer, client/server model is used for the devices on the communication channel. With Modbus over Serial Line, ''client'' role is implemented by ''master'', and the ''server'' role is implemented by ''slave''. The organization's naming convention inverts the common usage of having multiple clients and only one server. To avoid this confusion, the RS-485 transport layer uses the terms "node" or "device" instead of "server", and the "client" is not a "node". A serial bus for Modbus over Serial Line can have a maximum of 247 slaves communicating with one master. Those slaves have a unique address ranging from 1 to 247 (decimal value). The master doesn't need to have an address. The communication process is initiated by the master, as only it can initiate a Modbus transaction. A slave will never transmit any data or perform any action without a request from the master, and slaves cannot communicate with each other. In Modbus over Serial Line, the master initiates requests to the slaves in ''unicast'' or ''broadcast'' modes. In ''unicast mode'', the master will initiate a request to a single slave with a specific address. Upon receiving and finishing the request, the slave will respond with a message to the master. In this mode, a Modbus transaction includes two messages: one request from the master and one reply from the slave. Each slave must have a unique address (from 1 to 247) to be addressed independently for the communication. In ''broadcast mode'', the master can send a request to all the slaves, using the broadcast address 0, which is the address reserved for broadcast exchanges (and not the master address). Slaves must accept broadcast exchanges but must not respond. The mapping of PDU of Modbus to the serial bus of Modbus over Serial Line protocol results in Modbus Serial Line PDU. Modbus Serial Line PDU = Address + PDU + CRC (or LRC) With PDU = Function code + data * Address is slave address * PDU is defined identically to the PDU of Modbus Application protocol * The Error check field with CRC/LRC: The error check methods depend on the protocol versions of the MODBUS over Serial Line, whether it is ''Modbus RTU'' or ''Modbus ASCII''. On the
physical layer In the seven-layer OSI model of computer networking, the physical layer or layer 1 is the first and lowest layer: the layer most closely associated with the physical connection between devices. The physical layer provides an electrical, mechani ...
, MODBUS over Serial Line performs its communication on bit by RS485 or
RS232 In telecommunications, RS-232 or Recommended Standard 232 is a standard introduced in 1960 for serial communication transmission of data. It formally defines signals connecting between a ''DTE'' (''data terminal equipment'') such as a compu ...
, with TIA/EIA-485 Two-Wire interface as the most popular way. RS485 Four-Wire interface is also used. TIA/EIA-232-E (RS232) can also be used but is limited to point-to-point short-range communication. MODBUS over Serial Line has two transmission modes ''RTU'' and ''ASCII'' which are corresponded to two versions of the protocol, known as ''Modbus RTU'' and ''Modbus ASCII''.


Modbus RTU

Modbus RTU (Remote Terminal Unit), which is the most common implementation available for Modbus, makes use of a compact, binary representation of the data for protocol communication. The RTU format follows the commands/data with a
cyclic redundancy check A cyclic redundancy check (CRC) is an error-detecting code commonly used in digital networks and storage devices to detect accidental changes to digital data. Blocks of data entering these systems get a short ''check value'' attached, based on ...
checksum as an error check mechanism to ensure the reliability of data. A Modbus RTU message must be transmitted continuously without inter-character hesitations. Modbus messages are framed (separated) by idle (silent) periods. Each byte (8 bits) of data is sent as 11 bits: * 1 start bit * 8 bit data/message, least significant bit sent first * 1 bit parity * 1 stop bit The default is even parity, while odd or no parity may be implemented as additional options. A Modbus RTU frame then will be: The CRC calculation is widely known as CRC-16-MODBUS, whose polynomial is ''x''16 + ''x''15 + ''x''2 + 1 (normal hexadecimal algebraic polynomial being 8005 and reversed A001). Example of a Modbus RTU frame in hexadecimal: 01 04 02 FF FF B8 80 (CRC-16-MODBUS calculation for the 5 bytes from 01 to FF gives 80B8, which is transmitted least significant byte first). To ensure frame integrity during the transmission, the time interval between two frames must be at least the transmission time of 3.5 characters, and the time interval between two consecutive characters must be no more than the transmission time of 1.5 characters. For example, with the default data rate of 19200 bit/s, the transmission times of 3.5 (t3.5) and 1.5 (t1.5) 11-bit characters are: t3.5 = 3.5*\left( \frac \right)= 2.005 ms t1.5 = 1.5*\left( \frac \right)= 859.375 \mu s For higher data rates, Modbus RTU recommends to use the fixed values 750 μs for t1.5 and 1.750 ms for t3.5.


Modbus ASCII

Modbus ASCII makes use of
ASCII ASCII ( ), an acronym for American Standard Code for Information Interchange, is a character encoding standard for representing a particular set of 95 (English language focused) printable character, printable and 33 control character, control c ...
characters for protocol communication. The ASCII format uses a
longitudinal redundancy check In telecommunication, a longitudinal redundancy check (LRC), or horizontal redundancy check, is a form of redundancy check that is applied independently to each of a parallel group of bit streams. The data must be divided into transmission block ...
checksum. Modbus ASCII messages are framed by a leading colon (":") and trailing newline (CR/LF). A Modbus ASCII frame includes: Address, Function, Data, and LRC are ASCII hexadecimal encoded values, whereby 8-bit values (0–255) are encoded as two human-readable ASCII characters from the ranges 0–9 and A–F. For example, a value of 122 (7A16) is encoded as two ASCII characters, "7" and "A", and transmitted as two bytes, 55 (3716, ASCII value for "7") and 65 (4116, ASCII value for "A"). LRC is calculated as the sum of 8-bit values (excluding the start and end characters), negated (
two's complement Two's complement is the most common method of representing signed (positive, negative, and zero) integers on computers, and more generally, fixed point binary values. Two's complement uses the binary digit with the ''greatest'' value as the ''s ...
) and encoded as an 8-bit value. For example, if Address, Function, and Data are 247, 3, 19, 137, 0, and 10, the two's complement of their sum (416) is −416; this trimmed to 8 bits is 96 (256 × 2 − 416 = 6016), giving the following 17 ASCII character frame: :F7031389000A60␍␊. LRC is specified for use only as a checksum: because it is calculated on the encoded data rather than the transmitted characters, its 'longitudinal' characteristic is not available for use with parity bits to locate single-bit errors.


Modbus Messaging on TCP/IP


Modbus TCP

''Modbus TCP'' or ''Modbus TCP/IP'' is a Modbus variant used for communications over
TCP/IP The Internet protocol suite, commonly known as TCP/IP, is a framework for organizing the communication protocols used in the Internet and similar computer networks according to functional criteria. The foundational protocols in the suite are ...
networks, connecting over port 502. It does not require a checksum calculation, as lower layers already provide checksum protection. Modbus TCP nomenclature is the same as for the Modbus over Serial line protocol, as any device which send out a Modbus command, is the 'client' and the response comes from a 'server'. The ADU for Modbus TCP is officially called ''Modbus TCP/IP ADU'' by the Modbus organization and is also called ''Modbus TCP frame'' by other parties. MODBUS TCP/IP ADU = MBAP Header + Function code + Data Where MBAP - which stands for MODBUS Application Protocol header - is the dedicated header used on TCP/IP to identify the MODBUS Application Data Unit. The MBAP Header contains the following fields: ''Unit identifier'' is used with Modbus TCP devices that are composites of several Modbus devices, e.g. Modbus TCP to Modbus RTU gateways. In such a case, the unit identifier is the Server Address of the device behind the gateway. A MODBUS TCP/IP ADU/Modbus TCP frame format then will be:


Example of a Modbus TCP/IP ADU/Modbus TCP frame in hexadecimal

12 34 00 00 00 06 01 03 00 01 00 01 * 0x12 and 0x34 : With transaction ID = 0x1234 (2 bytes) as a "unique number" to be identified between the Modbus TCP client/server, the transaction ID High byte is 0x12 and transaction ID Low byte is 0x34 * 0x00 and 0x00 : Protocol identifier high byte and low byte * 0x00 and 0x06 : Length high byte and low byte. The length is 6 bytes which includes: unit identifier (slave address) (1 byte), function code (1 byte), high byte of the register address to read (1 byte), low byte of the register address to read (1 byte) and data (2 bytes = high byte and low byte of the number of registers to read) * 0x01 : Unit identifier (slave address) * 0x03 : Function code (Read Multiple Holding Registers) * 0x00 and 0x01 : high byte and low byte of the register address to read. The register address to read in this case is 0x0001. * 0x00 and 0x01 : high byte and low byte of the number of registers to read. The number of registers to read in this case is 0x0001. (i.e 1 register)


Other Modbus protocol versions over TCP/IP

*''Modbus over TCP/IP'', ''Modbus over TCP'', or ''Modbus RTU/IP'' – a variant that differs from Modbus TCP in that a checksum is included in the payload, as with Modbus RTU. * ''Modbus over UDP'' – some have experimented with using Modbus over UDP on IP networks, which removes the overhead of TCP.


Other Modbus protocol versions

Besides the widely used Modbus RTU, Modbus ASCII and Modbus TCP, there are many variants of Modbus protocols: * ''Modbus Plus'' (''Modbus+'', ''MB+'', or ''MBP'') – Modbus Plus is proprietary to Schneider Electric, though it is unpublished rather than patented, and unlike the other variants, it supports
peer-to-peer Peer-to-peer (P2P) computing or networking is a distributed application architecture that partitions tasks or workloads between peers. Peers are equally privileged, equipotent participants in the network, forming a peer-to-peer network of Node ...
communications between multiple clients. Despite the name, Modbus Plus is not a variant of Modbus. It is a different protocol, involving
token passing On a local area network, token passing is a channel access method where a packet called a ''token'' is passed between nodes to authorize that node to communicate. In contrast to polling access methods, there is no pre-defined "master" node. The mos ...
. It requires a dedicated co-processor to handle fast
HDLC High-Level Data Link Control (HDLC) is a communication protocol used for transmitting data between devices in Telecommunications, telecommunication and Computer network, networking. Developed by the International Organization for Standardization ...
-like token rotation. It uses twisted pair at 1 Mbit/s and includes transformer isolation at each node, which makes it transition/edge-triggered instead of voltage/level-triggered. Special hardware is required to connect Modbus Plus to a computer, typically a card made for the ISA, PCI, or PCMCIA bus. Modbus Plus is normally implemented using a custom
chipset In a computer system, a chipset is a set of electronic components on one or more integrated circuits that manages the data flow between the processor, memory and peripherals. The chipset is usually found on the motherboard of computers. Chips ...
available only to partners of Schneider. * ''Pemex Modbus'' – an extension of standard Modbus with support for historical and flow data. It was designed for the
Pemex Pemex (a portmanteau of Petróleos Mexicanos, which translates to ''Mexican Petroleum'' in English; ) is the Mexico, Mexican State ownership, state-owned Petroleum industry, petroleum corporation managed and operated by the government of Mexico, ...
oil and gas company for use in process control and never gained widespread adoption. * ''Enron Modbus'' – another extension of standard Modbus developed by
Enron Enron Corporation was an American Energy development, energy, Commodity, commodities, and services company based in Houston, Texas. It was led by Kenneth Lay and developed in 1985 via a merger between Houston Natural Gas and InterNorth, both re ...
with support for 32-bit integer and floating-point variables, and historical and flow data. Data types are mapped using standard addresses. The historical data serves to meet an
American Petroleum Institute The American Petroleum Institute (API) is the largest U.S. trade association for the oil and natural gas industry. It claims to represent nearly 600 corporations involved in extraction of petroleum, production, oil refinery, refinement, pipeline ...
(API) industry standard for how data should be stored. Data models and function calls are identical for the first four variants listed above; only the encapsulation is different. However the variants are not interoperable, nor are the frame formats.


JBUS mapping

Another ''de facto'' protocol closely related to Modbus appeared later, and was defined by PLC maker April Automates, the result of a collaborative effort between French companies
Renault Renault S.A., commonly referred to as Groupe Renault ( , , , also known as the Renault Group in English), is a French Multinational corporation, multinational Automotive industry, automobile manufacturer established in 1899. The company curr ...
Automation and Merlin Gerin et Cie in 1985: JBUS. Differences between Modbus and JBUS at that time (number of entities, server stations) are now irrelevant as this protocol almost disappeared with the April PLC series, which AEG Schneider Automation bought in 1994 and then made obsolete. However, the name JBUS has survived to some extent. JBUS supports function codes 1, 2, 3, 4, 5, 6, 15, and 16 and thus all the entities described above, although numbering is different: * Number and address coincide: entity #''x'' has address ''x'' in the data frame. * Consequently, entity number does not include the entity type. For example, holding register #40010 in Modbus will be holding register #9, at address 9 in JBUS. * Number 0 (and thus address 0) is not supported. The server should not implement any real data at this number and address, and it can return a null value or throw an error when requested.


Limitations

* Since Modbus was designed in the late 1970s to communicate to programmable logic controllers, the number of data types is limited to those understood by PLCs at the time. Large binary objects are not supported. * No standard way exists for a node to find the description of a data object, for example, to learn that a register value represents a temperature between 30 and 175 degrees. * Since Modbus is a client/server (formerly master/slave) protocol, there is no way for a field device to get data by the event handler mechanism (except over Ethernet TCP/IP, called open-mbus) as the client node must routinely poll each field device and look for changes in the data. This consumes bandwidth and network time in applications where bandwidth may be expensive, such as over a low-bit-rate radio link. * Modbus is restricted to addressing 247 devices on one data link, which limits the number of field devices that may be connected to a parent station (again, Ethernet TCP/IP is an exception). * Modbus protocol itself provides no security against unauthorized commands or interception of data.


See also

* BACnet *
CAN bus A controller area network bus (CAN bus) is a vehicle bus standard designed to enable efficient communication primarily between electronic control units (ECUs). Originally developed to reduce the complexity and cost of electrical wiring in auto ...
* LonWorks * Industrial ethernet


References


Works cited

* * * *


External links


Official


Modbus organization

Modbus specifications

Modbus over serial line v1.02 (specification)
– Modbus organization (2006)
Modicon Modbus Protocol Reference Guide
– Modbus organization (1996). Obsolete Modbus specification, should only be used to address legacy issues.


Other


Modbus for Field Technicians
at modbusbacnet.com

at RF Wireless World {{Computer bus Building automation Industrial computing Industrial Ethernet Network protocols