点位

点位页面逐张卡片:标题栏和命令、常规、带每个驱动各自字段的“来源”、转换、带写入字段的实时数值,以及带“全部替换”的“被谁使用”。

以 Markdown 查看

一个点位就是一台设备上的一个可寻址的点:总线上的一个地址、一种数据类型,以及把原始读数变成工程值的那条转换链。在一台设备下面选中一个点位行,或者在设备“点位”表格的某一行上按“打开”,就能打开它的页面。“查看 Connector”能读它,“配置 Connector”能改它,“校准点位”只能改校准环节。

标题栏

一个实时圆点(点位有数值时是绿色,数值是替代值或者限值环节报了故障时是琥珀色,否则是灰色)、点位的名称,下面是这个点位的地址 Connector.<Driver>.<Folders…>.<Device>.<Tag>,也就是 Logic 和仪表画面书写的那个。再下面,在用得上的时候:一条带校验提示的提醒(名称留空、地址缺失、系数为 0),以及红色的最近错误。

命令栏

命令 作用 何时置灰(情况) 何时不画出来(角色)
复制数值 把工程值按显示的样子复制到剪贴板(“已把‘Temperature’的数值复制到剪贴板。”)。 从不。 从不。
启用 把点位放回采集和实时地址空间。 已经是启用的,或者工作站拒绝改动。 没有“配置 Connector”权限时。
禁用 把点位从采集和实时地址空间里撤下来;设备继续轮询它的其他点位。 已经是禁用的,或者工作站拒绝改动。 没有“配置 Connector”权限时。
删除点位(危险色,靠右) 先问“要删除‘Temperature’吗?这会把它从‘Furnace’上拿掉。此操作无法撤销。”,然后删除并选中那台设备。 工作站拒绝改动。 没有“配置 Connector”权限时。

每张卡片都按 Connector 里讲的方式自动保存。对没有“配置 Connector”权限的角色,“常规”和“来源”两张卡片保持不可用,上面有一句说明“更改 Connector 需要“配置 Connector”权限。”

“常规”卡片

字段 它是什么 取值 / 默认值 影响
点位名称 这个点的名称;也是总线标识和地址两者的最后一段。 必填。 打字时会预告这次重命名要带走多少处引用;确认之后就把它们改写掉:“点位已重命名,更新了 2 处引用。”留空会被拒绝:“点位名称是必填的。”OCPP 的点位名必须以 Meter 或 Status 结尾:“OCPP 点位名必须以‘Meter’或‘Status’结尾(例如 Connector1Meter)。”
数据类型 内置服务器对外暴露的那个 OPC UA 标量类型。 Boolean、SByte、Byte、Int16、UInt16、Int32、UInt32、Int64、UInt64、Float、Double、String、DateTime、Guid、ByteString,收窄到驱动能编排的那些;驱动有 Float 时默认 Float,否则取它提供的第一种类型。 改它会把依赖它的东西一起对齐:在装不下 NaN 的类型上,NaN 越限处理变成“空值”;在非数值类型上,NaN 策略退回直通;与类型不相容的仿真信号种类换成该类型的默认种类;Modbus 寄存器类别也随类型跨过位与寄存器的分界。“转换”卡片的形状也跟着它变。
访问方式 工作站是读、是写,还是两样都做。 只读、只写、读写;默认只读。OCPP、Matter 和 LoRaWAN 只提供只读。 读写和只写会在“实时数值”卡片上画出写入字段;只写的点位不被轮询,也不计入设备健康状态。
单位 工程单位,自由文本。 空。 显示在每个环节结果和工程值旁边,以及任何显示这个数值的地方。
轮询间隔(毫秒) 按点位覆盖设备的轮询间隔。 0(用设备的默认值);负值按 0 存下来。 对 Mitsubishi MC、BACnet、IEC 61850、OCPP 和 LoRaWAN 隐藏,它们不理会它。

“来源”卡片

“这个点位的值从哪里来,以及最近一次的原始读数。”字段随驱动而变;语义由各驱动页面讲,这里是面板画出来的那份清单。

自由文本地址

靠你打进去的一个记号来寻址的驱动只显示一个字段,标签按驱动而定:节点 id(OPC UA)、符号(Beckhoff ADS)、设备地址(Mitsubishi MC)、MMS 路径(IEC 61850)、控制器标签(Rockwell)、资源路径(Redfish)、PI 路径(AVEVA PI)、路径(HTTP),下面配着这个驱动的提示。对这些驱动来说这个字段是必填的:“这个驱动需要填节点 id。”

