在线Modbus-ASCII报文解析器
编程开发
在线解析Modbus ASCII通信协议报文,支持LRC校验,主站→从站、从站→主站双向解析,详细解读帧起始、地址、功能码、数据、LRC校验
Modbus ASCII 协议解析 支持 8 种功能码 LRC 校验验证
快捷样例
报文输入
格式:冒号(:) + 地址(2字符) + 功能码(2字符) + 数据(N字符) + LRC(2字符) + CR LF
常用功能码参考
0x01
读线圈寄存器
取得一组逻辑线圈的当前状态(ON/OFF)
数据类型:位
0x02
读离散输入寄存器
取得一组开关输入的当前状态(ON/OFF)
数据类型:位
0x03
读保持寄存器
在一个或多个保持寄存器中取得当前的二进制值
数据类型:整型、浮点型、字符型
0x04
读输入寄存器
在一个或多个输入寄存器中取得当前的二进制值
数据类型:整型、浮点型
0x05
写单个线圈寄存器
强置一个逻辑线圈的通断状态
数据类型:位
0x06
写单个保持寄存器
把具体二进制值装入一个保持寄存器
数据类型:整型、浮点型、字符型
0x15
写多个线圈寄存器
强置一串连续逻辑线圈的通断
数据类型:位
0x16
写多个保持寄存器
把具体的二进制值装入一串连续的保持寄存器
数据类型:整型、浮点型、字符型
工具说明
📖 Modbus ASCII 报文结构
| 字段 | 长度 | 描述 |
|---|---|---|
| 帧起始符 | 1 字节 | 消息开始,以:(0x3A)开头 |
| 地址 | 2 字符 | 节点地址 |
| 功能码 | 2 字符 | 主机要求从机执行的操作类型 |
| 数据 | N 字符 | 命令的具体参数,格式取决于功能码 |
| LRC校验 | 2 字符 | 纵向冗余检验码 |
| 结束符 | 2 字节 | 报文结束符(CR/LF) |
📝 使用说明
输入报文
在输入框中粘贴或输入Modbus ASCII格式报文(以冒号开头)
选择方向
选择报文方向:主站→从站(请求)或从站→主站(响应)
自动解析
系统自动解析报文结构,验证LRC校验
查看详情
查看地址、功能码、数据域详情和LRC校验结果
⚠️ 注意事项
所有解析在浏览器本地完成,不会上传任何数据
每个字节用2个十六进制ASCII字符表示,传输效率较低但可读性强
使用纵向冗余校验(LRC),与RTU的CRC16不同
报文必须以冒号(:)开头,否则无法正确解析
❓ 常见问题
Q1: 什么是Modbus ASCII协议?
Modbus ASCII是一种串行通信协议,使用ASCII字符编码传输数据。每个字节用2个十六进制字符表示,以冒号(:)开头,以CR LF结尾,使用LRC校验。相比RTU模式,ASCII模式传输效率较低,但数据可读性强。
Q2: LRC校验是什么?
LRC(Longitudinal Redundancy Check)是纵向冗余校验,计算方法是:将所有字节相加,取低8位,然后求补码(2's complement)。LRC占1字节,在报文中以2个ASCII字符表示。
Q3: Modbus ASCII和RTU有什么区别?
主要区别:1) ASCII使用可读字符,RTU使用二进制;2) ASCII以冒号开头,RTU无起始符;3) ASCII用LRC校验,RTU用CRC16校验;4) ASCII传输效率低但易读,RTU效率高但不可读。
Q4: 报文格式是怎样的?
格式:冒号(:) + 地址(2字符) + 功能码(2字符) + 数据(N字符) + LRC(2字符) + CR LF。每个字节用2个十六进制ASCII字符表示。
Q5: 如何识别错误响应?
错误响应的功能码最高位为1(即功能码+0x80),后面跟1字节的错误码。常见错误码:0x01非法功能码、0x02非法地址、0x03非法数据值等。
💡 使用场景
| 场景 | 说明 |
|---|---|
| PLC通信调试 | 解析PLC与上位机之间的Modbus ASCII通信报文,排查通信故障 |
| 工业控制开发 | 开发和调试工业控制系统时,验证Modbus ASCII报文格式是否正确 |
| 串口监控分析 | 分析串口监控工具捕获的Modbus ASCII通信数据 |
| 传感器数据采集 | 解析从Modbus ASCII传感器读取的数据报文 |
| 教学培训 | 学习Modbus ASCII协议结构,理解各功能码的含义 |