V1.5: 计划内复位前保存累计电量(reset_log_mark内调hlw8032_save),复位不再丢电量
This commit is contained in:
parent
3647d0fb14
commit
79ea75f669
|
|
@ -14,6 +14,7 @@
|
|||
#include "log.h"
|
||||
#include "main.h"
|
||||
#include "app_loop.h"
|
||||
#include "hlw8032.h"
|
||||
#include "../W25Q64/w25q64.h"
|
||||
#include "string.h"
|
||||
|
||||
|
|
@ -123,6 +124,7 @@ static void append_record(uint8_t reason, uint32_t uptime_sec)
|
|||
/* 主动复位前标记细分原因(共享 RAM,热复位后 APP 开机读取) */
|
||||
void reset_log_mark(uint8_t reason)
|
||||
{
|
||||
hlw8032_save(); /* 计划内复位前把累计电量落 EEPROM(无变化时空操作) */
|
||||
BOOT_SHARE->pending_reason = reason;
|
||||
boot_share_store();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@
|
|||
- **通信**:4800bps 8E1(F1 上按 9 位帧长 + 偶校验配置),芯片每 50ms 主动上报 24 字节帧,只收不发;帧同步 = 首字节 0x55/0xAA/0xFx + 第二字节 0x5A + 校验和([2]~[22] 相加低 8 位)
|
||||
- **电量算法**(手册公式):`kWh = 总脉冲 × 功率参数寄存器 × 电压系数 × 电流系数 / (10^9×3600)`;PF 寄存器 16 位溢出由数据更新寄存器 bit7 翻转计数(`总脉冲 = k×65536 + PF`),50ms 一帧不可能漏翻转;芯片断电重启(计数值倒退)自动重新基准
|
||||
- **系数宏**:`main.h` 的 `HLW_U_COEF`(=100K/49.9/1000=2.004)、`HLW_I_COEF`(=1/(0.002×1000)=0.5)——改电阻/互感器只动这两个宏
|
||||
- **持久化**:累计脉冲数(uint64)存 EEPROM 偏移 164~171;每攒约 0.1kWh 写一次(限制擦写),断电预警(法拉电容续航内)立即写一次,掉电损失 <0.1kWh
|
||||
- **持久化**:累计脉冲数(uint64)存 EEPROM 偏移 164~171;每攒约 0.1kWh 写一次(限制擦写),所有计划内复位(`reset_log_mark` 覆盖的复位点)复位前写一次,断电预警(法拉电容续航内)再写一次——除突然死机外基本不丢电量
|
||||
- **上报**:MQTT 就绪且芯片在线(1s 内有有效帧)时,每分钟随运行心跳上报一次 `{"energy":%.2f}`;未联网/芯片不在线不上报
|
||||
- **调试日志**:芯片在线时每分钟日志同时打印电压/电流/功率(`运行时间: ... 电能: x.xxkWh 电压: xxx.xV 电流: x.xxA 功率: xxxx.xW`)
|
||||
|
||||
|
|
|
|||
|
|
@ -102,6 +102,8 @@
|
|||
PF 16 位溢出靠数据更新寄存器 bit7 翻转计数(50ms 一帧不会漏);芯片断电重启自动重新基准
|
||||
- 系数宏 `HLW_U_COEF`(2.004)/`HLW_I_COEF`(0.5) 在 main.h,对应 ZMPT107-1(100K/49.9R)+CT 1000:1(2R)
|
||||
- 芯片在线时每分钟日志打印电压/电流/功率/电能(调试校准用)
|
||||
- 修复:计划内复位(心跳超时/被踢/OTA/命令复位等 reset_log_mark 覆盖点)前未保存电量 →
|
||||
reset_log_mark 里统一调 hlw8032_save(),复位不再丢未落盘的电量
|
||||
- 修复:PD2 浮空噪声/真实帧使 online 为真后,每分钟电能日志在 sys_task(1KB 栈) 里格式化 4 个浮点数
|
||||
导致栈溢出卡死看门狗复位 → sys_task 栈加到 2KB;帧同步加"连续 3 帧且间隔 20~150ms"防噪声假同步
|
||||
- 累计脉冲(uint64)持久化 EEPROM 偏移 164:每攒约 0.1kWh 写一次 + 断电预警时立即写(法拉电容续航内)
|
||||
|
|
|
|||
Loading…
Reference in New Issue