From 01b5ab0e443ae9ba5715681410a6af548548d1a3 Mon Sep 17 00:00:00 2001 From: helei Date: Sat, 15 Aug 2026 16:19:20 +0800 Subject: [PATCH] =?UTF-8?q?V1.5:=20=E6=96=87=E6=A1=A3=E8=A1=A5=E9=BD=90(EM?= =?UTF-8?q?A=E6=BB=A4=E6=B3=A2/=E9=9B=B6=E6=BC=82=E5=AE=8F/=E5=BA=95?= =?UTF-8?q?=E6=95=B01kWh/=E4=B8=8A=E6=8A=A5=E7=AD=96=E7=95=A5/=E8=BD=AC?= =?UTF-8?q?=E4=B9=89=E4=BF=AE=E5=A4=8D=E8=AF=B4=E6=98=8E/OLED=E5=B8=83?= =?UTF-8?q?=E5=B1=80=E4=B8=8E=E6=AC=A2=E8=BF=8E=E9=A1=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- V1.5/STM32F103_App1/README.md | 9 ++++++--- V1.5/版本说明.md | 7 +++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/V1.5/STM32F103_App1/README.md b/V1.5/STM32F103_App1/README.md index 37c0922..b9d3926 100644 --- a/V1.5/STM32F103_App1/README.md +++ b/V1.5/STM32F103_App1/README.md @@ -114,18 +114,21 @@ - **通信**: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)——改电阻/互感器只动这两个宏 +- **防噪声假同步**:要求连续 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 +- **底数 1kWh**:首次(EEPROM 空白或累计不足 1 度)同步到首帧时补足 1.00kWh 并落盘(平台过滤 0 值,保证有数据显示),只生效一次 - **持久化**:累计脉冲数(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 -- **调试日志**:芯片在线时每分钟日志同时打印电压/电流/功率(`运行时间: ... 电能: x.xxkWh 电压: xxx.xV 电流: x.xxA 功率: xxxx.xW`) +- **调试日志**:芯片在线时每 10s 打印一条(`电能: x.xxkWh 电压: xxx.xV 电流: x.xxA 功率: xxxx.xW`),与上报节奏无关 ## OLED 屏幕显示(128x64 + GB2312 字库 IC) - 移植自《485模拟磅秤数据带CRC》的 oledisp 驱动,GPIO 模拟 SPI(屏幕 CS1 + 字库 CS2 两路片选,字库数据从 FSO 脚读回) - 字符串直接写中文(工程源文件即 GBK 编码,字库 IC 按 GB2312 地址换算取字模) -- **已联网界面**(sys_task 每 1s 刷新):第 0 行 电压/电流,第 1 行 功率/电能(计量芯片离线时显示"计量芯片离线"),第 2 行 继电器状态中文(`开关:开开关关`),第 3 行 网络 + 运行时间(`WiFi已连接02:35`,满 1 天显示 `1天02时`) +- **已联网界面**(sys_task 每 1s 刷新):第 0 行 网络 + 运行时间(`WiFi 00:02:35`,天:时:分),第 1 行 电压/电流,第 2 行 功率/电能(计量芯片离线时显示"计量芯片离线"),第 3 行 继电器状态中文(`开关:开开关关`) - **未联网界面**:只显示联网进度,不显示电能/开关——4G 模式显示"正在等待4G联网"+ 最近完成阶段(模块复位成功/AT指令成功/SIM卡检测成功/附着网络成功/连接服务器中/无SIM卡,状态由 `g_net_ui_phase` 从 air780e.c 各阶段更新);WiFi 固定热点显示"WiFi固定模式 正在搜索热点"+倒计时,SmartConfig 显示"智能配网 请打开APP广播"+倒计时(倒计时由 esp_wait_countdown 写入 `g_net_ui_countdown`) - **防烧屏**:每 10s 内容整体右移 0/2/4px 轮换 -- 开机显示"智能控制器 + 版本号"欢迎页,首次刷新后进入常态界面 +- 开机欢迎页按产品模式显示标题(带秤=`智能水产投料机`,无秤=`继电器控制终端`)+ `V1.5.0 RTOS`;4G 阻塞建链期间由 bg_delay 钩子每 500ms 刷进度页(调度器启动前 sys_task 未运行,曾一直卡在欢迎页) ## 双通道网络(4G 优先,WiFi 兜底) diff --git a/V1.5/版本说明.md b/V1.5/版本说明.md index a45a1db..5cb7036 100644 --- a/V1.5/版本说明.md +++ b/V1.5/版本说明.md @@ -126,3 +126,10 @@ 原 9 处 #if 编译分支全部改运行时判断(状态上报字段/sw1·feeding 语义/继电器1记忆/秤轮询) - OLED 欢迎页改"继电器控制终端 / V1.5.0 RTOS";修复 4G 阻塞建链期间屏幕不显示联网进度 (bg_delay 挂调度器启动前的 500ms 刷新钩子) +- 电能底数:首次同步补足 1.00kWh(平台过滤 0 值,保证上电即有数据显示) +- 电能上报策略:>10W 每 30s 一次,≤10W 仅首次联网报一次,开关切换随状态大报文携带 +- 电流零点偏移(HLW_I_ZERO_A)/功率死区+偏移(HLW_P_DEAD_W/HLW_P_ZERO_W); + 电压/电流/功率 EMA 滑动平均滤波(1/8) 压空载跳变;HLW8032 连续 3 帧 20~150ms 防噪声假同步 +- 修复 4G MPUB 转义错误:`` 误写为 C 八进制 ``(=0x12 字节),energy/pow/指令应答 + 共 8 处独立报文平台收不到(上电能收到是因为状态大报文转义本来就对) +- OLED 欢迎页按产品模式显示标题;运行时间改 天:时:分 格式