3. 生产数据来源与分类

在Omron Sysmac体系中,生产数据并不是“从PLC读一堆寄存器”这么简单。Sysmac把控制器、EtherCAT从站、视觉、机器人、安全单元统一到同一个工程与网络模型中,数据来源天然分散在多个层级:NJ/NX系列控制器的变量、EtherCAT耦合器与IO-Link主站、伺服与变频器的过程对象、视觉控制器的判定结果、以及上位机通过数据库或OPC UA获取的汇总信息。要让采集系统稳定可用,第一步不是写程序,而是把“数据从哪里来、在Sysmac里以什么形式存在、采集时对实时性和精度有什么要求”这三件事分清楚。

本节按七类生产数据展开:设备状态、工艺参数、质量数据、报警信息、能耗数据、生产计数与节拍数据。每一类都从“在Sysmac中的表示”和“采集需求”两个角度说明,并给出可直接参考的变量命名与采集周期建议。

一、设备状态数据:位与枚举的组合

设备状态在Sysmac中最常见的表示是位变量(BOOL)与枚举(ENUM)的组合。例如一台包装机的“运行/待机/故障/维护”可以用一个枚举变量eMachineState表示,而“安全门关闭”“急停释放”“气压正常”则用独立的BOOL量。NJ/NX控制器支持用户自定义数据类型(DUT),可以把这些状态打包成一个结构体,例如stMachineStatus,成员包括State、SafetyDoorClosed、AirPressureOK、CycleRunning。

采集需求上,设备状态属于事件驱动+周期刷新混合型数据。状态跳变(如运行转故障)必须带时间戳记录,建议在控制器内用GetTime或系统时间变量打标,采集周期可设为100ms;而安全相关状态建议直接映射到EtherCAT安全从站,由安全CPU处理,不进入普通采集通道,避免实时性冲突。

二、工艺参数:过程值、设定值与单位

工艺参数是采集量最大、精度要求最高的一类。在Sysmac中,它们通常以REAL/LREAL表示模拟量过程值,以INT/DINT表示设定值或配方号。例如注塑机的“料筒温度”“注射压力”“保压时间”,在NJ控制器中可能来自EtherCAT模拟量输入单元(如NX-AD系列)的通道变量,也可能来自伺服轴的ActualVelocity、ActualTorque等过程对象。

采集需求的关键是单位与量程统一。建议在变量命名中直接体现单位和量程,例如rBarrelTemp_C、rInjectionPressure_MPa。采集周期按工艺节拍决定:温度类可500ms~1s,压力与位置类建议10~50ms,并与生产计数对齐,确保同一件产品能关联到同一组工艺参数。若使用Sysmac Studio的数据记录(Data Logging)功能,可设置触发条件为“生产计数+1”时记录一组快照,避免连续高速采样造成存储膨胀。

三、质量数据:判定结果与测量值分离

质量数据在Sysmac中通常分两部分:判定结果(OK/NG,BOOL或枚举)和测量值(REAL)。例如视觉检测的“有无/位置偏差”、称重单元的“重量值”、扭矩枪的“拧紧扭矩与角度”。这些数据可能来自EtherCAT从站的过程数据,也可能通过Socket通信或OPC UA从视觉控制器传入NJ/NX。

采集需求上,质量数据必须与产品序列号或生产计数绑定。建议在控制器内维护一个udiProductCounter,每件产品完成时把判定结果、测量值、时间戳写入一个结构体数组或直接写入数据库。对于NG品,建议额外记录前若干件产品的工艺参数,便于追溯。采集周期为事件触发,不设固定周期。

四、报警信息:位、代码与文本

报警在Sysmac中有两种典型表示:位报警(如bAlarm_OverTemp)和代码报警(如udiAlarmCode)。NJ/NX支持用户自定义报警功能,可在Sysmac Studio中定义报警文本、等级和触发条件,运行时通过Alarm指令或系统变量读取。报警信息通常包括:报警位、报警代码、发生时间、恢复时间、报警等级。

采集需求上,报警属于事件驱动数据,必须记录上升沿与下降沿两个时间点。建议采集周期不固定,由报警触发写入;同时保留报警历史缓冲区,防止通信中断时丢失。对于安全报警,应单独走安全网络,不与普通报警混采。

五、能耗数据:脉冲、功率与累计量

能耗数据在Sysmac中通常来自电能表、流量计、气表等通过Modbus RTU/TCP或EtherCAT接入的设备。表示形式有三种:脉冲量(DINT累计)、瞬时功率(REAL,kW)、累计电量(LREAL,kWh)。例如通过NX-IL系列IO-Link主站连接智能电表,读取rActivePower_kW和lrEnergy_kWh。

