MODBUS协议(功能码及报文解析)
MODBUS协议
Modbus是一种串行通信协议,是Modicon于1979年,为使用可编程逻辑控制器(PLC)而发表的。事实上,它已经成为工业领域通信协议标准,并且现在是工业电子设备之间相,尤其是该命令或其他应答产生通信错误时
12
读取通信事件记录
可是主机检索每台从机的ModBus事务处理通信事件记录。如果某项事务处理完成,记录会给出有关错误
13
编程(184/384 484 584)
可使主机模拟编程器功能修改PC从机逻辑
14
探询(184/384 484 584)
可使主机与正在执行任务的从机通信,定期控询该从机是否已完成其程序操作,仅在含有功能13的报文发送后,本功能码才得发送
15
强置多线圈
强置一串连续逻辑线圈的通断
16
预置多寄存器
把具体的二进制值装入一串连续的保持寄存器
17
报告从机标识
可使主机判断编址从机的类型及该从机运行指示灯的状态
18
(884和MICRO 84)
可使主机模拟编程功能,修改PC状态逻辑
19
重置通信链路
发生非可修改错误后,是从机复位于已知状态,可重置顺序字节
20
读取通用参数(584L)
21
写入通用参数(584L)
把通用参数写入扩展存储文件,或修改之
22~64
保留作扩展功能备用
65~72
保留以备用户功能所用
留作用户功能的扩展编码
73~119
非法功能
120~127
保留
留作内部作用
128~255
保留
用于异常应答
各个功能码对应的数据类型
代码
功能
数据类型
01
读
位
02
读
位
03
读
16位整型
04
读
16位整型
05
写
位
06
写
整16位整型
15
写
位
16
写
整16位整型
MODBUS协议相当复杂,但是常用的命令也就简单的几个,01,02,03,04,05,06,15,16号命令。
各个命令的功能和报文如下:
01 命令 读取线圈状态 MODBUS地址 00001~
MODBUS 请求
功能码
1 BYTE
0X01
起始地址
2 BYTE
0X0000 TO 0XFFFF
读取数量
2 BYTE
1 TO 2000(0X7D0)
MODBUS 响应
功能码
1 BYTE
0X01
字节计数
1 BYTE
N
线圈状态
n BYTE
n =N or N+1
N =读取数量/8 如果余数不为0 则N=N+1
错误 响应
功能码
1 BYTE
0X01+ 0X80
错误代码
1 BYTE
0x1 or 0x2 or 0x3 or 0x4
举例
请求
响应
域名称
数据(hex)
域名称
数据(hex)
功能码
01
功能码
01
起始地址高(字节)
00
字节计数
03
起始地址低(字节)
13
27(h)~20状态
CD
读取数量高(字节)
00
35(h)~28状态
6B
读取数量低(字节)
13
38(h)~36状态
05
02 命令 读取输入状态 MODBUS地址 10001~
MODBUS 请求
功能码
1 BYTE
0X02
起始地址
2 BYTE
0X0000 TO 0XFFFF
读取数量
2 BYTE
1 TO 2000(0X7D0)
MODBUS 响应
功能码
1 BYTE
0X02
字节计数
1 BYTE
N
输入状态
n BYTE
n =N or N+1
N =读取数量/8 如果余数不为0 则N=N+1
错误 响应
功能码
1 BYTE
0X02+ 0X80
错误代码
1 BYTE
0x1 or 0x2 or 0x3 or 0x4
举例
请求
响应
域名称
数据(hex)
域名称
数据(hex)
功能码
02
功能码
02
起始地址高(字节)
00
字节计数
03
起始地址低(字节)
C4
204(h)~197状态
AC
读取数量高(字节)
00
212(h)~205状态
DB
读取数量低(字节)
16
218(h)~213状态
35
03 读保持寄存器 MODBUS地址 40001~
MODBUS 请求
功能码
1 BYTE
0X03
起始地址
2 BYTE
0X0000 TO 0XFFFF
读取数量
2 BYT
到此这篇modbus协议40001(Modbus协议报文解析)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/bcyy/72430.html