深入了解 modbus 协议
2023-09-18 23:18:30 19 举报
AI智能生成
为你推荐
查看更多
《Modbus软件开发实战指南》 读书笔记
作者其他创作
大纲/内容
是一种应用于电子控制器上的通用语言
此协议定义了一个控制器能够认识使用的消息结构,描述了控制器请求访问其他设备的过程,以及符合应答来自其他设备的请求、怎样侦测错误并记录,制定了统一的消息域的结构和内容
是什么?
已成为一种通用的工业标准
行业地位?
通过此协议,可以实现控制器相互之间、控制器经=由网络和其他设备之间的通信
使用它,不同厂商生产的控制设备可以连接工业网络,进行几种监控
有什么用?
设备的地址
识别按地址发来的消息决定要产生何种行为
如果需要回应,控制器将生成什么反馈信息发送
每个控制器需要知道:
使用Modbus在网络上进行通信,需要什么?
标准开发,公开发表,无版税要求,可免费免责使用
支持多种电器接口,如RS232 RS485 TCP/IP 等;还可以在各种介质上传输,如双绞线 光纤 红外 无线等
消息帧格式简单 紧凑 通俗易懂;用户理解使用简单 厂商容易开发和集成
有什么特点?
基本信息
模拟多串口,支持所有的设置和信号线;通过操作虚拟串口,写入到一个虚拟COM端口的数据可以从另外一个COM端口读取,通过这种方式实现两个串口程序之间交换数据
https://www.eltima.com/cn/products/vspdxp/
虚拟串口软件 Visual Serial Port Driver(VSPD)
Modbus Poll
Modbus 主站设备
Modbus Slave
Modbus 从站设备
模拟 Modbus
https://www.modbustools.com/download.html
模拟软件
《Modbus软件开发实战指南》
《开放式IEC 61131 控制系统设计》
参考
使用 Modbus 协议,仅需要一根对绞线就可以连接很多现场设备,将所有数据传送到 Modbus 主站设备
介质连接
使用 Modbus 可以把现场设备连接到一个 DCS 过程控制系统,PLC(PLC 可编程逻辑控制器,Programmable Logic Controller)设备或工业计算机系统
整个工厂的连接都能够从对绞线控制室直连的方式转变成为 Modbus 的网络连接方式
网络方式连接
在工业场景下使用
Modbus 协议简单且容易复制,与复杂的使用有线、无线通信甚至短消息等的GPRS(General Packet Radio Service)的设计不同,这些设备要简单的多,但是需要克服高延迟和时许等问题
网关设备支持
应用场景
一种紧凑的,采用二进制表示数据的方式
循环冗余校验的校验和
确保数据传输的完整性和准确性
RTU(Remote Terminal Unit)模式
一种人类可读的,冗长的表示方式
纵向冗余校验的校验和
ASCII(American Standard Code for Information Interchange,美国标准信息交换码)模式
两种类型是互斥的,被配置为RTU模式的节点不能与配置为 ASCII 模型的节点通信,反之亦然
两个变种(传输数据的字节表示上的不同)
串行链路(Serial Communication)连接
存在多个 Modbus/TCP 变种
不需要校验和的计算
TCP/IP (例如以太网)物理层连接
本质都是 Modbus 协议,都是依靠 Modbus 寄存器地址来交换数据
相同点
Modbus RTU 一般采用串口 RS-232 或 RS-485
Modbus TCP 一般采用以太网口
使用硬件不同
Modbus 需要对数据进行校验,铲形协议中除了奇偶校验,ASCII模式采用LRC校验,RTU模式采用16位CRC校验
Modbus TCP 模式没有额外规定校验,因为TCP协议是一个面向可靠连接的协议,所以不需要CRC校验码
数据校验
TCP和RTU协议非常类似,只要在RTU协议的开始加上5个 \"00\"和 1个\"06\",然后把RTU协议的最后两个CRC校验码去掉,并通过TCP/IP网络发送出去即可
数据结构
数据
差异
Modbus RTU 和 Modbus TCP
MODICON 专有
Modbus PLUS(Modebus+ 或 MB+)
扩展版本
通信模式
数据模型和功能调用上都是相同的,只有传输报文封装方式不同
一个节点是Master
使用 Modbus 协议参与通信的节点是 Slave 节点,每个设备都有一个唯一的地址
一个或多个设备是 Slave
结构
总线上只能有一个主设备,可以有1~247个从设备(地址范围从1~247),剩下值是保留位
Modbus 通信总是由主设备发起,当从设备没有收到来自该主设备的请求时,不会主动发送数据
从设备之间不能相互通信,主设备同时只能启动一个 Modbus 访问事务处理
特点
主节点才可以启动一个命令
串行和MB+网络中
任何一个设备都能发送一个 Modbus 命令,但通常也只有一个主节点设备用以引导指令
以太网
通信模式区别
对指定单个从设备发送请求报文
单播模式
对线路上所有从设备发送请求报文,此模式下,Master请求指令必须是 Modbus 标准功能的写指令
广播模式
主设备
被动接受请求报文给出响应报文
应答,返回一个响应报文
仅进行相关指令的事务处理,不要求返回应答
从设备
消息发送方式
Modbus ASCII
Modbus RTU
通信模式要求
单主/多从(Master/Slave)
Modbus TCP
没有额外规定校验,因为 TCP 协议是一个面向可靠连接的协议
TCP 默认端口是 502
请求/应答,每次通信都是主站先发送指令,可以是广播,也可以是向特定从站的单播
当主站不发送请求时,从站不会自己发出数据,从站与从站之间不能直接通信
工作方式
客户端/服务器(Client/Server)
通信结构
地址域
十进制 1 ~ 255
有效码字
十进制 128~255
异常响应保留
功能码
确定到达的命令是否完整
作用
错误校验码
在 Modbus TCP 模式下,不存在差错校验字段
在某些特殊场合,如 串行 Modbus 协议转 Modbus TCP 的情况下,串行协议数据完整张载到 Modbus TCP 协议的数据字段,此时CRC或者是LRC差错校验字段仍然存在
注意
差错校验
1字节
地址码
2字节
RTU协议采用3.5个字符的停顿时间作为指令的起始和结束
起始地址
n字节
2字节,表示寄存器的个数
数据长度
数据长度 * 2字节
数据正文
组成
校验码
在RTU协议前面添加了MBAP报文头,共7个字节
事务处理标识箱
协议标识符
长度
单元标识符
MBAP报文头
Modbus RTU 和 Modbus TCP 数据帧结构
取消了校验位
当网络中的设备全部使用 TCP/IP 协议时,此地址没有意义,因为IP就能完成路由寻址
若网络里还有串行通信的设备,则需要网关来实现 Modbus TCP 到 Modbus RTU 或 ASCII 之间的协议转换,此时就可以用标识符标识网关后见每个串行通信设备
地址域换成了协议标识符
为了应对某些情况下,TCP/IP 协议会对应用层的数据拆包传输
新增长度,指后面数据的字节数
Modbus TCP 相比 RTU
Modbus RTU 和 Modbus TCP 报文结构
帧结构
目标设备的 Modbus 地址
指令
命令结构
只有指定地址的设备会执行并回应指令
响应指令
当Modbus协议用于更高级的网络时,改革宁波方式可能不被允许或以其他方式替代
地址0例外,指定地址0的指令是广播指令,所有收到指令的设备都会运行,不过不用回应指令
其他
流程
发送指令
数据传输
存放所有数据;非具体的物理寄存器,也可能是一块内存地址
输出端口;可设定端口的输入状态,也可以读取该位的输出状态
可分为两种不同的执行状态,例如保持型或边沿触发型
线圈状态(Coil Status)
输入端口,通过外部设定改变输入状态
可读但不可写
离散输入状态(Input Status)
输出参数或保持参数,控制器运行时被设定的某些参数
可读可写
保持寄存器(Holding Register)
输入参数,控制器运行时从外部设备获得的参数
输入寄存器(Input Register)
线圈状态 - DO 数字量输出
离散输入状态 - DI(数字量输入)
保持寄存器 - AO (模拟量输出)
输入寄存器 - AI (模拟量输入)
与PLC类比
根据存放数据类型和读写特性,分为4个部分(可不连续)
电磁阀输出 MOSFET输出 LED显示等
拨码开关 接近开关 等
模拟量输出设定值 PID运行参数 变量阈输出大小 传感器报警上线 下限
模拟量输入
分类
地址分配
通信时使用的寄存器寻址地址
寄存器 Modbus 协议地址
地址
寄存器
modbus 协议
0 条评论
回复 删除
下一页