三菱PLC的SFC顺序功能图编程
SFC(Sequential Function Chart,顺序功能图)是一种专为顺序控制设计的图形化编程语言。相比于传统的梯形图,SFC将复杂的控制过程拆解为清晰的“步”和“转换条件”,极大降低了逻辑出错的风险,特别适合流水线、机械手等按步骤执行的自动化设备。
核心逻辑与元件分配
SFC编程的核心在于将控制过程抽象为“步”。系统执行完当前步的动作后,等待转换条件满足,然后自动复位当前步并激活下一步。在开始编写程序前,需先规划好输入输出地址。
以下是一个简单的双气缸顺序控制地址分配示例:
| 软元件 | 功能 | 说明 |
|---|---|---|
X0 |
启动按钮 | 按下瞬间导通 |
X1 |
气缸A缩回限位 | 常开触点 |
X2 |
气缸B伸出限位 | 常开触点 |
Y0 |
气缸A电磁阀 | 输出高电平伸出 |
Y1 |
气缸B电磁阀 | 输出高电平伸出 |
编程环境搭建
在使用GX Works2或GX Works3进行编程时,必须正确建立工程结构。
- 打开 编程软件,点击 菜单栏的
工程->新建工程。 - 设置 工程参数:选择
PLC系列(如FXCPU)和具体PLC类型(如FX3U)。 - 选择 程序语言:在
程序语言下拉菜单中 选择SFC。 - 点击
确定,系统将自动生成包含MAIN主程序的结构。
注意:SFC程序通常由“梯形图块”和“SFC块”组成。初始化逻辑需写在梯形图块中,控制流程写在SFC块中。
编写初始化程序
在进入SFC流程前,必须对状态元件和初始状态进行复位与激活。这部分代码写在第一块“梯形图块”中。
- 双击 工程树中的
梯形图块图标进入编辑界面。 - 输入 初始化指令:写入
LD M8002。M8002为上电脉冲,仅在PLC运行瞬间接通一个扫描周期。 - 输入 状态复位指令:写入
ZRST S0 S899。此指令用于复位所有普通状态继电器,防止断电重启后状态残留。 - 输入 初始状态驱动指令:写入
SET S0。S0为初始状态,代表系统的待机状态。 - 按
F4键 进行 梯形图变换与编译。
构建SFC控制流程
初始化完成后,开始编写SFC主体的“步”与“转移条件”。
步骤1:编写待机状态(S0)
- 切换 视图至
SFC块。 - 定位 到初始状态
S0的输出处理区域。输入待机动作:写入RST Y0和RST Y1,确保气缸处于复位状态。 - 定位 到
S0下方的转移条件TRAN处。输入启动条件:写入LD X0。这表示按下启动按钮X0时,转移条件成立。 - 按下
F4变换。此时SFC逻辑为:若X0接通,则从S0跳转至下一步S10。
步骤2:编写工步1(S10)
- 输入 步号:在转移条件下方自动生成的方框中,确认 步号为
S10。 - 输入 动作:写入
OUT Y0。此步激活时,气缸A伸出。 - 输入 转移条件:写入
LD X1。等待气缸A伸出到位,限位开关X1动作。 - 按下
F4变换。逻辑为:S10激活 ->Y0输出 -> 等待X1接通 -> 跳转至S20。
步骤3:编写工步2(S20)
- 输入 步号:确认 步号为
S20。 - 输入 动作:写入
OUT Y1。此步激活时,气缸B伸出。 - 输入 转移条件:写入
LD X2。等待气缸B伸出到位。 - 按下
F4变换。
步骤4:循环与结束处理
在自动化设备中,通常要求一个周期结束后自动回到待机状态或开始下一周期。
- 跳转 处理:在最后一步的转移条件后,不使用新的步号,而是 输入
JUMP S0或JUMP S10。- 若 输入
JUMP S0:设备完成一次循环后回到待机状态,需重新按启动按钮。 - 若 输入
JUMP S10:设备完成一次循环后自动开始下一次循环(无限循环模式)。
- 若 输入
- 本示例采用单次循环,输入
JUMP S0。
逻辑可视化验证
为了确保逻辑的正确性,可以参考以下流程结构对照程序:
graph TD
A["初始步 S0 (待机)"] -- "启动按钮 X0" --> B["工步 S10 (气缸A动作)"]
B -- "限位开关 X1" --> C["工步 S20 (气缸B动作)"]
C -- "限位开关 X2" --> A
调试与运行技巧
程序编写完成后,必须进行模拟调试以确认逻辑无误。
- 连接 PLC:使用USB线或网线 连接 电脑与PLC,点击
在线->传输设置确认连接参数。 - 写入 PLC:点击
在线->PLC写入,勾选程序选项,点击执行将程序下载至PLC。 - 监控 模式:点击
在线->监视->软元件批量监视。 - 观察 状态变化:
- 上电瞬间,
S0应处于激活状态(通常显示为蓝色或高亮)。 - 按下
X0,S0熄灭,S10激活,Y0指示灯亮。 - 模拟
X1接通,S10熄灭,S20激活,Y1指示灯亮。 - 模拟
X2接通,S20熄灭,系统应自动跳回S0。
- 上电瞬间,
常见故障排查
在SFC编程中,最常见的故障是“步进逻辑卡死”。
- 双线圈冲突:严禁在不同步中重复驱动同一个输出线圈(如
S10驱动Y0,S20又驱动Y0)。若需在不同步控制同一输出,应使用中间继电器M过渡,或确认互锁逻辑。 - 转移条件死锁:如果转移条件永远无法满足(例如传感器损坏),程序会卡在当前步。使用
监控功能 检查 对应的转移条件是否接通。 - 状态未复位:若程序未按预期执行,可能是断电前状态被保持。确认 初始化程序中包含
ZRST指令。

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