模板: Modbus POE ETH Relay B Protocol

来自Waveshare Wiki
跳转至: 导航搜索

功能码介绍

功能码 备注
01 读继电器状态
02 读输入状态
03 读寄存器
05 写单个继电器
06 设置单个寄存器
0F 写全部继电器
10 设置多个寄存器

寄存器地址介绍

地址(HEX) 地址存储内容 寄存器取值 权限 Modbus 功能码
0x0000
……
0x0007
道通1~通道8继电器地址 0xFF00:继电器开启;
0x0000:继电器关闭;
0x5500:继电器翻转;
读/写 0x01,0x05,0x0F
0x00FF 操作全部继电器 0xFF00:继电器全部开启;
0x0000:继电器全部关闭;
0x5500:继电器全部翻转;
0x05
0x0100
……
0x0107
道通1~通道8继电器翻转地址 0xFF00:继电器翻转;
0x0000:继电器不变;
0x05,0x0F
0x01FF 操作全部继电器翻转 0xFF00:继电器全部翻转;
0x0000:继电器全部不变;
0x05
0x0200
……
0x0207
道通1~通道8继电器闪开 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
0x05
0x0400
……
0x0407
道通1~通道8继电器闪闭 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
0x05
1x0000
……
1x0007
道通1~通道8输入地址 表示1~8输入通道状态 0x02
4x1000
……
4x1007
道通1~通道8继电器控制模式 0x0000~0x0002三种控制模式 读/写 0x03,0x06,0x10
4x4000 设备地址 直接存储 Modbus 地址
设备地址:0x0001
0x03
4x8000 软件版本 转为十进制然后小数点左移两位即表示软件版本
0x0064 = 100 = V1.00
0x03

工作模式介绍

继电器支持多种模式控制,每个通道支持独立设置控制模式:

Modbus-POE-ETH-Relay-B-details-15.jpg
Modbus-POE-ETH-Relay-B-details-17.jpg

读取继电器控制模式

发送码:01 03 10 00 00 08 40 CC

字段 含义 备注
01 设备地址 固定0x01
03 03指令 读取保持寄存器
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8输入通道
00 08 寄存器数量 读取寄存器数量,最多8个通道
40 CC CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 03 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E4 59

字段 含义 备注
01 设备地址 固定0x01
03 03指令 读保持寄存器
10 字节数 返回状态信息的所有字节数。
00 00
……
00 00
控制模式 表示1 - 8 继电器控制模式,0x0000~0x0002表示三种控制模式
0x0000:正常模式,继电器受指令直接控制;
0x0001:联动模式,继电器状态和对应输入通道状态一致;
0x0002:翻转模式,输入通道输入一个脉冲对应的继电器状态翻转一次
0x0002:跳变模式,输入通道电平跳变一次对应的继电器状态翻转一次
E4 59 CRC16 前 6 字节数据的 CRC16 校验和

示例[1号地址设备]:

读取1-8号继电器控制模式 : 01 03 10 00 00 08 40 CC 
读取 1号继电器控制模式 : 01 03 10 00 00 01 80 CA
读取 2号继电器控制模式 : 01 03 10 01 00 01 D1 0A
读取3-5号继电器控制模式 : 01 03 10 02 00 03 A0 CB

设置单继电器控制模式

发送码:01 06 10 00 00 01 4C CA

字段 含义 备注
01 设备地址 固定0x01
06 06指令 写单个寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8通道继电器控制模式
00 01 控制模式 表示1 - 8 继电器控制模式,0x0000~0x0002表示三种控制模式
0x0000:正常模式:继电器受指令直接控制;
0x0001:联动模式,继电器状态和对应输入通道状态一致;
0x0002:翻转模式,输入通道输入一个脉冲对应的继电器状态翻转一次
4C CA CRC16 前6字节数据的CRC16校验和
注意:除了联动模式外,其他模式都同时支持通过指令控制继电器。

返回码: 01 06 10 00 00 01 4C CA

字段 含义 备注
01 设备地址 固定0x01
06 06指令 写单个寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8通道继电器控制模式
00 01 控制模式 继电器控制模式,0x0000~0x0002表示三种控制模式
4C CA CRC16 前6字节数据的CRC16校验和

示例[1号地址设备]:

设置1继电器为联动模式 : 01 06 10 00 00 01 4C CA
设置2继电器为翻转模式 : 01 06 10 01 00 02 5D 0B

设置多继电器控制模式

发送码:01 10 10 00 00 08 10 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 7C B1

字段 含义 备注
01 设备地址 固定0x01
10 写多寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8通道继电器控制模式
00 08 寄存器数量 设置寄存器数量,最多8个通道
10 字节数量 设置输出字节数
00 01
……
00 01
控制模式 表示1 - 8 继电器控制模式,0x0000~0x0003表示四种控制模式
0x0000:正常模式:继电器受指令直接控制;
0x0001:联动模式,继电器状态和对应输入通道状态一致;
0x0002:翻转模式,输入通道输入一个脉冲对应的继电器状态翻转一次
0x0003:跳变模式,输入通道输入状态改变一次对应的继电器状态翻转一次
7C B1 CRC16 前6字节数据的CRC16校验和
注意:除了联动模式外,其他模式都同时支持通过指令控制继电器。

