在欧姆龙 PLC(如 NJ/NX 系列)中,可通过结构化文本(ST)或梯形图创建气缸顺序控制功能块(FB),实现气缸的顺序控制。以下是一个通用的气缸顺序控制功能块设计,支持单动 / 自动模式、手动干预、故障报警等功能:
气缸顺序控制功能块(FB)设计
功能块定义(输入 / 输出接口)
| 类型 | 变量名 | 数据类型 | 说明 |
|---|---|---|---|
| 输入 | AutoMode | BOOL | 自动模式(TRUE = 自动,FALSE = 手动) |
| 输入 | Start | BOOL | 启动信号(上升沿触发) |
| 输入 | Stop | BOOL | 停止信号(TRUE = 紧急停止) |
| 输入 | Cylinder1_Sensor | BOOL | 气缸 1 到位传感器(TRUE = 到位) |
| 输入 | Cylinder2_Sensor | BOOL | 气缸 2 到位传感器(TRUE = 到位) |
| 输入 | Cylinder3_Sensor | BOOL | 气缸 3 到位传感器(TRUE = 到位) |
| 输出 | Cylinder1_Out | BOOL | 气缸 1 伸出信号(TRUE = 伸出) |
| 输出 | Cylinder1_Retract | BOOL | 气缸 1 缩回信号(TRUE = 缩回) |
| 输出 | Cylinder2_Out | BOOL | 气缸 2 伸出信号(TRUE = 伸出) |
| 输出 | Cylinder2_Retract | BOOL | 气缸 2 缩回信号(TRUE = 缩回) |
| 输出 | Cylinder3_Out | BOOL | 气缸 3 伸出信号(TRUE = 伸出) |
| 输出 | Cylinder3_Retract | BOOL | 气缸 3 缩回信号(TRUE = 缩回) |
| 输出 | Running | BOOL | 运行中标志 |
| 输出 | Complete | BOOL | 周期完成标志 |
| 输出 | Alarm | BOOL | 报警标志(如超时未到位) |
| 内部 | Step | INT | 步骤计数器(0 = 初始,1~5 = 顺序步骤) |
| 内部 | Timer1 | TON | 气缸 1 动作超时定时器 |
| 内部 | Timer2 | TON | 气缸 2 动作超时定时器 |
| 内部 | Timer3 | TON | 气缸 3 动作超时定时器 |
ST 语言实现代码(功能块逻辑)
欧姆龙PLC气缸顺序控制功能块
V1
创建时间:19:18
功能块关键逻辑说明
使用方法与扩展
FUNCTION_BLOCK CylinderSequence
VAR_INPUT
AutoMode: BOOL; // 自动模式切换
Start: BOOL; // 启动信号
Stop: BOOL; // 停止信号
Cylinder1_Sensor: BOOL; // 气缸1到位检测
Cylinder2_Sensor: BOOL; // 气缸2到位检测
Cylinder3_Sensor: BOOL; // 气缸3到位检测
END_VAR
VAR_OUTPUT
Cylinder1_Out: BOOL; // 气缸1伸出
Cylinder1_Retract: BOOL; // 气缸1缩回
Cylinder2_Out: BOOL; // 气缸2伸出
Cylinder2_Retract: BOOL; // 气缸2缩回
Cylinder3_Out: BOOL; // 气缸3伸出
Cylinder3_Retract: BOOL; // 气缸3缩回
Running: BOOL; // 运行中
Complete: BOOL; // 完成标志
Alarm: BOOL; // 报警标志
END_VAR
VAR
Step: INT := 0; // 步骤计数器
StartEdge: BOOL; // 启动上升沿检测
StartPrev: BOOL; // 启动信号前值
Timer1: TON; // 气缸1超时定时器
Timer2: TON; // 气缸2超时定时器
Timer3: TON; // 气缸3超时定时器
Timeout: TIME := T#5S; // 超时时间(可参数化)
END_VAR
// 上升沿检测(启动信号)
StartEdge := Start AND NOT StartPrev;
StartPrev := Start;
// 紧急停止处理
IF Stop THEN
Step := 0;
Running := FALSE;
Complete := FALSE;
Alarm := FALSE;
// 所有气缸缩回
Cylinder1_Out := FALSE;
Cylinder1_Retract := TRUE;
Cylinder2_Out := FALSE;
Cylinder2_Retract := TRUE;
Cylinder3_Out := FALSE;
Cylinder3_Retract := TRUE;
RETURN;
END_IF
// 自动模式逻辑
IF AutoMode THEN
CASE Step OF
0: // 初始状态(所有气缸缩回)
Cylinder1_Out := FALSE;
Cylinder1_Retract := TRUE;
Cylinder2_Out := FALSE;
Cylinder2_Retract := TRUE;
Cylinder3_Out := FALSE;
Cylinder3_Retract := TRUE;
Running := FALSE;
Complete := FALSE;
Alarm := FALSE;
// 启动信号触发第一步
IF StartEdge THEN
Step := 1;
Running := TRUE;
END_IF;
1: // 气缸1伸出
Cylinder1_Out := TRUE;
Cylinder1_Retract := FALSE;
Timer1(IN:=TRUE, PT:=Timeout); // 启动超时计时
// 到位或超时
IF Cylinder1_Sensor THEN
Timer1(IN:=FALSE);
Step := 2;
ELSIF Timer1.Q THEN // 超时报警
Alarm := TRUE;
Step := 0;
END_IF;
Running := FALSE;
Complete := FALSE;
// 手动控制气缸1(点动示例)
Cylinder1_Out := Start AND NOT Cylinder1_Sensor; // 启动信号控制伸出
Cylinder1_Retract := Stop AND Cylinder1_Sensor; // 停止信号控制缩回
// 手动控制气缸2(同理,可扩展)
Cylinder2_Out := FALSE; // 实际应用中可关联其他手动按钮
Cylinder2_Retract := FALSE;
Cylinder3_Out := FALSE;
Cylinder3_Retract := FALSE;
END_IF;
END_FUNCTION_BLOCK
注意事项
该功能块可直接用于欧姆龙 NJ/NX 系列 PLC,通过结构化设计提高代码复用性和维护性,适合多气缸协同工作的自动化场景(如装配线、包装机)。

