3. 工业设备与数据采集基础

在ThingWorx设备接入工程中,第一步不是打开平台建物模型,而是把现场设备“看清楚”。工业现场的设备种类繁多,但它们接入平台后最终都归结为几类数据:模拟量、数字量、总线数据。理解每类设备的物理量本质、信号形态和采集需求,才能正确选择采集方式、配置采集频率、设计物模型属性。

一、现场设备的四大类型

PLC(可编程逻辑控制器)是产线控制的核心,西门子S7-1200/1500、三菱FX/Q、罗克韦尔ControlLogix等最为常见。PLC内部维护着I/Q区(过程映像输入/输出)、M区(位存储区)、DB块(数据块)等地址空间。采集PLC数据本质上是按地址读取这些寄存器的值,例如S7协议读取DB1.DBD0得到一个32位浮点数,或读取M10.0得到一个布尔量。PLC数据的特点是地址化、结构化、刷新快,适合用S7、Modbus TCP、OPC UA等协议周期性轮询。

传感器负责把物理量转换为电信号。温度PT100输出电阻值,压力变送器输出4–20mA电流,接近开关输出24V开关信号,振动传感器输出±5V电压。传感器通常不直接联网,而是接入PLC的AI/AO/DI/DO模块,或接入独立的采集模块(如ADAM、WISE系列)。采集传感器数据的关键是量程映射:4–20mA对应0–1.6MPa,需要按线性关系换算成工程量。

仪表(流量计、电能表、称重仪表、温控仪)通常自带通信口,支持Modbus RTU/TCP、HART、Profibus等。它们的数据往往已经是工程量,但寄存器地址由厂家定义,需要查手册。例如某电能表用0x0000存A相电压(单位0.1V),0x000A存有功功率(单位0.01kW),采集时要按倍率还原。

CNC与机器人是高端装备,数据接口更复杂。FANUC、西门子840D、发那科机器人支持FOCAS、OPC UA、EtherNet/IP等;它们能提供主轴转速、进给倍率、刀具号、程序号、报警码、关节角度、TCP坐标等。这类设备采集频率要求高(部分状态需10–100ms),且往往需要“读状态+读报警+读计数”多组数据组合。

工业设备类型 → 信号形态 → 采集方式 对应关系 PLC S7 / Modbus / OPC UA 传感器 4-20mA / 0-10V / 开关 仪表 Modbus RTU / HART CNC / 机器人 FOCAS / OPC UA / EtherNet/IP 数字量 DI/DO 0/1 · 通断 · 计数脉冲 模拟量 AI/AO 4-20mA · 0-10V · 工程量 总线数据 寄存器 · 报文 · 结构化 高速状态流 坐标 · 报警 · 程序号 边缘网关轮询 100ms–5s · 变化上报 AI模块采集 量程映射 · 滤波 · 标定 协议驱动解析 地址映射 · 字节序 · 倍率 高频订阅/触发 10–100ms · 事件驱动 采集需求判断: ① 数据是开关量还是连续量? ② 设备是否支持标准协议? ③ 刷新周期要求多少? ④ 是否需要断线缓存与变化上报?

二、模拟量、数字量、总线数据的本质区别

数字量(DI/DO)只有两个状态:0或1。它对应设备的“通/断、开/关、有/无”。采集数字量时,关键参数是去抖时间和边沿检测。例如一个气缸磁性开关,机械抖动可能产生多次跳变,PLC侧通常设置10–20ms滤波;如果用于计数,则要配置上升沿中断,避免重复计数。数字量在ThingWorx中通常映射为BOOLEAN或INTEGER(计数值)。

模拟量(AI/AO)是连续变化的物理量。以4–20mA压力变送器为例,量程0–1.6MPa,PLC的AI模块为12位分辨率(0–4095)。换算公式为:

工程量 = (原始值 / 4095) × (20 - 4) 得到电流mA
压力MPa = (电流mA - 4) / (20 - 4) × 1.6
合并:压力MPa = (原始值 / 4095) × 1.6

