设备OEE计算的数据采集点设置
设备综合效率(OEE)是衡量生产效率的核心指标,其计算结果的准确性完全取决于底层数据采集点的设置是否合理。错误的信号接入会导致OEE数值虚高或失真,从而误导管理决策。
要实现精准的OEE计算,必须从时间稼动率、性能稼动率和良品率三个维度,在PLC或边缘网关侧正确规划数据采集点。
一、 明确OEE计算公式与数据需求
在进行物理接线或逻辑配置前,必须先通过数学公式倒推所需的数据源。OEE的标准计算公式为:
$$OEE = A \times P \times Q$$
其中:
- $A$(Availability,时间稼动率)= $\frac{\text{负荷时间} - \text{停机时间}}{\text{负荷时间}}$
- $P$(Performance,性能稼动率)= $\frac{\text{理论周期时间} \times \text{实际产量}}{\text{运行时间}}$
- $Q$(Quality,良品率)= $\frac{\text{实际产量} - \text{废品数量}}{\text{实际产量}}$
根据上述公式,数据采集工作需围绕“时间”、“产量”、“状态”和“质量”四大类信号展开。
二、 时间稼动率(A)的采集点设置
时间稼动率反映设备是否在应该运行的时候正常运行。其核心难点在于区分“计划停机”与“非计划停机”。
-
定义
Shift_Start(班次开始)信号
接入上位机或MES系统的“上班”指令信号。这个信号触发的时间点即为负荷时间的开始时刻。通常使用一个上升沿触发的布尔变量(BOOL)。 -
定义
Shift_End(班次结束)信号
接入上位机的“下班”指令信号。该信号触发时,系统自动计算本班的总负荷时间。 -
定义
Machine_Run(设备运行)状态
采集PLC控制程序中标志设备主电机或主轴处于旋转状态的中间寄存器地址。例如,在西门子PLC中,这可能是DB100.DBX0.0。
注意:不要直接采集“启动按钮”信号,因为按钮按下后设备可能因为故障并未真正转动。 -
定义
Machine_Stop(设备停止)状态
编写逻辑判断:当Machine_Run为False且系统处于“班次内”时,即判定为停机时间。 -
采集
Alarm_Code(故障代码)
读取PLC故障字或报警堆栈。为了计算非计划停机,必须通过报警代码区分“缺料停机”、“故障停机”和“人工休息”。
配置边缘网关逻辑:当检测到特定的故障代码(如“急停按下”)时,该时间段计入“故障损失时间”;若为“换型结束”信号,则不计入损失。
为了厘清设备的状态转换逻辑,需在PLC中构建标准的状态机。以下是用Mermaid描述的状态流转逻辑,必须确保采集点能覆盖以下所有状态:
三、 性能稼动率(P)的采集点设置
性能稼动率反映设备运行的快慢。此处最容易出现的错误是直接使用电机转速或PLC扫描周期,必须使用真实的“产出计数”。
-
采集
Product_Count(实际产量)
接入成品检测传感器(如光电开关)或计数继电器的脉冲信号。
设置PLC的高速计数器(HSC)功能捕获该脉冲。
注意:务必在程序中增加“去抖动”逻辑,防止产品在传感器检测区域来回摆动导致重复计数。 -
设定
Standard_Cycle_Time(理论周期时间)
输入设备的设计产能参数。例如,若设备每分钟生产60个产品,则理论周期时间为1秒。这个参数通常存储在HMI的配方数据块中,采集系统需读取该变量地址。 -
采集
Motor_Speed(运行速度)
接入驱动器或变频器反馈的实际转速信号。虽然计算P主要靠数量,但采集实时速度有助于分析“速度损失”。
四、 良品率(Q)的采集点设置
良品率计算的核心在于识别“坏品”。如果无法自动识别坏品,则需要设置人工介入接口。
-
采集
Reject_Sensor(剔除信号)
接入自动检测设备(如视觉相机、重量秤)的“NG”输出信号。
确保该信号是一个脉冲信号,每检测到一个坏品,信号翻转一次。 -
定义
Manual_Reject_Button(人工报废按钮)
设置现场操作台的物理按钮或HMI屏幕上的软按钮。
绑定PLC地址(如I0.5),当操作员发现设备制造了坏品但自动漏检时,按下此按钮,计数器加1。
五、 数据采集点汇总表
在实施布线或配置点位前,请核对下表中的所有信号是否已全部规划。
| 变量名称 | 数据类型 | 推荐采集源 | 信号说明 |
|---|---|---|---|
System_Status |
WORD | PLC 主状态字 | 用于判断当前是Auto、Manual还是Stop模式 |
Alarm_Trigger |
BOOL | PLC 报警总汇 | 任意故障发生时置1,用于停机计时 |
Running_Status |
BOOL | 主驱动器 Ready 信号 | 真实反映设备在转动,用于计算运行时间 |
Part_Present |
BOOL | 成品出口传感器 | 上升沿触发,计入实际产量 |
NG_Signal |
BOOL | 视觉检测机输出 | 上升沿触发,计入废品数量 |
Cycle_Time_Set |
REAL | HMI 配方寄存器 | 存储理论节拍时间(秒/个) |
Operator_ID |
STRING | 扫码枪/登录框 | 用于追溯班组和人员绩效 |
六、 PLC侧数据预处理逻辑示例
为了减轻上位机或MES系统的计算压力,建议在PLC内部完成基础的数据清洗。以下是一段结构化文本(ST)风格的伪代码,展示了如何处理 Part_Present 信号以防止重复计数。
// 定义变量
VAR
Old_Sensor_State : BOOL := FALSE;
Product_Total : DINT := 0;
Sensor_Input : BOOL; // 对应 I0.0
END_VAR
// 逻辑执行
// 检测传感器信号的上升沿(从0变为1的瞬间)
IF (Sensor_Input = TRUE) AND (Old_Sensor_State = FALSE) THEN
// 累加总产量
Product_Total := Product_Total + 1;
END_IF;
// 更新历史状态,为下一次扫描做准备
Old_Sensor_State := Sensor_Input;
编写程序时,请务必将 Product_Total 变量设置为“非易失性”(Retain)属性,防止PLC断电重启后产量数据清零。
完成上述所有采集点的配置与接线后,启动数据采集系统,对比人工记录的产量与停机时间,进行为期3天的数据校准,误差控制在1%以内即可正式上线。

暂无评论,快来抢沙发吧!