电气自动化培训之PLC结构化文本编程入门
来源: 中研高科(山东)教育科技发展有限公司 | 时间:2025-10-21 | 阅读量:148
PLC结构化文本(ST)编程入门:用“气缸自动循环”案例告别梯形图
案例描述:
一个单作用气缸(伸出靠电磁阀,缩回靠弹簧),配有一个启动按钮、一个停止按钮和两个磁性开关(检测伸出到位与缩回到位)。按下启动后,气缸自动执行“伸出→到位后延时2秒→缩回→到位后再伸出”的循环,直至按下停止。
梯形图思路: 通常会使用自锁、互锁和定时器线圈搭建起保停电路,逻辑直接但网络较多,状态管理分散。
ST编程实现:
我们可以用更清晰的“状态机”思路来编写ST程序:
// 定义变量 VAR StartButton AT %I0.0: BOOL; // 启动按钮 StopButton AT %I0.1: BOOL; // 停止按钮 CylinderInPos AT %I0.2: BOOL; // 缩回到位传感器 CylinderOutPos AT %I0.3: BOOL; // 伸出到位传感器 CylinderValve AT %Q0.0: BOOL; // 气缸电磁阀 Timer1: TON; // 延时定时器 RunActive: BOOL; // 运行状态标志 END_VAR
// 主程序逻辑 IF StartButton THEN RunActive := TRUE; END_IF; IF StopButton THEN RunActive := FALSE; END_IF; IF RunActive THEN // 如果气缸在缩回位,则启动伸出 IF CylinderInPos AND NOT CylinderValve THEN CylinderValve := TRUE; END_IF; // 如果气缸伸出到位,则启动定时器并开始计时 IF CylinderOutPos THEN Timer1(IN := TRUE, PT := T#2S); IF Timer1.Q THEN // 定时时间到 CylinderValve := FALSE; // 关闭电磁阀,气缸缩回 Timer1(IN := FALSE); // 复位定时器 END_IF; END_IF; ELSE // 停止时复位所有输出和状态 CylinderValve := FALSE; RunActive := FALSE; Timer1(IN := FALSE); END_IF;
ST编程优势分析:
-
逻辑集中: 所有逻辑集中在同一段代码中,无需在多个网络间跳转,流程一目了然。
-
强大的表达式: 使用IF-THEN-ELSE等高级语句,可以轻松描述复杂的条件判断,比梯形图的并联、串联分支更直观。
-
易于扩展: 如果需要增加中途暂停、循环计数等功能,只需在ST代码中增加变量和条件即可,而梯形图可能需要大幅修改结构。
通过这个案例,您可以看到ST编程并非高深莫测,它更像是一种描述设备工作流程的“说明书”。从简单的案例开始实践,您将逐步体会到其强大的威力,从而在复杂的项目中游刃有余。







