V1.5: 去掉电能底数1kWh机制
This commit is contained in:
parent
433030cd9d
commit
9c7370b815
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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`),与上报节奏无关
|
||||||
|
|
|
||||||
|
|
@ -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 机制(用户确认平台可正常显示小数值)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue