V1.5: 去掉电能底数1kWh机制

This commit is contained in:
helei 2026-08-22 08:58:15 +08:00
parent 433030cd9d
commit 9c7370b815
4 changed files with 2 additions and 13 deletions

View File

@ -119,17 +119,6 @@ static void hlw8032_parse(const uint8_t *f)
if (!s_synced) { if (!s_synced) {
s_synced = 1; s_synced = 1;
log_info("> 电能: HLW8032 在线, 功率参数=%lu", (unsigned long)s_power_par); log_info("> 电能: HLW8032 在线, 功率参数=%lu", (unsigned long)s_power_par);
/* 电能底数:平台会过滤 0 值,首次(累计不足 1 度)把底数补足 1.00 kWh 并落盘。
* */
{
uint64_t one_kwh = (uint64_t)(3.6e12 /
((double)s_power_par * HLW_U_COEF * HLW_I_COEF));
if (s_total_pulses < one_kwh) {
s_total_pulses = one_kwh;
hlw8032_save();
log_info("> 电能: 底数已初始化为 1.00 kWh");
}
}
} }
s_last_frame_tick = HAL_GetTick(); s_last_frame_tick = HAL_GetTick();
} }

View File

@ -75,7 +75,7 @@ extern UART_HandleTypeDef huart3;
/*===== 蓝牙发射功率AT+RFPOWER ===== /*===== 蓝牙发射功率AT+RFPOWER =====
* 1~18 18 8 1~3 * 1~18 18 8 1~3
* */ * */
#define BLE_TX_POWER 1 #define BLE_TX_POWER 3
/*===== HLW8032 电量计量系数UART5 PD2 接收,只上报累计电量) ===== /*===== HLW8032 电量计量系数UART5 PD2 接收,只上报累计电量) =====
* : ZMPT107-1(2mA:2mA) 220V 100K 49.9R * : ZMPT107-1(2mA:2mA) 220V 100K 49.9R

View File

@ -116,7 +116,6 @@
- **系数宏**`main.h` 的 `HLW_U_COEF`=100K/49.9/1000=2.004)、`HLW_I_COEF`=1/(0.002×1000)=0.5)——改电阻/互感器只动这两个宏 - **系数宏**`main.h` 的 `HLW_U_COEF`=100K/49.9/1000=2.004)、`HLW_I_COEF`=1/(0.002×1000)=0.5)——改电阻/互感器只动这两个宏
- **防噪声假同步**:要求连续 3 帧且间隔 20~150ms 才认定在线PD2 悬空时电磁干扰偶发也能凑出校验和正确的假帧,但不可能连续卡在 50ms 节奏上) - **防噪声假同步**:要求连续 3 帧且间隔 20~150ms 才认定在线PD2 悬空时电磁干扰偶发也能凑出校验和正确的假帧,但不可能连续卡在 50ms 节奏上)
- **滤波与零漂**:电压/电流/功率经 EMA 滑动平均(系数 1/8约 0.4s 响应)压空载跳变;电流再减零点偏移 `HLW_I_ZERO_A`(0.02A) 钳位到 0功率死区 `HLW_P_DEAD_W`(2W) 以下显示 0、超出再减 `HLW_P_ZERO_W`(0.5W)——宏都在 main.h - **滤波与零漂**:电压/电流/功率经 EMA 滑动平均(系数 1/8约 0.4s 响应)压空载跳变;电流再减零点偏移 `HLW_I_ZERO_A`(0.02A) 钳位到 0功率死区 `HLW_P_DEAD_W`(2W) 以下显示 0、超出再减 `HLW_P_ZERO_W`(0.5W)——宏都在 main.h
- **底数 1kWh**首次EEPROM 空白或累计不足 1 度)同步到首帧时补足 1.00kWh 并落盘(平台过滤 0 值,保证有数据显示),只生效一次
- **持久化**累计脉冲数uint64存 EEPROM 偏移 164~171每攒约 0.1kWh 写一次(限制擦写),所有计划内复位(`reset_log_mark` 覆盖的复位点)复位前写一次,断电预警(法拉电容续航内)再写一次——除突然死机外基本不丢电量 - **持久化**累计脉冲数uint64存 EEPROM 偏移 164~171每攒约 0.1kWh 写一次(限制擦写),所有计划内复位(`reset_log_mark` 覆盖的复位点)复位前写一次,断电预警(法拉电容续航内)再写一次——除突然死机外基本不丢电量
- **上报策略**:功率 >10W 时每 30s 上报一次 `{"energy":%.2f}`≤10W 时仅首次联网报一次(省流量);继电器开关切换随状态大报文携带 energy。串口电能日志固定 10s 一条。阈值宏 `ENERGY_REPORT_POWER_W`、间隔宏 `ENERGY_REPORT_INTERVAL_MS` 在 app_loop.c - **上报策略**:功率 >10W 时每 30s 上报一次 `{"energy":%.2f}`≤10W 时仅首次联网报一次(省流量);继电器开关切换随状态大报文携带 energy。串口电能日志固定 10s 一条。阈值宏 `ENERGY_REPORT_POWER_W`、间隔宏 `ENERGY_REPORT_INTERVAL_MS` 在 app_loop.c
- **调试日志**:芯片在线时每 10s 打印一条(`电能: x.xxkWh 电压: xxx.xV 电流: x.xxA 功率: xxxx.xW`),与上报节奏无关 - **调试日志**:芯片在线时每 10s 打印一条(`电能: x.xxkWh 电压: xxx.xV 电流: x.xxA 功率: xxxx.xW`),与上报节奏无关

View File

@ -174,3 +174,4 @@
功率值并入 EEPROM 缓存判断(偏移 158改宏后下次开机自动重设一次 功率值并入 EEPROM 缓存判断(偏移 158改宏后下次开机自动重设一次
- 断电消息发送加固pow:0 改等模组回 OK~1.5s/次,最多 3 次)+ OK 后留 800ms 空口时间; - 断电消息发送加固pow:0 改等模组回 OK~1.5s/次,最多 3 次)+ OK 后留 800ms 空口时间;
3 次都失败也照常写记录复位(不因发送失败丢断电记录) 3 次都失败也照常写记录复位(不因发送失败丢断电记录)
- 去掉电能底数 1kWh 机制(用户确认平台可正常显示小数值)