1.控制软件设计
(1)系统程序结构设计
根据工艺,设计的控制系统程序结构如图17-5所示。所使用的组织块包括OB1、OB100和OB35。OB100系统启动时,运行一次完成系统初始化的功能。OB35为周期中断,周期为2s,调用FB41,FB41为PID连续控制功能块,计算变频器PID控制量。
OB1为主程序。OB1主要包括集水池、调节水池、净化器、加药系统、清水池以及污泥池6个部分的控制程序。水泵的控制与相关水池的液位和工艺流程相关。OB1还包括数据采样,故障处理和报警,模拟量滤波,模拟量输入和输出规格化,净化器的正洗、反洗和停止等一系列子程序。
图17-5 控制系统程序结构图
(2)系统软件资源分配
由于所使用系统软件资源较多,这里只列出总体分配表,见表17-4。
表17-4 控制系统软件资源分配表
(3)控制程序
下面对控制程序中的一些主要程序作详细介绍。
1)一站集水池。一站集水池控制程序流程如图17-6所示。
启动信号包括整个系统总启动,也可每个系统单独启动。系统的状态分为运行状态、停止状态和空闲状态,分别为1、2、0。重启信号包括一站水位低于下限、调节水池水位过高信号、接收非变频水泵故障信号以及启动超时信号。停止信号包括变频水泵故障、其他水泵故障、停止命令以及手动。停止信号将复位启动功能步。
2)二站集水池。二站集水池控制程序流程如图17-7所示。
启动信号包括整个系统总启动,也可每个系统单独启动。系统的状态分为运行状态和停止状态。重启信号包括二站水位低于下限、调节水池水位过高信号及接收非变频水泵故障信号。停止信号包括其他水泵故障(两个同时出问题)、手动及停止命令。停止信号将复位启动功能步。
图17-6 一站集水池控制程序流程图
图17-7 二站集水池控制程序流程图
3)调节水池。程序流程如图17-8所示。
调节水池有两个入口(一站和二站集水池)、一个出口(输入净化器)。调节水池的液位高度直接关系到整个系统的启动和停止。只有当调节水池超过启动线(2.5m),有足够的水量了,废水净化器才会启动。
4)清水池。程序流程如图17-9所示。
启动信号包括整个系统总启动,也可每个系统单独启动。系统的状态分为运行状态和停止状态。重启信号包括清水池水位低于下限、接收非变频水泵故障信号。停止信号包括其他水泵故障(两个同时出问题)、变频水泵故障及停止命令。停止信号将复位启动功能步。
5)加药系统。加药系统为净化器中正洗过程中提供清洗药剂,其加药由人工完成,药剂的输出是由正洗程序控制的。在药剂输出时,其加药箱的液位要达到1m,否则程序会等待直到液位达到1m,同时程序中发出报警信号告诉上位机的人机界面,提示人工加药。输药泵的运行速度和流量比例参数为0.1。程序流程如图17-10所示。
图17-8 调节水池控制程序流程图
图17-9 清水池控制程序流程图(www.xing528.com)
6)模拟量处理程序。整个模拟量处理过程包括模拟量输入的采样、算数平均值滤波、模拟量输入规格化、PID计算控制量、模拟量输出规格化以及模拟量输出。以1#集水站的模拟量处理为例,处理过程如图17-11所示。
图17-10 加药程序流程图
图17-11 模拟量处理过程
有些模拟量不需要进行PID计算控制量和滤波,则在OB1中直接调用FC105进行模拟量输入规格化,供程序使用。
在废水处理控制系统中,由于数据处理速度和精度要求不高,只是为了防止信号的瞬间变化影响到系统程序对水质、浊度的判断,所以在系统中使用算术平均滤波算法,该算法处理简单,可靠性高,程序编写方便。
滤波程序FB21对应的DB数据块有四个静态变量:#CNT计采样次数;#SUMS用来累计每次采样值的和;#high和#low分别是采样中的最大值和最小值。
如果#CNT采样次数小于32,将当前采样值进行采样值求和,采样值和保存在每个通道对应的DB块静态区#SUMS变量中,并把当前采样值与最大值和最小值(#high和#low)比较,决定是否代替原保存的最大值和最小值(#high和#low)。
如果#CNT采样次数大于等于32,用采样值总和#SUMS去掉最大值和最小值(#high和#low),然后求平均得到滤波值,存滤波值到滤波值数据块DB101中。
7)正洗子程序。正洗子程序是用户程序的重要部分,通过它控制净化器的工作流程。在实际系统中有四个净化器,每个净化器工作流程都是通过不同的背景数据块来调用相同的FB进行的。要使四个净化器按要求正常工作,以下问题需要合理地处理:子程序中的流程控制;四个净化器的优先级设置;和反洗程序之间的切换问题。
正洗子程序流程图如图17-12所示。只要调节水池的液位达到高度,程序就会自动进入正洗流程。
图17-12 正洗子程序流程图
图17-12 正洗子程序流程图(续)
系统中总共有四个净化器,程序设计成可以启动1~4任意个数的净化器,并且可以设置净化器启动的优先级顺序,每个净化器分别用数字1、2、3、4来表示,数字越小表示该净化器优先级越高。比如四个净化器分别设置优先级2、3、1、4,那么当启动两个净化器的时候,第三个和第一个由于优先级在前面,所以就先启动了。当第三个净化器进入反洗后,那么第二个净化器由于优先级比第四个高,所以就由它启动来补充净化器的个数。图17-13是1#净化器的优先级判断(判断优先级1的一个分支)。
图17-13 程序优先级判断
MW58:净化器1状态。0:空闲;1:正洗;2:反洗等待;3:反洗;4:停止。
MW66:当前正洗净水器个数。
MW68:应该开启的净水器个数。
"parameter".prior_clean1:一号净化器优先级。
设置的优先级先和1比较,如果是,就判断它是否处于空闲状态、净化器启动个数是否没有满足,如果符合条件就启动净化器(M10.0置1)。如果不是就和优先级2判断,直到4都判断完。然后就开始2#净化器的判断,直到全部完成。
8)反洗子程序。进入反洗子程序后直到运行结束之前是不允许其他净化器运行反洗程序的,如果其他的净化器也达到了反洗条件,程序中它们进入反洗排队等待,也就是说,在同一时刻只有一台净化器在反洗,这样既保证了正洗净化器的个数,又保证了清水池反洗用水不至于被消耗光。反洗完成后的净化器不会启动,而是作为队列在正洗等待中排列,直到优先级轮到它。整个反洗程序流程如图17-14所示。
图17-14 反洗程序流程图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。