8路智能控制器使用说明书插图1

版本:V1.1

一、产品简介

W816是一款超小型智能可编程控制器,专为智能家居、商业照明、农业自动化设计。无需网关,支持8路大功率继电器(每路16A),兼容手机APP、语音控制、定时任务,是家庭和商业场景的“全能管家”。

二、核心功能与特点

1. 硬件优势

  • 超小体积:仅占4个空开位,轻松装入家庭电箱。
  • 大功率负载:每路支持16A阻性负载(如灯具、插座),8A感性负载(如电机)。
  • 工业级设计:-20℃~80℃宽温工作,适应复杂环境。

2. 灵活扩展

  • 免线拼接:同层导轨安装,多个模块直接拼接扩展。
  • 全协议兼容:支持Modbus、TCP/IP、MQTT等协议,对接智能家居平台无压力。
  • 无线转有线:支持WiFi/433M/315M转485总线,老旧设备秒变智能。

3. 小白友好

  • 拨码设地址:无需软件,拨动开关即可设置设备ID(1~32)。
  • 一键恢复:误操作可恢复出厂设置,操作零门槛。

本模块上有4位侧拨开关,出厂地址默认为0,可设置地址为0-15,设置如下图

8路智能控制器使用说明书插图3

三、技术参数

项目规格
工作电压DC 12V(可定制12-24V)
负载能力阻性负载≤16A,感性负载≤8A
通讯方式485总线(标配)、RJ45网口、WiFi、433M、GPRS
输入路数8路光电隔离输入(兼容干接点)
环境温度-20℃~80℃
尺寸92.5mm × 76.2mm × 60.5mm

四、快速上手指南

1. 安装与接线

  1. 固定模块:卡入标准DN35导轨,确保电源关闭。
  2. 连接负载:将灯具、窗帘电机等接入继电器输出端子(OUT1~OUT8)。
  3. 接入电源:使用12V适配器供电(正负极勿接反)。
  4. 联网配置
  • 有线

Run指示灯状态:上电绿灯闪烁后常亮,与服务器连接成功后冰蓝色。

Rj45指示灯状态:与网络连接成功后绿灯常亮,橙色灯闪烁。

8路智能控制器使用说明书插图5

接线拓扑图

8路智能控制器使用说明书插图7

接口说明:

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与1连接触发第一路继电器)

7、RUN=运行指示灯(未连接tcp为绿色 连接tcp为冰蓝色)

五、协议指令详解

私有协议


通讯协议说明

协议基本信息

  • 波特率:9600
  • 默认地址1A CA 27 87 00(出厂测试默认地址)
  • 通用地址AA AA AA AA AA(用于特殊操作)

协议格式

协议数据帧由以下部分组成:

  1. 地址:5 个字节,标识模块地址。
  2. 指令区:根据操作不同,长度和内容各异。
  3. 校验和:固定为 0F

功能操作说明

1. 查询模块地址
  • 指令格式5个字节地址 + 56 56 56 0F
  • 功能:查询模块的当前地址。
  • 示例
  1A CA 27 87 00 56 56 56 0F
2. 修改地址
  • 说明:前 4 个字节固定,第 5 个字节通过拨码开关更改。
  • 示例
  1A CA 27 87 XX (XX 为拨码设置的新地址)
3. 查询模块状态
  • 指令格式5个字节地址 + 86 86 86 0F
  • 返回格式5个字节地址 + 00 00 00 00 00 00 00 00 0F(8 个开关状态,00 表示关闭,01 表示打开)
  • 示例
  查询指令:1A CA 27 87 00 86 86 86 0F
  返回示例:1A CA 27 87 00 00 01 00 01 00 01 00 0F (假设开关状态为:关-开-关-开-关-开-关-开)
4. 恢复出厂设置
  • 指令格式5个字节地址 + 96 96 96 0F
  • 功能:擦除 K1-K8 存储区,恢复默认设置。
  • 示例
  1A CA 27 87 00 96 96 96 0F
