想要用 SFC(顺序功能图)编程实现电机的顺序启动、逆序停止功能,核心是通过 SFC 的步、转换条件、动作指令,按 “电机 1 启动→电机 2 启动→电机 3 启动” 的顺序执行启动,再按 “电机 3 停止→电机 2 停止→电机 1 停止” 的顺序执行停止,同时加入启动 / 停止触发、运行状态互锁等逻辑。
以下以三菱 FX 系列 PLC为例(GX Works2/GX Developer),提供完整的 SFC 程序设计方案,适配 3 台电机的顺序启动 + 逆序停止,你可根据电机数量调整。
一、控制需求与 I/O 分配
1. 核心需求
启动:按下启动按钮,电机 M1 先启动→延时 5s 后 M2 启动→再延时 5s 后 M3 启动;
停止:按下停止按钮,电机 M3 先停止→延时 5s 后 M2 停止→再延时 5s 后 M1 停止;
急停:按下急停按钮,所有电机立即停止;
状态指示:每个电机配运行指示灯,启动 / 停止过程有状态提示。
2. I/O 地址分配(FX3U 为例)
| 类型 | 地址 | 功能 | 备注 |
|---|---|---|---|
| 输入 | X0 | 启动按钮(常开) | 上升沿触发启动 |
| 输入 | X1 | 停止按钮(常开) | 上升沿触发停止 |
| 输入 | X2 | 急停按钮(常闭) | 断开时触发急停 |
| 输出 | Y0 | 电机 M1 接触器线圈 | 得电→M1 运行 |
| 输出 | Y1 | 电机 M2 接触器线圈 | 得电→M2 运行 |
| 输出 | Y2 | 电机 M3 接触器线圈 | 得电→M3 运行 |
| 输出 | Y3 | 启动中指示灯 | 启动过程常亮 |
| 输出 | Y4 | 停止中指示灯 | 停止过程常亮 |
| 辅助继电器 | M0 | 启动触发标志 | 自锁保持启动信号 |
| 辅助继电器 | M10-M15 | SFC 步辅助继电器 | 步状态保持 |
| 定时器 | T0 | M1→M2 启动延时(5s) | K50=5s |
| 定时器 | T1 | M2→M3 启动延时(5s) | K50=5s |
| 定时器 | T2 | M3→M2 停止延时(5s) | K50=5s |
| 定时器 | T3 | M2→M1 停止延时(5s) | K50=5s |
二、SFC 程序结构与编写
SFC 编程分为启动阶段、运行保持阶段、停止阶段三个主流程,核心是通过 “步 + 转换条件” 控制电机启停顺序。
1. SFC 整体框架(Mermaid 时序图)
X0上升沿+X2闭合
T0计时5s
T1计时5s
X1上升沿
T2计时5s
T3计时5s
复位
X2断开
X2断开
X2断开
X2断开
X2断开
初始步S0
S1:M1启动
S2:M2启动
S3:M3启动/运行保持
S4:M3停止
S5:M2停止
S6:M1停止
X0上升沿+X2闭合
T0计时5s
T1计时5s
X1上升沿
T2计时5s
T3计时5s
复位
X2断开
X2断开
X2断开
X2断开
X2断开
初始步S0
S1:M1启动
S2:M2启动
S3:M3启动/运行保持
S4:M3停止
S5:M2停止
S6:M1停止
2. 完整 SFC 程序(GX Works2 格式)
st
// ==================== 第一步:初始步S0(待机状态) ==================== STEP S0; ACTION: Y0 := OFF; // M1停止 Y1 := OFF; // M2停止 Y2 := OFF; // M3停止 Y3 := OFF; // 启动灯灭 Y4 := OFF; // 停止灯灭 T0 := RST; // 复位所有定时器 T1 := RST; T2 := RST; T3 := RST; TRANSITION: // 启动条件:启动按钮X0上升沿 + 急停X2闭合 (X0上升沿 AND X2) → S1; // ==================== 第二步:S1(M1启动) ==================== STEP S1; ACTION: Y0 := ON; // M1启动 Y3 := ON; // 启动中指示灯亮 T0 := K50; // 启动延时5s(T0线圈得电) TRANSITION: // 转换条件:T0计时完成 + 急停X2闭合 (T0 AND X2) → S2; // 急停跳转:X2断开→回到初始步 NOT X2 → S0; // ==================== 第三步:S2(M2启动) ==================== STEP S2; ACTION: Y1 := ON; // M2启动 T1 := K50; // 启动延时5s(T1线圈得电) TRANSITION: (T1 AND X2) → S3; NOT X2 → S0; // ==================== 第四步:S3(M3启动/运行保持) ==================== STEP S3; ACTION: Y2 := ON; // M3启动 Y3 := OFF; // 启动完成,启动灯灭 TRANSITION: // 停止条件:停止按钮X1上升沿 + 急停X2闭合 (X1上升沿 AND X2) → S4; NOT X2 → S0; // ==================== 第五步:S4(M3停止) ==================== STEP S4; ACTION: Y2 := OFF; // M3停止 Y4 := ON; // 停止中指示灯亮 T2 := K50; // 停止延时5s(T2线圈得电) TRANSITION: (T2 AND X2) → S5; NOT X2 → S0; // ==================== 第六步:S5(M2停止) ==================== STEP S5; ACTION: Y1 := OFF; // M2停止 T3 := K50; // 停止延时5s(T3线圈得电) TRANSITION: (T3 AND X2) → S6; NOT X2 → S0; // ==================== 第七步:S6(M1停止) ==================== STEP S6; ACTION: Y0 := OFF; // M1停止 Y4 := OFF; // 停止完成,停止灯灭 TRANSITION: // 无延时,直接回到初始步 X2 → S0; NOT X2 → S0;
3. 梯形图补充(启动 / 停止触发防抖)
若用梯形图配合 SFC,需先处理启动 / 停止按钮的防抖与自锁(可选,增强稳定性):
ladder
// 启动按钮防抖+自锁 LD X0 OR M0 ANI X1 ANI X2 OUT M0 // M0为启动触发标志,SFC中可替换X0为M0 // 停止按钮防抖 LD X1 ANI X2 OUT M1 // M1为停止触发标志,SFC中可替换X1为M1 // 急停复位 LD X2 RST M0 RST M1
三、关键逻辑解释
顺序启动核心:每一步启动后通过定时器(T0/T1)延时,只有前一个电机启动且延时完成,才会触发下一个电机启动,保证 “M1→M2→M3” 的顺序;
逆序停止核心:停止时先断开最后启动的 M3,延时后断开 M2,最后断开 M1,实现 “M3→M2→M1” 的逆序;
急停保护:所有运行步都加入 “X2 闭合” 的条件,一旦急停按钮断开(X2 常闭变开路),立即跳回初始步,所有电机停止;
状态指示:Y3(启动中)在启动阶段常亮,启动完成后熄灭;Y4(停止中)在停止阶段常亮,停止完成后熄灭,便于现场观察。
四、调试与运行要点
参数调整:定时器 K 值可按需修改(K10=1s),比如启动延时改为 3s 则设 K30;
模拟测试:在 GX Works2 中用 “模拟运行” 功能,强制 X0(启动)、X1(停止)、X2(急停),观察 Y0/Y1/Y2 的输出时序是否符合要求;
现场验证:接线时确保电机接触器线圈接 PLC 输出端(需加中间继电器 / 熔断器,防止过流),急停按钮优先接常闭触点,提高安全性;
故障处理:若电机不启动,检查:① 急停是否复位(X2 闭合);② 定时器是否计时完成;③ SFC 步是否正常转换。
总结
SFC 实现电机顺序启动 + 逆序停止的核心是 **“步→转换条件→下一步”** 的链式逻辑,启动用 “前步完成 + 延时” 触发,停止用 “停止信号 + 逆序延时” 触发;
必须加入急停分支,所有运行步都关联急停条件,确保安全;
定时器是控制启停延时的关键,可根据工艺调整延时时间,扩展电机数量只需增加对应步和定时器。

