modbus命令格式V1
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15 用于设置线圈序列的值为 ON/OFF
请求指令的格式为:
模块 功 能 起始地址 起始地址 线圈个数
地址 码
高字节
低字节
高字节
线圈个数 低字节
字 节 设置数据的
数
高字节
设置数据的 低字节
例:设置 10 个线圈的值,起始地址为 00017( 11hex) 请求指令: 01 0F 00 11 00 0A 02 CD 01 。CD 01 等价于二进制的 1100 1101 0000 0001。
例:设置线圈 3(地址为 00003)为 ON 请求指令: 01 05 00 03 FF00
响应指令的格式为:
模块地址
功能码
起 始 地 址 高 起 始 地 址 低 设置数据的
设置数据的
响应指令为请求指令的重复。
字节
字节
高字节
低字节
功能码 06
06 用于写单个寄存器的值。 请求指令的格式为:
模块地址
功能码 01
01 用于读数字量模块的输出状态。 请求指令的格式为:
模块地址
功能码
起 始 地 址 高 起 始 地 址 低 线圈个数
字节
字节
高字节
例:读模块第 1~8 个线圈(地址为 00017~00024) 00017 为 11h
请求指令: 01 01 00 11 00 08
响应指令的格式为: 模块地址
若寄存器为 16 位。则最小值为 0,最大值为 FFFF,0 对应量程最小值, FFFF 对应量程最大
值。假设量程为 4~20mA ,则 0 对应 4mA , FFFF 对应 20mA
Βιβλιοθήκη Baidu
例:模拟量为 0~10V ,输入通道 1 的值为 5V ,通道 2 的值为 6.5V 响应为: 01 04 04 7F FF A6 65 。 7FFF 对应 5V , A665 对应 6.5V 。 (一个指令来回的字节数是 6+2+3+2*8+2=29 个字节)
响应指令的格式为:
模块地址
功能码
起 始 地 址 高 起 始 地 址 低 线圈个数的
字节
字节
高字节
线圈个数的 低字节
例: 01 0F 00 11 00 0A
功能码 16( 10h)
16 用于设置多个保持寄存器的值 请求指令的格式为:
模块地 功 能 起始地址高 起始地址低
址
码
字节
字节
寄存器个数的 高字节
Modbus 命令介绍
1 命令格式
MODBUS 协议定义了一个与基础通信层无关的简单协议数据单元(
PDU )。特定总线
或网络上的 MODBUS 协议映射能够在应用数据单元( ADU )上引入一些附加域。通用
Modbus 帧如下图。
以下介绍常见功能码与 PDU 。
2 常见的功能码
功能码( HEX ) 01 02 03 04 05 06 08 15 16
功能码
例:线圈 2 与 7 为 ON ,其他为 OFF 响应为: 01 01 01 42
42h 即为二进制的 0100 0010
字节个数
数据
线圈个数 低字节
数据
功能码 02
02 用于读数字量模块的输入状态。 请求指令的格式为:
模块地址
功能码
起始 地址高 起始地址低
字节
字节
例:读模块第 1~8 个通道的输入(地址为 00001~00008 )
请求指令: 01 02 00 01 00 08
线圈个数 高字节
响应指令的格式为:
模块地址
功能码
例:输入 2 与 3 为 ON ,其他为 OFF
响应为: 01 02 01 60
60h 即为二进制的 0110 0000
字节个数
数据
线圈个数 低字节
数据
功能码 03/04
03/04 用于读模块的寄存器的值。 请求指令的格式为:
功能码 05
05 用于写线圈为 ON/OFF 。ON/OFF 的状态用数据序列表示。 FF 00hex 表示为 ON ,00 00hex 表示为 OFF, FF FF hex 表示 释放。
请求指令的格式为:
模块地址
功能码
起 始 地 址 高 起 始 地 址 低 强制数据的
强制数据的
字节
字节
高字节
低字节
功能码
起始 地址高 字节
例:设置寄存器 40002 的值为 00 04 h 请求指令: 01 06 00 02 00 04
起始地址低 字节
设置数据的 高字节
设置数据 低字节
响应指令的格式为:
模块地址
功能码
响应指令为请求指令的重复。
起 始 地 址 高 起 始 地 址 低 设置数据的
字节
字节
高字节
设置数据 低字节
模块地址
功能码
起 始 地 址 高 起 始 地 址 低 寄存器个数
字节
字节
高字节
例:读模拟量输入第 1~2 个通道的输入(地址为 40001~40002) 请求指令: 01 04 00 01 00 02
寄存器个数 低字节
响应指令的格式为:
模块地址
功能码
字节个数
数据
数据
模拟量实际值与寄存器数据的对应关系:
功能码 08
08 用于诊断回路。发送的信息可以为任意长度,其最大值为数据缓冲器的长度减去 节。
请求指令的格式为:
模块地址
功能码
任意数据
例:
请求指令: 01 08 00 02 00 04
响应指令的格式为:
模块地址
功能码
例:
响应为: 01 08 00 02 00 04
任意数据
8 个字
功能码 15( 0Fh)
的高字节
的低字节
模块的地址映射表可见 4000/6000 的英文手册附录。
寄存器个数的 低字节
字节 数
数
据
例:设置通道 1(地址为 40009)的值为 100.0 请求指令: 01 10 00 09 00 02 04 42 C8 00 00 。
响应指令的格式为:
模块地址
功能码
例: 01 10 00 09 00 02
起始 地址高 起始地址低 寄存器个数 寄存 器个 数
字节
字节
名称 读线圈状态 读输入状态 读保持寄存器 读输入寄存器 写单个线圈 写单个寄存器 回路诊断 写多个线圈 写多个寄存器
作用 读离散输出位 读离散输入位
读 16 位寄存器,常用于读取整数或者浮点数 写数据使线圈 On/OFF 16 位格式写数据 检测通讯端口 写数据使多个线圈 ON/OFF 16 位格式写数据