5. 强制设置 K1-K8 为点动模式
  • 指令格式5个字节地址 + A6 A6 A6 0F
  • 说明
  • 默认为长按 5 秒自动切换为翻转模式。
  • 设置前需先恢复出厂设置。
  • 示例
  1A CA 27 87 00 A6 A6 A6 0F

6. 开启/关闭 K1-K8 输入数据存储功能
  • 开启
  • 指令格式5个字节地址 + 56 56 56 0F
  • LED 表示:闪烁 1 次后保持常亮。
  • 关闭
  • 指令格式5个字节地址 + 46 46 46 0F
  • LED 表示:闪烁 2 次后保持熄灭。
  • 示例
  开启:1A CA 27 87 00 56 56 56 0F
  关闭:1A CA 27 87 00 46 46 46 0F

7. K1-K8 开/关存储指令
  • 指令格式
  • 开启某路:地址 + XX XX XX XX XX ... XX(XX 为特定值)
  • 关闭某路:地址 + XX XX XX XX XX ... XX(XX 为特定值)
  • 具体指令: 操作 开启指令值 关闭指令值 K1 开/关 00 10 K2 开/关 20 30 K3 开/关 40 50 K4 开/关 60 70 K5 开/关 80 90 K6 开/关 A0 B0 K7 开/关 C0 D0 K8 开/关 E0 F0
  • 示例
  K1 开启:1A CA 27 87 00 00 XX XX XX XX XX 0F
  K1 关闭:1A CA 27 87 00 10 XX XX XX XX XX 0F

8. 单路控制
  • 指令格式
  • 翻转:地址 + 00 00 XX 02 0F(XX 为路数 - 1)
  • 只开:地址 + 00 00 XX 01 0F(XX 为路数 - 1)
  • 只关:地址 + 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. 全路控制
  • 指令格式
  • 1-8 路全开:地址 + 01 01 77 88 0F
  • 1-8 路全关:地址 + 01 02 77 88 0F
  • 示例
  1-8 路全开:1A CA 27 87 00 01 01 77 88 0F
  1-8 路全关:1A CA 27 87 00 01 02 77 88 0F

10. 通用全开/全关
  • 指令格式
  • 通用全开:通用地址 + 30 77 88 0F
  • 通用全关:通用地址 + 30 77 88 0F
  • 示例
  通用全开:AA AA AA AA AA 30 77 88 0F
  通用全关:AA AA AA AA AA 30 77 88 0F

内部协议

1. 指令格式

所有指令均为8字节,格式如下:

[0x55][地址][功能码][数据1][数据2][数据3][数据4][校验和]  
  • 校验和 = 前7字节相加,取最后两位(如55+01+32+00+00+00+01=89)。

波特率 9600,8 个数据位,1 个停止位,无校验位。

上位机发送数据帧格式:

数据头地址功能码数据区校验和
1 字节0x55 1 字节 1 字节 1 字节 2 字节 3 字节 4 字节1 字节,将前面的 7 个字节相加,取后 8 位得到

上位机发送数据帧说明:

功能码说明数据区内容(4 个字节)
0x10读取状态0x00,0x00,0x00,0x00
0x11断开某路第 4 个字节代表断开第几路继电器,前 3 个字节为 0。
0x12吸合某路第 4 个字节代表吸合第几路继电器,其他为 0。
 0x13 命令执行数据区域共 4 个字节,每个字节 8 位,共 32 位。最多可代表 32 路开关量的状态。最后一个字节的第 0 位代表第 1 路,第 1 个字节的最高位代表最后一路。
 0x14 组断开数据区域共 4 个字节,每个字节 8 位,共 32 位。最多代表对 32路的操作,1 代表断开 0 代表保持原来状态。最后 1 个字节的第0 位(BIT0)代表第 1 路,依次类推。
 0x15 组吸合数据区域共 4 个字节,每个字节 8 位,共 32 位。最多代表对 32路的操作,1 代表吸合 0 代表保持原来状态。最后 1 个字节的第0 位(BIT0)代表第 1 路,依次类推。
 0x16 组翻转数据区域共 4 个字节,每个字节 8 位,共 32 位。最多代表对 32路的操作,1 代表翻转 0 代表保持原来状态。最后 1 个字节的第0 位(BIT0)代表第 1 路,依次类推。
