3. 设备建模与Thing模板设计
在ThingWorx中,设备建模的核心不是“把设备接进来”,而是先回答一个更基础的问题:这台设备在平台里应该被抽象成什么?对于典型旋转机械(如离心泵、风机、电机、齿轮箱),它既有静态的身份信息,又有随时间变化的运行状态,还有可被调用的能力(如启停、复位、标定)和需要被记录的事件(如振动越限、温度突升)。ThingWorx用Thing、ThingShape、ThingTemplate、属性、服务、事件这几个概念,把这四类信息组织成可复用、可继承、可批量实例化的模型体系。
一、四个核心概念的分工
Thing是模型的最小实例单位,代表一台具体设备,例如“1号循环水泵”。它拥有唯一的名称,承载该设备真实的属性值、可调用的服务和产生的事件。Thing不是模板,而是模板实例化后的产物。
ThingShape是可复用的能力集合,它定义“具备什么属性、能提供什么服务、会抛出什么事件”,但不绑定具体设备。例如可以定义“旋转机械振动监测Shape”,其中包含振动速度有效值、加速度峰值、轴承温度三个属性,一个“获取振动特征”服务,以及一个“振动越限”事件。ThingShape的价值在于跨设备类型复用:泵、风机、电机都可以挂载同一个振动监测Shape。
ThingTemplate是设备类型的“出厂定义”,它继承一个或多个ThingShape,并可以在此基础上增加该类型特有的属性、服务和事件。例如“离心泵模板”继承“旋转机械振动监测Shape”和“电机电气参数Shape”,再补充“额定流量”“额定扬程”“密封形式”等泵专有属性。ThingTemplate决定了同一类设备实例化后默认具备哪些能力。
属性、服务、事件是模型的三个行为面:属性描述“现在是什么状态”,服务描述“能做什么”,事件描述“发生了什么值得关注的事”。三者共同构成设备在平台中的可观测与可操作边界。
二、为典型旋转机械建立标准化模型
以一台离心泵为例,标准化建模可以按“能力拆分—类型组装—实例落地”三步推进。
第一步,按监测维度拆分ThingShape。旋转机械的共性监测维度通常包括振动、温度、转速、电气参数和工艺参数。建议拆成四个Shape:振动监测Shape(振动速度有效值、加速度峰值、位移峰峰值、振动越限事件、获取振动特征服务);温度监测Shape(轴承温度、绕组温度、温度突升事件);转速与负载Shape(转速、电流、功率、负载率);设备身份Shape(设备编号、位号、安装位置、投运日期)。拆分粒度以“能否被不同设备类型复用”为准,不要把所有属性塞进一个Shape。
第二步,用ThingTemplate组装设备类型。新建“离心泵模板”,继承上述四个Shape,再补充泵专有属性:额定流量、额定扬程、必需汽蚀余量、密封形式、联轴器形式。同时补充泵专有服务:启动、停止、复位、切换备用泵;补充泵专有事件:汽蚀报警、密封泄漏报警、联锁停机。这样,一台离心泵在平台中的能力边界就完整了。
第三步,实例化Thing并绑定数据源。基于“离心泵模板”创建Thing,命名为“P-101A 1号循环水泵”,填写设备编号、位号、安装位置等身份属性,再把振动、温度、转速等属性绑定到实际数据源(如OPC UA节点、MQTT主题或边缘采集服务)。绑定完成后,属性值会随采集周期刷新,服务可被手动或规则调用,事件按条件触发。
三、属性、服务、事件的设计要点
属性设计要区分静态属性与动态属性。静态属性(设备编号、额定参数、安装位置)在实例化时填写,之后很少变化;动态属性(振动值、温度、转速)由数据源持续更新。建议为动态属性设置合理的采集周期和死区,避免无效刷新。例如振动速度有效值采集周期设为1秒,死区设为0.1 mm/s;轴承温度采集周期设为5秒,死区设为0.2℃。
服务设计要明确输入、输出与副作用。以“获取振动特征”服务为例,输入为时间窗口(如最近10分钟),输出为振动速度有效值、加速度峰值、位移峰峰值和特征频率幅值;副作用是可能触发一次“振动越限”事件。服务不应只做数据读取,还应承担必要的计算、判断和状态回写。
事件设计要定义触发条件、等级和携带数据。例如“振动越限”事件,触发条件为振动速度有效值连续3个采集周期超过4.5 mm/s,等级为“警告”,携带数据包括设备位号、当前值、阈值、触发时间。事件不是日志,而是可被订阅、可驱动工单、可联动停机的业务信号。
四、标准化带来的实际收益
当同类设备都基于同一ThingTemplate实例化时,批量运维成为可能。例如现场有12台同型号循环泵,只需维护一份“离心泵模板”,新增设备时创建Thing并绑定数据源即可,无需重复定义属性、服务和事件。当监测逻辑需要调整时,修改模板或Shape,所有实例自动继承变更。对于健康评估而言,标准化模型还保证了不同设备之间的指标可比性:同一振动特征、同一温度阈值、同一事件等级,评估算法可以直接跨设备复用。
需要强调的是,标准化不等于僵化。对于确有差异的设备,可以在实例化后单独覆盖属性默认值、追加专有服务或调整事件阈值,但应尽量把共性留在模板层,把差异留在实例层。这样既保证了一致性,又保留了必要的灵活性。
五、一个可参考的建模检查清单
| 检查项 | 判断标准 | 示例 |
|---|---|---|
| Shape拆分是否合理 | 每个Shape能否被至少两种设备类型复用 | 振动监测Shape被泵、风机、电机复用 |
| 模板是否覆盖类型专有属性 | 该类型设备特有的参数是否已定义 | 离心泵模板包含额定流量、扬程、汽蚀余量 |
| 动态属性是否绑定数据源 | 每个动态属性是否有明确的采集来源和周期 | 振动值绑定OPC UA节点,周期1秒 |
| 服务是否有明确输入输出 | 调用服务时能说清传入什么、返回什么、改变什么 | 获取振动特征:输入时间窗口,输出特征值 |
| 事件是否有触发条件和等级 | 事件不是日志,必须可判断、可订阅、可联动 | 振动越限:连续3周期超4.5mm/s,警告级 |
把上述模型落到ThingWorx中,最终形成的是一套“Shape定义能力、Template定义类型、Thing承载实例”的三层结构。对于旋转机械这类批量大、监测维度相似的设备,这套结构能显著降低建模重复度,并为后续的健康评估、阈值管理和批量运维提供一致的数据基础。