PLC 实现两个时刻采样数值的比较(三菱 FX3U / 西门子 S7-200 实操)
两个时刻采样数值的比较是工业场景中工艺监控、异常判断的核心需求(如对比 “折弯前 / 后钢丝的应力值”“加热前 / 后温度值”“开机 / 运行 1 小时后的电流值”),核心逻辑是 **“精准调取两个时刻的采样值→按规则比较→输出比较结果(报警 / 控制信号)”**。以下分「通用逻辑」「主流 PLC 实操」「进阶场景」详解,覆盖 “指定时刻对比”“相邻采样对比”“差值 / 百分比对比” 等典型场景。
一、核心前提:明确 “两个时刻” 的定义与数据存储规则
对比的基础是先准确定位 “两个时刻” 的采样值存储位置,常见 “时刻定义” 如下:
| 对比类型 | 时刻 1(基准值) | 时刻 2(对比值) | 适用场景 |
|---|---|---|---|
| 指定时刻对比 | 触发事件 1(如 X0)的采样值 | 触发事件 2(如 X1)的采样值 | 折弯前(X0)/ 折弯后(X1)应力对比 |
| 相邻采样对比 | 第 N 次定时采样值 | 第 N+1 次定时采样值 | 温度连续监控(判断温升 / 温降) |
| 时间节点对比 | 开机初始化采样值 | 运行 1 小时后的采样值 | 设备老化监控(电流变化) |
关键规则:无论哪种对比,需确保两个采样值的 “时间戳 + 数值” 一一对应存储(参考前文 “PLC 记录不同时刻采样数值” 的存储逻辑),且存储地址可精准调取。
二、三菱 FX3U 实操:两个时刻采样值的比较
以 “4mm 钢丝折弯场景” 为例,对比「折弯触发前(X0)的伺服电流值」和「折弯完成后(X1)的伺服电流值」,判断电流变化是否超出阈值。
前提:已完成采样值存储(复用前文存储逻辑)
场景 1:指定时刻数值直接对比(差值 / 绝对值对比)
步骤 1:调取两个时刻的采样值
plaintext
LD M8000 ; 时刻1(折弯前)电流值 → D200 MOV D1004 D200 ; 时刻2(折弯后)电流值 → D201 MOV D1009 D201
步骤 2:差值对比(核心逻辑)
plaintext
; 1. 计算差值(时刻2 - 时刻1) SUB D201 D200 D202 ; 2. 绝对值对比(避免正负影响,如电流下降也报警) ABS D202 D203 ; D203=|D201-D200| ; 3. 判断是否超出阈值(阈值设为K5,即5A) LD D203 K5 OUT Y0 ; 差值超5A,Y0报警(如指示灯/蜂鸣器) LD D203 <= K5 OUT Y1 ; 差值正常,Y1常亮
步骤 3:百分比对比(更贴合工艺,如判断相对变化)
plaintext
; 百分比=|(时刻2-时刻1)/时刻1| × 100% ; 先计算分子:绝对值差值D203 ; 分母:时刻1的电流值D200(需确保D200≠0,避免除零错误) LD D200 K0 MOV K1 D200 ; 若D200=0,强制赋值1,避免除零 ; 计算百分比(FX3U用浮点运算指令) FLT D203 D204 ; 整数转浮点 FLT D200 D205 DIV D204 D205 D206 ; 差值/基准值 MUL D206 K100 D207 ; ×100,得到百分比(如0.08→8.0) ; 判断百分比是否超10% LD D207 K10.0 OUT Y2 ; 百分比超10%,Y2报警
场景 2:相邻定时采样值对比(如每 10s 采样温度,对比相邻两次温升)
核心是通过 “存储指针” 调取上一次和当前采样值,假设存储指针为 D999(当前存储位置),每笔数据占 5 个寄存器:
plaintext
LD M0 ; 采样触发标志 ; 上一次采样值:D1004 + (D999-1)*5 MOV D1004+((D999-1)*5) D210 ; 当前采样值:D1004 + D999*5 MOV D1004+(D999*5) D211 ; 差值对比(判断温升是否>2℃) SUB D211 D210 D212 LD D212 K2 OUT Y3 ; 温升超2℃,报警
FX3U 对比结果的扩展应用
三、西门子 S7-200 实操:两个时刻采样值的比较
以 “加热设备” 为例,对比「开机初始化(SM0.1)的温度值」和「运行 30 分钟后的温度值」,判断是否达到工艺要求。
前提:采样值存储逻辑(复用前文)
核心程序(梯形图 / 指令表)
plaintext
// 1. 调取两个时刻的采样值 LD SM0.0 MOVW VW200, VW400 // 时刻1温度→VW400 MOVW VW300, VW401 // 时刻2温度→VW401 // 2. 计算目标阈值(时刻1+50℃) ADDW VW400, 50, VW402 // 3. 比较判断 LDB>= VW401, VW402 // 时刻2≥阈值 = Q0.0 // 合格,Q0.0亮 LDB< VW401, VW402 // 时刻2<阈值 = Q0.1 // 不合格,Q0.1报警(蜂鸣器) // 进阶:百分比对比(|(VW401-VW400)/VW400|×100%>15%报警) LD SM0.0 LDN VW400, 0 // 避免除零 JMP 0 // 若VW400=0,跳过百分比计算 // 整数转实数 ITD VW401, VD404 DTR VD404, VD408 ITD VW400, VD412 DTR VD412, VD416 // 计算差值 -R VD408, VD416, VD420 // 取绝对值 ABS VD420, VD424 // 计算百分比 /R VD424, VD416, VD428 *R VD428, 100.0, VD432 // 判断是否超15% LDR> VD432, 15.0 = Q0.2 // 百分比超15%,报警 LBL 0 // 跳转标号
四、进阶场景:多组时刻对比与异常过滤
1. 多组时刻对比(如对比 3 个时刻的采样值)
增加存储地址索引,依次调取时刻 1(D1004)、时刻 2(D1009)、时刻 3(D1014)的数值,分别对比:
plaintext
// 三菱FX3U示例 MOV D1004 D200 ; 时刻1 MOV D1009 D201 ; 时刻2 MOV D1014 D202 ; 时刻3 // 时刻1vs时刻2 SUB D201 D200 D203 // 时刻2vs时刻3 SUB D202 D201 D204 // 同时判断两组差值是否超阈值 LD D203 K5 OR D204 K5 OUT Y4 ; 任意一组超阈值,报警
2. 异常值过滤(避免无效对比)
对比前先过滤采样值的异常波动(如传感器干扰导致的极值),采用 “平均值滤波” 或 “范围过滤”:
plaintext
// 三菱FX3U:仅对比0~100A范围内的电流值 LD M8000 CMP D200 K0 M10 CMP D200 K100 M11 CMP D201 K0 M12 CMP D201 K100 M13 // 仅当两个值都在范围内,才执行对比 LD M10 AND M11 AND M12 AND M13 MOV D200 D210 MOV D201 D211 // 执行对比逻辑 ...
五、常见问题与避坑
总结
两个时刻采样值对比的核心是 “精准寻址 + 规则化比较”:
若需针对具体场景(如 4mm 钢丝折弯的伺服电流对比、温度闭环的相邻采样对比)编写完整 PLC 程序,可告知 PLC 型号、对比规则(如差值阈值、百分比阈值),进一步提供精准的指令代码和参数配置!


