1、modbus协议设计思想
modbus设备使用主从(客户端-服务器)技术进行通信,其中只有一个设备(主设备/客户端)可以启动事务(称为查询)。其他设备(从设备/服务器)通过向主设备提供请求的数据或采取查询中请求的操作进行响应。从设备是任何外围设备(i/o转换器、阀门、网络驱动器或其他测量设备),它处理信息并使用modbus将其输出发送到主设备。
主机可以寻址单个从机,也可以向所有从机发起广播消息。从属服务器会返回对单独发送给它们的所有查询的响应,但不会响应广播查询。从属服务器不会自己启动消息,它们只响应来自主服务器的查询。
主查询将包括一个从地址(或广播地址)、一个定义所请求操作的功能代码、任何所需数据和一个错误检查字段。从机的响应由确认所采取的操作、要返回的任何数据和错误检查字段组成。
请注意,查询和响应都包括设备地址、功能代码、适用数据和错误检查字段。如果没有发生错误,则从设备的响应包含所请求的数据。如果收到的查询中出现错误,或者从设备无法执行请求的操作,则从设备将返回一条异常消息作为响应。
从机消息帧的错误检查字段允许主机确认消息的内容是有效的。传统的modbus消息是串行传输的,奇偶校验也应用于其数据帧中的每个传输字符。
在这一点上,重要的是要区分modbus本身是一个应用协议,因为它定义了组织和解释数据的规则,但仍然只是一个消息传递结构,独立于底层物理层。
2、modbustcp
modbus消息结构是一种应用协议,定义了独立于数据传输介质的数据组织和解释规则。
tcp/ip是指传输控制协议和互联网协议,为modbus tcp/ip消息提供传输介质。
注意:tcp的主要功能是确保所有数据包都被正确接收,tcp/ip只是一个传输协议,并没有定义数据的含义或数据的解释方式,这是应用协议的工作)。
从本质上讲,modbus tcp/ip消息只是封装在以太网tcp/ip封装器中的modbus通信。modbus-tcp将标准modbus数据帧嵌入到tcp帧中,没有modbus校验和,如下图所示。
你一定会奇怪相比串口版本的modbusrtu,为什么没有没有使用modbus错误检查字段校验。
因为tcpip是一种可靠传输,其使用标准以太网tcp/ip链路层校验和方法来保证数据的完整性。
3、报文介绍
还是把这张图拿过来。从图中可以看出,功能代码和数据字段与原始形式一样。
modbus tcp/ip应用数据单元(adu)采用7字节报头(事务标识符+协议标识符+长度字段+单元标识符)和协议数据单元(功能代码+数据)的形式。
mbap标头长7个字节,包括以下字段:
事务/调用标识符(2个字节):当客户端沿同一tcp连接发送多条消息而不等待先前响应时,此标识字段用于事务配对。
协议标识符(2字节):此字段对于modbus服务始终为0,其他值保留用于未来扩展。
长度(2字节):该字段是剩余字段的字节计数,包括单元标识符字节、功能代码字节和数据字段。
单元标识符(1字节):此字段用于标识位于非tcp/ip网络上的远程服务器(用于串行桥接)。在典型的modbus tcp/ip服务器应用程序中,单元id设置为00或ff,被服务器忽略,并在响应中简单地回显。
完整的modbus tcp/ip应用数据单元嵌入到标准tcp帧的数据字段中,并通过tcp发送到系统端口502,该端口专门为modbus应用保留。
modbus tcp/ip客户端和服务器通过端口502监听和接收modbus数据。
我们可以看到,modbus在以太网上的操作对modbus寄存器/命令结构几乎是透明的。因此,如果您已经熟悉传统modbus的操作,那么您已经非常熟悉modbus tcp/ip的操作。
一加5什么时候上市?一加5旗舰,骁龙835+6GB价格2999起,涨价成定局!刘作虎:骁龙835真TMD贵!
纳智捷U5上手体验评测
关于波束斜视的量与角度θ和频率变化呈函数关系
关于Cortex-A7处理器性能分析
浅谈电动机工作模式分类及原理
ModbusTCP协议及通信报文解读
以Python语言为例探讨语音内存管理方式
【夏日福音】戴森新款空气净化风扇:降温净化两位一体
探讨中兴和华为在5G时代的发展
PI公司推出针对低功率LED灯泡的高度集成LED驱动器IC
电子捕鱼器的制作
明纬电源|85~100W超薄阶梯型DIN导轨型电源HDR-100系列
温度测量的基本概念
影响集成运放输入误差信号的主要参数分析
protel内电层分割的注意事项解析
深度学习基本概念
土壤碳通量测量系统产品介绍
iPhone12用什么充电器好?
人工智能工作是什么
Python入门之什么是函数