0x20翻转某路数据中的第 4 个字节代表翻转第几路继电器,其他为 0。
 0x21 点动闭合数据的第 1、2、3 字节代表时间(高位字节在前,单位 ms), 第 4 字节代表第几路
 0x22 点动断开数据的第 1、2、3 字节代表时间(高位字节在前,单位 ms),第 4 字节代表第几路
0x30翻转某路参考功能码 0x20,但是下位机不返回数据,指令可以连续发送。
0x31断开某路参考功能码 0x11,但是下位机不返回数据,指令可以连续发送。
0x32吸合某路参考功能码 0x12,但是下位机不返回数据,指令可以连续发送。
0x33命令执行参考功能码 0x13,但是下位机不返回数据,指令可以连续发送。
0x34组断开参考功能码 0x14,但是下位机不返回数据,指令可以连续发送。
0x35组吸合参考功能码 0x15,但是下位机不返回数据,指令可以连续发送。
0x36组翻转参考功能码 0x16,但是下位机不返回数据,指令可以连续发送。
0x37点动闭合参考功能码 0x21,但是下位机不返回数据,指令可以连续发送。
0x38点动断开参考功能码 0x22,但是下位机不返回数据,指令可以连续发送。
 0x40 读地址0x00,0x00,0x00,0x00注意事项,使用广播地址 245 来读取模块地址。
 0x41 写地址数据中的第 4 个字节代表模块的新地址。注意事项:上电 10 秒钟之内允许写地址,如果有拨码开关,需要将拨码开关拨到 0 的位置。
0x70读变量前 3 个字节为 0x00 0x00 0x00。第 4 个字节代表变量的序号
 0x71 写变量3 个字节代表变量的值,高位字节在前。第 4 个字节代表变量的序号

下位机返回数据帧格式:

数据头地址功能码数据区校验和
1 字节0x221 字节1 字节1 字节2 字节3 字节4 字节1 字节,将前面的7 个字节相加

下位机返回数据帧说明:

功能码功能码说明数据区内容(4 个字节)
0x10读取状态 继电器输出板或者输入检测板:数据区域 4 个字节,每个字节 8  位,共 32 位。代表 32 路的状态。最后 1 字节的第 0 位代表第 1 路,依次类推。 输入输出板:第 12 个字节代表输入的状态,第 34个字节代表输出的状态。
0x11断开某一路
0x12吸合某一路
0x13命令执行
0x14组断开
0x15组吸合
0x16组翻转
0x40返回模块地址
0x70读内部变量3 个字节代表内部变量的值,高位字节在前。4 个字节代表内部变量是序号注意事项:此功能码只适用于支持内核可编程的模块
0x71写内部变量

广播地址说明:

个别情况下,需要快速的打开或者关闭总线上所有继电器,这个时候使用广播地址, 广播地址的值为 245,也就是说,向地址 245  发送的指令,总线上的每一个地址都会执行,关闭广播地址 245 的继电器,也就是关闭总线上的所有继电器,同样的道

理,打开广播地址 245 的继电器,也就是打开总线上所有的继电器。

0x30-0x38 功能码为指令连发功能码,因为这些功能码没有回码,所以可以连续发送,因此可以更快速的发送指令。为了让指令更快速的发送,引入了数据连发指令

很多情况下,用户不需要查询或知道继电器板的当前状态,只需要按照自己的要求来打开或者关闭某几路,这个时候使用无回码指令就会很方便。

无回码指令表(以地址 1 为例,指令可连续发送):

吸合第 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
吸合全部 55 01 33 FF FF FF FF 85断开全部 55 01 33 00 00 00 00 89

