Skip to content

位号 Point

位号是一个数据项——一类设备身上要采集或要写入的一个具体的量。定义归属物模型,运行态取值即位号值

位号回答的是"这类设备身上有哪些量可以读、可以写"。一台空调上的"室温""设定温度""开关状态",各自就是一个位号;它们的瞬时数值快照是位号值。可以这样类比:物模型是一张表格的表头定义,每个位号就是其中的一,而位号值是某台设备某时刻填进这一列的那个单元格

容易混淆的两点:

  • 位号 ≠ 位号值。位号是"列"的定义(叫什么、什么类型、能不能写、单位是什么),稳定不变;位号值是"格"的取值,随采集不断变化。详见位号值
  • 位号 ≠ 指令。位号是"量",指令是"动作"(重启、校准、切换模式)。一个位号能不能被写,由它自己的 rwFlag 决定,不需要、也不会dc3_command 指令表里登记。读写位号走的是 PointCommand 链路,自定义指令才走 Command 链路。

关键字段

位号 PointBO(表 dc3_point):

字段类型含义
pointNameString位号名称(展示用,如"室温")
pointCodeString位号标识符,同一物模型下唯一
pointTypeFlagPointTypeEnum数据类型,见下
rwFlagRwTypeEnum读写能力,见下
unitString工程单位,如 kPa
baseValueBigDecimal线性换算的偏移量(默认 0
multipleBigDecimal线性换算的倍率(默认 1
valueDecimalByte小数精度,浮点取值的保留位数(默认 6
profileIdLong归属的物模型
pointExtPointExt扩展配置(协议映射、约束、采集策略等)
enableFlagEnableFlagEnum启停状态
tenantIdLong归属租户

数据类型 pointTypeFlag

枚举code说明
STRINGstring字符串(默认)
BYTE / SHORT / INT / LONGbyte / short / int / long整数
FLOAT / DOUBLEfloat / double浮点
BOOLEANboolean布尔

读写能力 rwFlag

枚举code说明
READ_ONLYr只读,只能采集,不能下发写值(默认)
WRITE_ONLYw只写,只能下发写值
READ_WRITErw可读可写

能否写由 rwFlag 决定,不是指令表

某个位号能不能被写,唯一取决于它的 rwFlag 是否包含写能力(WRITE_ONLYREAD_WRITE)。这跟指令dc3_command)没有关系——位号读写不在指令表里建模。中心侧在写命令前会校验 rwFlag:只读位号收到写请求会被直接拒绝。

原始值与工程值换算

驱动从设备采到的常常是原始值(寄存器整数、ADC 计数等),位号通过线性公式换算成人能看懂的工程值

text
工程值 = 原始值 × multiple + baseValue   (再按 valueDecimal 保留小数)

例:一个温度变送器寄存器读数 2531,配置 multiple = 0.01baseValue = 0unit = ℃valueDecimal = 2,换算后存入位号值的工程值就是 25.31 ℃。默认 multiple = 1baseValue = 0 表示原始值即工程值,不做换算。

与其它概念的关系

  • 位号定义挂在物模型下,与指令事件并列,共同描述"这类设备有什么能力"。
  • 设备归属一个物模型,因此自动拥有该物模型下的全部位号;运行态数据按 device_id + point_id 落成位号值

示例

给空调物模型配三个位号:

pointCodepointNamepointTypeFlagrwFlagunit说明
indoor_temp室温FLOATREAD_ONLY只采集,配 multiple=0.1 做换算
set_temp设定温度FLOATREAD_WRITE可读回,也可下发新设定值
power开关状态BOOLEANREAD_WRITE读当前开关,写控制启停

某台空调(device_id=1001)采到 indoor_temp 的工程值 26.5℃ → 落成一条位号值;要把它调到 22℃,对 set_temp 发一条写 PointCommand,因为它 rwFlag=READ_WRITE,写请求通过校验后下发到驱动。

一个位号同时具备类型、读写、单位、换算

新建位号若不显式配置,类型默认 STRING、读写默认 READ_ONLYbaseValue=0multiple=1valueDecimal=6unit 为空。采集数值量时记得改成对应的数值类型并配好换算,否则会按字符串原样存。

延伸阅读

Released under the AGPL-3.0 License · 基于 AGPL-3.0 协议发布