深入了解Modbus TCP协议

时间:2023-03-04作者:佚名
Modbus总线有三种协议:Modbus RTU协议、Modbus ASCII协议和Modbus TCP协议,Modbus总线活跃在工业通信领域。Modbus RTU和Modbus ASCII擅长串行通信,比如基于RS485或者RS232的通信,而Modbus TCP则擅长基于以太网的通信。由于底层所使用的结构不同,Modbus的应用数据单元(Application Data Unit,ADU)有所不同。你可能并去清楚什么是ADU,昌晖仪表下面来详细介绍。

为了进行通信,Modbus规定了一种很简单的数据结构,被称为“协议数据单元”(Protocol Data Unit,PDU)。协议数据单元由功能码 数据构成,如下面这张图:

深入了解Modbus TCP协议
功能码的长度为1个字节,它表示要执行的功能。比如常见的:01读取线圈;02读取离散量输入值;03读取保持寄存器值;05写单个线圈等;数据部分的长度为0-252个字节,它表示要读的地址或者要写入的值,不同的功能码对应的数据有所不同。比如01功能码,其数据为4个字节,其中前两个字节表示要读取的线圈的地址,后两个字节表示要读取线圈的数量;而对于05功能码,其数据也是4个字节,前两个字节表示要写入线圈的地址,后面两字节表示要写入的值。


协议数据单元有三种类型:请求型协议数据单元(Request PDU)、应答型协议数据单元(Response PDU)、及异常应答型协议数据单元(Exception Response PDU),更多关于协议数据单元的内容,大家可以去Modbus官网(深入了解Modbus TCP协议
)下载通信规范好好阅读。

协议数据单元是Modbus的通用数据结构,它与底层物理结构无关,Modbus RTU、Modbus ASCII和Modbus TCP都使用相同的协议数据单元。但是,Modbus在通信的时候,总要依赖物理网络。因此要把协议数据单元映射到物理网络上,这就形成了应用数据单元(Application Data Unit,ADU)。由于底层网络的不同,Modbus TCP跟Modbus RTU和Modbus ASCII的应用数据单元是不同的,Modbus RTU和Modbus ASCII的ADU结构如下图所示:

深入了解Modbus TCP协议

而Modbus TCP的ADU结构如下:

深入了解Modbus TCP协议

可以看到,Modbus TCP的应用数据单元是在协议数据单元的基础上,添加了一个叫做“MBAP头(MBAP Header)”的结构。MBAP是英文“ModBus APlication”的缩写,即“应用数据单元”的意思。

MBAP头结构由7个字节构成,如下表所示:
深入了解Modbus TCP协议
其中:

◆传输标识符:用于标识应用数据单元,即请求和应答之间的配对;客户端对该部分进行初始化,服务器端将其拷贝到自己的ADU中;
◆协议标识符:系统间的协议标识,0=Modbus;
◆长度:接下来要发送的数据长度,即:单元标识符 PDU的总长度,以字节为单位;
◆单元标识符:用于系统间的站寻址,比如在以太网 串行链路的网络中,远程站的地址;

这就是Modbus TCP的ADU结构,即:MBAP头 PDU,是不是很简单呢?Modbus TCP的数据传输采用的是一种被称为“客户端/服务器”的模式,这也是上面的表格中会出现客户端/服务器功能描述的原因。其实,很多网络通信都采用的这种方式,比如大名鼎鼎的西门子的S7通信协议。在串行链路中,这种方式也称为主-从通信。


说道这里,大家可能会有一个疑惑。因为Modbus在网络通信中,通常需要写明IP地址和端口号,为什么Modbus TCP的ADU中没有相关的内容呢?


哈哈,其实这是因为Modbus TCP是一个应用层的协议,而你说的IP地址和端口号属于传输层/网络层的协议。还没明白,好吧,看看这张图:

深入了解Modbus TCP协议

