proto(V1.05): variation 由 2B无符号 扩展为 3B有符号

背景: variation 是遥测量, 用于离线跟踪分析车检器算法。原 2B 无符号
存在两个缺陷: (1)CAPVD域量级~131072, 大车全覆盖时偏差可超65535而回绕,
污染数据; (2)绝对值丢失方向, 分不清'车进入'与'反向漂移'。

改动 (三端联动, 同版本发布):
- 协议 DLD960Loop_串口通信协议.md: 变化量 2B->3B有符号补码, 定义
  variation=Origin-CAPVD (正=车/裕量, 负=反向漂移); 每单元11->12B,
  Len 47->51; 补符号扩展说明; 示例报文重算(XOR=FE SUM=38); 修订记录V1.05
- vd960Loop main.c: 组包 uint32->int32, Origin-CAPVD, 3B LE, +-2^23饱和防回绕
- vd960DBN loop_uart_proto.h: variation uint16->int32
- vd960DBN loop_uart_proto.c: 步长11->12, data_len/11->/12, misc偏移右移1B,
  variation 3B解码+bit23符号扩展
- vd960DBN iot_mqtt_srv.c: fast_mode 阈值判断改 abs(variation)>=10, 正负变化都加速

验证: 本地 gcc 隔离单测 编解码往返/符号扩展/饱和/方向语义/fast_mode 全通过;
大车 diff=100000 旧版回绕34464 新版正确保留。字节账: 帧56B < Loop缓冲64B
< DBN缓冲512B < MSS576, 均不溢出。整体固件编译需在 Keil/MounRiver 侧完成。
This commit is contained in:
wangfq
2026-07-14 14:47:39 +08:00
parent db52f92348
commit bfc9646e48
5 changed files with 46 additions and 27 deletions
@@ -412,7 +412,10 @@ void iot_mqtt_publish_sensor(void) {
{
uint8_t i;
for (i = 0; i < _cached_sr.coil_count; i++) {
if (_cached_sr.coils[i].variation >= IOT_MQTT_VARIATION_THRESHOLD) {
// variation 为有符号(V1.05): 正=车/裕量, 负=反向漂移, 两向显著变化都加速
int32_t v = _cached_sr.coils[i].variation;
int32_t av = (v >= 0) ? v : -v;
if (av >= IOT_MQTT_VARIATION_THRESHOLD) {
fast_mode = 1;
break;
}