4. 工业数据采集与ThingWorx连接

设备状态监测的第一步,是把分散在车间里的设备数据稳定、准确地送进ThingWorx。ThingWorx本身并不直接“读懂”PLC、仪表或数控机床,它依赖一层工业连接能力完成协议适配、地址解析和数据规范化。ThingWorx Industrial Connectivity(简称IC,基于Kepware技术)正是承担这一角色的核心组件,它把OPC UA、Modbus、MQTT等不同协议的数据统一成ThingWorx可消费的数据源,再通过数据流(Data Shape与Stream)进入平台。

一、先分清四类协议各自的位置

很多初学者会把OPC UA、MQTT、Modbus混为一谈,其实它们在采集链路中扮演不同角色:

  • Modbus(RTU/TCP):面向现场设备的底层轮询协议,直接读取寄存器。适合PLC、电表、变频器等提供寄存器地址的设备,是“设备侧”协议。
  • OPC UA:带信息模型的工业通信标准,既能读地址也能读语义化节点(如“电机1.温度”),支持订阅与安全通道,是“采集层到平台层”的主流协议。
  • MQTT:轻量级发布/订阅消息协议,适合带宽受限或需要主动上报的场景,常用于网关到云端的传输。
  • ThingWorx Industrial Connectivity:协议转换与通道管理中枢,向下连接各类设备驱动,向上以OPC UA Server或REST方式向ThingWorx暴露数据。

典型链路是:现场设备 →(Modbus/OPC UA)→ IC通道 →(OPC UA/内部接口)→ ThingWorx数据源 → 数据流 → 物模型属性。理解这条链路,才能判断问题出在哪一段。

工业数据采集链路:从设备到ThingWorx 现场设备层 PLC(Modbus TCP) 40001 温度寄存器 智能电表 Modbus RTU / 485 数控机床 OPC UA Server 振动传感器网关 Modbus OPC UA ThingWorx IC Channel 通道 Device 设备驱动 Tag 标签地址 OPC UA Server 协议转换 / 地址解析 OPC UA 订阅 ThingWorx 平台 数据源 Remote Thing Data Shape 字段结构定义 Stream 数据流 ValueStream Thing 物模型 属性 / 服务 订阅绑定:Property ← Tag 实时值 数据变化触发 → 状态监测逻辑 采集链路分段排查:设备侧地址 → IC通道状态 → OPC UA连接 → 数据源绑定 → 数据流写入 任一段断开,ThingWorx属性即停止更新,需按段定位

二、在IC中建立通道与标签

以一台支持Modbus TCP的PLC为例,采集“电机温度”和“运行状态”两个量。操作路径是:新建Channel → 选择Modbus TCP/IP Ethernet驱动 → 填写PLC的IP与端口(默认502)→ 在Channel下新建Device → 在Device下新建Tag。

Tag的关键字段是地址与数据类型。假设温度存放在保持寄存器40001,对应Modbus地址偏移为0,数据类型为16位有符号整数,缩放因子0.1,则配置为:

Tag Name: Motor1_Temp
Address:  40001
Data Type: Word (16-bit)
Scaling:  Raw * 0.1  →  单位 ℃
Scan Rate: 1000 ms

运行状态可读线圈00001,数据类型Boolean,扫描周期500 ms。配置完成后,IC的Tag Quality应显示“Good”,若为“Bad”,优先检查IP连通性、端口占用和从站地址(Unit ID)。这一步是后续所有工作的前提,标签质量不佳,平台侧再正确也无意义。

三、把IC数据接入ThingWorx

IC内置OPC UA Server,ThingWorx通过“Industrial Connections”或Remote Thing方式连接。在ThingWorx Composer中新建一个Remote Thing,指定IC的OPC UA端点(如opc.tcp://192.168.1.50:49320),然后为Thing添加属性,属性名与IC标签建立绑定。绑定后,ThingWorx会按IC的扫描节奏接收数值变化。

这里有一个容易忽略的点:ThingWorx属性不会自动保存历史。若要做趋势和健康评估,必须为Thing配置ValueStream,并指定DataShape。DataShape定义字段结构,例如:

DataShape: DS_MotorStatus
Fields:
  ts        DATETIME
  temp      NUMBER
  running   BOOLEAN
  quality   STRING

ValueStream选择“Stream”类型并关联该DataShape,属性更新时写入一条记录。这样,温度序列和运行状态就形成了可查询的时序数据,为后续阈值判断和健康评分提供输入。

四、MQTT接入的补充路径

对于已经具备边缘网关、以MQTT上报的设备,可让网关直接发布到ThingWorx支持的MQTT Broker,再由ThingWorx的MQTT订阅或IC的MQTT Client驱动接入。主题设计建议按“厂区/产线/设备/测点”分层,例如:

factoryA/line1/motor1/temp
factoryA/line1/motor1/vibration
factoryA/line1/motor1/status

消息体用JSON承载数值与时间戳,ThingWorx侧解析后映射到对应Thing属性。相比轮询,MQTT更适合变化不频繁但要求及时上报的场景,但要注意QoS等级与断线重连策略,避免数据丢失或重复。

配置完成后,用ThingWorx的“Monitor”或属性当前值面板观察数据是否按预期刷新。若数值长期不变,先确认IC标签是否在变化,再检查绑定关系,最后看ValueStream是否成功写入。

五、数据流配置的检查要点

数据流不是“配完就好”,需要验证三件事:一是时效性,属性更新时间与设备实际变化的时间差是否在可接受范围(通常轮询场景下不超过2个扫描周期);二是完整性,断线恢复后是否有数据缺口,必要时在网关侧做本地缓存补传;三是一致性,同一测点在IC、ThingWorx属性、ValueStream三处的数值和单位是否统一。把这三项确认清楚,采集链路才算真正打通,后续的状态监测与健康评估才有可靠的数据基础。