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),且往往需要“读状态+读报警+读计数”多组数据组合。
二、模拟量、数字量、总线数据的本质区别
数字量(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。
四、一个可参考的采集点表结构
下表是某机床数据采集项目的点位定义示例(参数为教学示例,非实测值),它把设备类型、信号类型、地址、数据类型、采集周期和工程量换算集中在一张表中,可直接作为ThingWorx物模型属性设计的输入。
| 点位名称 | 设备 | 信号类型 | 地址/通道 | 数据类型 | 采集周期 | 换算/说明 |
|---|---|---|---|---|---|---|
| 主轴转速 | CNC | 总线 | DB2.DBD10 | REAL | 500ms | 直接读,单位rpm |
| 进给倍率 | CNC | 总线 | DB2.DBW20 | INT | 500ms | 值/100 → 百分比 |
| 液压压力 | PLC | 模拟量 | AI0 (4-20mA) | INT | 1s | 0-4095 → 0-16MPa |
| 冷却液位低 | PLC | 数字量 | I0.3 | BOOL | 200ms | 1=低液位报警 |
| 加工计数 | PLC | 数字量 | M30.0上升沿 | INT | 变化上报 | 每次+1 |
| 当前程序号 | CNC | 总线 | DB3.DBW0 | INT | 变化上报 | 直接读 |
| 报警代码 | CNC | 总线 | DB4.DBD0 | DWORD | 变化上报 | 按位解析 |
有了这张表,ThingWorx侧的物模型设计就有了依据:模拟量建为NUMBER属性并配置单位与上下限;数字量建为BOOLEAN或INTEGER;总线数据按实际类型建为NUMBER、STRING或BOOLEAN。采集频率、变化上报策略也直接对应到ThingWorx的订阅配置或边缘网关的采集任务参数。
设备类型决定了协议选择,信号形态决定了数据处理方式,采集需求决定了周期与上报策略。把这三层关系理清,后续在ThingWorx中建物、绑设备、配订阅时就不会出现“采到了但值不对”或“值对了但刷新太慢”的问题。