- 1. 一、产品简介
- 2. 二、核心Function与特点
- 3. 1. 硬件优势
- 4. 2. 灵活扩展
- 5. 3. 小白友好
- 6. 三、技术参数
- 7. 四、快速上手指南
- 8. 1. 安装与接线
- 9. 五、协议指令详解
- 10. 私有协议
- 11. 通讯协议说明
- 12. 内部协议
- 13. 1. 指令format
- 14. 上位机function code示例
- 15. 下位机返回function code示例
- 16. 总结
- 17. 进阶玩法
- 18. 上位机配置软件
- 19. 出厂固件Download
- 20. 内核与Function模块使用说明
- 21. 程序示例文件
- 22. 六、Precautions
- 23. 七、Technical Support

版本:V1.1
一、产品简介
W816是一款超小型智能可编程控制器,专为Smart Home、商业照明、农业自动化设计。无需网关,支持8路大功率继电器(每路16A),兼容手机APP、语音控制、定时任务,是家庭和商业Scene的“全能管家”。
购买产品:https://www.modbus.cn/product/30890.html
二、核心Function与特点
1. 硬件优势
- 超小体积:仅占4个空开位,轻松装入家庭电箱。
- 大功率负载:每路支持16A阻性负载(如灯具、插座),8A感性负载(如电机)。
- 工业级设计:-20℃~80℃宽温工作,适应复杂环境。
2. 灵活扩展
- 免线拼接:同层导轨安装,多个模块直接拼接扩展。
- 全协议兼容:支持Modbus、TCP/IP、MQTT等协议,对接Smart Home平台无压力。
- 无线转有线:支持WiFi/433M/315M转485总线,老旧设备秒变智能。
3. 小白友好
- 拨码设address:无需软件,拨动switch即可设置设备ID(1~32)。
- 一键恢复:误Operation可恢复出厂设置,Operation零门槛。
本模块上有4位侧拨switch,出厂address默认为0,可设置address为0-15,设置如下图

三、技术参数
| 项目 | 规格 |
|---|---|
| 工作电压 | DC 12V(可定制12-24V) |
| 负载能力 | 阻性负载≤16A,感性负载≤8A |
| 通讯方式 | 485总线(标配)、RJ45网口、WiFi、433M、GPRS |
| 输入路数 | 8路光电隔离输入(兼容干接点) |
| 环境temperature | -20℃~80℃ |
| 尺寸 | 92.5mm × 76.2mm × 60.5mm |
四、快速上手指南
1. 安装与接线
- 固定模块:卡入标准DN35导轨,确保电源Close。
- connect负载:将灯具、curtain电机等接入继电器输出端子(OUT1~OUT8)。
- 接入电源:使用12V适配器供电(正负极勿接反)。
- 联网配置:
- 有线:
Run指示灯状态:上电绿灯闪烁后常亮,与服务器connect成功后冰蓝色。
Rj45指示灯状态:与网络connect成功后绿灯常亮,橙色灯闪烁。

Wiring topology图

