Modbus RTU协议

Modbus RTU协议

Modbus是一种串行通信协议,是Modicon公司(现在的施耐德电气 Schneider Electric)于1979年为使用可编程逻辑控制器(PLC)通信而发表。Modbus已经成为工业领域通信协议的业界标准(De facto),并且现在是工业电子设备之间常用的连接方式。

Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。本文主要介绍用于串口和以太网的版本。

读存储区

1.客户端命令:

报文:01 03 01 11 00 08 15 F5

字节序号字节长度功能名称描述
01设备ID1-255
11功能码功能码表
22起始地址地址高位在前,低位在后
42读取长度长度高位在前,低位在后
62CRC校验CRC低位在前,高位在后

2.服务端响应:

报文:01 03 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E4 59

字节序号字节长度功能名称描述
01设备ID1-255
11功能码功能码表
21字节总数根据命令返回:8个开关量1个字节,1个模拟量2个字节
3字节总数数据寄存器开关量:低位到高位 模拟量:寄存器高位在前,低位在后
3+字节总数2CRC校验CRC低位在前,高位在后

写存储区

1.多写

功能码:
多写开关量:15
多写模拟量:16

1.客户端命令:

报文:

字节序号字节长度功能名称描述
01设备ID1-255
11功能码功能码表
22起始地址地址高位在前,低位在后
42写值长度长度高位在前,低位在后
61字节总数根据写值长度:8个开关量1个字节,1个模拟量2个字节
7字节总数写入数值开关量:低位到高位 模拟量:寄存器高位在前,低位在后
7+字节总数2CRC校验CRC低位在前,高位在后
开关量字节总数=写值长度/8
模拟量字节总数=写值长度*2

2.服务端响应:

报文:

字节序号字节长度功能名称描述
01设备ID1-255
11功能码功能码表
22起始地址地址高位在前,低位在后
42写值长度长度高位在前,低位在后
62CRC校验CRC低位在前,高位在后

2.单写

功能码:
单写开关量:05
单写模拟量:06

1.客户端命令:

报文:

字节序号字节长度功能名称描述
01设备ID1-255
11功能码功能码表
22起始地址地址高位在前,低位在后
42数据开关量:置1:FF 00 置0:00 00 模拟量:数据高位在前,低位在后
62CRC校验CRC低位在前,高位在后

2.服务端响应:

报文:

字节序号字节长度功能名称描述
01设备ID1-255
11功能码功能码表
22起始地址地址高位在前,低位在后
42数据开关量:置1:FF 00 置0:00 00 模拟量:数据高位在前,低位在后
62CRC校验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版权协议,转载请附上原文出处链接和本声明。