好的,我将为每个功能码提供一个具体的示例数据帧,以帮助更好地理解协议的使用。以下是详细的功能码示例:


上位机功能码示例

0x10 - 读取状态

  • 功能描述:读取继电器的状态。
  • 数据区0x00, 0x00, 0x00, 0x00
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x10
  数据区:0x00, 0x00, 0x00, 0x00
  校验和:0x55 + 0x01 + 0x10 + 0x00 + 0x00 + 0x00 + 0x00 = 0x66

完整数据帧55 01 10 00 00 00 00 66


0x11 - 断开某路

  • 功能描述:断开指定的继电器路。
  • 数据区:前 3 字节为 0x00,第 4 字节为断开的继电器路数(例如,断开第 3 路)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x11
  数据区:0x00, 0x00, 0x00, 0x03
  校验和:0x55 + 0x01 + 0x11 + 0x00 + 0x00 + 0x00 + 0x03 = 0x6A

完整数据帧55 01 11 00 00 00 03 6A


0x12 - 吸合某路

  • 功能描述:吸合指定的继电器路。
  • 数据区:前 3 字节为 0x00,第 4 字节为吸合的继电器路数(例如,吸合第 5 路)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x12
  数据区:0x00, 0x00, 0x00, 0x05
  校验和:0x55 + 0x01 + 0x12 + 0x00 + 0x00 + 0x00 + 0x05 = 0x6D

完整数据帧55 01 12 00 00 00 05 6D


0x13 - 命令执行

  • 功能描述:控制多路继电器的状态。
  • 数据区:4 字节,每字节 8 位,共 32 位,代表 32 路继电器的状态(1 表示吸合,0 表示断开)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x13
  数据区:0x00, 0x00, 0x00, 0x0F (吸合第 1-4 路)
  校验和:0x55 + 0x01 + 0x13 + 0x00 + 0x00 + 0x00 + 0x0F = 0x73

完整数据帧55 01 13 00 00 00 0F 73


0x14 - 组断开

  • 功能描述:断开指定的多路继电器。
  • 数据区:4 字节,每字节 8 位,共 32 位,1 表示断开,0 表示保持原状态。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x14
  数据区:0x00, 0x00, 0x00, 0x01 (断开第 1 路)
  校验和:0x55 + 0x01 + 0x14 + 0x00 + 0x00 + 0x00 + 0x01 = 0x6B

完整数据帧55 01 14 00 00 00 01 6B


0x15 - 组吸合

  • 功能描述:吸合指定的多路继电器。
  • 数据区:4 字节,每字节 8 位,共 32 位,1 表示吸合,0 表示保持原状态。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x15
  数据区:0x00, 0x00, 0x00, 0x02 (吸合第 2 路)
  校验和:0x55 + 0x01 + 0x15 + 0x00 + 0x00 + 0x00 + 0x02 = 0x6C

完整数据帧55 01 15 00 00 00 02 6C


0x16 - 组翻转

  • 功能描述:翻转指定的多路继电器。
  • 数据区:4 字节,每字节 8 位,共 32 位,1 表示翻转,0 表示保持原状态。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x16
  数据区:0x00, 0x00, 0x00, 0x04 (翻转第 3 路)
  校验和:0x55 + 0x01 + 0x16 + 0x00 + 0x00 + 0x00 + 0x04 = 0x6E

完整数据帧55 01 16 00 00 00 04 6E


0x20 - 翻转某路

  • 功能描述:翻转指定的继电器路。
  • 数据区:前 3 字节为 0x00,第 4 字节为翻转的继电器路数(例如,翻转第 7 路)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x20
  数据区:0x00, 0x00, 0x00, 0x07
  校验和:0x55 + 0x01 + 0x20 + 0x00 + 0x00 + 0x00 + 0x07 = 0x7D

完整数据帧55 01 20 00 00 00 07 7D


