四、任务实施
1.计算泵的累积运行时间
在程序中需要计算4个泵的累积运行时间。在程序中让泵每运行一分钟产生一个脉冲,通过计算脉冲的数量来计算出累积运行的时间。图2-2-2是泵1累积运行时间的计算,其他泵与此类似。
图2-2-2 泵1累积运行时间的计算
2.采集液位值
要采集3个水箱的当前液位值用于显示和比较判断。由于传感器信号是4~20mA的电流信号,通过EM235来采集,因此PLC读出的是6400~32000之间的数值,对应的生活水箱0~5m,中区和高区水箱0~3m的实际液位值,因此需要在控制器中把该数值转换为实际的液位值。进而实现当前液位与HH、HI、LO、LL液位的比较。
以采集中区水箱液位为例。根据接线图知道液位值存储在AIW0中。程序中需要把模拟量采样值转换为双整数、双整数转换为实数之后才能进行运算,计算公式为[(AIW0-6400)/(32000-6400)]×(水箱最大液位)=实际测量的液位值。由于中区水箱的最大高度是3m,因此中区水箱实际测量的液位值=[(AIW0-6400)/(32000-6400)]×3=(AIW0-6400)/8533.3(m)。PLC的计算过程如图2-2-3所示。
图2-2-3 中区水箱液位值采集
高区水箱和生活水箱的液位值采集与此类似,二者液位传感器的信号分别接入EM235的第2和第3输入通道,对应的寄存器地址分别是AIW2和AIW4,采集的液位值分别存储在VD36和VD40中。
3.转换手动按钮信号至M区
为了在监控界面中控制泵的起停,需要把手动起停按钮的信号从原来的I区的存储到M区。组态软件只能改写M区的变量值,而不能修改I区的数值,因此若要使用组态软件对I区输入信号进行控制,必须进行转换,同时在编写PLC程序时,使用转换后的M区进行控制程序编写,如图2-2-4所示。变量地址在内部寄存器中的使用情况见表2-2-2。
4.载入默认值和设定报警标志
各水箱的HH、HI、LO、LL在系统运行之初有一个系统默认值,在程序启动时载入该默认值,若运行中不修改该默认值则按该值运行,也可以在组态监控界面中输入新值。这里以中区生活水箱为例,中区生活水箱的HH、HI、LO、LL的4个值分别为2.6m、2.0m、1.0m和0.8m。分别存储在数据寄存器VD60、VD64、VD68、VD72中。同时为中区水箱报警的标志位赋值,若中区水箱的液位值VD32大于VD60则溢流报警标志为1,若中区水箱的液位值VD32大于VD64,则停泵标志位为1。如图2-2-5所示。
同样道理,可以编写其他两个水箱的默认报警值和给标志位赋值。
5.泵运行时间判断
自动模式下,水箱中液位低于起泵液位时,需要泵起动,系统需要自动判断两个泵的运行时间,自动起动运行时间短的泵。“泵1短”标志位为1时,则起动泵1,否则起动泵2。这里VD0和VD8分别存储着泵1和泵2的累积运行时间的分钟值,具体程序如图2-2-6所示。
同样道理可以添加泵3和泵4的运行时间判断程序,如图2-2-7所示,注意泵3和泵4是高区的生活水泵。
6.自动状态下给起泵标志位赋值
自动状态下不是立即起动泵,而是看是否有起动泵的标志。当液位低于起泵液位(LO)起动泵,进行加水,当液位加至停泵液位(HI)时泵停止运行。
图2-2-4 把手动起动信号从I区存储到M区
图2-2-5 设置默认报警值和给报警标志位赋值
图2-2-6 自动状态下判断泵运行条件
图2-2-7 泵3和泵4的运行时间长短判断程序
这里以中区的生活水泵为例,我们设置了一个起泵标位,当液位低于起泵液位(LO)时该标志位置1,当液位高于停泵液位(HI)时该标志位置0。具体程序如图2-2-8所示。
同样道理,我们可以为高区生活水泵的起泵标志赋值,如图2-2-9所示。
7.泵故障保持标志的赋值
在中区和高区水箱分别都有两个泵,一用一备,起动系统时,运行时间短的泵被系统自动选为主用泵来起动,当运行中的主用泵出现故障时,备用泵立即起动。但若主用泵故障信号消失后,并不是立即切换回去,而是直至下次起动泵或手自动模式切换时故障标志才清除。这是为了防止主用泵故障信号出现反复的跳变,造成主用泵和备用泵之间的频繁切换。这里设置了一个故障保持标志位,只要泵故障则该位置1,直至下次起动泵或手自动模式切换时该故障标志才置0。中区生活水泵和高区生活水泵的泵故障保持标志赋值程序如图2-2-10所示。
图2-2-8 中区泵的起停标志设置
图2-2-9 高区泵的起停标志设置
图2-2-10 泵1~泵4的故障处理
8.泵运行标志赋值
自动模式下泵运行的时间短、系统泵起动标志为1、泵无故障则起动该泵。若该泵故障则自动起动备用泵,故障信号消失仍不切换直至下次起泵或模式切换。这里以泵1和泵2为例进行说明,这里泵1的运行标志位是“触发泵1”,泵2的运行标志位是“触发泵2”,具体程序如图2-2-11所示。
图2-2-11 是否起动泵1和泵2的条件判断
同样道理可以编写出泵3和泵4(高区生活水泵)的泵运行标志赋值语句,如图2-2-12所示。
图2-2-12 是否起动泵3和泵4的条件判断
9.起动泵
泵在手动模式下受手动按钮控制,可以手动起动和关闭泵的运行,自动模式下,根据泵的运行标志位的值来判断是否运行。泵的运行标志位中存储着逻辑运算的结果。若为1则该泵起动,若为0则不起动。泵1的逻辑运算的结果存储在“触发泵1”中,泵2的逻辑运算的结果存储在“触发泵2”中,具体程序如图2-2-13所示。
同样道理可以编写出泵3和泵4(高区生活水泵)的泵起动程序,如图2-2-14所示。
本任务完整控制程序介绍如下。
主程序如图2-2-15所示。
图2-2-13 泵1和泵2的启动程序
图2-2-13 泵1和泵2的启动程序(续)
图2-2-14 泵3和泵4启动程序
图2-2-15 主程序
图2-2-15 主程序(续)
子程序SBR_0:调用泵运行时间统计子程序,在该程序中分别计算4个泵的运行时间,如图2-2-16所示。
子程序SBR_1:读取3个液位值的模拟量处理程序,如图2-2-17所示。
图2-2-16 子程序SBR_0
图2-2-16 子程序SBR_0(续)
图2-2-17 子程序SBR_1
子程序SBR2:手动按钮的值给M区赋值,如图2-2-18所示。
图2-2-18 子程序SBR_2
子程序SBR_3:载入各水箱报警初始设定值,同时给各报警标志位赋值,如图2-2-19所示。
图2-2-19 子程序SBR_3
图2-2-19 子程序SBR_3(续)
子程序SBR_4:自动状态下泵1、泵2、泵3、泵4运行条件的判断,如图2-2-20所示。
图2-2-20 子程序SBR_4
图2-2-20 子程序SBR_4(续)
PLC的内部寄存器使用情况见表2-2-2。
表2-2-2 PLC的内部寄存器使用情况对照表
(续)