Skip to content

bit 容器拆状态字

bit 容器是 aiots 物模型里的一个数据类型, 专门处理"一个值装多个状态"的状态字——采集时自动按位拆成独立属性, 不用写一行解析代码。

📖 配置教程:物模型比特位类型教程

什么时候会用到这个功能

读到 Modbus 寄存器, 返回的是一个状态字。 接 Modbus 设备的人都见过: 从寄存器读上来一个整数, 手册最后一页写着它是状态字——第 1 位缺相、第 2 位过压、第 3 位过流。不按位拆开, 谁都不知道设备到底哪里报警。这时候用 bit 容器, 把位号配上去, 采集时自动拆开。

做配电项目, 几百台电表的告警状态字要逐位拆。 电表告警状态字十几个位: 电压告警、电流告警、断相……传统做法要么写代码做位移运算, 要么存原始值让运维翻手册对二进制。用 bit 容器, 每个位变成独立属性, 拆完还能直接给单个位配告警。

PLC 把设备状态压进一个字节上报。 西门子PLC、欧姆龙PLC 常把运行、故障、告警等标志位打包进一个寄存器, 位 0 运行、位 1 故障、位 2 告警。你要在平台上把这些标志位变成可查询、可告警的独立状态, bit 容器按位拆开即可。

一组开关量打包上报。 门磁、按钮、继电器这类 DI 开关量, 一组状态压在一个字里。bit 容器拆成每个开关的独立布尔状态, 界面上逐个显示。

能解决哪些问题

问题解法
状态字不写代码没法解析配位号, 采集时自动按位拆解
设备换型号、位定义跟着变改配置, 不用改代码、不用发版
单个位要独立告警/入库/展示每个位是独立属性, 直接配告警规则
运维看不懂二进制状态字界面直接显示"电流告警: 是"