0x21 - 点动闭合

  • 功能描述:点动闭合指定的继电器路。
  • 数据区:前 3 字节为时间(单位 ms,高位在前),第 4 字节为继电器路数(例如,闭合第 6 路,时间 1000ms)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x21
  数据区:0x00, 0x03, 0xE8, 0x06 (1000ms,第 6 路)
  校验和:0x55 + 0x01 + 0x21 + 0x00 + 0x03 + 0xE8 + 0x06 = 0x88

完整数据帧55 01 21 00 03 E8 06 88


0x22 - 点动断开

  • 功能描述:点动断开指定的继电器路。
  • 数据区:前 3 字节为时间(单位 ms,高位在前),第 4 字节为继电器路数(例如,断开第 9 路,时间 500ms)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x22
  数据区:0x00, 0x01, 0xF4, 0x09 (500ms,第 9 路)
  校验和:0x55 + 0x01 + 0x22 + 0x00 + 0x01 + 0xF4 + 0x09 = 0x7B

完整数据帧55 01 22 00 01 F4 09 7B


0x30 - 翻转某路(连发)

  • 功能描述:翻转指定的继电器路,无返回数据。
  • 数据区:前 3 字节为 0x00,第 4 字节为翻转的继电器路数(例如,翻转第 12 路)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x30
  数据区:0x00, 0x00, 0x00, 0x0C
  校验和:0x55 + 0x01 + 0x30 + 0x00 + 0x00 + 0x00 + 0x0C = 0x8E

完整数据帧55 01 30 00 00 00 0C 8E


0x31 - 断开某路(连发)

  • 功能描述:断开指定的继电器路,无返回数据。
  • 数据区:前 3 字节为 0x00,第 4 字节为断开的继电器路数(例如,断开第 15 路)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x31
  数据区:0x00, 0x00, 0x00, 0x0F
  校验和:0x55 + 0x01 + 0x31 + 0x00 + 0x00 + 0x00 + 0x0F = 0x91

完整数据帧55 01 31 00 00 00 0F 91


0x32 - 吸合某路(连发)

  • 功能描述:吸合指定的继电器路,无返回数据。
  • 数据区:前 3 字节为 0x00,第 4 字节为吸合的继电器路数(例如,吸合第 20 路)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x32
  数据区:0x00, 0x00, 0x00, 0x14
  校验和:0x55 + 0x01 + 0x32 + 0x00 + 0x00 + 0x00 + 0x14 = 0x9C

完整数据帧55 01 32 00 00 00 14 9C


0x33 - 命令执行(连发)

  • 功能描述:控制多路继电器的状态,无返回数据。
  • 数据区:4 字节,每字节 8 位,共 32 位,代表 32 路继电器的状态(1 表示吸合,0 表示断开)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x33
  数据区:0x00, 0x00, 0x00, 0x1F (吸合第 1-5 路)
  校验和:0x55 + 0x01 + 0x33 + 0x00 + 0x00 + 0x00 + 0x1F = 0xA3

完整数据帧55 01 33 00 00 00 1F A3


0x34 - 组断开(连发)

  • 功能描述:断开指定的多路继电器,无返回数据。
  • 数据区:4 字节,每字节 8 位,共 32 位,1 表示断开,0 表示保持原状态。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x34
  数据区:0x00, 0x00, 0x00, 0x08 (断开第 4 路)
  校验和:0x55 + 0x01 + 0x34 + 0x00 + 0x00 + 0x00 + 0x08 = 0x98

完整数据帧55 01 34 00 00 00 08 98


0x35 - 组吸合(连发)

  • 功能描述:吸合指定的多路继电器,无返回数据。
  • 数据区:4 字节,每字节 8 位,共 32 位,1 表示吸合,0 表示保持原状态。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x35
  数据区:0x00, 0x00, 0x00, 0x10 (吸合第 5 路)
  校验和:0x55 + 0x01 + 0x35 + 0x00 + 0x00 + 0x00 + 0x10 = 0x9B

