楼主: Bob
收起左侧

[综合教程经验] PLC应用编程实践_空压机程序编写实现(8)

Bob 2020-4-17 22:49:57 | 显示全部楼层
邀请回答

前面反复提到的“停机准备状态”,其实也没干啥:
  
Sbr25
  
停机准备状态子程序,在D14925时被执行,用于快速散热。
具体操作内容
1)  停机准备的倒计时D10不为0时,显示“停机准备中。。。”,刷新计时器D10;
  
2)  当倒计时D10为0时,置D149=15(停机闭锁状态),置停机闭锁计时器D10=D1926,断开所有接触器Y0~Y7。
程序如下,注意,在前一状态转入ST25时,已经将风机无条件打开,便于快速散热。延时结束时,将所有接触器输出关闭,转“停机闭锁状态”ST15.
sbr25.png

   有时紧急停机,也借道此子程序,进来前将延时时间设为0,就急事即办,随即去了“停机闭锁状态”。
回复 邀请回答送花

使用道具 举报

Bob 2020-4-17 22:56:55 | 显示全部楼层
     其它子程序,就不再啰嗦了,最后展示:
主循环的编写
上面说明的各状态子程序的功能与逻辑,并示出了对应的梯形图程序实现,相信读者不难理解。最后主程序中,只需按顺序逻辑调用这些子程序就可以了,如下图举例。
正是其中的状态指针变量D149一次只能为一个数值,因此每次只能有一个子程序被执行,在编写可以简化思维,可以单独编写和调试;最后组装后调试发现错误,也只需查看D149,在对应的子程序或语句块中查找问题,可以很快定位原因。
main.png
控制器上电后,只需执行一次的初始化子程序,可用M8002驱动调用;每次循环都执行的子程序,则用M8000驱动调用:对于定时间隔执行一次的子程序,可按如下方式调用,依此类推,如下图:
main2.png

采用多个状态子程序编写的程序,PLC系统在执行时,一次只实际执行其中一个状态子程序,其它状态子程序会被“跨过”,不会进入子程序内部扫描,这也是比SFC语言编程更合适的一个优点,这可减小用户程序的执行时间,提高执行效率,这在有控制精度要求的设备上,是程序的一个关键点。
由于程序分块条理清晰,接手程序的技术人员,比较容易理解该控制程序,若要添加新的功能或处理逻辑,可以找到最佳的程序插入点。
若采用只有一个主循环程序的“一锅煮”方法编写程序,难免有“多线圈”的问题,而为解决这个问题,程序语句的条件判断必需变得复杂;将来要修改功能,可能引发新的问题,需要打补丁解决,随着功能变得越来越复杂,可靠性隐患就越大。

采用功能分块或分状态的方式来编写程序框架,并加比较详细的备注说明,看起来比较麻烦,但带来益处更多。

回复 送花

使用道具 举报

Bob 2020-4-17 23:21:09 | 显示全部楼层
      至此,工频驱动的螺杆空压机的控制程序主干部分就写完了,但作为保护部分,要注意每个扫描周期中,都需检测判断状态,有异常,就置位m200~m231中对应m标志,由Sbr6统一进行告警停机的判断处理。      在下一节将讲解变频驱动空压机的控制程序的编写,让变频器的一键启动、起停自如,让PID闭环控制敏捷流畅,程序编写有其技巧,待继续。
回复 送花

使用道具 举报

刘旭晨 2020-4-18 12:09:12 | 显示全部楼层
也是结构化编程思路的功能和状态转移方法方式的实现,面向对象的的编程,周工厉害了,在把公司的AC,AM 系列的codeSYS的软件使用方法讲一讲,现在新的AM600,里面的动作,方法,还有两个,都有什么区别,现在的中型新教程直讲功能的使用方法,没有讲解,程序的流程转换和协调工作,和程序的架构,可以在讲讲,2015的您讲的,也要更新一下
回复 送花

使用道具 举报

wenpian 2020-4-19 22:35:06 | 显示全部楼层
学习,真不错,流程很清晰值得借鉴,感谢周工!
回复 送花

使用道具 举报

cdb2019 2020-4-22 11:30:06 来自手机 | 显示全部楼层
能否把这个案例程序,发给我们学习一下呢?
回复 送花

使用道具 举报

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

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部