摘要:本文结合市政自来水行业中工艺设备的特点,着重介绍结构化编程方法在自控PLC编程中的实际应用,基于PLC程序设计基本法,对结构化编程思想取得成功进行分析和介绍。
关键词:市政自来水;自控PLC;结构化编程
1 引言
随着现代工业化发展的日新月异,各行各业对自动化控制的要求也越来越高,PLC程序控制也渐渐成为不可替代的方式。采用梯形图形式的PLC编程方式程序太过繁杂,结构形式不能一目了然,从而不利于控制程序在多个站点或多个项目中的重复使用。如何便捷地编制出符合各种设备的工艺特点、参数的PLC程序,对工业自动化系统的及时完工,提高自动化控制水平具有重大的意义。仅以此文结合市政自来水厂行业常用工艺设备及其程序的编写,对市政自来水厂自控系统PLC中结构化编程的应用进行了初步的探究。
2 常见程序设计方法简介
常见的程序设计方法分为五种:梯形图语言LD、指令表语言IL、顺序功能流程图语言SFC、功能模块图语言FBD、结构化文本语言ST[1]。
2.1 梯形图、指令编程方法
在一个程序段中,将所有的程序代码集中在一起。如对Rockwell AB 1756系列来说,将信号采集、控制输出、运行台时、模拟量的输入输出等全部用户程序写入MainProgram中。该方法与工业化自控技术PLC所代替的继电器控制电路相差无几,系统按照顺序逐条处理指令。它适用于少量设备配套PLC的编程,例如MicroLogix1400。对于市政自来水厂这样的大中型项目,显然这种程序结构明显清晰度不足,给编程调试带来很大的难度。
2.2顺序功能流程图、功能模块图编程方法
以功能为主线,按照功能流程的顺序分配,条理清楚,便于对用户程序阅读及维护,大大减轻编程的工作量,缩短了编程和调试时间。但其程序功能块是完全基于梯形图设计的,故虽然CPU效率得到提高,但还是未能解决代码繁琐冗长、调试困难的缺点。
2.3结构化编程方法
将复杂的自动化要求,通过相似要求的程序代码,将其分解成与工艺流程相关的多个功能或可多次处理的任务,将更有利于复杂任务的控制。而这些某个任务或某个功能以相应的程序块表示。从而只需将不同的参数或地址代入不同的工艺设备和流程当中,使用时只需调用相应程序块,即可实现各种设备的控制,大大减少了同一功能的代码输入。而且只需简单修改某个程序块,就能实现对某个功能的修改,大大地提高了编程的效率,保证了程序的可靠性。
3 结构化编程方法的应用
在实际使用中,对市政自来水行业常规工艺流程和设备进行详细研究的基础上,针对常见工艺设备分别编制了仪表、阀门、风机、水泵等不同的程序模块,实现了PLC程序结构化编程在市政自来水行业中的应用。下面介绍结构化编程方法如何在水泵及泵房调度中的实现。
3.1水泵结构化功能块
水泵是市政自来水厂行业最常见的工艺设备,功能块接口参数共分为三种类型:输入输出(InOut);输入(Input);输出(Output);。其中输入输出类型变量主要有:变频水泵状态,变频水泵控制命令,水泵台时及启停次数,频率设定值;输入参数主要有:远程信号,运行信号,故障信号,准备(就绪)信号,变频器故障信号,频率输入值等;输出参数主要有:实际运行频率,频率控制输出值,启停控制等。
在主程序对功能块进行调用时,既可以通过自控程序的内部逻辑对输入、输出类型的变量进行赋值,也可以人为的手动设定。其中的State、Command等参数均为INT类型,其每一位字符分别定义了不同的意思。
该功能块包含了水泵最常用的控制功能和信号采集,对于工程中一些特殊要求的未使用到的变量,可直接设置默认数值或空置的方式进行处理。水泵电流、电压等可通过类似仪表的模拟量处理程序块进行数据转换和高低限报警,当电流、电压超过高低限设定值时发出报警信号(过流或过压、欠流或欠压)传送给变频水泵功能块的保护功能,从而触发水泵的电流、电压超限保护功能。
3.2水泵调度功能块
自来水厂一般具有取水泵房、反冲洗泵房、提升泵房、送水泵房等工艺段,其水泵控制模式主要分为工频和变频,而调用水泵的运行频率和台数都是由液位或者压力的变化决定的,启停泵时又要考虑水泵机组的运行台时和启停时间段等因素。其基本原理介绍如下:
在泵房中,根据液位分段启停泵的模式最为常用,设定不同的液位值分别对应需要启泵的台数,同时上下液位留有保护区间,启泵液位设定值比停泵液位设定值略高,以防止水位波动时水泵的频繁启停[2]。
水泵的启停选择需要考虑以下几个因素:一是就绪状态,PLC首先检测水泵通电、保护情况,自动模式、无故障状态等,当这些条件都满足时,认为该水泵处于就绪状态,可被自控程序进行启停。二是平衡调泵,累计运行台时最短且自动模式、无故障状态的水泵优先被启动,运行台时最长的水泵优先停止,使每台水泵运行时间大致相等。当运行台时相同时,按泵的设定编号进行启停。三是频繁启动保护,控制程序使每一台水泵的开启频率不超过6t/h,即两次起动间不小于10min,且不论何种情况,不得同时启动多台水泵。
在实际应用中,需要计算当前需要开泵台数,可根据液位分段启泵原理及低水位保护、高水位溢出等条件编制泵房调度自控功能块。根据上述三因素,可迅速编制泵房里的水泵启停调度选择功能块,用于选择即将需要启动的水泵的台数和编号。两功能块配套使用,可顺利、便捷地完成泵房自动启停泵程序的编制工作。
4程序设计中的注意点
1)、对应设备控制功能块的设计以完成基本功能为主,主要是数字量输入输出、模拟量输入输出、运行台时,避免所有功能集中设计在同一功能块中的情况。
2)、针对Rockwell AB PLC编程功能块建议采用ST语言来完成PLC程序模块的编制,并且在编程时尽量不使用AB特有的指令,使用ST语言形成标准化,对于程序的移植很有好处。Rockwell品牌下PLC的ST语(Structured?Text),是类PASCAL语言,符合IEC 61131-3国际标准,当移植到新的编程环境时,只需要进行少量修改即可使用[3]。
3)、经过市政自来水、污水、泵站等工程经验积累,可以开发给排水行业的功能块程序库,从而缩短工程的建设周期。程序库中的模块可重复使用,可以像CAD图库一样,移植很方便,同时考虑到误操作可将功能块进行加密保护。
5 结语
本文结合了市政自来水厂工艺设备的特点,采用了结构化编程的理念,对PLC程序编制进行设计。针对单个功能的编制和测试都相互独立,将最为常见的一些工艺设备特点及控制流程封装成功能块,然后再加以调用。在实际使用时,只需将外部的数字量输入(DI),数字量输出(DO),模拟量输入(AI),模拟量输出(AO)与功能块对应起来,就可实现工艺设备的运转,大大减少了现场调试工作量,同时也进一步提高了程序编制、调试的速度。经过一次编译,多次使用,减少了程序的出错,保证了程序的可靠性。总而言之,使用结构化编程方法,工作效率得到了提高,调试难度也大大地降低,可靠性和移植性强。
参考文献:
[1] 区玮周,ST文本编程在配方程序的应用设计 [J],机床与液压 2018年4月,第46卷 第8期
[2] 张鹤. 基于Controllogix的污水处理控制系统研究[D].青岛大学,2008年05月
[3] Rockwell AB Logix5000编程手册,2008
作者简介:任九天(1970-),男,籍贯:江苏省扬州市,研究方向:供水