跳转到内容
新建笔记

Modbus概览:数据空间、封装与接口契约

Modbus 是以功能码和数据模型组织工业设备通信的应用层协议。主站/客户端发出请求,从站/服务器处理后响应;具体寄存器代表温度、速度、状态还是命令,由设备或项目接口定义。

学习时先区分三层:应用数据和功能码、RTU/ASCII/TCP封装、物理或网络连接。协议名称不能直接告诉你速度、距离、拓扑或设备数据的单位。

数据空间元素宽度访问方向常用功能码(十六进制)
线圈 Coils1 bit读写01读,05写单个,0F写多个
离散输入 Discrete Inputs1 bit只读02
输入寄存器 Input Registers16 bit只读04
保持寄存器 Holding Registers16 bit读写03读,06写单个,10写多个

线圈不是16位数据项。四个空间可出现相同的地址数值,由功能码区分;映射到物理I/O还是内存变量属于应用设计。32位整数、浮点数等通常占多个寄存器,还必须约定字序与编码。

PDU由功能码与功能相关数据组成;ADU在PDU外增加对应链路所需字段。

形式ADU组成概要需要关注的边界
RTU从站地址 + PDU + CRC二进制字节、串口格式、帧间静默时间
ASCII起止标记、地址/PDU的十六进制字符、LRC字符编码和终止规则,不是RTU帧直接转成文字
TCPMBAP头 + PDUTCP字节流分帧、长度、事务标识及Unit Identifier

TCP封装不附加RTU的CRC字段。网关可能把TCP中的单元标识映射到后面的串行从站;不能用“唯一设备地址”一句话代替IP端点、单元标识和串口站号各自的寻址职责。

串行RTU主站一次只安排一笔事务,正常从站地址为1~247;广播写不应等待应答。TCP客户端则要按照实现支持的并发能力和事务标识管理请求。功能码、字段编码和数据模型见Modbus应用协议V1.1b3,串行时序见串行规范V1.02。

设备寄存器表应给出零基线上地址、访问权限、类型、单位、比例、有效范围、更新周期及异常行为。手册中的40001等引用编号可能与报文地址不同,先确认换算规则再读写。

通信距离、速率和布线拓扑由RS485、RS232、以太网及设备实现决定;不能把“总线、星型、环形”都列为任意串行网络可互换的连接方式。能收到合法帧也不等于数据新鲜或业务动作已完成,需要超时、状态确认和诊断记录。

Modbus广泛用于工业自动化、仪表和楼宇设备。开放的规范便于互操作,但实际设备常只实现一部分功能;以具体型号的接口说明和实测报文作为联调依据。