完整数据帧55 01 35 00 00 00 10 9B


0x36 - 组翻转(连发)

  • 功能描述:翻转指定的多路继电器,无返回数据。
  • 数据区:4 字节,每字节 8 位,共 32 位,1 表示翻转,0 表示保持原状态。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x36
  数据区:0x00, 0x00, 0x00, 0x20 (翻转第 6 路)
  校验和:0x55 + 0x01 + 0x36 + 0x00 + 0x0 +0 0x00 + 0x20 = 0xA2

完整数据帧55 01 36 00 00 00 20 A2


0x37 - 点动闭合(连发)

  • 功能描述:点动闭合指定的继电器路,无返回数据。
  • 数据区:前 3 字节为时间(单位 ms,高位在前),第 4 字节为继电器路数(例如,闭合第 8 路,时间 2000ms)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x37
  数据区:0x00, 0x07, 0xD0, 0x08 (2000ms,第 8 路)
  校验和:0x55 + 0x01 + 0x37 + 0x00 + 0x07 + 0xD0 + 0x08 = 0xA8

完整数据帧55 01 37 00 07 D0 08 A8


0x38 - 点动断开(连发)

  • 功能描述:点动断开指定的继电器路,无返回数据。
  • 数据区:前 3 字节为时间(单位 ms,高位在前),第 4 字节为继电器路数(例如,断开第 16 路,时间 1500ms)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x38
  数据区:0x00, 0x05, 0xDC, 0x10 (1500ms,第 16 路)
  校验和:0x55 + 0x01 + 0x38 + 0x00 + 0x05 + 0xDC + 0x10 = 0xB5

完整数据帧55 01 38 00 05 DC 10 B5


0x40 - 读地址

  • 功能描述:读取模块地址。
  • 数据区0x00, 0x00, 0x00, 0x00
  • 示例数据帧
  数据头:0x55
  地址:0xF5 (广播地址 245)
  功能码:0x40
  数据区:0x00, 0x00, 0x00, 0x00
  校验和:0x55 + 0xF5 + 0x40 + 0x00 + 0x00 + 0x00 + 0x00 = 0x8F

完整数据帧55 F5 40 00 00 00 00 8F


0x41 - 写地址

  • 功能描述:写入模块的新地址。
  • 数据区:前 3 字节为 0x00,第 4 字节为新地址(例如,新地址为 0x02)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x41
  数据区:0x00, 0x00, 0x00, 0x02
  校验和:0x55 + 0x01 + 0x41 + 0x00 + 0x00 + 0x00 + 0x02 = 0x9A

完整数据帧55 01 41 00 00 00 02 9A


0x70 - 读变量

  • 功能描述:读取内部变量。
  • 数据区:前 3 字节为 0x00,第 4 字节为变量序号(例如,读取序号为 1 的变量)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x70
  数据区:0x00, 0x00, 0x00, 0x01
  校验和:0x55 + 0x01 + 0x70 + 0x00 + 0x00 + 0x00 + 0x01 = 0xC7

完整数据帧55 01 70 00 00 00 01 C7


0x71 - 写变量

  • 功能描述:写入内部变量。
  • 数据区:前 3 字节为变量值(高位在前),第 4 字节为变量序号(例如,写入序号为 2 的变量,值为 0x123456)。
  • 示例数据帧
  数据头:0x55
  地址:0x01
  功能码:0x71
  数据区:0x12, 0x34, 0x56, 0x02
  校验和:0x55 + 0x01 + 0x71 + 0x12 + 0x34 + 0x56 + 0x02 = 0xA1

完整数据帧55 01 71 12 34 56 02 A1


下位机返回功能码示例

0x10 - 读取状态

  • 功能描述:返回继电器的状态。
  • 数据区:4 字节,每字节 8 位,共 32 位,代表 32 路继电器的状态(1 表示吸合,0 表示断开)。
  • 示例数据帧
  数据头:0x22
  地址:0x01
  功能码:0x10
  数据区:0x00, 0x00, 0x00, 0x0F (第 1-4 路吸合,其余断开)
  校验和:0x22 + 0x01 + 0x10 + 0x00 + 0x00 + 0x00 + 0x0F = 0x42