接口说明:
1、V=12V正极输入
2、G=12V负极输入
3、A B=485接口
4、① ② ③ ④ ⑤ ⑥ ⑦ ⑧=8组继电器输出
5、RJ45/SMA=网络通讯
6、G 1 2 3 4 5 6 7 8=干接点输入(例如G与1connect触发第一路继电器)
7、RUN=运行指示灯(Not connectedtcp为绿色 connecttcp为冰蓝色)
五、协议指令详解
私有协议
通讯协议说明
协议基本信息
- Baud rate:9600
- 默认address:
1A CA 27 87 00(出厂测试默认address) - 通用address:
AA AA AA AA AA(用于特殊Operation)
协议format
协议data帧由以下部分组成:
- address:5 个byte,标识模块address。
- 指令区:根据Operation不同,Length和内容各异。
- checksum:固定为
0F
FunctionOperation说明
1. 查询模块address
- 指令format:
5个byteaddress + 56 56 56 0F - Function:查询模块的当前address。
- 示例:
1A CA 27 87 00 56 56 56 0F
2. 修改address
- 说明:前 4 个byte固定,第 5 个byte通过拨码switch更改。
- 示例:
1A CA 27 87 XX (XX 为拨码设置的新address)
3. 查询模块状态
- 指令format:
5个byteaddress + 86 86 86 0F - 返回format:
5个byteaddress + 00 00 00 00 00 00 00 00 0F(8 个switch状态,00 表示Close,01 表示打开) - 示例:
查询指令:1A CA 27 87 00 86 86 86 0F
返回示例:1A CA 27 87 00 00 01 00 01 00 01 00 0F (假设switch状态为:关-开-关-开-关-开-关-开)
4. 恢复出厂设置
- 指令format:
5个byteaddress + 96 96 96 0F - Function:擦除 K1-K8 存储区,恢复默认设置。
- 示例:
1A CA 27 87 00 96 96 96 0F
5. 强制设置 K1-K8 为点动模式
- 指令format:
5个byteaddress + A6 A6 A6 0F - 说明:
- 默认为长按 5 秒自动Switch为翻转模式。
- 设置前需先恢复出厂设置。
- 示例:
1A CA 27 87 00 A6 A6 A6 0F
6. Open/Close K1-K8 Input data存储Function
- Open:
- 指令format:
5个byteaddress + 56 56 56 0F - LED 表示:闪烁 1 次后保持常亮。
- Close:
- 指令format:
5个byteaddress + 46 46 46 0F - LED 表示:闪烁 2 次后保持熄灭。
- 示例:
Open:1A CA 27 87 00 56 56 56 0F
Close:1A CA 27 87 00 46 46 46 0F
7. K1-K8 开/关存储指令
- 指令format:
- Open某路:
address + XX XX XX XX XX ... XX(XX 为特定值) - Close某路:
address + XX XX XX XX XX ... XX(XX 为特定值) - 具体指令: Operation Open指令值 Close指令值 K1 开/关
0010K2 开/关2030K3 开/关4050K4 开/关6070K5 开/关8090K6 开/关A0B0K7 开/关C0D0K8 开/关E0F0 - 示例:
K1 Open:1A CA 27 87 00 00 XX XX XX XX XX 0F
K1 Close:1A CA 27 87 00 10 XX XX XX XX XX 0F
8. 单路控制
- 指令format:
- 翻转:
address + 00 00 XX 02 0F(XX 为路数 – 1) - 只开:
address + 00 00 XX 01 0F(XX 为路数 – 1) - 只关:
address + 00 00 XX 00 0F(XX 为路数 – 1) - 示例:
第一路翻转:1A CA 27 87 00 00 00 02 0F
第一路只开:1A CA 27 87 00 00 00 01 0F
第一路只关:1A CA 27 87 00 00 00 00 0F
第二路翻转:1A CA 27 87 00 00 01 02 0F
第二路只开:1A CA 27 87 00 00 01 01 0F
第二路只关:1A CA 27 87 00 00 01 00 0F
第三路翻转:1A CA 27 87 00 00 02 02 0F
第三路只开:1A CA 27 87 00 00 02 01 0F
第三路只关:1A CA 27 87 00 00 02 00 0F
第四路翻转:1A CA 27 87 00 00 03 02 0F
第四路只开:1A CA 27 87 00 00 03 01 0F
第四路只关:1A CA 27 87 00 00 03 00 0F
第五路翻转:1A CA 27 87 00 00 04 02 0F
第五路只开:1A CA 27 87 00 00 04 01 0F
第五路只关:1A CA 27 87 00 00 04 00 0F
第六路翻转:1A CA 27 87 00 00 05 02 0F
第六路只开:1A CA 27 87 00 00 05 01 0F
第六路只关:1A CA 27 87 00 00 05 00 0F
第七路翻转:1A CA 27 87 00 00 06 02 0F
第七路只开:1A CA 27 87 00 00 06 01 0F
第七路只关:1A CA 27 87 00 00 06 00 0F
第八路翻转:1A CA 27 87 00 00 07 02 0F
第八路只开:1A CA 27 87 00 00 07 01 0F
第八路只关:1A CA 27 87 00 00 07 00 0F
9. 全路控制
- 指令format:
- 1-8 路fully open:
address + 01 01 77 88 0F - 1-8 路Close all:
address + 01 02 77 88 0F - 示例:
1-8 路fully open:1A CA 27 87 00 01 01 77 88 0F
1-8 路Close all:1A CA 27 87 00 01 02 77 88 0F
10. 通用fully open/Close all
- 指令format:
- 通用fully open:
通用address + 30 77 88 0F - 通用Close all:
通用address + 30 77 88 0F - 示例:
通用fully open:AA AA AA AA AA 30 77 88 0F
通用Close all:AA AA AA AA AA 30 77 88 0F
内部协议
1. 指令format
所有指令均为8byte,format如下:
[0x55][address][function code][data1][data2][data3][data4][checksum]
- checksum = 前7byte相加,取最后两位(如
55+01+32+00+00+00+01=89)。
Baud rate 9600,8 个data bit,1 个stop bit,无check digit。
上位机senddata帧format:
| data头 | address | function code | data area | checksum | |||
| 1 byte0x55 | 1 byte | 1 byte | 第 1 byte | 第 2 byte | 第 3 byte | 第 4 byte | 1 byte,将前面的 7 个byte相加,取后 8 位得到 |
上位机senddata帧说明:
| function code | 说明 | data area内容(4 个byte) |
| 0x10 | 读取状态 | 0x00,0x00,0x00,0x00 |
| 0x11 | 断开某路 | 第 4 个byte代表断开第几路继电器,前 3 个byte为 0。 |
| 0x12 | 吸合某路 | 第 4 个byte代表吸合第几路继电器,其他为 0。 |
| 0x13 | 命令执行 | data area域共 4 个byte,每个byte 8 位,共 32 位。最多可代表 32 路switch量的状态。最后一个byte的第 0 位代表第 1 路,第 1 个byte的最高位代表最后一路。 |
| 0x14 | 组断开 | data area域共 4 个byte,每个byte 8 位,共 32 位。最多代表对 32路的Operation,1 代表断开 0 代表保持原来状态。最后 1 个byte的第0 位(BIT0)代表第 1 路,依次类推。 |
| 0x15 | 组吸合 | data area域共 4 个byte,每个byte 8 位,共 32 位。最多代表对 32路的Operation,1 代表吸合 0 代表保持原来状态。最后 1 个byte的第0 位(BIT0)代表第 1 路,依次类推。 |
| 0x16 | 组翻转 | data area域共 4 个byte,每个byte 8 位,共 32 位。最多代表对 32路的Operation,1 代表翻转 0 代表保持原来状态。最后 1 个byte的第0 位(BIT0)代表第 1 路,依次类推。 |
| 0x20 | 翻转某路 | data中的第 4 个byte代表翻转第几路继电器,其他为 0。 |
| 0x21 | 点动闭合 | data的第 1、2、3 byte代表time(高位byte在前,单位 ms), 第 4 bytes代表第几路 |
| 0x22 | 点动断开 | data的第 1、2、3 byte代表time(高位byte在前,单位 ms),第 4 bytes代表第几路 |
| 0x30 | 翻转某路 | 参考function code 0x20,但是下位机不返回data,指令可以连续send。 |
| 0x31 | 断开某路 | 参考function code 0x11,但是下位机不返回data,指令可以连续send。 |
| 0x32 | 吸合某路 | 参考function code 0x12,但是下位机不返回data,指令可以连续send。 |
| 0x33 | 命令执行 | 参考function code 0x13,但是下位机不返回data,指令可以连续send。 |
| 0x34 | 组断开 | 参考function code 0x14,但是下位机不返回data,指令可以连续send。 |
| 0x35 | 组吸合 | 参考function code 0x15,但是下位机不返回data,指令可以连续send。 |
| 0x36 | 组翻转 | 参考function code 0x16,但是下位机不返回data,指令可以连续send。 |
| 0x37 | 点动闭合 | 参考function code 0x21,但是下位机不返回data,指令可以连续send。 |
| 0x38 | 点动断开 | 参考function code 0x22,但是下位机不返回data,指令可以连续send。 |
| 0x40 | 读address | 0x00,0x00,0x00,0x00Precautions,使用广播address 245 来读取模块address。 |
| 0x41 | 写address | data中的第 4 个byte代表模块的新address。Precautions:上电 10 秒钟之内允许写address,如果有拨码switch,需要将拨码switch拨到 0 的位置。 |
| 0x70 | 读变量 | 前 3 个byte为 0x00 0x00 0x00。第 4 个byte代表变量的Serial number |
| 0x71 | 写变量 | 前 3 个byte代表变量的值,高位byte在前。第 4 个byte代表变量的Serial number |
下位机返回data帧format:
| data头 | address | function code | data area | checksum | |||
| 1 byte0x22 | 1 byte | 1 byte | 第 1 byte | 第 2 byte | 第 3 byte | 第 4 byte | 1 byte,将前面的7 个byte相加 |
下位机返回data帧说明:
| function code | function code说明 | data area内容(4 个byte) |
| 0x10 | 读取状态 | 继电器输出板或者输入检测板:data area域 4 个byte,每个byte 8 位,共 32 位。代表 32 路的状态。最后 1 个byte的第 0 位代表第 1 路,依次类推。 输入输出板:第 1、2 个byte代表输入的状态,第 3、4个byte代表输出的状态。 |
| 0x11 | 断开某一路 | |
| 0x12 | 吸合某一路 | |
| 0x13 | 命令执行 | |
| 0x14 | 组断开 | |
| 0x15 | 组吸合 | |
| 0x16 | 组翻转 | |
| 0x40 | 返回模块address | |
| 0x70 | 读内部变量 | 前 3 个byte代表内部变量的值,高位byte在前。第 4 个byte代表内部变量是Serial numberPrecautions:此function code只适用于支持内核可编程的模块 |
| 0x71 | 写内部变量 |
广播address说明:
个别情况下,需要快速的打开或者Close总线上所有继电器,这个时候使用广播address, 广播address的值为 245,也就是说,向address 245 send的指令,总线上的每一个address都会执行,Close广播address 245 的继电器,也就是Close总线上的所有继电器,同样的道
理,打开广播address 245 的继电器,也就是打开总线上所有的继电器。
0x30-0x38 function code为指令连发function code,因为这些function code没有回码,所以可以连续send,因此可以更快速的send指令。为了让指令更快速的send,引入了data连发指令。
很多情况下,用户不需要查询或知道继电器板的当前状态,只需要按照自己的要求来打开或者Close某几路,这个时候使用无回码指令就会很方便。
无回码指令表(以address 1 为例,指令可连续send):
| 吸合第 1 路 55 01 32 00 00 00 01 89 | 断开第 1 路 55 01 31 00 00 00 01 88 |
| 吸合第 2 路 55 01 32 00 00 00 02 8A | 断开第 2 路 55 01 31 00 00 00 02 89 |
| 吸合第 3 路 55 01 32 00 00 00 03 8B | 断开第 3 路 55 01 31 00 00 00 03 8A |
| 吸合第 4 路 55 01 32 00 00 00 04 8C | 断开第 4 路 55 01 31 00 00 00 04 8B |
| 吸合第 5 路 55 01 32 00 00 00 05 8D | 断开第 5 路 55 01 31 00 00 00 05 8C |
| 吸合第 6 路 55 01 32 00 00 00 06 8E | 断开第 6 路 55 01 31 00 00 00 06 8D |
| 吸合第 7 路 55 01 32 00 00 00 07 8F | 断开第 7 路 55 01 31 00 00 00 07 8E |
| 吸合第 8 路 55 01 32 00 00 00 08 90 | 断开第 8 路 55 01 31 00 00 00 08 8F |
| 吸合第 9 路 55 01 32 00 00 00 09 91 | 断开第 9 路 55 01 31 00 00 00 09 90 |
| 吸合第 10 路 55 01 32 00 00 00 0A 92 | 断开第 10 路 55 01 31 00 00 00 0A 91 |
| 吸合第 11 路 55 01 32 00 00 00 0B 93 | 断开第 11 路 55 01 31 00 00 00 0B 92 |
| 吸合第 12 路 55 01 32 00 00 00 0C 94 | 断开第 12 路 55 01 31 00 00 00 0C 93 |
| 吸合第 13 路 55 01 32 00 00 00 0D 95 | 断开第 13 路 55 01 31 00 00 00 0D 94 |
| 吸合第 14 路 55 01 32 00 00 00 0E 96 | 断开第 14 路 55 01 31 00 00 00 0E 95 |
| 吸合第 15 路 55 01 32 00 00 00 0F 97 | 断开第 15 路 55 01 31 00 00 00 0F 96 |
| 吸合第 16 路 55 01 32 00 00 00 10 98 | 断开第 16 路 55 01 31 00 00 00 10 97 |
| 吸合第 17 路 55 01 32 00 00 00 11 99 | 断开第 17 路 55 01 31 00 00 00 11 98 |
| 吸合第 18 路 55 01 32 00 00 00 12 9A | 断开第 18 路 55 01 31 00 00 00 12 99 |
| 吸合第 19 路 55 01 32 00 00 00 13 9B | 断开第 19 路 55 01 31 00 00 00 13 9A |
| 吸合第 20 路 55 01 32 00 00 00 14 9C | 断开第 20 路 55 01 31 00 00 00 14 9B |
| 吸合第 21 路 55 01 32 00 00 00 15 9D | 断开第 21 路 55 01 31 00 00 00 15 9C |
| 吸合第 22 路 55 01 32 00 00 00 16 9E | 断开第 22 路 55 01 31 00 00 00 16 9D |
| 吸合第 23 路 55 01 32 00 00 00 17 9F | 断开第 23 路 55 01 31 00 00 00 17 9E |
| 吸合第 24 路 55 01 32 00 00 00 18 A0 | 断开第 24 路 55 01 31 00 00 00 18 9F |
| 吸合第 25 路 55 01 32 00 00 00 19 A1 | 断开第 25 路 55 01 31 00 00 00 19 A0 |
| 吸合第 26 路 55 01 32 00 00 00 1A A2 | 断开第 26 路 55 01 31 00 00 00 1A A1 |
| 吸合第 27 路 55 01 32 00 00 00 1B A3 | 断开第 27 路 55 01 31 00 00 00 1B A2 |
| 吸合第 28 路 55 01 32 00 00 00 1C A4 | 断开第 28 路 55 01 31 00 00 00 1C A3 |
| 吸合第 29 路 55 01 32 00 00 00 1D A5 | 断开第 29 路 55 01 31 00 00 00 1D A4 |
| 吸合第 30 路 55 01 32 00 00 00 1E A6 | 断开第 30 路 55 01 31 00 00 00 1E A5 |
| 吸合第 31 路 55 01 32 00 00 00 1F A7 | 断开第 31 路 55 01 31 00 00 00 1F A6 |
| 吸合第 32 路 55 01 32 00 00 00 20 A8 | 断开第 32 路 55 01 31 00 00 00 20 A7 |
| 吸合All 55 01 33 FF FF FF FF 85 | 断开All 55 01 33 00 00 00 00 89 |
好的,我将为每个function code提供一个具体的Sample data帧,以帮助更好地理解协议的使用。以下是详细的function code示例:
上位机function code示例
0x10 – 读取状态
- Function描述:读取继电器的状态。
- data area:
0x00, 0x00, 0x00, 0x00 - Sample data帧:
data头:0x55
address:0x01
function code:0x10
data area:0x00, 0x00, 0x00, 0x00
checksum:0x55 + 0x01 + 0x10 + 0x00 + 0x00 + 0x00 + 0x00 = 0x66
完整data帧:55 01 10 00 00 00 00 66
0x11 – 断开某路
- Function描述:断开指定的继电器路。
- data area:前 3 byte为
0x00,第 4 bytes为断开的继电器路数(例如,断开第 3 路)。 - Sample data帧:
data头:0x55
address:0x01
function code:0x11
data area:0x00, 0x00, 0x00, 0x03
checksum:0x55 + 0x01 + 0x11 + 0x00 + 0x00 + 0x00 + 0x03 = 0x6A
完整data帧:55 01 11 00 00 00 03 6A
0x12 – 吸合某路
- Function描述:吸合指定的继电器路。
- data area:前 3 byte为
0x00,第 4 bytes为吸合的继电器路数(例如,吸合第 5 路)。 - Sample data帧:
data头:0x55
address:0x01
function code:0x12
data area:0x00, 0x00, 0x00, 0x05
checksum:0x55 + 0x01 + 0x12 + 0x00 + 0x00 + 0x00 + 0x05 = 0x6D
完整data帧:55 01 12 00 00 00 05 6D
0x13 – 命令执行
- Function描述:控制多路继电器的状态。
- data area:4 bytes,每byte 8 位,共 32 位,代表 32 路继电器的状态(1 表示吸合,0 表示断开)。
- Sample data帧:
data头:0x55
address:0x01
function code:0x13
data area:0x00, 0x00, 0x00, 0x0F (吸合第 1-4 路)
checksum:0x55 + 0x01 + 0x13 + 0x00 + 0x00 + 0x00 + 0x0F = 0x73
完整data帧:55 01 13 00 00 00 0F 73
0x14 – 组断开
- Function描述:断开指定的多路继电器。
- data area:4 bytes,每byte 8 位,共 32 位,1 表示断开,0 表示保持原状态。
- Sample data帧:
data头:0x55
address:0x01
function code:0x14
data area:0x00, 0x00, 0x00, 0x01 (断开第 1 路)
checksum:0x55 + 0x01 + 0x14 + 0x00 + 0x00 + 0x00 + 0x01 = 0x6B
完整data帧:55 01 14 00 00 00 01 6B
0x15 – 组吸合
- Function描述:吸合指定的多路继电器。
- data area:4 bytes,每byte 8 位,共 32 位,1 表示吸合,0 表示保持原状态。
- Sample data帧:
data头:0x55
address:0x01
function code:0x15
data area:0x00, 0x00, 0x00, 0x02 (吸合第 2 路)
checksum:0x55 + 0x01 + 0x15 + 0x00 + 0x00 + 0x00 + 0x02 = 0x6C
完整data帧:55 01 15 00 00 00 02 6C
0x16 – 组翻转
- Function描述:翻转指定的多路继电器。
- data area:4 bytes,每byte 8 位,共 32 位,1 表示翻转,0 表示保持原状态。
- Sample data帧:
data头:0x55
address:0x01
function code:0x16
data area:0x00, 0x00, 0x00, 0x04 (翻转第 3 路)
checksum:0x55 + 0x01 + 0x16 + 0x00 + 0x00 + 0x00 + 0x04 = 0x6E
完整data帧:55 01 16 00 00 00 04 6E
0x20 – 翻转某路
- Function描述:翻转指定的继电器路。
- data area:前 3 byte为
0x00,第 4 bytes为翻转的继电器路数(例如,翻转第 7 路)。 - Sample data帧:
data头:0x55
address:0x01
function code:0x20
data area:0x00, 0x00, 0x00, 0x07
checksum:0x55 + 0x01 + 0x20 + 0x00 + 0x00 + 0x00 + 0x07 = 0x7D
完整data帧:55 01 20 00 00 00 07 7D
0x21 – 点动闭合
- Function描述:点动闭合指定的继电器路。
- data area:前 3 byte为time(单位 ms,高位在前),第 4 bytes为继电器路数(例如,闭合第 6 路,time 1000ms)。
- Sample data帧:
data头:0x55
address:0x01
function code:0x21
data area:0x00, 0x03, 0xE8, 0x06 (1000ms,第 6 路)
checksum:0x55 + 0x01 + 0x21 + 0x00 + 0x03 + 0xE8 + 0x06 = 0x88
完整data帧:55 01 21 00 03 E8 06 88
0x22 – 点动断开
- Function描述:点动断开指定的继电器路。
- data area:前 3 byte为time(单位 ms,高位在前),第 4 bytes为继电器路数(例如,断开第 9 路,time 500ms)。
- Sample data帧:
data头:0x55
address:0x01
function code:0x22
data area:0x00, 0x01, 0xF4, 0x09 (500ms,第 9 路)
checksum:0x55 + 0x01 + 0x22 + 0x00 + 0x01 + 0xF4 + 0x09 = 0x7B
完整data帧:55 01 22 00 01 F4 09 7B
0x30 – 翻转某路(连发)
- Function描述:翻转指定的继电器路,无返回data。
- data area:前 3 byte为
0x00,第 4 bytes为翻转的继电器路数(例如,翻转第 12 路)。 - Sample data帧:
data头:0x55
address:0x01
function code:0x30
data area:0x00, 0x00, 0x00, 0x0C
checksum:0x55 + 0x01 + 0x30 + 0x00 + 0x00 + 0x00 + 0x0C = 0x8E
完整data帧:55 01 30 00 00 00 0C 8E
0x31 – 断开某路(连发)
- Function描述:断开指定的继电器路,无返回data。
- data area:前 3 byte为
0x00,第 4 bytes为断开的继电器路数(例如,断开第 15 路)。 - Sample data帧:
data头:0x55
address:0x01
function code:0x31
data area:0x00, 0x00, 0x00, 0x0F
checksum:0x55 + 0x01 + 0x31 + 0x00 + 0x00 + 0x00 + 0x0F = 0x91
完整data帧:55 01 31 00 00 00 0F 91
0x32 – 吸合某路(连发)
- Function描述:吸合指定的继电器路,无返回data。
- data area:前 3 byte为
0x00,第 4 bytes为吸合的继电器路数(例如,吸合第 20 路)。 - Sample data帧:
data头:0x55
address:0x01
function code:0x32
data area:0x00, 0x00, 0x00, 0x14
checksum:0x55 + 0x01 + 0x32 + 0x00 + 0x00 + 0x00 + 0x14 = 0x9C
完整data帧:55 01 32 00 00 00 14 9C
0x33 – 命令执行(连发)
- Function描述:控制多路继电器的状态,无返回data。
- data area:4 bytes,每byte 8 位,共 32 位,代表 32 路继电器的状态(1 表示吸合,0 表示断开)。
- Sample data帧:
data头:0x55
address:0x01
function code:0x33
data area:0x00, 0x00, 0x00, 0x1F (吸合第 1-5 路)
checksum:0x55 + 0x01 + 0x33 + 0x00 + 0x00 + 0x00 + 0x1F = 0xA3
完整data帧:55 01 33 00 00 00 1F A3
0x34 – 组断开(连发)
- Function描述:断开指定的多路继电器,无返回data。
- data area:4 bytes,每byte 8 位,共 32 位,1 表示断开,0 表示保持原状态。
- Sample data帧:
data头:0x55
address:0x01
function code:0x34
data area:0x00, 0x00, 0x00, 0x08 (断开第 4 路)
checksum:0x55 + 0x01 + 0x34 + 0x00 + 0x00 + 0x00 + 0x08 = 0x98
完整data帧:55 01 34 00 00 00 08 98
0x35 – 组吸合(连发)
- Function描述:吸合指定的多路继电器,无返回data。
- data area:4 bytes,每byte 8 位,共 32 位,1 表示吸合,0 表示保持原状态。
- Sample data帧:
data头:0x55
address:0x01
function code:0x35
data area:0x00, 0x00, 0x00, 0x10 (吸合第 5 路)
checksum:0x55 + 0x01 + 0x35 + 0x00 + 0x00 + 0x00 + 0x10 = 0x9B
完整data帧:55 01 35 00 00 00 10 9B
0x36 – 组翻转(连发)
- Function描述:翻转指定的多路继电器,无返回data。
- data area:4 bytes,每byte 8 位,共 32 位,1 表示翻转,0 表示保持原状态。
- Sample data帧:
data头:0x55
address:0x01
function code:0x36
data area:0x00, 0x00, 0x00, 0x20 (翻转第 6 路)
checksum:0x55 + 0x01 + 0x36 + 0x00 + 0x0 +0 0x00 + 0x20 = 0xA2
完整data帧:55 01 36 00 00 00 20 A2
0x37 – 点动闭合(连发)
- Function描述:点动闭合指定的继电器路,无返回data。
- data area:前 3 byte为time(单位 ms,高位在前),第 4 bytes为继电器路数(例如,闭合第 8 路,time 2000ms)。
- Sample data帧:
data头:0x55
address:0x01
function code:0x37
data area:0x00, 0x07, 0xD0, 0x08 (2000ms,第 8 路)
checksum:0x55 + 0x01 + 0x37 + 0x00 + 0x07 + 0xD0 + 0x08 = 0xA8
完整data帧:55 01 37 00 07 D0 08 A8
0x38 – 点动断开(连发)
- Function描述:点动断开指定的继电器路,无返回data。
- data area:前 3 byte为time(单位 ms,高位在前),第 4 bytes为继电器路数(例如,断开第 16 路,time 1500ms)。
- Sample data帧:
data头:0x55
address:0x01
function code:0x38
data area:0x00, 0x05, 0xDC, 0x10 (1500ms,第 16 路)
checksum:0x55 + 0x01 + 0x38 + 0x00 + 0x05 + 0xDC + 0x10 = 0xB5
完整data帧:55 01 38 00 05 DC 10 B5
0x40 – 读address
- Function描述:读取模块address。
- data area:
0x00, 0x00, 0x00, 0x00 - Sample data帧:
data头:0x55
address:0xF5 (广播address 245)
function code:0x40
data area:0x00, 0x00, 0x00, 0x00
checksum:0x55 + 0xF5 + 0x40 + 0x00 + 0x00 + 0x00 + 0x00 = 0x8F
完整data帧:55 F5 40 00 00 00 00 8F
0x41 – 写address
- Function描述:写入模块的新address。
- data area:前 3 byte为
0x00,第 4 bytes为新address(例如,新address为 0x02)。 - Sample data帧:
data头:0x55
address:0x01
function code:0x41
data area:0x00, 0x00, 0x00, 0x02
checksum:0x55 + 0x01 + 0x41 + 0x00 + 0x00 + 0x00 + 0x02 = 0x9A
完整data帧:55 01 41 00 00 00 02 9A
0x70 – 读变量
- Function描述:读取内部变量。
- data area:前 3 byte为
0x00,第 4 bytes为变量Serial number(例如,读取Serial number为 1 的变量)。 - Sample data帧:
data头:0x55
address:0x01
function code:0x70
data area:0x00, 0x00, 0x00, 0x01
checksum:0x55 + 0x01 + 0x70 + 0x00 + 0x00 + 0x00 + 0x01 = 0xC7
完整data帧:55 01 70 00 00 00 01 C7
0x71 – 写变量
- Function描述:写入内部变量。
- data area:前 3 byte为变量值(高位在前),第 4 bytes为变量Serial number(例如,写入Serial number为 2 的变量,值为 0x123456)。
- Sample data帧:
data头:0x55
address:0x01
function code:0x71
data area:0x12, 0x34, 0x56, 0x02
checksum:0x55 + 0x01 + 0x71 + 0x12 + 0x34 + 0x56 + 0x02 = 0xA1
完整data帧:55 01 71 12 34 56 02 A1
下位机返回function code示例
0x10 – 读取状态
- Function描述:返回继电器的状态。
- data area:4 bytes,每byte 8 位,共 32 位,代表 32 路继电器的状态(1 表示吸合,0 表示断开)。
- Sample data帧:
data头:0x22
address:0x01
function code:0x10
data area:0x00, 0x00, 0x00, 0x0F (第 1-4 路吸合,其余断开)
checksum:0x22 + 0x01 + 0x10 + 0x00 + 0x00 + 0x00 + 0x0F = 0x42
完整data帧:22 01 10 00 00 00 0F 42
0x40 – 返回模块address
- Function描述:返回模块的当前address。
- data area:4 bytes,返回模块address(例如,address为 0x03)。
- Sample data帧:
data头:0x22
address:0x03
function code:0x40
data area:0x00, 0x00, 0x00, 0x03
checksum:0x22 + 0x03 + 0x40 + 0x00 + 0x00 + 0x00 + 0x03 = 0x68
完整data帧:22 03 40 00 00 00 03 68
0x70 – 读内部变量
- Function描述:返回内部变量的值。
- data area:前 3 byte为变量值(高位在前),第 4 bytes为变量Serial number(例如,Serial number为 1 的变量值为 0x123456)。
- Sample data帧:
data头:0x22
address:0x01
function code:0x70
data area:0x12, 0x34, 0x56, 0x01
checksum:0x22 + 0x01 + 0x70 + 0x12 + 0x34 + 0x56 + 0x01 = 0x8C
完整data帧:22 01 70 12 34 56 01 8C
总结
以上是每个function code的Sample data帧,涵盖了上位机send和下位机返回的所有Scene。每个示例都包含了完整的data帧结构和checksum计算,确保协议的正确性和完整性。如果需要进一步的解释或修改,请随时告诉我!
进阶玩法
内核与Function模块使用说明
一、内核简介
内核是用户Operation模块的核心Tools,用于实现以下Function:
- 输入与输出的映射关系。
- 收发字符串或其他data。
- 使用定时器进行延迟或其他定时处理。
- 内部变量的format转换。
- 其他高级Function。
二、外部输入
外部输入Function允许模块检测外部事件,支持以下触发方式:
- 上升沿触发(断开到闭合)。
- 下降沿触发(闭合到断开)。
- 状态触发(持续条件满足)。
- 单击或双击触发(需设置timeconstant,默认500ms)。
三、输出状态变化
输出状态变化涉及以下内容:
- 指令Operation面板:输出LED指示灯状态。
- 继电器模块:控制继电器的开/关状态。
- MOS输出模块:控制MOS管的switch状态。
- 用户可以控制单路或多路的打开、Close、翻转,或点动Operation。
四、中间继电器
中间继电器是虚拟的继电器,用于:
- 程序控制其开/关状态。
- 检测其上升沿或下降沿。
- 将外部连续事件转化为内部状态变化事件。
五、内部变量
内部变量是有符号变量,用于记录中间data,支持以下Operation:
- 作为输入:与数字比较(大于、小于、等于),用于条件判断。
- 作为输出:存储定时器、time、日期、继电器状态等信息。
- 运算Function:支持加法运算,可作为计数器使用。
六、定时器
- 简介:定时器值为正整数,默认为非0减1定时器。
- 用法:
- 设置定时器初值(如100)。
- 使用定时器值触发其他Operation(如定时器等于80时触发)。
- 示例:每隔100ms,第一路输出翻转一次,并通过data口1send字符串“123”。
七、函数使用说明
- Function:模块包含100个函数,用于增强程序易读性、节省空间、实现多级判断。
- 调用方法:
- 在输出选项中选择“函数调用”。
- 参数1选择“函数调用”,参数2选择具体函数。
- 意义:
- 提高主程序的易读性。
- 避免重复代码,节省空间。
八、函数使用方法
- Edit:通过菜单-设置-函数列表启动函数Edit器。
- 存储:函数可单独存储为
.hanshu文件,支持导入到主程序或函数界面。 - 调用示例:
- 输入断开到闭合时,函数执行一次。
- 函数每隔一秒钟执行一次。
九、system简单设置
- Operation联机继电器data口:默认data口1。
- Operation联机继电器返回码:可选择带返回码或不带返回码。
- 擦除存储区:擦除内部变量存储区或数组存储区的ROM。
十、system特殊设置
- 点动Operationtime设置:设置点动继电器的time(单位:ms)。
- 临时datareceivetime间隔:默认10ms,用于区分data包。
- 输入连击和长按timeconstant:默认500ms,用于判断双击或连击。
- 程序运行间隔:默认10ms,可调整。
十一、临时data包处理
- Function:receive的临时data包存储在缓冲区,可进行处理。
- 应用:兼容市面上的485、串口或TTL通讯协议,实现协议转发。
十二、数组简单处理
- Operation:
- 加上其他数组:将一个数组添加到另一个数组尾部。
- 赋值为其他数组:替换数组内容。
- Deletebyte:Delete指定Serial number的byte。
- 添加变量byte:在数组最前面添加byte。
十三、内部变量的使用方法
- Function:
- 将system变量赋值给内部变量。
- 将内部变量值赋值给其他变量。
- 支持位Operation,读写某一位的值。
- 存储:支持将内部变量保存到RAM或非易失性存储区(需硬件支持)。
十四、定时处理
- Function:通过时钟芯片实现定时任务。
- 示例:
- 每天早上和下午定时打开第一路继电器。
- 每天8点到12点之间保持第一路闭合。
十五、format转换
- 内部变量与数组转换:
- decimal字符串与内部变量相互转换。
- 数组与内部变量相互转换(高位在前,低位在后)。
- 示例:
- 内部变量123转换为数组
0x31 0x32 0x33。 - 数组
0x01 0x02转换为内部变量值33。
十六、实际应用 – 提取临时data中的变量
- Function:receive临时data后,提取特定byte并转换为内部变量。
- 示例:
- 判断data包byte count和前两个byte值。
- 提取第3到第6byte的值并转换为内部变量1。
十七、实际应用 – 变量按固定formatsend
- Function:将内部变量转换为数组,并添加头尾byte后send。
- 示例:
- 将内部变量1转换为数组,添加
22 01 10头byte和校验byte后send。
十八、实际应用 – 协议转换器
- Function:将不同厂家的协议对接,实现设备间的通信。
- 前提:厂家通讯协议开放。
十九、实际应用 – 电子协议举例
- Function:receivedata后,判断byte和校验成功后执行相应Operation。
- 示例:
- 判断前两个byte和校验成功后,执行函数1。
- 函数1内部继续判断其他byte,执行相应Operation。
六、Precautions
- 安全警告:
- 严禁带电接线!
- 感性负载(如电机)需额外加装保护电路。
- 网络问题:
- 若指示灯不亮,检查电源和网线。
- 勿修改默认网络配置,否则需Contact technical support复位。
- 协议debug:
- Recommended Tools:USB转485模块 + Serial Port DebuggingAssistant。
- 指令Invalid?检查address和checksum是否正确!
七、Technical Support
- 客服电话:18801054468
发表回复