HSM 嵌入式中间件技术规范-笔记

来源: 原创 作者:slmpt 2026-06-08 08:52:33
HSM(Hanzi‑Sensor Middleware)​ 是一款运行于 RT-Thread​ 之上的轻量级语义中间件。
它位于 驱动层与 Modbus 输出层之间,旨在解决工业现场 “设备能读数,但不会说话”​ 的痛点。

一、核心定位与设计约束

1.1 核心价值

HSM(Hanzi‑Sensor Middleware)是位于 RT-Thread 驱动层与 Modbus 输出层之间的轻量级语义中间件。

核心价值:在 MCU 资源受限(无浮点、无动态内存)条件下,将物理传感数据转化为标准化的语义编码,消除云端乱码风险。

1.2 设计铁律(强制)

以下条款具有强制性,违反任意一条视为设计不合格。

 

铁律 说明
无字符化 设备端禁止处理字符串(GB2312/UTF-8),避免编码混乱。
接口恒定 Modbus 寄存器固定,防止协议膨胀。
确定性 相同输入特征必须产生相同语义编码,无随机性。
防变砖 规则表更新必须支持断电回滚,防止设备变砖。
索引上限 单 Namespace 内索引 ≤ 4095,预留扩展空间。
自描述 暴露规则版本与 CRC 校验,便于上位机对齐。
仲裁防抖 仲裁器必须实现滞回与冷却,防止高频振荡。
零堆分配 禁止动态内存分配,保证实时性。
传感器可溯源 Source_ID 必须通过描述符表定义,禁止匿名传感器。

二、系统架构

2.1 架构总览

HSM 采用单向流水线架构,职责边界清晰,避免模块间耦合。

[ 传感器 ] → [ 感知接入层 ] → [ 数据处理层 ] → [ 仲裁器 ] → [ 语义管理层 ] → [ 语义输出层 ] → [ 云端 ]
  • 语义输出层:Modbus 寄存器填充。
  • 语义管理层:指纹生成、查表映射。
  • 仲裁器:解决多传感器冲突,输出唯一语义。
  • 数据处理层:特征提取、趋势分析。
  • 感知接入层:复用 RT-Thread Sensor 驱动。

 

三、核心机制:语义编码

3.1 语义编码结构

将版本语义从编码中移除,确保编码的长期稳定性。

15  14  13  12  11  10  9  8  7  6  5  4  3  2  1  0
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
|  Namespace (4 bit)  |          Index (12 bit)                |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

设计解释

  • Namespace:区分标准语义、厂商语义、系统语义。
  • Index:语义索引,指向规则表中的具体条目。
  • 无版本位:规则版本变更不影响编码值,通过外部元数据体现。

四、传感器描述符规范

4.1 传感器描述符表

为解决 OEM 现场传感器数量膨胀导致的“ID 语义漂移”问题,强制定义描述符表。

typedef struct {
    uint8_t  source_id;     // 传感器槽位索引 (0~255)
    uint16_t sensor_type;   // 传感器类型编码 (0x0001=温度)
    uint8_t  zone;          // 区域 (1=室内, 2=室外)
} sensor_desc_t;

const sensor_desc_t sensor_desc_table[] = {
    {0, 0x0001, 1}, // ID0: 温度, 室内
    {1, 0x0002, 1}, // ID1: 湿度, 室内
    {2, 0x0001, 2}, // ID2: 温度, 室外
};

解释

  • zone:辅助信息,供上位机使用。
  • sensor_type:用于仲裁器匹配规则表。
  • Source_ID:仅作为索引,HSM 内核不关心其物理含义。

 

五、仲裁器规范

5.1 仲裁优先级

当多个传感器同时触发异常时,输出唯一语义。

优先级 规则
P0 (最高) 系统故障(0xFxxx),立即覆盖所有语义。
P1 安全相关(过温/过压),遵循“最坏情况”原则。
P2 普通业务语义,按权重仲裁。

5.2 仲裁器状态机

INIT → IDLE ↔ ACTIVE → ALARM → COOLDOWN → IDLE

