跳到主要内容

13.3 计量单位

在工业和物联网场景中,不同设备或系统采集的测量值往往使用不同的计量单位。即使在数据入库时进行了单位转换,由于项目实施时间不同及其他各种原因,存入数据库后仍可能存在计量单位不一致的情况。IDMP 通过**计量单位(UOM)**库来管理这一问题,支持在属性公式、计算和显示中自动进行单位转换。

计量单位在基础库 → 计量单位中管理。

13.3.1 计量单位分类

IDMP 将计量单位组织为计量单位分类——衡量同一物理量的单位分组。每个分类有一个标准单位(内部用于转换的基准单位),以及可选的一个或多个基础计量单位分类(用于导出量,如压力 = 质量 / (长度 × 时间²))。

IDMP 内置以下计量单位分类:

分类基本计量单位基础计量单位分类
面积平方米长度
计算机存储字节
密度千克每立方米长度、质量
电流安培
电压伏特
电功率伏安
能量焦耳
长度
质量千克
分子量克每摩尔
物质的量摩尔
平面角弧度
功率瓦特
压力帕斯卡长度、质量、时间
比率%
比能焦耳每千克长度、时间
比容立方米每千克长度、质量
温度开尔文
时间
速度米每秒
体积立方米长度

您可以通过添加自定义计量单位分类来扩展此列表。

13.3.2 查看分类中的单位

点击任意计量单位分类名称,查看其包含的各个单位。单位列表显示:

说明
名称单位名称(如升、美制加仑)
缩写简短符号(如 L、US gal)
来源内置单位为 系统定义,自定义单位显示创建者用户名
描述可选描述
标准换算相对于标准单位的换算公式
换算量多少该单位等于一个标准单位

顶部的数量字段允许输入参考量,预览该分类下所有单位的换算结果。

13.3.3 创建自定义计量单位分类

在计量单位列表页点击 + 创建新分类。填写以下字段:

字段说明
名称(必填)分类名称。支持字母、数字、下划线、连字符和空格。
标准计量单位(必填)此分类的标准(基准)单位名称。
计量单位缩写(必填)标准单位的缩写。
描述可选描述。
基础计量单位分类可选。添加此分类派生自的一个或多个已有分类(如压力派生自质量、长度和时间)。点击 + 逐一添加。

点击保存创建分类。

13.3.4 向分类中添加自定义单位

打开某个计量单位分类,点击 + 添加新单位。填写以下字段:

字段说明
名称(必填)单位名称。支持字母、数字、下划线、连字符和空格。
缩写(必填)单位的简短符号。
描述可选描述。
参考计量单位用于换算的参考单位(默认为该分类的标准单位)。
参考系数乘法系数:新单位 = 参考系数 × 参考计量单位。默认:1.0。
参考偏移量系数之后加上的偏移量:新单位 = 参考系数 × 参考计量单位 + 参考偏移量。适用于非比例换算,如摄氏度 ↔ 华氏度。默认:0.0。

点击保存添加单位。

13.3.5 为属性分配计量单位

每个属性可配置以下内容:

  • 计量单位分类 — 物理量类型(如温度)
  • 默认计量单位 — 数据在 TSDB 中存储所用的单位(如开尔文)
  • 显示计量单位 — 向用户展示时使用的单位(如摄氏度)

当默认计量单位和显示计量单位不同时,IDMP 会自动将存储值换算为显示单位。

13.3.6 公式中的自动单位转换

当配置了计量单位的属性参与公式表达式运算时,IDMP 会自动应用单位换算规则,确保计算结果在物理上是有意义的。

13.3.6.1 加减运算

对于 A + BA - B

  • 如果 A 和 B 属于不同的计量单位分类,则报错。
  • 如果 A 和 B 属于相同的计量单位分类但单位不同,IDMP 会将 B 的单位换算为 A 的单位后再计算。
  • 如果一个操作数有计量单位而另一个没有,则无单位的操作数被视为与另一个具有相同单位,然后再计算。

13.3.6.2 乘除运算

