电工学习网

 找回密码
 立即注册
查看: 4638|回复: 0
打印 上一主题 下一主题

在西门子S7-1200中使用CASE语句实现顺序控制功能

[复制链接]
跳转到指定楼层
楼主
发表于 2021-1-15 10:22:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
众所周知,S7-1200不支持Graph语言,但这种语言又很适合顺序逻辑控制,按照工艺的步序,一步步编程即可,为了解决S7-1200在Graph方面的弊端,我们可以通过CASE OF语句实现顺序控制功能。
通过CASE OF指令,可以比较容易实现类似顺控的功能,并且编程方法便捷、可读性较好。可以使用类似于下面的编程方式实现类似顺控的功能:
CASE 步骤号 OF //Int类型步骤号,一般位于FB的Static
步骤0
逻辑编程 //一般初始步不执行具体操作,只是初始化,然后是等待开始
IF 条件 THEN
步骤号:=1;
ELSIF 错误 THEN
步骤号:=100;
END_IF;
步骤1
逻辑编程
置位复杂指令i.REQ
IF 复杂指令i.DONE THEN
复位复杂指令i.REQ
步骤号:=2;
ELSIF 复杂指令i.ERROR
复位复杂指令i.REQ
步骤号:=100;
END_IF;
步骤2
逻辑编程
置位复杂指令m.REQ
IF 复杂指令m.DONE THEN
复位复杂指令m.REQ
步骤号:=3;
ELSIF 复杂指令m.ERROR
复位复杂指令m.REQ
步骤号:=100;
END_IF;
步骤n
逻辑编程
置位复杂指令x.REQ
IF 复杂指令x.DONE THEN
复位复杂指令x.REQ
步骤号:=n+1;
ELSIF 复杂指令x.ERROR
复位复杂指令x.REQ
步骤号:=100;
END_IF;
错误处理 逻辑编程
步骤号:=0
END_CASE;
复杂指令0 //复杂指令调用
复杂指令1
复杂指令n
输出Busy、Done、Status等
复杂指令一般包含:通信、运动控制、读配方、写数据日志、读写数据记录、定时器等异步指令,这些指令通常不放在CASE语句的逻辑中,而是在最后统一调用。
一般通过复杂指令完成位、错误位等作为跳转条件。如果是定时器,也可以通过判断时间是否到达作为跳转条件。
例子:使用CASE OF指令编程运动控制,第一步相对运动以200mm/s的速度移动10000mm,第二步速度控制以100mm/s的速度移动15s,第三步停止。
图1为FB块的参数部分,图2为程序。
在西门子S7-1200中使用CASE语句实现顺序控制功能
FB参数
在西门子S7-1200中使用CASE语句实现顺序控制功能
源程序

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-27 17:52

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表