From 96ed8484704316acba8fc94ba2d9c30e2987a9b7 Mon Sep 17 00:00:00 2001 From: Fancy code <258828110.@qq.com> Date: Wed, 15 May 2024 08:57:03 +0800 Subject: [PATCH] Backup. --- middleware/McuManager/README.md | 109 +++++++++++++------------------- utils/McuProtocol/README.md | 17 +++-- 2 files changed, 57 insertions(+), 69 deletions(-) diff --git a/middleware/McuManager/README.md b/middleware/McuManager/README.md index 3863ba5a..d8768efa 100644 --- a/middleware/McuManager/README.md +++ b/middleware/McuManager/README.md @@ -66,39 +66,48 @@   整机物理上电时,根据实际情况刷新设备的工作状态。 -补充: -如果掉电无法保存数据,首次物理上电向主控获取; -默认开启喂狗; - ```mermaid sequenceDiagram participant CPU participant MCU MCU ->> MCU:物理上电 MCU ->> MCU:串口初始化 -opt 检测到TEST拨档挡位 +alt 检测到TEST拨档挡位 MCU ->> CPU:物理上电 - MCU ->> +CPU:发送启动模式:TEST启动 - CPU ->> CPU:TEST启动 - CPU -->> -MCU:回复OK + CPU ->> +MCU:查询启动模式 + MCU -->> -CPU:回复TEST启动 + CPU ->> CPU:TEST启动 loop 无操作 - CPU ->> +MCU:发送关机指令 - MCU -->> -CPU:回复OK + CPU ->> MCU:发送关机指令 MCU ->> CPU:物理断电 end -end -opt 检测到ON拨档挡位 +else 检测到ON拨档挡位 note over MCU:正常工作模式,PIR触发后可给主控上电 + MCU ->> CPU:物理上电 + CPU ->> +MCU:查询启动模式 + MCU -->> -CPU:回复ON启动 + CPU ->> CPU:ON启动 + CPU ->> MCU:发送关机指令 + MCU ->> CPU:物理断电 end opt PIR触发中断 MCU ->> CPU:物理上电 MCU ->> +CPU:发送PIR触发启动 CPU ->> CPU:PIR启动 CPU -->> -MCU:回复OK - CPU ->> +MCU:发送关机指令 - MCU -->> -CPU:回复OK + CPU ->> MCU:发送关机指令 MCU ->> CPU:物理断电 end +loop 默认开启喂狗 + opt 喂狗超时 + MCU ->> CPU:断电重启 + MCU ->> +CPU:发送启动模式:喂狗异常启动 + CPU ->> CPU:异常启动 + CPU -->> -MCU:回复OK + CPU ->> MCU:发送关机指令 + MCU ->> CPU:物理断电 + end +end MCU ->> MCU:休眠 note over MCU:休眠后进入正常工作模式:当发生PIR触发时,
给CPU物理上电并发送PIR启动命令 ``` @@ -187,29 +196,28 @@ end   外置MCU充当硬件狗,在系统异常时断电重启系统。喂狗逻辑和启动模式无关。 -默认开启喂狗; - ```mermaid sequenceDiagram participant CPU participant MCU MCU ->> MCU:物理上电 MCU ->> CPU:某种启动模式触发物理上电 -opt 主控开启喂狗 - CPU ->> +MCU:开启狗/设置喂狗周期 - MCU -->> -CPU:回复OK - loop 主控喂狗 +loop 默认开启喂狗 + opt 设置喂狗周期 + note over CPU:主控选择性设置喂狗周期 + CPU ->> +MCU:开启狗/设置喂狗周期 + MCU -->> -CPU:回复OK + end + opt 主控喂狗 note over MCU:喂狗不需要回复 CPU ->> MCU:喂狗 end - loop MCU定时查狗 - alt 主控喂狗异常 - MCU ->> CPU:断电重启 - MCU ->> +CPU:发送启动模式:喂狗异常启动 - CPU ->> CPU:喂狗异常启动 - CPU -->> -MCU:回复OK - CPU ->> MCU:断电关机 - end + alt 主控喂狗异常 + MCU ->> CPU:断电重启 + MCU ->> +CPU:发送启动模式:喂狗异常启动 + CPU ->> CPU:喂狗异常启动 + CPU -->> -MCU:回复OK + CPU ->> MCU:断电关机 end end CPU ->> MCU:断电关机 @@ -218,14 +226,9 @@ MCU ->> MCU:休眠 note over MCU:休眠后进入正常工作模式:当发生PIR触发时,
给CPU物理上电并发送PIR启动命令 ``` -#### 1.3.3.3. 心跳 +#### 1.3.3.3. 超时异常启动 -  CPU单次上电时间都是有限的,在主控未主动开启喂狗时,30s主动查询一次心跳,未回复则断电重启。此设计保证程序异常时电量不会一直消耗完。 - -**注意:** 整机上电之后如果从来未开启过喂狗功能,此功能不生效。避免调试版本不停重启。 - -取消心跳,默认开启喂狗。喂狗线程模拟主线程心跳; -单次上电时间异常重启,总时间3min; +  CPU单次上电时间都是有限的,在主控未正常发送关机指令时,3min后断电进行异常启动。 ```mermaid sequenceDiagram @@ -233,37 +236,15 @@ participant CPU participant MCU MCU ->> MCU:物理上电 MCU ->> CPU:某种启动模式触发物理上电 -opt 主控开启喂狗 - CPU ->> +MCU:开启狗/设置喂狗周期 - MCU -->> -CPU:回复OK - MCU ->> MCU:激活心跳功能 +opt 主控未正常发送关机指令 + MCU ->> CPU:物理断电 + MCU ->> +CPU:发送启动模式:喂狗异常启动 + CPU ->> CPU:喂狗异常启动 + CPU -->> -MCU:回复OK end CPU ->> MCU:断电关机 MCU ->> CPU:物理断电 MCU ->> MCU:休眠 -note over MCU:只要CPU某次启动开启喂狗功能,下次启动心跳功能就会生效。 - -MCU ->> CPU:某种启动模式触发物理上电 -opt 心跳功能已经激活 -note over MCU:心跳功能在主控未开启喂狗时(异常)发挥作用。 - opt 主控未开启喂狗 - loop 30s主动查询一次心跳 - MCU ->> +CPU:发送心跳包 - alt 心跳回复 - CPU -->> -MCU:回复OK - else 5s超时, 心跳未回复 - MCU ->> CPU:断电重启 - MCU ->> +CPU:发送启动模式:心跳异常启动 - CPU ->> CPU:心跳异常启动 - CPU -->> -MCU:回复OK - CPU ->> MCU:断电关机 - end - end - end -CPU ->> MCU:断电关机 -MCU ->> CPU:物理断电 -MCU ->> MCU:休眠 -end ``` #### 1.3.3.4. PIR触发任务 @@ -331,8 +312,8 @@ MCU ->> MCU:物理上电 MCU ->> CPU:某种启动模式触发物理上电 opt 数据同步 note over MCU:此处根据协议只做一个数据示例,其它协议雷同。 - CPU ->> +MCU:设置灵敏度 - MCU -->> -CPU:回复OK + MCU ->> +CPU:获取灵敏度 + CPU -->> -MCU:回复数据 end CPU ->> MCU:断电关机 MCU ->> CPU:物理断电 diff --git a/utils/McuProtocol/README.md b/utils/McuProtocol/README.md index 117864b7..c7520d3c 100644 --- a/utils/McuProtocol/README.md +++ b/utils/McuProtocol/README.md @@ -129,8 +129,8 @@ unsigned short calculate_check_sum(const unsigned char* pData, unsigned short le | ---- | ---- | ---- | ---- | ---- | ---- | | 0x8101 | ask | - | - | 获取启动模式 | - | | 0x0101 | - | reply | Data[0]:启动模式
0x01:PIR启动
0x02:TEST启动
0x03:ON启动
0x04:连拍启动
0x05:PIR延时启动
0x06:定时(间隔一定时间)启动
0x07:关机
0x08:低电关机
0x09:异常启动 | 回复启动模式 | 异常启动数据:Data[1]
0x00:喂狗异常启动
0x01:超时异常启动 | -| 0x8102 | ask | - | - | 断电关机 | - | -| 0x8103 | ask | - | - | 喂狗 | - | +| 0x8102 | ask | - | - | 断电关机 | 断电关机不用回复 | +| 0x8103 | ask | - | - | 喂狗 | 喂狗不用回复 | | 0x8104 | ask | - | Data[2]:两字节的数字,单位s | 设置喂狗周期 | 0s代表关闭喂狗 修改为两个字节,单位s | | 0x0104 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置喂狗周期回复 | - | | 0x8105 | ask | - | - | 关闭狗 | 取消 | @@ -141,8 +141,8 @@ unsigned short calculate_check_sum(const unsigned char* pData, unsigned short le | 0x0107 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置日期和时间回复 | - | | 0x8108 | ask | - | Data[0]:灵敏度
0-9 | 设置PIR灵敏度 | - | | 0x0108 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置PIR灵敏度回复 | - | -| 0x8109 | ask | - | Data[0]:Hour
0-23
Data[1]:Min
0-59
Data[2]:Sec
0-59 | 设置连拍间隔 | - | -| 0x0109 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置连拍间隔回复 | - | +| 0x8109 | ask | - | Data[0]:连拍间隔,单位s | 设置连拍启动 | 设置连拍启动后会立即关机,一般连拍间隔较大时使用该功能,连拍间隔较小时Linux单次完成连拍。 | +| 0x0109 | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 设置连拍启动回复 | - | | 0x810A | ask | - | Data[0]:控制模式
0-关闭红外灯
1-开启红外灯 | 红外灯控制 | 取消 | | 0x010A | - | reply | Data[0]:结果
0x01:成功
0x02:失败 | 红外灯控制回复 | 取消 | | 0x810B | ask | - | - | 获取光敏值 | 取消 | @@ -152,9 +152,16 @@ unsigned short calculate_check_sum(const unsigned char* pData, unsigned short le | 0x4101 | - | ask | Data[0]:启动模式
0x01:PIR启动
0x02:TEST启动
0x03:ON启动
0x04:连拍启动
0x05:PIR延时启动
0x06:定时(间隔一定时间)启动
0x07:关机
0x08:低电关机
0x09:异常启动 | 发送启动模式 | 异常启动数据:Data[1]
0x00:喂狗异常启动
0x01:超时异常启动 | | 0xC102 | reply | - | - | 回复心跳包 | 取消 | | 0x4102 | - | ask | - | 发送心跳包 | 取消 | +| 0xC106 | reply | - | Data[0]:Hour
0-23
Data[1]:Min
0-59
Data[2]:Sec
0-59 | 回复获取间隔启动时间 | - | +| 0x4106 | - | ask | - | 获取间隔启动时间 | - | +| 0xC107 | reply | - | Data[0]:Year
Data[1]:Mon
1-12
Data[2]:Day
0-31
Data[3]:Hour
0-23
Data[4]:Min
0-59
Data[5]:Sec
0-59 | 回复获取日期和时间 | - | +| 0x4107 | - | ask | - | 获取日期和时间 | - | +| 0xC108 | reply | - | Data[0]:灵敏度
0-9 | 回复获取PIR灵敏度 | - | +| 0x4108 | - | ask | - | 获取PIR灵敏度 | - | ### 1.2.1. 名词解析 | 名词 | 解析 | | ---- | ---- | -| 超时异常启动 | MCU给主控上电后(**非TEST启动**),不管主控是否正常喂狗,如果单次上电时长超过3min未关机,给主控断电重启一次。 | \ No newline at end of file +| 超时异常启动 | MCU给主控上电后(**非TEST启动**),不管主控是否正常喂狗,如果单次上电时长超过3min未关机,给主控断电重启一次。 | +| 间隔启动时间 | 例如:60min/次。 | \ No newline at end of file