下面我们就请前方专业的技术工程师来给我们介绍一下什么样的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、简短性(存储成本低)
使PLC程序尽可能简短,也是应追求的目标。
简短的程序可以节省用户存储区;多数情况下也可节省执行时提高对输入的响应速度,还可提高程序的可读性。程序是否简短,一般可用程序所用的指令条数衡量,用的条数少,程序自然就简短。从大的方面讲,要注意程序结构,提取实现相同功能代码段的共性,使用子程序、中断等减少代码量的方法;用流程控制指令简化程序,减少某时间点的工作量,不需要做的就不做,能尽量少做的就少做;
从小的方面讲还要用多处理能力的强指令取代单处理能力的弱指令(使用大级别的数据代替小级别的数据或者数据结构,如用字节、字、双字操作数代替位操作数的指令,故障字、状态字、控制字、通讯字等;使用间接寻址代替连续地址存储单元的相同操作;使用块传送指令代替多条字节、字、双字传送指令,这些可以总结为“批处理”类操作)以及注意指令的安排顺序等,要注意兼顾程序的可读性。
5、省时性(运行成本低)
程序简短有可能会节省程序运行时间,但简短与省时并不完全是一回事。
因为运行程序时间虽与程序所拥有指令条数有关,而且还与所使用的是什么指令有关,也就是与程序算法相关。PLC算法不同,执行的时间也不同。而且,有的指令,在逻辑条件ON时执行与在OFF时执行其时间也不同。另外,由于使用了流程控制指令,在程序中,不是所有指令都要执行等。所以,运行程序的时间计算是较复杂的。但要求其平均时间少,最大时间也不太长是必要的。这样可提高北京天拓四方科技有限公司是西门子工业自动化和驱动集团核心分销商(一级代理商)及系统集成商PLC的响应速度。省时的关键是用好流程控制指令。按情况确定一些必须执行的指令,作必备部分,其余的可依程序进行,有选择地执行,或作些分时工作的设计,避免最大时间太长等。
6、易改性(变动成本低)
要使程序易改,也就是要便于修改。
PLC的特点之一就是方便,可灵活地适用于各种情况。其办法就是靠修改或重新设计程序。重新设计程序用于改变PLC工艺要求的情况,不仅程序重编,而且I/O也要重新分配。多数情况下不需要重编程序,做一些修改就可以了。这就要求程序具有易改性,便于修改。易改也就是弹性,要求只要作很少的改动,即可达到改变参数或更改动作的目的。
1)参数设定尽量采用间接赋值的方法,常量参数值尽量使用符号名,做到见名知意;
2)控制尽量使用中间存储器(如M、W)作为媒介、中间层,隔离I/O在逻辑上的直接耦合,便于更改逻辑;
3)尽量实现功能插件化模块块,使用户可以“自由配置”,以实现即需即加、即加即用。
在设计PLC程序的过程中,对于上述要求要同时兼顾和平衡,不能顾此失彼,得不偿失。
关于PLC编程,老工程师的12点建议:
1、PLC和上位机(或触摸屏)组成监控系统时,在画面上很多时候需要有“手动”、“自动”等控制模式(一般都是多个只能一个时)。在程序里面可以用“MOV”指令。如:当选择“手动”就将常数1MOV到一个寄存器VB10里面,当选择“自动”就将2MOV到同一寄存器VB10。只要判断寄存器的数据是多少,就知道系统是那种控制方式。这样的思路好处是容易理解,不需要互锁之类的麻烦程序。
2、程序有模拟量控制时,如果读取的模拟量基本上没误差,可以采取时间滤波的方式,延时一段时间。如果读取的数据误差很大,就需要采取其它的滤波方式,如算平均值等。可以查阅相关的资料。
3、在程序调试过程中(特别是设备改造时,你的程序是加入到原来设备的程序中时),当程序语句中出现条件满足,而输出线圈不接通时,可以检查你的这段程序是否是在这样的语句之间,如JUMPgoto等语句。还有一种可能就是在中断程序之后,条件满足而没输出不接通,一般都是这段的程序不被扫描。
4、在顺序控制程序时,即一个动作完成后,进入到下一个动作,等类似的顺序控制,采用+10+10控制模式,本人觉得很方便。其思路是:预置一个寄存器,在初始化时值为0,当系统启动后,对它+10,此时寄存器为10,寄存器等于10时可以做第一个动作;
第一个动作完成后,再对寄存器+10,此时寄存器等于20,可以做第二个动作,第二个动作完成后又+10,此时寄存器等于30,这样只要判断寄存器里面数据为多少,就知道要完成那个动作。当需要跳跃动作时,可以不再+10,可以加+20+30....,看实际的需要而定。为什么加10而不是加1,因为加10之后,如果插入一段,只要在这10个空余的地方随便选择一个位置就可以了。
5、在设计程序的时候,当出现工艺上的故障(非控制系统控制),最好将故障现象保持,并有灯光声音报警。直到操作工复位,以让其知道系统出现了故障。不然停机了,别人还认为你的程序出问题了,一般在设计一个新系统时是要注意到这些。
6、对于经常调用的子程序,可以做成子模块,频繁调用。
7、由于生产机械在工作循环中的各工步运动在执行时需要一定的时间,且这些时间都有一定的限度,因此可以以这些时间为参考,在要检测的工步动作开始的同时,起动一个定时器,定时器的时间设定值比正常情况下该动作要持续的时间长20%~30%,而定时器的输出信号可以用于报警或自动停机装置。当生产机械某工步动作的时间超过规定时间,达到对应的定时器预置时间,还未转入下一工步动作时定时器发出故障信号,该信号停止正常工作循环程序,起动报警或停机程序,这就是我们常说的超节拍保护。
8、一些安全用检测开关(如急停按钮、安全光幕、极限开关等)使用常闭(NC)输入。
9、为安全、节能考虑,尽量将输出设计成需要动作时才动作,一旦到位就停止输出,而不要设计成平时一直输出,需要停止时才让输出断开。
10、执行元件的动作原则应当是宁可不动,也不要乱动!
11、单台设备控制:单台设备必须有软手操/自动切换以及软手操时可以启/停功能,由自动切换到软手操时,设备不能停机;由软手操切换到自动时,设备启/停取决于自动程序。
12、单台设备(泵、风机及其它大型设备)运行满24小时必须进行轮换,且必须有运行时间累计,如果由上位机设定启/停顺序除外,操作人员自行设定。