返回码: 01 10 10 00 00 08 C5 0F

字段 含义 备注
01 设备地址 固定0x01
10 写多寄存器指令
10 00 寄存器起始地址 0x1000 - 0x1007对应1~8通道继电器控制模式
00 08 寄存器数量 设置寄存器数量,最多8个通道
C5 0F CRC16 前6字节数据的CRC16校验和

示例[1号地址设备]:

设置1-8通道继电器为正常模式: 01 10 10 00 00 08 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0B 5C
设置1-8通道继电器为联动模式: 01 10 10 00 00 08 10 00 01 00 01 00 01 00 01 00 01 00 01 00 01 00 01 7C B1
设置3-5通道继电器为翻转模式: 01 10 10 02 00 03 06 00 02 00 02 00 02 4A 4B

控制单个继电器

注意:通过指令控制继电器,须模块工作在正常模式翻转模式

发送码:01 05 00 00 FF 00 8C 3A

字段 含义 备注
01 设备地址 固定0x01
05 05指令 控制继电器指令
00 00 地址 要控制继电器的寄存器地址,0x0000 - 0x0008
FF 00 指令 0xFF00:继电器开启;
0x0000:继电器关闭;
0x5500:继电器翻转;
8C 3A CRC16 前6字节数据的CRC16校验和

返回码: 01 05 00 00 FF 00 8C 3A

字段 含义 备注
01 设备地址 固定0x01
05 05指令 控制继电器指令
00 00 地址 要控制继电器寄存器地址,0x0000-0x0008
FF 00 指令 0xFF00:继电器开启;
0x0000:继电器关闭;
0x5500:继电器翻转;
8C 3A CRC16 前6字节数据的CRC16校验和

示例[1号地址设备]:

0号继电器开启 : 01 05 00 00 FF 00 8C 3A
0号继电器关闭 : 01 05 00 00 00 00 CD CA
1号继电器开启 : 01 05 00 01 FF 00 DD FA
1号继电器关闭 : 01 05 00 01 00 00 9C 0A
2号继电器开启 : 01 05 00 02 FF 00 2D FA
2号继电器关闭 : 01 05 00 02 00 00 6C 0A
3号继电器开启 : 01 05 00 03 FF 00 7C 3A
3号继电器关闭 : 01 05 00 03 00 00 3D CA
0号继电器翻转 : 01 05 00 00 55 00 F2 9A
1号继电器翻转 : 01 05 00 01 55 00 A3 5A
2号继电器翻转 : 01 05 00 02 55 00 53 5A
3号继电器翻转 : 01 05 00 03 55 00 02 9A

控制全部继电器

注意:通过指令控制继电器,须模块工作在正常模式翻转模式

发送码:01 05 00 FF FF 00 BC 0A

字段 含义 备注
01 设备地址 固定0x01
05 05指令 控制继电器指令
00 FF 地址 固定0x00FF
FF 00 指令 0xFF00:继电器开启;
0x0000:继电器关闭;
0x5500:继电器翻转;
BC 0A CRC16 前6字节数据的CRC16校验和

返回码: 01 05 00 FF FF 00 BC 0A

字段 含义 备注
01 设备地址 固定0x01
05 05指令 控制继电器指令
00 FF 地址 固定0x00FF
FF 00 指令 0xFF00:继电器开启;
0x0000:继电器关闭;
0x5500:继电器翻转;
BC 0A CRC16 前6字节数据的CRC16校验和

示例[1号地址设备]:

全部继电器开启 : 01 05 00 FF FF 00 BC 0A
全部继电器关闭 : 01 05 00 FF 00 00 FD FA
全部继电器翻转 : 01 05 00 FF 55 00 C2 AA

读取继电器状态

发送码:01 01 00 00 00 08 3D CC

字段 含义 备注
01 设备地址 固定0x01
01 01指令 查询继电器状态指令
00 00 起始地址 继电器起始地址,0x0000-0x0008
00 08 继电器数量 不能超过最大继电器数量
3D CC CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 01 01 00 51 88

字段 含义 备注
01 设备地址 固定0x01
01 01指令 查询继电器状态指令
01 字节数 返回状态信息的所有字节数。
00 查询的状态 返回的继电器状态
Bit0:起始继电器状态;
Bit1:下个继电器转态,
依次类推,高端空闲位则为零
8C 35 CRC16 前 6 字节数据的 CRC16 校验和

示例[1号地址设备]:

