PLC程序结构怎么搭建,自动流程图怎么才能构思缜密没漏洞?
个人认为PLC的一套程序出来前首先要知道我编辑的这套程序需要做什么,需要有那些功能,然后根据功能来确定我的程序需要分成几部分。
前阵子因为公司产品研发需要,自己做了一个小的检测程序,功能简单:当工人把产品放入进去后按检测按钮,固定产品的部件开始工作,进行检测,检测正常,固定产品部件松开,工人取料。当产品不合格时,发出声光报警,工人按复位键后,部件才能松开。在确定了以上几点后,我程序就分为检测和报警两段(结束语不算)
因为也才开始接触PLC的编程越深入,越好奇,还有各个软件(PLC品牌公司)的差异,只能一直学习[呲牙][呲牙]
在做PLC程序的时候,主程序中的程序结构一般会更加清晰一些,而后边的子程序也可以像主程调用子程序一样,实现子程序对子程序的调用!---这样从主程序到后边的子程序展开来看的话调用关系就比较清楚!--但是具体主程序中调用几个子程序,以及子程序中又调用几个子程序,这个程序结构的划分,或者你说的搭建,这个源头应该是根据对工艺控制文件的仔细分析而后规划出来的!
PLC电气工程师应该和熟悉工艺流程的技术人员一起讨论,将整个项目的控制对象,以及每个控制对象的控制要求,按照手动,半自动以及自动情况下的动作特性,启动顺序,连锁特点等完全的反应出来,不管是以文字描述的方式,还是流程图的方式,务求将每一点的控制要求都描述清楚!
当然在形成一个初步的自动化流程控制图后,应该让大家一起来讨论,看看有没有被忽略掉的条件!---这个步骤其实最重要,因为程序的不完善性,或者说漏洞就是因为做控制文件的时候讨论的不够细,导致忽略了默写工况,实际运行后正好出现了那样的工况,造成逻辑错误!
我简单的举一个例子来说明一下,请先看下图:
其实我在其他的文章中也举过这个例子,在同一个管道上有3个阀门或者料筒,当阀门打开的时候管道应该有相应的颜色指示!一般情况下,PLC编程工程可能最自然的就是想到如上图的一对一关系,但是这个流程图明显的忽略了如果阀门A打开的同时,阀门B和C也可能会打开,如果此时阀门B打开管道应该显示设么颜色?
如果此时阀门C打开管道应该是设么颜色?
如果阀门A,B,C同时打开又应该是设么颜色?
如果同时只能打开一个阀门,那么A,B,C三者之间就会有限制关系,这些限制关系同样需要在程序控制文件中清晰的表述出来,这样编程人员的写程序的时候,照着大家商定好了统一版本,直接写程序即可,不用一边写一边思考!一边写程序一边考虑此处的工艺要求,通常程序就无法写完善,特别是像我举例这种3对1的情况,就需要静下心来把控制要求整理成文件,而后再去做程序是比较好的!---应该说这是“磨刀不误砍柴工”,2对1的情况还比较简单,一旦出现3对1,或者4对1以及以上的情况,程序的条件判断就很多了,是特别需要细心应对的,当然这只是我的一点个人经验!
就简单说这么多了,PLC程序目的就是实现工艺动作要求的控制,工艺控制要求做成流程图后,大家充分的讨论把每个点的条件都考虑清楚,形成大家都认可的文件,则可以大大的减少后续程序运行中的漏洞!---另外,程序的结构划分,也是需要站在工艺流程文件的角度上来划分,比如几个设备存在明显的连锁关系,那么这几个设备是适合放置在一个程序块中集中控制的,当然,像阀门,电机,传感器等同一类型的那个公共程序块,也是适合做成共用块,然后再具体调用!---总之,程序的结构划分,也是灵活的,需要建立在工艺流程的基础上!
希望能对你有点帮助,谢谢!
原图文请查看我头条号文章
结合项目的实际情况,
选用合适的程序设计结构,
注意编程常用技巧,
可以事半功倍。
题图:西门子S7-1200 PLC
来源:EVERYPIXEL
PLC程序设计,常用的结构有三种:线性化编程、模块化编程、结构化编程。下面我们就以西门子PLC为例,对这三种程序结构展开叙述。
线性化编程是将整个用户程序放在组织块OB1(主程序)中,在CPU循环扫描时执行OB1中的全部指令。其特点是结构简单,但效率低下。另一方面,某些相同或相近的操作需多次执行,这样会造成不必要的编程工作。再者,由于程序结构不清晰,会造成管理和调试的不方便。所以在编写大型程序时,避免线性化编程。
模块化编程是将程序根据功能分为不同的逻辑块,且每一逻辑块完成的功能不同。在OB1(主程序)中可以根据条件调用不同的功能或功能块。其特点是易于分工合作,调试方便。由于逻辑块是有条件的调用,所以可以提高CPU的利用率(图中FC类似子程序)。
结构化编程是将过程中要求类似或相关的任务归类,在功能或功能块中编程,形成通用解决方案。通过不同的参数调用相同的功能或通过不同的背景数据块调用相同的功能块。其特点是结构化编程必须对系统功能进行合理分析、分解和综合,所以对设计人员的要求较高,另外,当使用结构化编程方法时,需要对数据进行管理[1]。
第一种线性化编程,即不***用分支的形式,在一个页面中从头写到尾;
第二种模块化编程,即把程序分为例如手动、自动、初始化、数据换算等子程序;
第三种结构化编程,即把控制过程中分为独立的部分,再来调用,比如可以做成多个独立的单步流程动作。
说完程序结构的三种方式后,再来说说程序设计中的一些技巧。
1.简单性
使PLC程序尽可能简单。简单的含义就是尽可能的使用标准化的程序框架,尽可能使用简单的指令。
要想程序简单,从大的方面讲,要优化程序结构,用流程控制指令简化程序,从小的方面讲还要用功能强的指令取代功能单一的指令,以及注意指令的安排顺序等。
2.可读性
要求设计的程序可读性要好,以便于调试、维护,利己利人。
要使程序可读性好,所设计的程序就要尽可能清晰。要注意层次,实现模块化。
如遇特殊情况下***用语言编程,多数情况下请使用梯形图编程,方便阅读。
再就是I/O分配和内部寄存器要有规律性,以及做好注释,便于记忆与理解。
3.可靠性
有的PLC程序,在正常的工作条件下或合法操作时能正确工作,而出现非正常工作条件(如临时停电,又很快再通电)或进行非法操作(如一些按钮不按顺序按,或同时按若干按钮)后,程序就不能正常工作了。这种程序,就不大可靠,或说不稳定,就是不好的程序。
4.扩展性
许多程序可能在进现场之前都已经编好,但是到了现场,可能还需要添加另外的程序,为了避免打乱整套系统的结构,需要在每个功能区预留一定的空间作为备用[2]。
结合项目的实际情况,选用合适的程序设计结构,注意编程常用技巧,可以事半功倍。
参考
1.刘华波.09编程方法《西门子S7-300/400 PLC编程与应用》第二版.青岛大学-西门子先进自动化技术联合实验室.2016
2.工控帮.完美PLC程序什么样子?.2017