ModBus TCP 分布式远程IO数据采集模块系统耦合器BL200 Modbus 功能码0x0F写多个线圈
ModBus TCP 分布式远程IO数据采集模块系统耦合器BL200 Modbus
功能码0x0F写多个线圈
此功能码用于把连续的多个线圈设置为断开或闭合。请求的开/关状态由请求数据字段的内容指定。逻辑“1”请求闭合相应的输出,逻辑上的“0”请求其断开。正常响应返回功能码、起始地址和执行的线圈数量。
1. 请求
表1:功能码0x0f-请求报文
字段名称 | 字节数 | 示例 | 说明 |
事务标识符 | 2 Byte | 0x00 01 | Modbus请求/响应事务处理的识别 |
协议标识符 | 2 Byte | 0x00 00 | 0x00 00 :Modbus协议 |
报文长度 | 2 Byte | 0x00 08 | 后面数据的字节数 |
设备地址 | 1 Byte | 0x01 | 从站的地址识别 |
功能码 | 1 Byte | 0x0F | 写多个线圈,用功能码0x0F |
起始地址 | 2 Byte | 0x03 E8 | 地址详见“Modbus 寄存器映射”章节 |
线圈数量 | 2 Byte | 0x00 08 | |
数据字节数 | 1 Byte | 0x01 | |
数据 | 1 Byte | 0xFF |
2. 响应
表 2:功能码0x0f-响应报文
字段名称 | 字节(Byte) | 示例 | 说明 |
事务标识符 | 2 Byte | 0x00 00 | Modbus请求/响应事务处理的识别 |
协议标识符 | 2 Byte | 0x00 00 | 0x00 00 :Modbus协议 |
报文长度 | 2 Byte | 0x00 06 | 后面数据的字节数 |
设备地址 | 1 Byte | 0x01 | 从站的地址识别 |
功能码 | 1 Byte | 0x0F | 写多个线圈,用功能码0x0F |
起始地址 | 2 Byte | 0x03 E8 | |
线圈数量 | 2 Byte | 0x00 08 |
3. 异常
3:功能码0x0f-异常
字段名称 | 字节(Byte) | 示例 | 说明 |
… | |||
功能码 | 1 Byte | 0x8F | Modbus功能码 + 0x80 |
异常编码 | 1 Byte | 0x01 或 0x02 |
4. 示例
从地址1000开始,将8个线圈全部闭合,即将8个线圈的值写为0xFF。
请求
0x00 01 00 00 00 08 01 0F 03 E8 00 08 01 FF
表 4:功能码0x0f-请求报文-示例
Byte | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Data | 00 01 | 00 00 | 00 08 | 01 | 0F | 03 E8 | 00 08 | 01 | FF | |||||
说明 | 事务标识符 | 协议标识符 | 报文长度 | 设备地址 | 功能码 | 起始地址 | 线圈数量 | 字节数 | 数据 |
响应
0x00 01 00 00 00 06 01 0F 03 E8 00 08
表 5:功能码0x0f-响应报文-示例
Byte | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Data | 00 01 | 00 00 | 00 06 | 01 | 0F | 03 E8 | 00 08 | |||||
说明 | 事务标识符 | 协议标识符 | 报文长度 | 设备地址 | 功能码 | 起始地址 | 线圈数量 |