更新时间:2025-02-28 02:56:01下载pdf
涂鸦 PLC 串口通信模组(以下简称模组),适用于采用 MCU + PLC 模组方案的产品。这类产品通常由 MCU 负责处理产品本身的逻辑,搭配 PLC 模组实现通信,MCU 与 模组之间通过 UART 串口通信。模组的主要功能有:
PLC 网络管理:例如设备配网、离网、本地群组和本地场景。
PLC 网关通信:设备与网关通信,从而实现设备与涂鸦云的数据交互。
PLC 设备通信:子设备与子设备之间进行通信。
MCU OTA:可通过 PLC 模组接收 MCU 的 OTA 文件,完成 MCU 端的 OTA 升级。
串口协议不断地完善迭代,例如新增命令字、优化命令交互时序等。本协议尽量做到向前兼容,但是无法保障部分低版本固件或非长期维护固件的协议一致性。
PLC 模组与 MCU 硬件连接如下图所示。
串口通信参数
下表列出了部分 PLC 模组对应的串口管脚。固件不同,可能会有所差异,请以实际为准。
模组型号 | 模组 TX | 模组 RX |
---|---|---|
S130N-ISI | PB7 | PB1 |
PLC 模组支持两种串口波特率,分别是 9600 bps 和 115200 bps,MCU 可以采用这两种波特率中的任意一种。模组有波特率自适应机制,即在首次与 MCU 通讯时,模组会交替使用 9600 bps 和 115200 bps 波特率发送 查询产品信息 命令,MCU 在其中一个波特率下回复命令后,模组将该波特率保存,并持续生效。
字段 | 中文 | 说明 |
---|---|---|
Frame Head | 帧头 | 固定为 0x55AA |
Version | 版本号 | 串口通信协议版本,升级扩展用,本协议版本号为 0x02 |
SEQ | 序列号 | 传输数据序列号(sequence number),0 ~ 0xfff0 循环,下文用 xx xx 表示 |
Command ID | 命令字 | 命令 ID,持续更新 |
Data Length | 数据长度 | 传输的有效数据长度 |
Data | 数据 | 传输的有效数据 |
Checksum | 校验和 | 用于数据校验,从帧头开始按字节求和得出的结果对 256 求余,下文用xx 表示 |
Data
最大支持 384 字节。命令字 | 发送方 | 说明 |
---|---|---|
0x01 | Z | 查询产品信息 |
0x02 | Z | 模组网络状态通知 |
0x03 | M | 模组配网/复位 |
0x00 | Z | App 端解绑并清除数据通知 |
0x20 | M | 查询模组网络状态 |
0x25 | M | 查询网关联网状态 |
0x04 | Z | DP 消息接收 |
0x2A | Z | DP 消息接收(群控) |
0x06 | M | DP 主动上报(可触发联动) |
0x2C | M | DP 主动上报(不触发联动) |
0x28 | Z | DP 查询 |
0x27 | M | 广播消息发送 |
0x43 | M | 私有命令组播发送 |
0x41 | Z | 场景配置(场景控制类设备) |
0x0A | M | 场景触发(场景控制类设备) |
0x0B | Z | MCU 固件版本查询 |
0x0C | Z | OTA 升级通知 |
0x0D | M | OTA 固件请求 |
0x0E | M | OTA 升级结果上报 |
0x24 | M | 时间同步 |
PLC 模组每次上电后都会主动向 MCU 发送此命令,MCU 需在应答此命令后才能主动发送其他命令给模组。产品信息 包括产品的 PID 和 MCU 固件版本号等。同时,此命令也有 PLC 模组在出厂状态下,首次与 MCU 通信时用于确认 MCU 端的波特率的作用。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x01 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 01 00 00 xx
MCU 应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x01 |
数据长度 | 2 | N |
数据 | N | 产品信息,示例 {"p":"AIp08kLIAIp08kLI"} |
校验和 | 1 | xx |
产品信息 是 Json 格式的字符串,包含大括号 {},大括号内部是 "key":"value"
格式,下面是已支持的 key
和 value
。
AIp08kLIAIp08kLI
。示例:55 AA 02 xx xx 01 00 18 7b2270223a2241497030386b4c4941497030386b4c49227d xx
本例中,产品信息 部分为:{"p":"AIp08kLIAIp08kLI"}
。
网络状态是指 PLC 本地网络状态(非互联网连接状态),当模组加入网关后即为 已入网。网络状态不会因为网关断电、父节点丢失等原因变更。当模组的网络状态发生变化时,会主动通知 MCU。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x02 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 模组网络状态 |
校验和 | 1 | xx |
模组网络状态:
0x00
:未入网,例如设备首次上电、设备配网失败、App 移除等。0x01
:已入网,表示设备已加入一个 PLC 网络。0x02
:网络异常。0x03
:设备正在配网中。示例:55 AA 02 xx xx 02 00 01 01 xx
模组已入网
MCU 应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | N |
命令字 | 1 | 0x02 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 02 00 00 xx
在 App 端将设备 解绑并清除数据 时,模组以此命令通知 MCU。MCU 收到该通知后可清除本地数据,即恢复出厂设置。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x00 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x01 默认值 |
校验和 | 1 | xx |
数据字段目前默认是 0x01
,保留该字段将来用作拓展。
示例: 55 AA 02 xx xx 00 00 01 01 xx
MCU 应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | N |
命令字 | 1 | 0x00 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x01 |
校验和 | 1 | xx |
示例: 55 AA 02 xx xx 00 00 01 01 xx
MCU 可以发送此命令让模组进入配网或者软件复位。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x03 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x00:模组复位重启 0x01:模组配网(先离网,再配网) |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 03 00 01 01 xx
模组配网
模组应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x03 |
数据长度 | 2 | 0x0000 |
数据 | 1 | 无 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 03 00 00 xx
模组网络状态发生变化时,会通过 模组网络状态通知 主动通知 MCU,MCU 也可以主动查询模组当前的网络状态。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x20 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 20 00 00 xx
模组应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x20 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 模组网络状态 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 20 00 01 01 xx
模组当前状态为:已入网
通过此命令可查询 PLC 网关是否连接互联网。若网关回复互联网在线,可以认为本产品也是互联网在线的,MCU 可以据此做一些状态显示。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x25 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 25 00 00 xx
模组应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x25 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x00:网关互联网离线 0x01:网关互联网在线 0x02:网关回复超时 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 25 00 01 01 xx
网关当前互联网在线
当模组收到 DP 消息时通过此命令通知 MCU,DP 消息通常来自 PLC 网关或其他 PLC 子设备。例如,通过涂鸦智能 App 下发一个 DP 消息给设备时,该消息会先到达网关,然后由网关通过 PLC 网络发送给设备。MCU 在收到此命令后,需要进行 DP 消息应答 (只应答对应的 DP 消息) 这样涂鸦智能 App 上该设备的状态才会相应地更新。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x04 |
数据长度 | 2 | N |
数据 | N | DP 消息格式 |
校验和 | 1 | xx |
DP 消息格式:
接收的消息中,可能会同时包含多个 DP 数据,每一个 DP 数据的格式如下:
Type:
Type | 对应的 DP 类型 | 数据长度 | 说明 |
---|---|---|---|
0x00 | Raw | 自定义 | Raw 数据,Hex 格式,可自定义每个字节的含义 |
0x01 | Bool | 1 | 布尔型,0x00、0x01 |
0x02 | Value | 4 | 数值型,例如 1,23,104 |
0x03 | String | 自定义 | 字符串,可自由定义含义 |
0x04 | Enum | 1 | 枚举型,范围 0-255 |
0x05 | Bitmap | 1/2/4 | Bitmap 型,主要用于错误码上报等 |
示例:55 AA 02 xx xx 04 00 05 03 01 00 01 01 xx
模组收到 DP 消息,包含 1 个 DP 数据,如下所示:
03
01
00 01
01
MCU 回复
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x04 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 04 00 00 xx
当模组收到群控(包括组播、广播)DP 消息后,采用此命令通知 MCU。如果使用的是涂鸦网关,那么 MCU 在收到此消息后,不需要进行 DP 消息应答,涂鸦网关在发送群控消息后,会主动读取 DP。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x2A |
数据长度 | 2 | N |
数据 | N | DP 消息格式 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 2A 00 04 01 01 00 01 01 xx
表示模组收到了一条群控 DP 消息
01
00
01
01
MCU 应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x2A |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 2A 00 00 xx
当 MCU 检测到本地状态有变化,例如用户手动按压了一个开关,可通过此命令主动上报发生了变化的 DP,以便将本地状态同步到云端。模组收到此命令后会发送给网关,并且关心网关的响应,根据网关响应情况应答 MCU。通过本命令上报 DP 数据,能够触发联动,包含本地联动和云端联动。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x06 |
数据长度 | 2 | N |
数据 | N | DP 消息格式 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 06 00 05 03 01 00 01 01 xx
本例展示 MCU 主动上报一个 DP 数据,且该 DP 上报可用于触发联动。
03
01
00 01
01
模组应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x06 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x00:DP 上报失败 0x01:DP 上报成功 |
校验和 | 1 | xx |
示例: 55 AA 02 xx xx 06 00 01 01 xx
DP 消息上报成功
本命令是 DP 消息上报(0x06) 的拓展命令,目的是同步本地状态到云端,但是不希望直接触发联动。例如,开关和灯具配置了联动关系:当开关打开时,灯具打开,当开关关闭时,灯具关闭。那么当开关断电后再上电时,它的状态应该同步到云端,但是不希望去触发灯具的动作。为了将这种单纯的状态同步(不希望触发联动)与真实的状态变化后的主动上报(希望触发联动)区分开,特增加本命令。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x2C |
数据长度 | 2 | N |
数据 | N | DP 消息格式 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 2C 00 05 03 01 00 01 01 xx
本例展示 MCU 主动上报一个 DP 数据, 目的只是为了同步状态到云端,不用于触发联动。
03
01
00 01
01
模组应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x2C |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x00:DP 上报失败 0x01:DP 上报成功 |
校验和 | 1 | xx |
示例: 55 AA 02 xx xx 2C 00 01 01 xx
DP 消息上报成功
本指令用于网关主动查询设备的 DP,MCU 收到本命令后,先应答本命令,后上报对应的 DP。这种情况通常发生在网关断电后再上电、网关与某个子设备长时间断连后恢复等。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x28 |
数据长度 | 2 | N |
数据 | N | DP Nums(1Byte) + DP List |
校验和 | 1 | xx |
0x02 0x03 0x04
表示网关要查询本设备的 2 个 DP,DP ID 为 0x03
和 0x04
的两个 DP。示例 :55 AA 02 xx xx 28 00 03 02 03 04 xx
网关要查询本设备 DP3 和 DP4。
MCU 应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x28 |
数据长度 | 2 | N |
数据 | 0 | DP nums(1Byte) + DP Value list |
校验和 | 1 | xx |
示例:`55 aa 02 xx xx 28 00 0b 02 03 01 00 01 01 04 01 00 01 01 xx
本命令用于发送全网通知的 DP 广播消息,可以让全网络中的设备接收到。如果存在低功耗设备,该设备需要处于周期唤醒的状态,且唤醒周期需要小于广播周期。否则,在唤醒前,下一条广播数据就会将之前的广播数据覆盖。
广播消息之间需要有一定的时间间隔,间隔由网络的规模决定,否则容易造成网络拥堵。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x27 |
数据长度 | 2 | N |
数据 | N | DP 消息格式 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 27 08 05 02 00 04 00 00 00 1E xx
发送一条广播消息,消息内容如下:
05
02
00 04
00 00 00 1E
模组应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x27 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x00:发送失败 0x01:发送成功 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 27 00 01 01 xx
表示广播消息发送成功。
以组播方式向群组发送 DP 消息,控制那些支持涂鸦 DP 的设备。这里发送的 DP 消息格式是被控设备的 DP 格式,包含 DPID + DP Type + DP Length + DP Value,该命令中 Group ID 是通过 其他命令(还未定义)获取到的。遥控器品类才需要用到。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x43 |
数据长度 | 2 | N |
数据 | N | DP 消息格式 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 43 00 07 2A 08 01 01 00 01 01 xx
以组播方式发送一条 DP 消息,内容如下:
0x2A08
01
01
00 01
01
模组响应
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x43 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x00:发送失败 0x01:发送成功 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 43 00 01 01 xx
表示 DP 组播发送成功。
场景有时候也称作联动,即当满足某个条件时,执行某个动作。条件可以是时间、天气、某个设备的状态等,动作可以是对另一些设备执行控制命令。例如,温度传感器检测到温度超过 30℃ 时,打开空调并设置目标温度为 25℃。
有一类设备称为场景控制器(场景开关、手持遥控等),它们的作用是充当场景中的条件设备。该类设备通常配备多个按键,每个按键都可以用来触发不同的场景。例如,按键 1 触发灯具全关,按键 2 触发灯具全开。
目前涂鸦 PLC 支持的场景有 标准场景 和 联动场景,不同的创建方式决定了创建出来的场景的类型。
标准场景:标准场景只在创建时依赖网关(需要通过网关下发相关配置信息),而以后的场景触发则不依赖网关,即使网关断电也不影响标准场景触发,场景控制器是直接发送控制命令给执行设备的。
标准场景的创建需要满足以下条件:
标准场景的创建与触发,如下所示:
标准场景配置(Scene config):在 App 上创建标准场景后,App 会通过网关向场景控制器发送按键号(Key ID)和场景号 (Scene ID)。相同的场景号也会发送给被控设备,同时会包含被控设备要执行的动作。
标准场景触发(Scene recall):操作场景控制器按键,场景控制器通过默认群组0x0000,广播场景号 (Scene ID),被控设备收到该消息后,通过过滤场景号 (Scene ID),进行匹配,如果匹配上,进入该场景号 (Scene ID) 对应的状态;匹配不上,不做处理。
联动场景:是指通过网关或云端作为中转,触发设备将状态报告给网关,网关检查该联动关系是否已托管在本地。如果已托管在本地,则可以称该场景为 网关联动,若未托管在本地,则称为 云端联动。
当创建的场景是联动场景时,开发者无需关心它是网关联动还是云端联动,这是由涂鸦后台根据用户创建时选择的不同设备类型决定的。
目前,场景类命令只开放给场景控制器类设备使用,且需要特定的模组固件,用户创建场景的方式不同,最终会生成不同的场景类型。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x41 |
数据长度 | 2 | N |
数据 | 2 | Key ID(1 字节) + Scene ID(1 字节) |
校验和 | 1 | xx |
注:通常设备通过 dp17 场景号 (Scene ID)
示例:55 AA 02 xx xx 41 00 02 01 02 xx
表示收到来自网关的场景配置命令:
01
0x02
MCU 应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x41 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x00:失败 0x01:成功 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 41 00 01 01 xx
触发标准场景和云端场景。云端场景是指在涂鸦 App 上配置的设备间联动(配置入口不在场景控制器设备的面板中),本设备作为联动触发设备,当检测到按键动作时,发送标准场景触发命令(Recall scene,通过默认群组 0x0000,广播场景号 Scene ID),同时向网关上报所要执行通道对应的 dpid(这个 dpid 是产品创建时,前台对应每个通道的 dpid,并不是通过 0x41 下发的场景号 Scene ID),触发云端联动。若未配置标准场景,则本命令仅用于触发云端联动。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x0A |
数据长度 | 2 | 0x0002 |
数据 | 2 | 按键 ID + 场景 dpid |
校验和 | 1 | xx |
场景 dpid 为产品创建时,按键通道对应的场景 DP。
示例:55 AA 02 xx xx 0A 00 02 01 scenedpid xx
触发场景,Key ID 为 1
。
模组应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x41 |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x00:失败 0x01:成功 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 0A 00 01 01 xx
触发成功,云端联动和标准场景,任意一个只要模组发送成功即认为是触发成功。
支持通过模组进行 MCU OTA 升级,通常的流程如下:
同步 MCU 当前的固件版本号给涂鸦云端,用于展示或者 OTA 升级的判断。若产品需要 MCU OTA 升级,则必须支持本命令。该命令实际有两个作用:
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x0B |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 0B 00 00 xx
查询 MCU 的当前版本号。
MCU 应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x0B |
数据长度 | 2 | 3 |
数据 | 3 | MCU 升级通道(1 字节)+ 固件版本号(2 字节) |
校验和 | 1 | xx |
MCU 升级通道,用户在开发者平台前台上传固件时,需要选择 MCU 的 OTA 升级通道,根据平台分配的值填写;MCU 固件版本号,2 字节,16 个 Bits 按二进制 xxxx.yyyy.zzzzzzzz
格式,例如 0x1222
二进制为 0001 0002 00100010
,则表示版本号为 1.2.34,由于字节限制,最大版本号为 15.15.255。
示例 1:55 AA 02 xx xx 0B 00 03 09 12 22 xx
表示当前版本号为 0x1222,二进制为
0001 0002 00100010,即 1.2.34。
示例 2:55 AA 02 xx xx 0B 00 06 09 12 22 0a 12 23 xx
表示升级通道 9,当前版本号为 0x1222,二进制为
0001 0002 00100010,即 1.2.34
在涂鸦开发者平台配置了设备 MCU 升级,并开启了推送后,如果设备满足升级条件,则会在客户端 App 上进行提示,或者无提示自动升级。该命令由网关发送给模组,模组收到后通知 MCU 准备 OTA 升级。
模组发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x0C |
数据长度 | 2 | 0x000b |
数据 | 11 | 升级通道(1 字节)+ 新固件版本号(2 字节)+ 固件大小 bytes(4 字节)+ 固件校验和(4 字节) |
校验和 | 1 | xx |
示例:`0x55 AA 02 xx xx 0C 00 0a 09 12 22 00 00 78 00 30 31 32 33 xx OTA 升级通知,内容为:
0x1222
,表示 1.2.340x00007800
,即 30 KB0x30313233
MCU 应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x0C |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x00 默认值 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 0C 00 01 00 xx
目前,模组端没有处理 MCU 对 0x0C
命令的应答帧。如果 MCU 检查到数据有误,可以重新发起该数据包的请求。
设备在收到来自网关的 OTA 升级通知 后,可以开始下载 OTA 文件。下载过程是由设备端控制的,即设备发送文件数据请求命令,包含数据偏移量和数据包大小。网关收到后根据设备端的请求信息,将 OTA 文件中对应位置和长度的数据包返回给设备。该命令由 MCU 端发起,模组收到后发送给网关。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x0D |
数据长度 | 2 | 0x0009 |
数据 | 9 | 升级通道(1 字节) + 新固件版本号(2 字节)+ 数据包偏移量(4 字节)+ 数据包大小(2 字节) |
校验和 | 1 | xx |
0x1222
,表示 1.2.34。示例:0x55 AA 02 xx xx 0C 00 09
09 12 34 00 00 10 00 00 30 xx 表示请求 4096 位置开始的 48 字节数据包:
0x1222
,表示 1.2.34。0x00001000
,即偏移量为 4096 位置。0x0030
,即请求 48 字节的数据。模组应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x0D |
数据长度 | 2 | N |
数据 | N | 结果(1 字节)+ 升级通道(1 字节)+ 新固件版本号(2 字节)+ 数据包偏移量(4 字节)+ 数据包内容 |
校验和 | 1 | xx |
0x00
请求成功,0x01
请求失败,失败状态时后面的数据不存在。示例:55 AA 02 xx xx 0D xxxx 00 09 12 22 00 00 10 00 ... xx
表示请求成功 (数据部分用省略号表示)。
设备在进行 MCU OTA 升级后,将 OTA 升级结果上报给网关,该命令由 MCU 发起。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x0E |
数据长度 | 2 | 0x0004 |
数据 | 4 | 升级结果(1 字节)+ 升级通道(1 字节)+ 新固件版本号(2 字节) |
校验和 | 1 | xx |
0x00
升级成功,0x01
升级失败。示例:0x55 AA 02 xx xx 0E 00 04 00 09 12 22 xx
表示设备 MCU OTA 成功
0x00
成功模组应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x0E |
数据长度 | 2 | 0x0001 |
数据 | 1 | 0x00:OK 0x01:Error |
校验和 | 1 | xx |
示例:0x55 AA 02 xx xx 0E 00 01 00 xx
部分设备关心当前时间信息,例如用于本地定时或者显示屏显示。设备可以向网关请求时间信息,在网关应答时间信息时已经完成了时区转换。该命令由 MCU 发起,模组收到该命令后向网关发起时间请求,在收到网关回复后通过本命令的应答帧,将时间信息返回给 MCU。
MCU 发送
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x24 |
数据长度 | 2 | 0x0000 |
数据 | 0 | 无 |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 24 00 00 xx
MCU 发起,请求时间同步。
模组应答
字段 | 字节数 | 说明 |
---|---|---|
帧头 | 2 | 0x55AA |
版本 | 1 | 0x02 |
序列号 | 2 | xx xx |
命令字 | 1 | 0x24 |
数据长度 | 2 | 0x0008 |
数据 | 8 | 标准时间戳(4 字节) + 本地时间戳(4 字节) |
校验和 | 1 | xx |
示例:55 AA 02 xx xx 24 00 08 66 45 DB F0 66 46 4C 70 xx
0x6645DBF0
0x66464C70
主要变更 | 修订日期 | 修订说明 |
---|---|---|
出版 | 20250227 | 1. PLC 串口对接第一版 |
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