对于 A * BA / B

  • 两个操作数先分别换算为各自计量单位分类的标准单位。
  • 结果的计量单位分类通过组合两个操作数的基础计量单位分类来确定(如质量 / (长度 × 时间²) = 压力)。
  • 结果单位为所确定分类的标准单位。
  • 如果乘除运算的结果无法匹配任何已定义的计量单位分类,则报错。

示例: 属性 A 的单位为 cm(长度),属性 B 的单位为 (面积)。公式 A * B 会将 A 换算为米,与 B 相乘,结果单位为 (体积)。

13.3.6.3 比较运算与位运算

对于运算符 =<>><>=<=|&

  • 如果两边都有计量单位但属于不同分类,则报错。
  • 如果一边有计量单位而另一边没有,则忽略计量单位。
  • 如果两边都有计量单位且属于相同分类但单位不同,则在运算前将右侧的单位换算为左侧的单位。

13.3.6.4 函数

对函数应用于属性的结果,其计量单位与函数第一个参数的计量单位一致。例如,SIN(A) 的结果计量单位与 A 相同。

提示

在属性上编辑公式表达式时,点击表达式编辑器中的评估按钮,可提前预览计算值并自动检测单位错误。如果属性尚未分配计量单位,IDMP 将根据最后一次评估结果自动推荐计量单位。

13.3.7 导入和导出计量单位

IDMP 使用 JSON 文件在不同环境之间传输计量单位分类及其单位定义,用于迁移、备份或复用单位配置。导出时不携带环境本地 ID,而是使用名称作为引用,导入时由目标环境重新分配 ID。

13.3.7.1 文件格式

导入和导出使用同一 JSON 格式。format 固定为 idmp-uomversion 固定为 1uomClasses 为分类数组,支持一次传输多个分类。每个分类包含名称、标准单位、基础计量单位分类及其单位列表,单位之间通过 refUom 名称建立换算引用。

{
"format": "idmp-uom",
"version": 1,
"uomClasses": [
{
"name": "Length",
"description": "Length units",
"baseClasses": [],
"canonicalUom": "meter",
"canonicalAbbr": "m",
"uoms": [
{
"name": "meter",
"abbreviation": "m",
"refUom": null,
"refFactor": 1.0,
"refOffset": 0.0
},
{
"name": "kilometer",
"abbreviation": "km",
"refUom": "meter",
"refFactor": 1000.0,
"refOffset": 0.0
}
]
}
]
}

13.3.7.2 导入和导出计量单位分类

在计量单位分类列表中,勾选一个或多个分类,然后点击导出计量单位分类。系统将下载包含所选分类、标准单位、计量单位及换算关系的 uom-classes.json 文件。

点击导入计量单位分类并选择此前导出的 JSON 文件,即可在当前环境创建这些分类。一个文件可以包含多个分类,基础计量单位分类既可以指向目标环境中已有的分类,也可以指向同一文件内的新分类。

13.3.7.3 导入和导出分类中的计量单位

打开一个计量单位分类,勾选一个或多个单位,然后点击导出计量单位。系统会自动将标准单位和所选单位依赖的参考单位一并写入 JSON 文件,确保导出的单位可独立导入。

点击导入计量单位并选择 JSON 文件,即可将单位添加到当前分类。文件必须只包含一个分类,且其标准单位名称和缩写必须与当前分类一致。

13.3.7.4 异常与冲突处理

场景系统行为
formatversion 不正确拒绝导入,并提示具体的字段和值
分类名称已存在拒绝整包导入,不覆盖现有分类
同一文件内分类名称重复拒绝整包导入
向已有分类导入同名单位或重复缩写拒绝整批导入,不更新、不覆盖、不跳过
文件内单位名称或缩写重复拒绝整批导入
文件中的标准单位与目标分类不一致拒绝导入,目标分类保持不变
引用单位缺失、循环引用或参考系数非法拒绝导入
分类名称含路径分隔符或 ..拒绝导入,防止越界写入

导入采用整批校验:任一项校验失败时,整个文件都不会被导入,也不会产生部分数据。名称与缩写的冲突判断区分大小写,且仅在同一分类内保持唯一。