登录
首页 PLC论坛 PLC论坛
回帖 发帖
正文

主题:【分享】s7 1200 用数组间接寻址和FOR循环实现一条语句启停30个阀门

点击:2677 回复:0

题外话:最近做一个化工配料项目,20种不同种类的液体按不同比例和加料顺序混合,最后罐装成成品,
由于这个项目加料顺序这块用梯形图实现起来逻辑比较复杂,最后主要程序都是用SCL来实现了,效果还不错。
步入正题:主程序完成后,还得写手动程序不是,手动这块主要是阀门控制,在TP1200触摸屏上面进行操作,便于日常阀门
清洗维护维修等。这个项目用到几十个气动球阀,如果一个一个用梯形图来写起保停,也要写多很条网络,写成块调用也要写很多的块。
下面分享我的方法,(也是初次用SCL做项目,讲的比较罗嗦,高手不要见笑,欢迎指点)
算法原型 SCL起保停的语法,运行 :=运行 OR 启动 AND NOT 停止 AND NOT 急停;
为了方便用FOR 循环 所以改变为数组   运行[1] :=运行[1] OR 启动[1] AND NOT 停止[1] AND NOT 急停;
那么30个数组就代表了30个阀门,
用FOR循环写一下,
FOR #i := 1 TO 30 BY 1 DO
运行[i] :=运行[i] OR 启动[i] AND NOT 停止[i] AND NOT 急停;
END_FOR;
下面是在博途中实现的步骤,
附件 1.jpg
建立PLC数据类型,并在里面写好变量
附件 2.jpg
建立一个DB块,在DB块里建立数组变量,并选择刚才建立的PLC数据类型
附件 3.jpg
建立一个SCL的FC块,并建立一个临时变量i
附件 4.jpg
最后在FC里用FOR循环进行程序编写。
附上程序
附件:
[本地下载]
最后谢谢大家,不知道讲清楚没有。  :)
最后修改:2017/6/30 11:49:55
17-06-30 11:42

工控新闻

更多新闻资讯