三菱 SFC 编程中多初始状态的实现方法
三菱 SFC(顺序功能图)的核心是 “状态” 与 “转移”,标准 SFC 规范中单个程序仅允许 1 个初始状态(S0/S8000 系列) ,但实际工程中需实现 “多分支启动 / 多模式初始化” 时,可通过初始状态分流、条件触发子初始状态、模式选择切换 三种思路实现 “多初始状态” 的等效效果。以下是具体实现方法、编程步骤及注意事项(以 GX Works2/GX Works3 为例)。
一、核心原理:SFC 初始状态的本质
三菱 PLC 的 SFC 初始状态有明确规定:
二、三种实现多初始状态的方法
方法 1:主初始状态分流(最常用,适配多模式启动)
逻辑思路
编程步骤(FX 系列为例)
步骤 1:定义状态与变量
| 状态号 | 功能 | 触发条件 |
|---|---|---|
| S0 | 总初始状态 | M8002(上电脉冲) |
| S10 | 自动模式初始 | X0(自动模式选择) |
| S20 | 手动模式初始 | X1(手动模式选择) |
| S30 | 回零模式初始 | X2(回零模式选择) |
| M0.0 | 自动模式标志 | - |
| M0.1 | 手动模式标志 | - |
| M0.2 | 回零模式标志 | - |
步骤 2:SFC 程序编写(GX Works2)
示例梯形图(S0 分流逻辑)
ladder
// S0激活 LD M8002 SET S0 // S0→S10(自动模式) LD S0 AND X0 ANI X1 ANI X2 SET S10 RST S0 // S0→S20(手动模式) LD S0 AND X1 ANI X0 ANI X2 SET S20 RST S0 // S0→S30(回零模式) LD S0 AND X2 ANI X0 ANI X1 SET S30 RST S0
方法 2:条件触发独立初始状态(适配不同启动场景)
逻辑思路
编程示例(Q 系列)
ladder
// 场景1:上电默认初始状态(S0) LD M8002 ANI S1 SET S0 // 场景2:故障复位后启动(S1) LD X10 // 故障复位按钮 ANI S0 SET S1 RST S0 // 复位原初始状态 // 场景3:远程启动(S2) LD X11 // 远程启动信号 ANI S0 ANI S1 SET S2 RST S0 RST S1
方法 3:初始状态复用(适配循环流程)
逻辑思路
编程示例
ladder
// 上电激活S0 LD M8002 SET S0 // S0→S10(瓶型A):M10=0(默认) LD S0 AND M10 SET S10 RST S0 // S0→S20(瓶型B):M10=1 LD S0 AND M11 SET S20 RST S0 // 流程完成后复位,回到S0 LD S15 // 瓶型A流程结束 OR S25 // 瓶型B流程结束 SET S0 RST S10 RST S20
三、关键注意事项
1. 初始状态的硬性规则(三菱 PLC)
2. 互锁与防冲突
3. 故障处理
4. GX Works3 操作要点
四、典型应用场景示例
场景:机床自动 / 手动 / 回零三模式启动
sfc
[S0] | |X0·ANI X1·ANI X2|----> [S10] → [S11] → [S12] → ... → [S19](自动流程结束)→ RST S10 → SET S0 | |X1·ANI X0·ANI X2|----> [S20] → [S21] → [S22] → ... → [S29](手动流程结束)→ RST S20 → SET S0 | |X2·ANI X0·ANI X1|----> [S30] → [S31] → [S32] → ... → [S39](回零流程结束)→ RST S30 → SET S0
五、常见错误及解决方法
| 错误现象 | 原因 | 解决方法 |
|---|---|---|
| 多初始状态同时激活 | 转移条件无互锁 | 增加 ANI 指令(如 ANI S10),确保仅 1 个分支触发 |
| 初始状态无法激活 | 用 OUT 指令置位初始状态 | 替换为 SET 指令,初始状态仅支持 SET |
| 流程切换时卡顿 | 未复位前一个状态 | 在新状态 SET 前,RST 前一个初始状态 |
| 上电后初始状态不触发 | M8002 被屏蔽 | 检查 M8002 是否被其他程序复位,确保仅上电触发一次 |
总结:三菱 SFC 无 “真正的多初始状态”,但通过 “总初始状态分流” 可实现等效效果,核心是单一入口、条件分流、互锁防冲突。实际编程中优先选择方法 1(主初始状态分流),适配 90% 以上的多模式启动场景;方法 2/3 根据特殊场景灵活调整。


