3675b89e8e
采样板注入 Ua=5V/Ia=0.5A 读数偏小,根因是固件只输出引脚电压、 缺「端子→引脚」变比。折算改三维: 工程量 = (code + b) × k[µV/码] × 1e-6 × r k 保持 ROM 引脚 LSB,b 为零点,r 为端子变比(int32 Q16)。 变比不能并进 k:UA 端子域 k 达 1.5e5 µV/码、Q16 溢出 int32; r 单独存 Q16 不溢出。两点标定改标 r,k 仍是板级事实。 - 新开单段 [adc_cal_sec](8 键 r_ua..r_in),cfg 段数达 8/8 上限 - 一次变比复用 prot_set 四项,不新开段;r=0 表示本路不折算 - ROM 默认带台架实测变比(电压族 1000、电流族 29.4118), 烧进固件即显二次值;VALID 仍须两点标定,两者互不派生 - eng 判据改「每路要么已配变比、要么削顶不显示」,不再看 VALID - 104 地址 0x8050~0x8057 写 r,run_par_cal_r_set 写值与置脏同函数 - 录波 v2:通道表加 int32 r_q16,头 128→160、整段 5250→5282; code_to_milli 用余数分解换等价单次圆整,20 万组大整数对拍 0 不符 - 文档同步:采集与算法层/通道映射/故障录波/网络配置/配置文件/ 产品需求/内存台账,历史带日期实测数字按冻结口径不改 - 单测 13 套全绿,/keil-build 0 错误 0 警告(256024/31760/ 2080/152368),RAM 实测回填内存内容分配策略 §6.1
52 lines
2.4 KiB
Python
52 lines
2.4 KiB
Python
#!/usr/bin/env python3
|
||
# -*- coding: utf-8 -*-
|
||
"""录波段格式层(段文件字节布局编解码 + 打包游标 + 段名轮转,wave_store)主机侧纯逻辑单元测试运行器(纯标准库)。
|
||
|
||
做什么:
|
||
用本机 MSVC 编译 test/host/wave_store/wave_store_test.c(它以 #include 纳入
|
||
**生产源文件** App/algo/wave_store.c),在 PC 上离线跑 CRC-16/MODBUS 规范锚点、
|
||
整段长度等式(32 + 16*ch + pts*ch*2 + 2 == 5282)、段头编解码往返、拒绝清单、
|
||
按通道分列的偏移换算、打包游标三段推进与四条拒绝路径、自产字节自检、段文件名
|
||
轮转与反解,失败即非 0 退出。零硬件、零烧录、毫秒级。顺带把一段合成段写到 %TEMP%
|
||
供 PC 侧读段脚本(test/host/wave_read.py)做只读互验(不参与判定)。
|
||
工具链探测 / 编译运行全部委托 test/host/common/unit_test_harness.py。
|
||
|
||
为什么要主机侧单测(而不是只等台架):
|
||
段文件是证据。偏移错一个字节、CRC 少覆盖一段、轮转号回绕错一位,在板子上全是
|
||
静默的,只有 PC 脚本或回放页才发现,而那时现场已经没了(口径属主见
|
||
docs/子系统设计/故障录波设计说明.md §6.2 与 §6.3)。FatFs 真落盘的短写判失败
|
||
(§5.2 第二条)需要板子,不在本套件。
|
||
|
||
本层为纯逻辑:不 include HAL/CMSIS/RTOS、不调 FatFs,**不需要任何桩目录**。
|
||
|
||
用法(仓库根目录):
|
||
python test/host/wave_store/run_unit_test.py
|
||
|
||
退出码:0=PASS / 1=测试失败 / 2=环境错误。
|
||
设计依据:docs/子系统设计/故障录波设计说明.md §5.2 §6.2 §6.3 §8.1;
|
||
docs/子系统设计/故障录波设计说明.md §10。
|
||
创建日期:2026-10-29
|
||
"""
|
||
import os
|
||
import sys
|
||
|
||
HERE = os.path.dirname(os.path.abspath(__file__))
|
||
ROOT = os.path.dirname(os.path.dirname(os.path.dirname(HERE)))
|
||
sys.path.insert(0, os.path.join(ROOT, "test", "host", "common"))
|
||
|
||
from unit_test_harness import TestBuild, run_host_unit_test # noqa: E402
|
||
|
||
# 无桩目录:wave_store.c 只依赖 stdint/stddef 与 App/algo/wave_store.h。
|
||
BUILD = TestBuild(
|
||
name="Wave Store Tests",
|
||
src=os.path.join(HERE, "wave_store_test.c"),
|
||
include_dirs=[
|
||
os.path.join(ROOT, "App", "algo"),
|
||
HERE,
|
||
],
|
||
summary_marker="=== Wave Store Tests:",
|
||
)
|
||
|
||
if __name__ == "__main__":
|
||
sys.exit(run_host_unit_test(BUILD))
|