Modbus协议详细说明(工作原理、功能代码、不同协议版本、PROFIBUS)

2021-11-18 11:43:58 admin 173

Modbus协议常被称为工业网络的祖父。Modbus协议可根据工业和商业要求轻松配置。由于Modbus通信在许多领域的普及和广泛应用,本文对Modbus通信及其功能代码、实现和应用进行了详细的综述。


5g/4g工业路由网关


什么是Modbus通信协议

Modbus是一种开放式标准RTU。许多组织和工程师免费将其应用到设备中。该协议被认为是最常见的通信协议,通常可以作为连接工程电子设备的手段进行访问。

具体而言,这是一种通过串行线路或以太网连接在电子设备之间进行信息传输的通信协议。在开放标准的条件下,任何人都可以实现它。这可用于使用SCADA中的RTU连接由电力域控制的系统。

Modbus协议被明确定义为主从协议,这意味着作为主设备的工具将使一个或多个工具成为从设备。这清楚地表明从机不会接收数据,它需要等待,直到要求它提供信息。主设备将信息写入从设备,然后将信息从寄存器读取到主设备。从寄存器的角度来看,注册地址总是存在的。

Modbus通信协议是如何工作的?

由于该开放式标准远程终端装置(RTU)使用主从式方法创建各种设备之间的通信,因此使用RTU方案的任何类型的应用程序都将有一个MODBUS主设备和至少一个从设备。这清楚地表明从机不会接收数据,它需要等待,直到要求它提供信息。

设备之间的主从通信是通过串行总线或网络实现的。在OSI方法中,MODBUS位于第七层。其目的是请求协议,然后交付功能代码中提到的相应服务。这些ModbusRTU协议的功能代码是Modbus请求组件。

为了开发MODBUS应用数据单元,交付单元应启动设备事务。这是通知服务器处理指定类型操作的操作。由主设备发起的请求的设计由应用协议确定。然后将功能代码编码为8位,即1字节。只有1-25范围内的功能代码才视为有效,此128-255保留用于异常响应。

当主机向从机发出请求/消息时,这意味着功能代码字段通知服务器执行请求的操作。对于某些操作,还将有一些子功能代码。例如,主设备可以读取各种输入/输出集群的on和off转换。

它还可以从一组Modbus寄存器读取或写入信息。当主设备接收到来自从设备的响应时,从设备使用功能代码字段来指示是正常响应还是异常响应。当有正常响应时,从设备将与第一个功能代码的请求共振。

这就是Modbus通信协议的工作原理。

Modbus通信协议功能代码

Modbus协议识别多个功能代码以获得寄存器可访问性。Modbus主要有四个不同的数据块,其中寄存器编号或地址可能重叠。因此,在需要地址和功能代码的地方,必须定义准确的定义。

下表明确总结了Modbus功能代码。这些代码只有一个子类别。然而,对于一些相应的应用,这些可能不适用。

PROFIBUS和/sModbus通信协议

将Profibus和MODBUS作为单独的应用程序进行比较,两者都有多种优势和应用。

Modbus具有结构简单、操作简单、协议易用等特点。虽然协议本身的定义与物理层之间存在一些差异,但这将导致多供应商操作中出现问题。PROFIBUS是最复杂的协议,其目的是实现整个行业的自动化。它在使用调制解调器的多供应商功能中表现良好,并具有全面的诊断功能。

当智能设备以点对点方式连接到控制器时,或者当存在远程位置时,Modbus最适合。当存在多个点,即多个供应商时,PROFIBUS是最好的。

协议版本

Modbus协议的变体包括:

1.ModbusRTU

为了建立协议通信,它以二进制格式表示数据,主要用于串行通信。此版本中的消息按空闲时间段划分。RTU版本遵循的格式为循环冗余校验校验机制,保证了数据的可靠性。

2.ModbusASCII

为了建立协议通信,使用ASCII字符,主要在串行通信中实现。此版本中的消息由冒号(“)和尾随的换行符(/)分隔。ASCII版本遵循垂直冗余检查的格式来验证机制。

3.ModbusTCP

此版本的Modbus用于通过端口502链路通过TCP/IP网络进行通信。此变体不需要任何类型的校验和计算,因为较低级别本身提供了这一功能。

ModbusPlus


Modbus协议应用主要用途包括:


它用于医疗保健领域分析自动温度水平

交通行为分析

在家庭自动化中实施,以简化数据传输

天然气、石油、地热、海德尔、风能和太阳能产业


5g/4g工业路由网关



Modbus的功能码 

5g/4g工业路由网关

 

Modbus协议 功能码与数据类型对应表:

5g/4g工业路由网关

 

RTU 方式读取整数据的例子:

5g/4g工业路由网关

解析一下:主机发送指令,访问从站地址为1,使用功能码03(读保持寄存器),起始地址高8位、低8位:表示想读取的模拟量的起始地址(起始地址为0)。比如例子中的起始地址为38,十进制为:56。寄存器数量高8位、低8位:表示从起始地址开始读多少个模拟量。例子中为1个模拟量。注意,在返回的信息中一个模拟量需要返回两个字节。错误校验为CRC校验。

从站应答:设备地址和命令号和上面的相同。返回的字节数:表示数据的字节个数,也就是数据1,2...n中的n的值。例子中返回了1个模拟量的数据,因为一个模拟量需要2个字节所以共2个字节。数据高低字节:41和24代表返回的1个模拟量的值,即十进制的16676。错误校验为CRC校验。


Modbus协议转TCP介绍

在Modbus RTU转TCP功能下,用户的串口设备可以通过蜂窝调制解调器 USR-G781网络上指定的服务器发送数据 G781 也可以接受来自服务器的数据并将信息转发到 串口设备。 用户无需关注串口数据与网络数据包之间的数据转换过程, 通过简单的参数设置即可实现串口设备与网络服务器之间的Modbus RTU<=>Modbus TCP通讯 






网站首页
解决方案
产品中心
在线咨询