完整数据帧22 01 10 00 00 00 0F 42


0x40 - 返回模块地址

  • 功能描述:返回模块的当前地址。
  • 数据区:4 字节,返回模块地址(例如,地址为 0x03)。
  • 示例数据帧
  数据头:0x22
  地址:0x03
  功能码:0x40
  数据区:0x00, 0x00, 0x00, 0x03
  校验和:0x22 + 0x03 + 0x40 + 0x00 + 0x00 + 0x00 + 0x03 = 0x68

完整数据帧22 03 40 00 00 00 03 68


0x70 - 读内部变量

  • 功能描述:返回内部变量的值。
  • 数据区:前 3 字节为变量值(高位在前),第 4 字节为变量序号(例如,序号为 1 的变量值为 0x123456)。
  • 示例数据帧
  数据头:0x22
  地址:0x01
  功能码:0x70
  数据区:0x12, 0x34, 0x56, 0x01
  校验和:0x22 + 0x01 + 0x70 + 0x12 + 0x34 + 0x56 + 0x01 = 0x8C

完整数据帧22 01 70 12 34 56 01 8C


总结

以上是每个功能码的示例数据帧,涵盖了上位机发送和下位机返回的所有场景。每个示例都包含了完整的数据帧结构和校验和计算,确保协议的正确性和完整性。如果需要进一步的解释或修改,请随时告诉我!

进阶玩法

上位机配置软件

资源价格 1积分 销售数量 328 发布时间 2025年2月23日 更新时间 2025年2月28日
已付费?登录刷新

出厂固件下载

8路智能控制器使用说明书插图8白银会员1
8路智能控制器使用说明书插图9黄金会员-2
资源价格 1积分 销售数量 329 发布时间 2025年2月23日 更新时间 2025年2月28日
已付费?登录刷新

内核与功能模块使用说明

一、内核简介

内核是用户操作模块的核心工具,用于实现以下功能:

  1. 输入与输出的映射关系。
  2. 收发字符串或其他数据。
  3. 使用定时器进行延迟或其他定时处理。
  4. 内部变量的格式转换。
  5. 其他高级功能。

二、外部输入

外部输入功能允许模块检测外部事件,支持以下触发方式:

  1. 上升沿触发(断开到闭合)。
  2. 下降沿触发(闭合到断开)。
  3. 状态触发(持续条件满足)。
  4. 单击或双击触发(需设置时间常数,默认500ms)。

三、输出状态变化

输出状态变化涉及以下内容:

  1. 指令操作面板:输出LED指示灯状态。
  2. 继电器模块:控制继电器的开/关状态。
  3. MOS输出模块:控制MOS管的开关状态。
  4. 用户可以控制单路或多路的打开、关闭、翻转,或点动操作。

四、中间继电器

中间继电器是虚拟的继电器,用于:

  1. 程序控制其开/关状态。
  2. 检测其上升沿或下降沿。
  3. 将外部连续事件转化为内部状态变化事件。

五、内部变量

内部变量是有符号变量,用于记录中间数据,支持以下操作:

  1. 作为输入:与数字比较(大于、小于、等于),用于条件判断。
  2. 作为输出:存储定时器、时间、日期、继电器状态等信息。
  3. 运算功能:支持加法运算,可作为计数器使用。

六、定时器

  1. 简介:定时器值为正整数,默认为非0减1定时器。
  2. 用法
  • 设置定时器初值(如100)。
  • 使用定时器值触发其他操作(如定时器等于80时触发)。
  1. 示例:每隔100ms,第一路输出翻转一次,并通过数据口1发送字符串“123”。