按驱动的定型字段

驱动 字段
Modbus TCP、Modbus RTU 寄存器类别(HoldingRegister、InputRegister、Coil、DiscreteInput;默认值跟着类型和读写走:只读的布尔是 DiscreteInput,可写的是 Coil,只读的数值是 InputRegister,可写的是 HoldingRegister)和寄存器号(从 0 起)
Siemens S7 区域(DataBlock、Merker、ProcessInput、ProcessOutput、Timer、Counter)、DB 号(仅 DataBlock)、起始字节位(0-7)(布尔点位)、最大长度(留空 = 254)(文本点位)。
Rockwell 在“控制器标签”字段之后的标签内偏移(字节;BOOL 为位);0 就是标签的开头。
BACnet 对象类型(AnalogInput、AnalogOutput、AnalogValue、BinaryInput、BinaryOutput、BinaryValue、MultiStateInput、MultiStateOutput、MultiStateValue)和实例号。读的是当前值。
OCPP Connector(充电接口编号,默认 1),配一句说明“把点位命名为 …Meter(电能读数)或 …Status(接口状态)。”
Redfish 在“资源路径”之后的 JSON 指针(留空 = 整份文档),“例如 /Temperatures/0/ReadingCelsius”。
Matter 输出(端点)属性,两个数字;点位名称就是要读的那个 cluster,写法照目录里的写法(On/Off、Level Control、Temperature Measurement),并且不带冒号。
LoRaWAN 按 Cayenne LPP 通道/类型寻址(勾选框)、通道 / 负载偏移LPP 类型码(打开 LPP 时)、位掩码(十六进制,留空 = 无)倍数(留空 = 无)

总线长度与字节序

字段 哪些驱动显示 它是什么
数量(寄存器数,留空 = 自动) Modbus,仅文本点位 要读多少个 16 位寄存器;留空读 4 个。Modbus 的其他类型宽度是定死的(布尔一个寄存器,Int32 和 Float 两个),所以对它们不画这个字段。
读取长度(字节,留空 = 自动) Beckhoff、Mitsubishi、IEC 61850、LoRaWAN 字节数;留空就由类型推出来:Boolean、Byte 和 SByte 是 1;Int16 和 UInt16 是 2;Int32、UInt32 和 Float 是 4;Int64、UInt64 和 Double 是 8;String 是 16;其余是 4。
高位字节在前 Modbus(数值点位)、LoRaWAN 数值的哪一头先上总线。Modbus 默认打开,LoRaWAN 默认关闭。Modbus 对文本没有定义字节序,所以 Modbus 的文本点位不提供这一项。
高位字在前 Modbus 两个寄存器组成的值里,哪个 16 位半字在前。默认打开。LoRaWAN 不提供,它的负载里没有“字”可以排先后。

来源地址(总线)

除仿真之外的每个点位,字段组的末尾都有一段只读的预览,显示驱动实际收到的那个地址,由上面那些字段加上设备的连接字段拼成:Modbus 寄存器是 0?quantity=2,S7 字节是 DB1?0,Rockwell 标签是 Program:Main.Counter?0,ADS 符号是 MAIN.fValue?4,BACnet 对象是 0,3,OCPP 是 ocpp://<charge point>/<connector>,Redfish 是 <resource>#/Temperatures/0/ReadingCelsius,LoRaWAN 是 <DevEUI>/<channel>/<lpp>?quantity=<n>,Matter 是 <endpoint>/<attribute>;OPC UA、AVEVA PI 和 HTTP 则是那个记号本身(前面拼上设备的资源路径)。

仿真信号参数

Simulated 的点位没有地址字段:它的名字就是那个点。取而代之的是:信号种类,一份收窄到这种数据类型能驱动的那些形状的列表,每个名字旁边配一张形状的小图(数值是正弦、斜坡、随机游走和计数器;布尔是布尔翻转;文本是枚举文本;日期时间是时钟;Guid 是随机 GUID;ByteString 是随机字节;设定值保持和脉冲对任何类型都有)。默认值在随机游走、计数器和设定值保持时出现,形式是一个文本字段,布尔是一个“默认为开(true)”勾选框,日期时间是一个日期字段。状态(用分号分隔)在枚举文本时出现:“例如 Run;Stop;Pause(每 3 秒走一步循环)。”面板不编辑的那些形状参数(正弦的幅带和周期、脉冲的保持时间)随点位原样带着。每一个参数都列在 Simulated 页面上。

