Modbus RTU协议
Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。
Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。本文主要介绍用于串口和以太网的版本。
读存储区
1.客户端命令:
报文:01 03 01 11 00 08 15 F5
字节序号 | 字节长度 | 功能名称 | 描述 |
---|---|---|---|
0 | 1 | 设备ID | 1-255 |
1 | 1 | 功能码 | 见功能码表 |
2 | 2 | 起始地址 | 地址高位在前,低位在后 |
4 | 2 | 读取长度 | 长度高位在前,低位在后 |
6 | 2 | CRC校验 | CRC低位在前,高位在后 |
2.服务端响应:
报文:01 03 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E4 59
字节序号 | 字节长度 | 功能名称 | 描述 |
---|---|---|---|
0 | 1 | 设备ID | 1-255 |
1 | 1 | 功能码 | 见功能码表 |
2 | 1 | 字节总数 | 根据命令返回:8个开关量1个字节,1个模拟量2个字节 |
3 | 字节总数 | 数据寄存器 | 开关量:低位到高位 模拟量:寄存器高位在前,低位在后 |
3+字节总数 | 2 | CRC校验 | CRC低位在前,高位在后 |
写存储区
1.多写
功能码:
多写开关量:15
多写模拟量:16
1.客户端命令:
报文:
字节序号 | 字节长度 | 功能名称 | 描述 |
---|---|---|---|
0 | 1 | 设备ID | 1-255 |
1 | 1 | 功能码 | 见功能码表 |
2 | 2 | 起始地址 | 地址高位在前,低位在后 |
4 | 2 | 写值长度 | 长度高位在前,低位在后 |
6 | 1 | 字节总数 | 根据写值长度:8个开关量1个字节,1个模拟量2个字节 |
7 | 字节总数 | 写入数值 | 开关量:低位到高位 模拟量:寄存器高位在前,低位在后 |
7+字节总数 | 2 | CRC校验 | CRC低位在前,高位在后 |
开关量字节总数=写值长度/8
模拟量字节总数=写值长度*2
2.服务端响应:
报文:
字节序号 | 字节长度 | 功能名称 | 描述 |
---|---|---|---|
0 | 1 | 设备ID | 1-255 |
1 | 1 | 功能码 | 见功能码表 |
2 | 2 | 起始地址 | 地址高位在前,低位在后 |
4 | 2 | 写值长度 | 长度高位在前,低位在后 |
6 | 2 | CRC校验 | CRC低位在前,高位在后 |
2.单写
功能码:
单写开关量:05
单写模拟量:06
1.客户端命令:
报文:
字节序号 | 字节长度 | 功能名称 | 描述 |
---|---|---|---|
0 | 1 | 设备ID | 1-255 |
1 | 1 | 功能码 | 见功能码表 |
2 | 2 | 起始地址 | 地址高位在前,低位在后 |
4 | 2 | 数据 | 开关量:置1:FF 00 置0:00 00 模拟量:数据高位在前,低位在后 |
6 | 2 | CRC校验 | CRC低位在前,高位在后 |
2.服务端响应:
报文:
字节序号 | 字节长度 | 功能名称 | 描述 |
---|---|---|---|
0 | 1 | 设备ID | 1-255 |
1 | 1 | 功能码 | 见功能码表 |
2 | 2 | 起始地址 | 地址高位在前,低位在后 |
4 | 2 | 数据 | 开关量:置1:FF 00 置0:00 00 模拟量:数据高位在前,低位在后 |
6 | 2 | CRC校验 | CRC低位在前,高位在后 |
功能码表
功能码 | 解释 |
---|---|
01 | 读取线圈0X的状态,取得一组逻辑线圈的当前状态(ON/OFF) |
02 | 读取输入1X状态,取得一组开关输入的当前状态(ON/OFF) |
03 | 读取保持寄存器4X,在一个或多个保持寄存器中取得当前的二进制值 |
04 | 读取输入寄存器3X,在一个或多个输入寄存器中取得当前的二进制值 |
05 | 强制单线圈0X,强制一个逻辑线圈的通断状态 |
06 | 预置单寄存器4X,把具体二进制值装入一个保持寄存器 |
07 | 读取异常状态 |
08 | 回送诊断校验 |
09 | 编程(只用于484) |
10 | 控询(只用于484) |
11 | 读取事件计数 |
12 | 读取通信事件记录 |
13 | 编程(184/384 484 584) |
14 | 控询(184/384 484 584) |
15 | 强制多线圈0X,强置一串连续逻辑线圈的通断 |
16 | 预置多寄存器4X,把具体的二进制值装入一串连续的保持寄存器 |
18 | (884和MICRO 84)可使主机模拟编程功能,修改PC状态逻辑 |
版权声明:本文为zhangxu_1129原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。