七、函数使用说明

  1. 功能:模块包含100个函数,用于增强程序易读性、节省空间、实现多级判断。
  2. 调用方法
  • 在输出选项中选择“函数调用”。
  • 参数1选择“函数调用”,参数2选择具体函数。
  1. 意义
  • 提高主程序的易读性。
  • 避免重复代码,节省空间。

八、函数使用方法

  1. 编辑:通过菜单-设置-函数列表启动函数编辑器。
  2. 存储:函数可单独存储为.hanshu文件,支持导入到主程序或函数界面。
  3. 调用示例
  • 输入断开到闭合时,函数执行一次。
  • 函数每隔一秒钟执行一次。

九、系统简单设置

  1. 操作联机继电器数据口:默认数据口1。
  2. 操作联机继电器返回码:可选择带返回码或不带返回码。
  3. 擦除存储区:擦除内部变量存储区或数组存储区的ROM。

十、系统特殊设置

  1. 点动操作时间设置:设置点动继电器的时间(单位:ms)。
  2. 临时数据接收时间间隔:默认10ms,用于区分数据包。
  3. 输入连击和长按时间常数:默认500ms,用于判断双击或连击。
  4. 程序运行间隔:默认10ms,可调整。

十一、临时数据包处理

  1. 功能:接收的临时数据包存储在缓冲区,可进行处理。
  2. 应用:兼容市面上的485、串口或TTL通讯协议,实现协议转发。

十二、数组简单处理

  1. 操作
  • 加上其他数组:将一个数组添加到另一个数组尾部。
  • 赋值为其他数组:替换数组内容。
  • 删除字节:删除指定序号的字节。
  • 添加变量字节:在数组最前面添加字节。

十三、内部变量的使用方法

  1. 功能
  • 将系统变量赋值给内部变量。
  • 将内部变量值赋值给其他变量。
  • 支持位操作,读写某一位的值。
  1. 存储:支持将内部变量保存到RAM或非易失性存储区(需硬件支持)。

十四、定时处理

  1. 功能:通过时钟芯片实现定时任务。
  2. 示例
  • 每天早上和下午定时打开第一路继电器。
  • 每天8点到12点之间保持第一路闭合。

十五、格式转换

  1. 内部变量与数组转换
  • 十进制字符串与内部变量相互转换。
  • 数组与内部变量相互转换(高位在前,低位在后)。
  1. 示例
  • 内部变量123转换为数组0x31 0x32 0x33
  • 数组0x01 0x02转换为内部变量值33。

十六、实际应用 - 提取临时数据中的变量

  1. 功能:接收临时数据后,提取特定字节并转换为内部变量。
  2. 示例
  • 判断数据包字节数和前两个字节值。
  • 提取第3到第6字节的值并转换为内部变量1。

十七、实际应用 - 变量按固定格式发送

  1. 功能:将内部变量转换为数组,并添加头尾字节后发送。
  2. 示例
  • 将内部变量1转换为数组,添加22 01 10头字节和校验字节后发送。

十八、实际应用 - 协议转换器

  1. 功能:将不同厂家的协议对接,实现设备间的通信。
  2. 前提:厂家通讯协议开放。

十九、实际应用 - 电子协议举例

  1. 功能:接收数据后,判断字节和校验成功后执行相应操作。
  2. 示例
  • 判断前两个字节和校验成功后,执行函数1。
  • 函数1内部继续判断其他字节,执行相应操作。

程序示例文件

资源价格 1积分 销售数量 328 发布时间 2025年2月23日 更新时间 2025年2月28日
已付费?登录刷新

六、注意事项

  1. 安全警告
  • 严禁带电接线!
  • 感性负载(如电机)需额外加装保护电路。
  1. 网络问题
  • 若指示灯不亮,检查电源和网线。
  • 勿修改默认网络配置,否则需联系技术支持复位。
  1. 协议调试
  • 推荐工具:USB转485模块 + 串口调试助手。
  • 指令无效?检查地址和校验和是否正确!

七、技术支持

  • 客服电话:18801054468

相关产品

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

cloud@modbus.cn

QQ
微信