原始值

卡片以驱动送过来的最新一次原始读数收尾,也就是任何转换之前的样子;没有的时候是一道短横。

“转换”卡片

“原始值怎样变成工程值。”这张卡片对数值、布尔和文本类型画出来;日期时间、Guid 和 ByteString 原样直通,不显示卡片。

数值点位,这张卡片就是分环节的那条链,自上而下:原始值,然后是量程换算(斜率(×)、截距(+),以及一个两点法按钮)、校准(同样三样)、无效读数(两条策略)、限值(下限、上限、处理方式)、小数位(小数位数),最后是带单位的工程值。从量程换算起,每个环节的头部都有一个把这个环节打开或关掉的勾选框,右边有一个结果:环节生效时是 = value,被跳过时是 → value。一次越限故障会把限值环节变红,并在卡片下面打出“数值 130 超出限值范围 [0, 100]。”算法、默认值和策略在数值转换链里讲;两点法助手以及量程换算与校准之间的权限分工在校准里讲。

布尔点位显示取反(报告原始值的反)结果,以及无效读数策略。文本点位显示子串起点长度(留空 = 到末尾)结果,以及无效读数策略。

过了量程换算和校准,数值的其余环节以及布尔和文本的变换都是普通配置:“配置 Connector”能改它们,其他人只能读。

“实时数值”卡片

条目 显示什么
当前值 工程值,按这个点位的小数位和单位格式化;没有的时候是一道短横。
替代值说明 当这个值不是一次测量时:“正在替代一次缺失的测量。”“最近一次好的值,在设备不应答期间保持。”或“正在替代一次失败的读取。”,取决于无效读数策略。
源时间戳 现场设备取到这次读数的时刻。读取正在失败期间,标签变成最近一次尝试,时间戳是那次尝试的;在保持最近一次好的值期间,时间戳仍是那次读数的。
应用时间戳 内置服务器收到它的时刻。
写入值 对读写或只写的点位,并且只对“配置 Connector”:一个文本字段(布尔是勾选框“开(true)”,日期时间是日期字段)和写入。“请输入工程值;量程换算和取反会在写出去之前先反算回去。”状态行写着“数值已写入。”“写入失败。”“请输入要写入的数值。”或“数值无法转换。”

有运行占住工作站或运行时已停止时,“写入”带着原因置灰。有一个 Logic 信号源锁占着这个点位、驱动拒绝了写入,或者设备没有连上时,写入被拒绝,写作“写入失败。”原始值发出去之前有哪些东西被反算,见数值转换链

“被谁使用”卡片

“引用这个点位的通道绑定、Logic 定义和仪表画面组件。”表里逐条列出每一处引用,带种类(通道、停机联锁、自动化、变量、动作、报警、仪表画面)、位置(持有它的那个模型或仪表画面;顶层的 Logic 种类为空)和名称。一处都没有时写“没有任何通道或属性引用它。”这次查找只是参考:查找失败时表格留空。

对“配置 Connector”,卡片还多出替换那一套:一个按地址列出实时地址空间里所有其他点位的选择器、一个全部替换按钮,以及一个按行的替换动作。“全部替换”在一个要么全成要么全不成的批次里,把列出的每一处引用都改写到选中的那个点位上(“现在有 4 处引用使用 Connector.Simulated.Air.Pump.Flow。”;“没有可替换的引用。”);按行的动作只改写那一处(“‘Furnace temperature’现在引用 Connector.Simulated.Air.Pump.Flow。”,或者在它中途被人挪走时写“这处引用在这期间变了。请刷新后重试。”)。停机联锁和自动化的引用属于 Process 的结构,所以替换它们还额外需要“管理 Process”:“替换单元联锁的信号源需要 Process 管理权限。”以及“全部替换里包含一个单元联锁的信号源,需要 Process 管理权限。”

点位页面不做什么

点位所属的设备和驱动是定死的;要挪一个点,就在另一台设备上把它建出来,再用“全部替换”。这里一次只编辑一个点位的那些环节;多行编辑是设备表格的批量编辑,见设备。页面上没有历史,也没有趋势:实时圆点、数值和时间戳都是当前这一次采样,每秒刷新一次。