发送 : 01 01 00 00 00 08 3D CC   //查询全部继电器
返回 : 01 01 01 00 51 88         //全部继电器关闭
发送 : 01 01 00 02 00 01 5C 0A   //查询2号继电器
返回 : 01 01 01 01 90 48         //1号继电器开启
发送 : 01 01 00 01 00 03 2D CB   //查询1,2,3号继电器状态
返回 : 01 01 01 05 91 8B         //1、3号继电器开启,2号继电器关闭

写继电器状态

发送码:01 0F 00 00 00 08 01 FF BE D5

字段 含义 备注
01 设备地址 固定0x01
0F 0F指令 写继电器状态指令
00 00 继电器起始地址 继电器起始地址,0x0000-0x0008
00 08 继电器数量 写入继电器数量
01 字节数量 状态字节数
FF 继电器状态 Bit0:起始继电器状态;
Bit1:下个继电器转态,
依次类推,高端空闲位则为零
BE D5 CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 0F 00 00 00 01 94 0B

字段 含义 备注
01 设备地址 固定0x01
0F 0F指令 全部寄存器控制指令
00 00 地址 继电器起始地址
00 08 继电器数量 写入继电器数量
54 0D CRC16 前 6 字节数据的 CRC16 校验和

示例[1号地址设备]:

继电器全部开启 : 01 0F 00 00 00 08 01 FF BE D5
继电器全部关闭 : 01 0F 00 00 00 08 01 00 FE 95
0-1开; 3-7关   : 01 0F 00 00 00 08 01 03 BE 94
1,2,3继电器开启  : 01 0F 00 01 00 03 01 07 F3 55

继电器闪开闪闭指令

发送码:01 05 02 00 00 07 8D B0

字段 含义 备注
01 设备地址 固定0x01
05 05指令 单个控制指令
02 指令 02 为是闪开指令,04为闪闭指令
00 继电器地址 要控制的继电器地址,0x00~0x08
00 07 间隔时间 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
8D B0 CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 05 02 00 00 07 8D B0

字段 含义 备注
01 设备地址 固定0x01
05 05指令 单个控制指令
02 指令 02 为是闪开指令,04为闪闭指令
00 继电器地址 要控制继电器地址,0x00~0x08
00 07 间隔时间 延时时间为数据*100ms
数值:0x0007,延时:7*100MS = 700MS
8D B0 CRC16 前 6 字节数据的 CRC16 校验和

备注:

闪开闪闭的时间最大设置为0x7FFF

示例[1号地址设备]:

0号继电器闪开 : 01 05 02 00 00 07 8D B0  //700MS = 7*100MS = 700MS
1号继电器闪开 : 01 05 02 01 00 08 9C 74  //800MS
0号继电器闪闭 : 01 05 04 00 00 05 0C F9  //500MS
1号继电器闪闭 : 01 05 04 01 00 06 1D 38  //600MS

读取输入状态

发送码:01 02 00 00 00 08 79 CC

字段 含义 备注
01 设备地址 固定0x01
02 02指令 读取输入状态指令
00 00 输入起始地址 输入起始地址,0x0000-0x0008
00 08 寄存器数量 读取输入通道数量,不能超过最大输入通道
79 CC CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 02 01 00 A1 88

字段 含义 备注
01 设备地址 固定0x01
02 02指令 读取输入状态指令
01 字节数 返回状态信息的所有字节数。
00 查询的状态 返回的输入状态
Bit0:起始输入通道状态;
Bit1:下个输入通道转态,
依次类推,高端空闲位则为零
A1 88 CRC16 前 6 字节数据的 CRC16 校验和

示例[1号地址设备]:

发送 : 01 02 00 00 00 08 79 CC    //查询全部输入通道
返回 : 01 01 01 00 51 88          //输入全部没有触发
发送 : 01 02 00 00 00 08 79 CC    //查询全部输入通道
返回 : 01 02 01 41 61 B8          //1、7通道输入触发,其余通道没有触发
发送 : 01 02 00 01 00 02 A8 0B    //查询1,2,3输入通道
返回 : 01 02 01 05 61 8B          //1,2通道输入触发,2通道没有触发


读取软件版本指令

发送码:01 03 80 00 00 01 AD CA

字段 含义 备注
01 设备地址 固定0x01
03 03指令 读保持寄存器
80 00 指令寄存器 0x8000为读取软件版本
00 01 字节数 固定0x0001
AD CA CRC16 前 6 字节数据的 CRC16 校验和

返回码:01 03 02 00 64 B9 AF

字段 含义 备注
01 设备地址 固定0x01
03 03指令 读保持寄存器
02 字节数 返回字节数
00 64 软件版本 转为十进制然后小数点左移两位即表示软件版本
0x0064 = 100 = V1.00
F0 B8 CRC16 前 6 字节数据的 CRC16 校验和

示例:

发送:01 03 80 00 00 01 AD CA
返回:01 03 02 00 C8 B9 D2       //0x00C8 = 200 =V2.00