[西门子] 好的PLC程序要达到这6个标准!(附老工程师12条编程建议)

[复制链接]
查看549 | 回复0 | 2024-6-10 10:15:41 | 显示全部楼层 |阅读模式
下面我们就请前方专业的技术工程师来给我们介绍一下什么样的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时执行其时间也不同。另外,由于使用了流程控制指令,在程序中,不是所有指令都要执行等。所以,运行程序的时间计算是较复杂的。但要求其平均时间少,最大时间也不太长是必要的。省时的关键是用好流程控制指令。按情况确定一些必须执行的指令,作必备部分,其余的可依程序进行,有选择地执行,或作些分时工作的设计,避免最大时间太长等。
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小时必须进行轮换,且必须有运行时间累计,如果由上位机设定启/停顺序除外,操作人员自行设定。
点在看

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则