你看,在逻辑上Modbus TCP是在TCP层上的。在发送数据的时候,Modbus TCP的应用数据单元首先向下传送给传输层,加上TCP协议的报文;再传送给网络层,加上IP协议的报文;再向下传送给数据链路层及物理层;接收的过程正好相反,从物理层一层一层的去掉相应层的报文,最终到达应用层。所以在使用Modbus TCP进行数据传输的时候,是要配合TCP/IP协议来使用的。通常如果你使用电脑编程,就要用到SOCKET技术;如果是使用plc编程,通常厂家已经把底层通信封装成库指令了,你只要直接调用就好了。比如西门子S7-200 SMART/1200/1500等PLC都有现成的Modbus-TCP指令库。偷偷告诉你一声,昌晖仪表后续会写基于PLC和基于PC的Modbus-TCP通信的文章。


还有一点要特别说明一下,Modbus TCP使用的端口号是502,一定要给Modbus TCP预留好,不能被别人占用哦。

相关阅读

隧道电压低怎样解决?隧道施工电压,输电线路末端电压低解决

随着国度基建疾速开展,一些专长隧道开挖、桥梁的建立施工当中,常会遇到隧道施工供电呈现电压偏低、动摇大、二次压降等问题。我公司曾经针对了系列问题研发作产出三相电力升...
2023-05-29
隧道电压低怎样解决?隧道施工电压,输电线路末端电压低解决

开关、插座和配电箱的安装

   开关的安装    1.暗装开关的拆卸与安装   (1)暗装开关的拆卸   拆卸是安装的逆过程,在暗装开关前,先了解一下如何拆卸已安装的暗装开关。单联暗装开关的拆卸如图13...
2023-06-27
开关、插座和配电箱的安装

高压补偿与低压补偿疑问?

我司有进行低压集中补偿,功率因数控制在0.95-0.99之间,算是比较好的。 但电力 变压器也是电感负载,是否也要在高压进行一次补偿?高压补偿与低压补偿有什么区别?各有什么好处...
2023-03-21

研读2024年最新《供电营业规则》 用电用户违规用电行为的办理

就供用电常见问题,根据2024年最新《供电营业规则》的规定,作一研读和解析。问题汇集如下: 1.用户逾期不交电费,从哪天开始算是逾期? 2.用户连续六个月不用电是不是必须销户? 3.临...
2024-08-21
研读2024年最新《供电营业规则》 用电用户违规用电行为的办理

电工基础——电动机控制电路图

电工最常见电路 包括电力配电系统接线图,电气仪表安装接线图,照明灯控制电路图,电动机控制电路图,电视、通信电路图,家用电器电路图,设备保护电路图,安全报警电路图。以...
2023-06-11
电工基础——电动机控制电路图

热销商品

广东珠江电线电缆阻燃国标定制BYJBV BVR YJV YJY RVV RVS RV KVV

广东珠江电线电缆,专注于阻燃国标定制,产品涵盖BYJBVBVRYJVYJYRVVRVSRVKVV等多种规格。我们采用先进生产技术,严格遵循国家标准,确保产品质量可靠、性能稳定。产品适...
¥ 1

可换头防静电塑胶镊子ESD-7A/242/249/259防划伤夹IC硅晶片陶瓷头

ESD-7A/242/249/259是一款专为半导体行业设计的防静电塑胶镊子,有效防止静电对敏感电子元件的损害。其独特之处在于可更换的镊子头,包括专为夹持IC硅晶片和陶瓷元件...
¥ 2

公牛官方旗舰店开关插座空调16A插座五孔10A面板暗装多孔G12白灰

公牛官方旗舰店提供一系列高质量的开关插座和空调配件。这款16A插座五孔面板采用暗装设计,适用于多种安装环境,如墙面、天花板等。它具有10A的电流容量,可以满足家庭...
¥ 5.55

L型套筒扳手铣口烟斗双头弯头7字穿孔机修六角汽修轮胎工具6-19mm

L型套筒扳手是一款常用于工业领域的多功能工具,具备双头设计,可高效完成铣口、烟斗等多种工件孔位加工,适用六角汽修、轮胎等场景。其套筒尺寸为6-19mm,精准适配各类...
¥ 3.5

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店,作为西门子品牌的专卖店,提供了一系列高品质、设计新颖的家居电气产品。这里销售的开关插座采用无框...
¥ 8.77

网站栏目