实际工程中还要处理零点漂移和超量程:若原始值低于对应4mA的码值,说明断线或故障,应标记为无效而非直接计算。模拟量采集频率通常为100ms–1s,过高会浪费带宽,过低会丢失工艺波动。

总线数据是设备内部寄存器的结构化读取。以Modbus RTU读取某温控仪为例,从站地址1,功能码03,起始地址0x0000,读取2个寄存器,得到PV(测量值)和SV(设定值),均为16位整数,单位0.1℃。若读到0x00FA(250),则实际温度为25.0℃。总线采集要特别注意字节序(大端/小端)、寄存器合并(32位浮点占2个寄存器)和轮询间隔。多台设备共用一条RS-485总线时,轮询间隔要大于单台响应时间之和,否则会超时。

三、采集需求如何转化为工程参数

面对一台设备,采集需求可以拆解为四个问题:采什么、从哪采、多久采一次、采到后怎么处理。

  • 采什么:列出需要监控的物理量。例如注塑机需要采集:料筒温度(模拟量)、注射压力(模拟量)、开合模状态(数字量)、当前模具号(总线寄存器)、报警码(总线寄存器)。
  • 从哪采:温度可能来自PLC的AI模块,模具号来自PLC的DB块,报警码来自注塑机控制器自己的Modbus寄存器。同一台设备可能同时存在多种采集通道。
  • 多久采一次:温度1s一次足够;开合模状态需要100ms以内以捕捉动作;报警码用变化上报即可,无需周期轮询。
  • 采到后怎么处理:模拟量做量程映射和上下限判断;数字量做边沿计数;总线数据做字节序转换和倍率还原。所有数据在边缘侧打上时间戳,再上报ThingWorx。
工程经验:不要把所有点位都设成1s轮询。一条Modbus总线上挂20台仪表,若每台读10个寄存器、每台响应50ms,一轮就要1s以上。合理做法是:关键工艺量1s,一般状态量5s,报警和计数用变化上报或事件触发。

四、一个可参考的采集点表结构

下表是某机床数据采集项目的点位定义示例(参数为教学示例,非实测值),它把设备类型、信号类型、地址、数据类型、采集周期和工程量换算集中在一张表中,可直接作为ThingWorx物模型属性设计的输入。

点位名称设备信号类型地址/通道数据类型采集周期换算/说明
主轴转速CNC总线DB2.DBD10REAL500ms直接读,单位rpm
进给倍率CNC总线DB2.DBW20INT500ms值/100 → 百分比
液压压力PLC模拟量AI0 (4-20mA)INT1s0-4095 → 0-16MPa
冷却液位低PLC数字量I0.3BOOL200ms1=低液位报警
加工计数PLC数字量M30.0上升沿INT变化上报每次+1
当前程序号CNC总线DB3.DBW0INT变化上报直接读
报警代码CNC总线DB4.DBD0DWORD变化上报按位解析

有了这张表,ThingWorx侧的物模型设计就有了依据:模拟量建为NUMBER属性并配置单位与上下限;数字量建为BOOLEAN或INTEGER;总线数据按实际类型建为NUMBER、STRING或BOOLEAN。采集频率、变化上报策略也直接对应到ThingWorx的订阅配置或边缘网关的采集任务参数。

注意:不同品牌PLC的DB块地址偏移、字节序可能不同。例如西门子S7采用大端,而部分Modbus设备采用小端。在ThingWorx或边缘网关中配置地址映射时,务必先用已知值验证一个点位,确认字节序和倍率正确后,再批量配置其余点位。

设备类型决定了协议选择,信号形态决定了数据处理方式,采集需求决定了周期与上报策略。把这三层关系理清,后续在ThingWorx中建物、绑设备、配订阅时就不会出现“采到了但值不对”或“值对了但刷新太慢”的问题。