4. 工业数据建模实战
在ThingWorx中,工业数据建模的核心任务是把物理世界中的设备、传感器、产线单元,映射为平台内可管理、可计算、可复用的Thing。Thing不是简单的“设备别名”,而是一个由物模型(Thing Template/Thing Shape)定义、由属性(Property)承载状态、由服务(Service)承载行为、由事件(Event)与订阅(Subscription)承载响应逻辑的数字化实体。理解“设备→Thing”的映射规则,是后续数据采集、可视化、告警和分析的基础。
一、从设备到Thing:映射什么,怎么映射
假设现场有一台注塑机,PLC通过OPC UA暴露了以下关键点位:InjectionPressure(注射压力,Float,单位bar)、BarrelTemperature(料筒温度,Float,℃)、MachineState(运行状态,Int,0=停机、1=运行、2=故障)、CycleCount(模次计数,Int)。映射到ThingWorx时,不是把每个点位都建成一个Thing,而是以设备为粒度建Thing,把点位映射为Thing的属性。映射关系应遵循三条原则:
- 语义一致:属性名应表达物理含义,如
injectionPressure,而不是tag001;单位、量程、数据类型要与源点位一致。 - 粒度合理:一台设备一个Thing,一条产线可用一个“产线Thing”聚合多台设备Thing,避免“一测点一Thing”造成管理爆炸。
- 可追溯:属性应保留源地址信息,如OPC UA的NodeId、Modbus寄存器地址,便于排障时反查。
映射完成后,ThingWorx通过远程绑定(Remote Binding)把Thing属性与工业连接器(Industrial Connection)中的实际点位绑定。远程绑定不是复制数据,而是建立“属性↔源点位”的读写通道:读取时,ThingWorx从连接器拉取当前值写入属性;写入时,属性值通过连接器下发到PLC。绑定配置中需要明确扫描周期、死区(Deadband)、读写方向。例如注射压力扫描周期500ms、死区0.5bar,可避免微小波动造成无效数据洪流。
二、物模型设计:Thing Template与Thing Shape
物模型是Thing的“类型定义”。ThingWorx提供两种复用机制:Thing Template(事物模板)和Thing Shape(事物形态)。Thing Template用于定义一类设备的完整模型,可被多个Thing实例化;Thing Shape用于定义可跨设备复用的能力片段,可被多个Template或Thing组合。二者的关键区别在于:Template是“继承”关系,Shape是“组合”关系。
以注塑机为例,可设计如下物模型:
- BaseEquipment(Thing Shape):定义通用属性
assetId、location、isOnline,以及服务getStatus()。 - EnergyMeter(Thing Shape):定义
activePower、energyToday,以及服务resetEnergy()。 - InjectionMachineTemplate(Thing Template):继承BaseEquipment,组合EnergyMeter,并定义注塑机专有属性
injectionPressure、barrelTemperature、machineState、cycleCount,以及服务startCycle()、stopCycle()。
这样,当现场新增一台注塑机时,只需基于InjectionMachineTemplate创建Thing实例,再配置远程绑定即可,无需重复定义属性与服务。若某台设备还带能耗计量,只需在实例上再附加EnergyMeter Shape,实现“按需组合”。
三、继承与组合:如何选择
继承(Thing Template)适合表达“是一种”的关系:注塑机是一种设备,因此InjectionMachineTemplate继承BaseEquipment。继承的优点是模型层次清晰、属性服务自动传递;缺点是单继承限制,一个Template只能继承一个父Template。组合(Thing Shape)适合表达“具有某种能力”的关系:注塑机具有能耗计量能力,因此组合EnergyMeter。组合的优点是灵活、可多重复用;缺点是Shape之间可能产生属性命名冲突,需要在设计时统一命名规范。
实际建模中,推荐“Template定骨架,Shape补能力”的策略:用Template定义设备的主类型和核心属性,用Shape定义可插拔的通用能力(如能耗、维保、OEE计算)。这样既保证模型一致性,又保留扩展弹性。
四、数据绑定与远程绑定:让Thing“活”起来
物模型定义完成后,Thing还是“空壳”,必须通过绑定与数据源连接。ThingWorx中有两类绑定:
- 数据绑定(Data Binding):将Thing属性绑定到另一个Thing属性、服务输出或数据表字段,用于平台内部数据流转。例如把
InjectionMachine_01.machineState绑定到LineDashboard的lineStatus属性。 - 远程绑定(Remote Binding):将Thing属性绑定到工业连接器中的设备点位,用于平台与现场设备之间的数据交换。远程绑定需要指定连接器、点位地址、扫描周期、死区、读写方向。
以injectionPressure为例,远程绑定配置可参考如下:
Thing: InjectionMachine_01
Property: injectionPressure (Float, bar)
Binding Type: Remote
Connection: OPCUA_Connection_01
Item: ns=2;s=Machine01.InjectionPressure
Scan Rate: 500 ms
Deadband: 0.5
Direction: Read
绑定完成后,可通过ThingWorx的属性当前值面板观察数据是否刷新。若数值长期不变,应检查:连接器状态是否Connected、点位地址是否正确、扫描周期是否被禁用、死区是否设置过大。若数值跳变异常,应检查数据类型是否匹配、量程是否溢出、PLC侧是否做了单位换算。
五、一个可复用的建模检查清单
为避免建模返工,可在每次创建Thing后按以下清单自查:
| 检查项 | 判断标准 | 常见问题 |
|---|---|---|
| 属性命名与单位 | 语义清晰、单位统一、数据类型匹配 | tag001、单位混用、Int/Float错配 |
| 物模型复用 | 同类设备基于同一Template创建 | 逐台重复定义属性 |
| 远程绑定 | 连接器Connected、点位可读写 | 地址错误、扫描周期为0 |
| 死区与扫描周期 | 兼顾实时性与数据量 | 死区过小导致数据洪流 |
| 服务与事件 | 关键状态变化有事件触发 | 仅存属性、无告警逻辑 |
完成上述步骤后,Thing就不再是静态模型,而是具备实时状态、可读写、可响应事件的数字实体。后续的告警、看板、分析、MES集成,都建立在这一层建模质量之上。建模阶段多花十分钟检查绑定与命名,往往能省去后续数小时的排障时间。