下面我们就请前方专业的技术工程师来给我们介绍一下什么样的PLC程序算是好的程序呢?好的PLC程序中有哪些特点呢?大体有如下几个方面:
下面我们就请前方专业的技术工程师来给我们介绍一下什么样的PLC程序算是好的程序呢?好的PLC程序中有哪些特点呢?大体有如下几个方面:
1、正确性(调试成本低)
PLC程序首先一定要能正确地工作,满足实际控制工艺要求。 这是PLC程序的根本,若这一点做不到,其它一切没有任何意义。
2、可靠性(维护成本低)
不仅要正确,还要可靠。不能三天两头时不时地出问题。
可靠反映着PLC程序的长期稳定性,这也是对PLC程序的基本要求。有的PLC程序,在正常的工作条件下或合法操作时能正确工作,而出现非正常工作条件(如临时停电,又很快再通电)或进行非法操作(如一些按钮不按顺序按,或同时按若干按钮或者连续按多次)后,程序就不能正常工作了。这种程序,就不太可靠,或说不稳定,就是不好的程序。好的PLC程序对非正常工作条件的出现,能予以识别,并能使其与正常条件衔接,可使程序适应于多种情况,好的PLC程序对非法操作能予以拒绝,且不留下“痕迹”。只接受合法操作,即预防性健壮编程。联锁是拒绝非法操作常用的手段,继电电路常用这个方法,PLC及系统集成商也可继承这个方法。
3、可读性(学习成本低)
要求所设计的程序可读性要好,便于理解,便于调试,也便于别人阅读使用你的程序,便于维护;必要时,也可使程序作为标准模板而便于推广。
要使程序可读性好:
1)程序的设计脉络就要尽可能清晰,结构上有层次感;
2)功能层实现模块化,或者使用面向对象的方法进行设计;
3)使用一些标准设计、通用性设计;
4)变量层尽量使用符号名编程;
5)参数紧跟在使用它们之前再设定参数值(即设即用);
6)I/O地址分配要有规律性,便于记忆与理解;
7)内部器件的使用也要讲规律性,相同功能的地址分配要保有一定的不连续“断层裕量”(如x功能地址分配使用到k,那么下一功能的地址分配就不要从k+1开始,而要从k+n开始),以防功能更改;
8)必要时,还要做一些注释工作;可读性在程序设计开始时就要注意。这不容易做到。因为在程序调试的过程中,指令的增减,内部器件的使用变化,可能使原较清晰的程序,变的有些乱。所以在设计时就对调试增减留有一定的余地,然后调试完毕后再做一下整理,这样所设计的程序具有更高的质量。
简短的程序可以节省用户存储区;多数情况下也可节省执行时提高对输入的响应速度,还可提高程序的可读性。程序是否简短,一般可用程序所用的指令条数衡量,用的条数少,程序自然就简短。从大的方面讲,要注意程序结构,提取实现相同功能代码段的共性,使用子程序、中断等减少代码量的方法;用流程控制指令简化程序,减少某时间点的工作量,不需要做的就不做,能尽量少做的就少做;从小的方面讲还要用多处理能力的强指令取代单处理能力的弱指令 (使用大级别的数据代替小级别的数据或者数据结构,如用字节、字、双字操作数代替位操作数的指令,故障字、状态字、控制字、通讯字等;使用间接寻址代替连续地址存储单元的相同操作;使用块传送指令代替多条字节、字、双字传送指令,这些可以总结为“批处理”类操作) 以及注意指令的安排顺序等,要注意兼顾程序的可读性。
4、在顺序控制程序时,即一个动作完成后,进入到下一个动作,等类似的顺序控制,采用+10+10控制模式,本人觉得很方便。其思路是:预置一个寄存器,在初始化时值为0,当系统启动后,对它+10,此时寄存器为10,寄存器等于10时可以做第一个动作;第一个动作完成后,再对寄存器+10,此时寄存器等于20,可以做第二个动作,第二个动作完成后又+10,此时寄存器等于30,这样只要判断寄存器里面数据为多少,就知道要完成那个动作。当需要跳跃动作时,可以不再+10,可以加+20+30....,看实际的需要而定。为什么加10而不是加1,因为加10之后,如果插入一段,只要在这10个空余的地方随便选择一个位置就可以了。
6、对于经常调用的子程序,可以做成子模块,频繁调用。
7、由于生产机械在工作循环中的各工步运动在执行时需要一定的时间,且这些时间都有一定的限度,因此可以以这些时间为参考,在要检测的工步动作开始的同时,起动一个定时器,定时器的时间设定值比正常情况下该动作要持续的时间长20%~30%,而定时器的输出信号可以用于报警或自动停机装置。当生产机械某工步动作的时间超过规定时间,达到对应的定时器预置时间,还未转入下一工步动作时定时器发出故障信号,该信号停止正常工作循环程序,起动报警或停机程序,这就是我们常说的超节拍保护。
9、为安全、节能考虑,尽量将输出设计成需要动作时才动作,一旦到位就停止输出,而不要设计成平时一直输出,需要停止时才让输出断开。
11、单台设备控制:单台设备必须有软手操/自动切换以及软手操时可以启/停功能,由自动切换到软手操时,设备不能停机;由软手操切换到自动时,设备启/停取决于自动程序。