[西门子] 一文教会你SCL的状态机程序框架编写

[复制链接]
查看138 | 回复0 | 2024-9-9 14:49:19 | 显示全部楼层 |阅读模式
导读:在自动化设备中,设备之间的动作关系往往是一步步的,也就是做完了这个动作后做下一个动作,也就是不同的状态切换。我们在使用梯形图编程的时候,采用的是比较指令加传送指令编写的,那么对于SCL语言也可以实现这种状态之间的切换,最常用的指令就是Case语句。
如图所示,以下是CASE语句语法格式:通过一个变量与“常数1” “常数2”…“常数n”进行比较,当比较的值相等时执行其语句。举例:假如变量“A”等于“1”是执行“语句1”。
注意:而当执行完语句1后“A”的值变为“2”了,不会在本次的扫描中执行“语句2”,而是在下个扫描周期执行“语句2”

对于CASE语句,它的好处就是在编程的时候让我们的条理非常清晰,一步一步的顺序执行,那对于初学者来说,不知道如何下手编写这个SCL语句。那么我们就可以遵循下图的模板来编写我们的程序
此图黑色字体为基本的SCL的CASE基本框架,红色的字体是我做的一些说明,在编程的时候可以对照这个图进行编写。

举例:根据以下控制要求编写程序
按下启动按钮后,启动1#水泵,然后延时5秒的时间启动2#水泵,再延时5秒启动3#水泵;
按下停止按钮后,停止3#水泵,然后延时5秒的时间停止2#水泵,再延时5秒停止1#水泵;
1.新建FB块,并且定义接口变量。

2.程序分析
首先是判断“步序”的值,如果等于0,则执行步序0,然后判断启动按钮是否按下,按下了则将“步序”的值修改为1。
在下一个扫描周期判断步序的值等于1,则按照上图给的框架编写:首先是将静态变量“S_水泵1标志”修改为1,然后触发一个定时器接通标志用于接通定时器,设定时间赋值;接下来就是判断条件,如果条件满足则将相关变量的值修改。
步序2至步序6是一样道理,复制粘贴即可,然后修改相关变量。
CASE语句结束后也是按照模板里的框架写,显示定时器指令,再是将静态变量赋值给输出点。



3.调用FB块


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则