Modbus协议总结

发布于:2025-02-12 ⋅ 阅读:(138) ⋅ 点赞:(0)

Modbus模式

类型 接口 特点
RTU 串口 传输大量数据,适合工业
ASCII 串口 传输少量数据,适合计算机
TCP 网口 传输严谨,效率低
UDP 网口 传输效率高

Modbus RTU/ASCII

存储区

存储区范围:
标准地址(5位) Y XXXX
扩展地址(6位) Y XXXXX
bool类型一般存于线圈,数值类型存于寄存器
输入寄存器、输入线圈中的数据为只读

存储区 标记 地址范围(以标准地址为例)
输出线圈 0 00001~09999
输入线圈 1 10001~19999
输出寄存器 4 40001~49999
输入寄存器 3 30001~39999

报文格式

从站地址(设备编号) 功能码 数据 校验码
1byte 1byte N byte 2byte
功能码

即读写功能码

功能码 含义 功能码 含义
01 读输出线圈 05 写单个输出线圈
02 读输入线圈 06 写单个输出寄存器
03 读输出寄存器 15 写多个输出线圈
04 读输入寄存器 16 写多个输出寄存器

Modbus TCP

数据帧格式

MBAP 功能码 数据
7 byte 1byte n byte
MBAP
事务处理标识 协议标识符 长度 单元标识符
2 byte 2 byte 2 byte 1 byte
报文序列号,一般每次通信后要加1 00 00 表Modbus TCP 数据长度,单位字节 设备地址
映射寄存器
设备类型 读写属性 应用定义 功能码 Modbus协议地址 内部地址
0X 读写 线圈(输出点) 01 05 0F 0000~FFFF 000001~065536
1X 离散量输入 02 0000~FFFF 100001~165536
3X 输入寄存器 04 0000~FFFF 300001~365536
4X 读写 保持寄存器 (写时 功能码多为10) 03 06 10 0000~FFFF 400001~465536
5X 读写 保持寄存器(在32位数据类型时数据排放相反 ) 03 06 10 0000~FFFF 500001~565536
6X 读写 保持寄存器 (在写时功能码为06) 03 06 10 0000~FFFF 600001~665536
功能码
功能码 名称 功能 对应地址类型
01 读线圈状态 读从机线圈寄存器n个bit (位操作) 0x
02 读输入离散量 读离散输入寄存器n个bit (位操作) 1x
03 读多个寄存器 读保持寄存器,整型 状态字 字符型 浮点型 n个words (字节操作) 4x
04 读输入寄存器 读输入寄存器,整型 状态字 浮点型 n个words (字节操作) 3x
05 写单个线圈 写线圈寄存器 写1个bit (位操作) 0x
06 写单个保持寄存器 写保持寄存器 整型 字符型 状态字 浮点型 1个word (字节操作) 4x
0F 写多个线圈 强制一串连续逻辑线圈的判断 写n个bit (位操作) 0x
10 写多个保持寄存器 把具体的二进制值装入一串连续的保持寄存器 n个word 4x
示例

读输出线圈(01功能码)

事务处理标识 协议标识符 长度 单元标识符 功能码 起始地址 数据长度
hex 00 00 00 00 00 06 01 01 00 13 00 10

写多个线圈(0F功能码)

事务处理标识 协议标识符 长度 单元标识符 功能码 起始地址 线圈数量 字节计数 写入值
hex 00 00 00 00 00 09 01 0F 00 0A 00 10 02 1C A0

网站公告

今日签到

点亮在社区的每一天
去签到