采集需求上,能耗数据变化慢,采集周期可放宽到1~5s;但累计量必须保证不丢数、不重复。建议在控制器内做增量计算:每次采集用当前累计值减去上次值,得到本周期能耗,再累加到班次或日统计变量中。若通信中断,恢复后应先读取当前累计值,避免把中断期间的能耗算错。

六、生产计数与节拍数据:整数与时间差

生产计数在Sysmac中通常用UDINT/DINT表示,分为总计数、班次计数、合格数、不合格数。节拍数据则用TIME或LREAL表示,常见形式是“上一件节拍”“平均节拍”“理论节拍”。例如udiTotalCount、udiShiftCount、tLastCycleTime、rAverageCycleTime。

采集需求上,计数与节拍必须同源同步。建议在每件产品完成时,用一个上升沿触发记录:计数+1、节拍=当前时间-上一件时间、同时抓取该件产品的工艺参数与质量结果。采集周期为事件触发,但建议同时保留1s周期的计数快照,用于上位机趋势显示。

Sysmac生产数据来源、表示与采集需求总览 数据来源层 NJ/NX控制器变量 BOOL / ENUM / REAL EtherCAT从站 模拟量/IO-Link/伺服 视觉/机器人 Socket / OPC UA 智能电表/气表 Modbus / IO-Link 安全单元 安全状态/急停 Sysmac Studio 数据记录/报警定义 七类生产数据 ① 设备状态 BOOL位 + ENUM枚举 + 结构体 stMachineStatus ② 工艺参数 REAL/LREAL过程值 + INT设定值 + 单位量程 ③ 质量数据 OK/NG判定 + REAL测量值 + 产品序列绑定 ④ 报警信息 报警位 + 报警代码 + 上升/下降沿时间戳 ⑤ 能耗数据 脉冲DINT + 瞬时功率REAL + 累计电量LREAL ⑥ 生产计数与节拍 UDINT计数 + TIME节拍 + 同源同步触发 采集需求 事件驱动 + 100ms 状态跳变带时间戳 10~1000ms 按工艺节拍对齐 事件触发 与产品序列绑定 上升沿/下降沿 保留历史缓冲区 1~5s 增量计算防丢数 事件触发 + 1s快照 计数与节拍同源 注:采集周期为工程建议值,实际应根据设备节拍、网络负载与存储能力调整

七、采集需求汇总与变量命名建议

把七类数据放在一起看,采集需求可以归纳为三条原则:状态与报警走事件、工艺与能耗走周期、质量与计数走产品绑定。在Sysmac Studio中,建议统一变量命名前缀:b表示BOOL,udi表示UDINT,r表示REAL,lr表示LREAL,t表示TIME,e表示枚举,st表示结构体。这样在写采集程序或配置OPC UA节点时,能快速判断数据类型和采集方式。

下面给出一份可直接参考的采集配置示例,以一台注塑机为例,展示七类数据在Sysmac中的变量定义与采集周期。表中参数为教学示例,实际项目需根据设备手册和工艺要求调整。

数据类别 Sysmac变量示例 数据类型 采集方式 建议周期
设备状态 stMachineStatus.State ENUM 事件+周期 100ms
工艺参数 rBarrelTemp_C REAL 周期 500ms
工艺参数 rInjectionPressure_MPa REAL 周期 20ms
质量数据 bQualityOK BOOL 事件 产品完成时
质量数据 rWeight_g REAL 事件 产品完成时
报警信息 udiAlarmCode UDINT 事件 上升/下降沿
能耗数据 lrEnergy_kWh LREAL 周期 2s
生产计数 udiTotalCount UDINT 事件+快照 产品完成时/1s
节拍数据 tLastCycleTime TIME 事件 产品完成时
实践提示:在Sysmac Studio中定义变量时,建议把同一台设备的所有采集变量放在一个全局变量表中,并按“设备名_数据类别_变量名”命名,例如IMM_Status_State、IMM_Process_BarrelTemp。这样在配置数据记录、OPC UA或数据库写入时,可以按前缀批量筛选,减少遗漏。
注意:能耗累计量(LREAL)在通信中断恢复后,不能直接用“当前值-上次值”计算,因为中断期间电表仍在累计。正确做法是恢复后先读取当前累计值,与中断前最后记录值比较,若差值异常大,应标记该时段数据为“不完整”,而不是直接计入班次能耗。

最后需要强调:七类数据在Sysmac中并不是孤立存在的。设备状态决定工艺参数是否有效,工艺参数影响质量结果,质量结果触发报警或计数,计数与节拍又反过来用于能耗分摊。采集系统设计时,应先在控制器内建立以产品为中心的数据关联——每件产品对应一组状态、工艺、质量、报警、能耗、计数和节拍数据,再统一向上位机或数据库推送。这样后续做OEE分析、质量追溯或能耗优化时,数据才是可用的,而不是一堆互不相关的寄存器值。