关键解释

  • COOLDOWN:高警解除后冷却期,防止频繁切换。
  • ALARM:高优先级安全事件,锁定输出。
  • ACTIVE:普通业务语义激活。
  • IDLE:无事件。

5.3 关键参数(const 存储)

const uint16_t TEMP_HIGH_ENTER = 360;  // 36.0℃ 进入过热
const uint16_t TEMP_HIGH_EXIT  = 350;  // 35.0℃ 退出过热
const uint16_t ARB_DEBOUNCE_MS = 50;   // 消抖时间,过滤毛刺
const uint16_t ARB_COOLDOWN_MS = 5000; // 冷却期,防止报警风暴

解释:所有参数存 Flash,不占 RAM。

 

六、Modbus 接口规范

6.1 寄存器定义

HSM 严禁动态扩展寄存器。

地址 名称 权限 说明
0x0000 Semantic_Code RO 16 位语义编码
0x0001 Severity_Level RO 0=Info, 1=Warn, 2=Error
0x0002 Source_ID RO 传感器索引
0x0003 Status RW Bit 0: Valid
Bit 1: Change Flag
0x0004 Rule_Version RO 规则集版本号
0x0005 Rule_CRC16 RO 规则表完整性校验

解释

  • Rule_CRC16:快速校验规则表是否损坏或被篡改。
  • Rule_Version:上位机据此加载对应字典。

 

七、规则表生命周期管理

7.1 Flash 存储布局

引入 Header 结构,杜绝“裸数据”风险。

+-----------------------+
| Header (Magic/CRC/Ver)|
+-----------------------+
| Rule Data             |
+-----------------------+
| Rule_Backup           |
+-----------------------+
| Pointer (1 Byte)      |
+-----------------------+

7.2 原子更新流程

硬件复位(禁止软重启,防止 RAM 残留)。

  • 擦除 Backup 区。
  • 写入 Header + Rule Data。
  • 校验 CRC。
  • 修改 Pointer 字节(原子操作)。

八、代码实现规范

条款 要求 解释
Volatile Modbus 寄存器 volatile。 防止编译器优化导致上位机读不到更新。
原子赋值 语义编码 16 位一次性写入。 防止中断打断导致半个字被读取。
无递归 禁止递归调用。 防止栈溢出。
栈深度 ≤ 256 字节。 适应小内存 MCU。
常量修饰 配置参数必须为 const。 节省 RAM,存 Flash。

性能边界

  • Modbus 响应 ≤ 10 ms:满足工业实时性。
  • 仲裁器延迟 ≤ 100 µs:不含消抖等待。
  • 指纹生成 ≤ 200 µs:@72MHz。
  • RAM ≤ 512 B:含全局状态与栈。
  • Flash ≤ 16 KB:含描述符表与规则表。

九、自检结论

检查项 状态 说明
无字符化 无字符串处理。
接口恒定 仅 6 个寄存器。
仲裁防抖 滞回与冷却机制生效。
传感器治理 描述符表约束 ID 语义。
版本外置 编码稳定,版本元数据独立。
完整性校验 CRC16 防止规则表损坏。

签发:HSM 技术标准委员会

生效日期:2026-05-16

 

 

 

 

 

专题

查看更多
机器人

企业 | 累计近10亿元!清华系具身创企连续完成两轮融资

灵巧手 | 市场全景扫描,谁将领跑全球量产革命?

灵巧手 | 国内外主控芯片方案深度解析

低空飞行器

市场 | 从白皮书数据看北斗规模化应用发展前景

技术 | “低空经济” 崛起,2025无人机市场暗藏哪些潜力趋势?

应用 | 从地面到太空:Qorvo卫星通信如何串联低空经济?

IC品牌故事

IC 品牌故事 | 三次易主,安世半导体的跨国迁徙

IC 品牌故事 | 开放合作+特色深耕,华虹的突围之路

IC 品牌故事 | Wolfspeed:从LED到SiC,被中国厂商围追堵截的巨头

0
收藏
0