1 分布式系统结构
系统的分布式结构示意图如图1所示。当系统启动或复位后,各排污点的下层测量单元开始定时采样、上传数据;嵌入式模块接收到PLC传来数据后,存入自身的数据库中并判断是否要触发报警设备,同时将数据定时传给上位机。这些实时监控数据最后均汇总到网络服务器上,从而使整个系统构成了分布式的监控结构体系,主管部门只要通过应用软件的人机交互界面就可在各自办公位置对排污点的各项指标数据有一个准确的了解,进而达到对分布区域广泛的各个排污点运行情况进行集中监控的目的。
嵌入式数据采集模块上的每个串口可连接多达253个不同速率和协议的设备,因此为了降低成本,将距离较近的排污点测量单元通过一个串口集中管理器后接在同一个嵌入式数据采集模块上。在PLC程序中设置好与上位机通信时所需的PLC站号后,嵌入式数据采集模块就可通过轮巡的检测方式接收各测量单元传来的数据。但是实际中同一嵌入式数据采集模块上所接的下层测量单元不应过多,因为这会造成轮巡一次的时间过长,影响报警的实时性。
2 PLC下层测量单元硬件设计
根据实际情况只需对各排污点的管道压力、污水瞬时流量、污水总流量、红外线人体探头的开关状态和供电的开关状态进行监测。其中管道压力由水压传感器测量,其测量数据为4~20 mA的模拟量;红外线人体探头的开关状态和供电的开关状态由PLC测量,其测量数据为数字量;污水瞬时流量和总流量由基于HART协议的智能电磁流量计测量,其测量数据通过串行通信传送给PLC。由于PLC还要将处理后的数据传送给嵌入式数据采集模块,这需要占用一个串行通信口,所以系统选用带有2个RS-485串行通信口的西门子S7-200 224XP型PLC。根据西门子224XP PLC的硬件资源,基于PLC的下层基本测量单元硬件连接图如图2所示。
如图2所示,红外线人体探头和供电开关分别接到PLC的数字量输入口I0.0和I0.1上;水压传感器接在PLC上的模拟量输入口0(AIW0)上;PLC的通信口0通过屏蔽双绞线与嵌入式数据采集模块的RS-485接口相连;电磁流量计需要经过基于HART协议的调制解调器后才能接到PLC的串口上。系统中采用的调制解调器一端带有4~20 mA的模拟传输线路(如电话线)接口,一端带有RS-232接口,因此还需在调制解调器串口端再接一个RS-232转RS-485模块后才能接到PLC的通信口1上。HART协议是半双工协议,同一时间内调制解调器只能处于调制或解调的工作状态,所以需要通过PLC产生高低电平来进行控制,故将PLC的Q0.1口接到调制解调器的工作状态控制端上。当PLC输出高电平时,处于调制工作状态;当输出低电平时,处于解调工作状态。
3 PLC下层测量单元软件设计
根据PLC在系统中的作用,PLC程序应具有定时采集数据并通过自由口通信方式发送到上位机、自动报警、自动向上位机发送保持连接信号等功能。另外还要能响应上位机的数据补调命令,返回相应数值;响应上位机的参数修改命令,修正PLC的系统时间等。
整个PLC程序采用模块化设计,将完成某一功能的代码段编写为子程序,设置入口参数和出口参数,当需要完成这项功能时,只需设置合适的参数并在程序中直接调用即可。这样可缩短程序的长度,便于程序的修改和移植。整个PLC程序是由主程序、子程序和中断程序3部分组成,每个功能模块程序包含若干子程序和中断程序,下面分别介绍。
3.1 PLC主程序
主程序主要是对自由口通信参数进行设置以及对程序中用到的各计数器和标志位寄存器进行复位,以免PLC断电重启之后产生未知错误。电磁流量计采用HART协议长帧结构命令,因此要先发送0#命令获得生产厂家的代码、设备型号码和设备识别码等总共38 bit的信息[4],用于填写其他长帧命令的地址。PLC每次重启后,在主程序中调用一次0#命令子程序,并将流量计返回的地址存储在固定的寄存器中。另外,PLC采集的压力模拟量是一个缓慢变化的过程量,为了避免测量误差,还需对压力采集量进行滤波;本文采用了平均值滤波法,每隔0.1 s触发平均值滤波中断程序对压力测量数据进行处理。主程序流程图如图3所示。
该部分程序由3个子程序组成:CheckRealTImeData子程序、Ana_Alarm子程序和Dig_Alarm子程序。其中CheckRealTImeData子程序负责定时对数据进行采样、存储;Ana_Alarm和Dig_Alarm子程序在CheckRealTImeData子程序中调用,负责判断采集到的数据是否超过报警阈值。如果连续超过阈值的时间大于设定值,则置位报警标志位,使PLC自发地向嵌入式数据采集模块发送报警信息,触发报警设备;如果采样值恢复正常则将报警计时器清零,重新计时。Ana_Alarm子程序设定Adata、Uplevel和Lowlevel 3个入口参数,分别表示所测模拟量数据、数据上限和数据下限;Dig_Alarm子程序设定Ddata、Status 2个入口参数,分别表示所测数字量数据和报警状态值。调用子程序时设置好正确的参数就可完成PLC的报警功能,模拟量报警子程序和数字量报警子程序的流程图如图4所示。
3.3 PLC数据存储部分程序
PLC程序要有一定的数据存储功能,防止因通信错误而出现数据丢失的情况。因为224XP PLC的数据存储区仅为10 240 B,所以仅使PLC在每小时内的15 min、30 min、45 min和60 min时各保存一次数据,连续保存最近3天的数据。另外在电源掉电或内存丢失后,PLC的系统时间会被初始化,这会使数据保存时间与实际时间不符,因此在建立了嵌入式通信采集模块和PLC的通信联系后,需发送命令对PLC的系统时间进行设置。
3.4 PLC通信部分程序
通信部分程序是整个PLC程序的核心。它包含4个中断程序(串行通信口0发送、接收完成中断和串行通信口1发送、接收完成中断)及6个子程序:(1)Precheck子程序,负责按照HART协议格式向电磁流量计发送0#命令,获得流量计地址;(2)PackandSend子程序,负责按照通信协议格式向嵌入式数据采集模块发送报警数据、巡检数据和补调数据3种不同的数据包,它有6个入口参数,分别为CW、Data1Address~Data5Address,表示返回数据的命令字和5个测量数据的寄存器地址;(3)KeepConnect子程序,负责定时发送保持连接信号,确保嵌入式模块和PLC通信正常,它有一个入口参数TIme,表示定时时间;(4)CheckFlow子程序,负责按照HART协议命令格式向电磁流量计发送返回测量数据请求;(5)Port1CS子程序,在串行通信口1接收完成中断程序中调用,负责对流量计返回的数据进行异或检校,如果检校错误,则丢弃数据包,如果检校正确则进行解包分析,将返回的流量计地址或测量数据分别存储在不同的寄存器中,以便其他子程序也可调用;(6)Port0CS子程序,在串行通信口0接收完成中断程序中调用,负责对串口0接收的数据进行异或检校。
因为HART协议是主/从式协议,故PLC与流量计进行通信时需先向流量计发送命令,才能获得相应的返回数据。系统中PLC向流量计发送的命令有两种:一种是要求流量计返回地址的0#命令,另一种是要求流量计返回测量数据的33#命令。0#命令在每次PLC重启时发送一次,33#命令定时成每隔6 s发送一次。发送前要先拉高Q0.1的电平,使调制解调器处于调制工作状态;发送完成后,触发端口1发送完成中断使Q0.1输出低电平,调制解调器工作在解调状态,接收来自流量计的数据。当接收完成后触发端口1接收完成中断,调用Port1CS子程序对接收到的数据包进行分析。串口1的通信程序流程图如图5所示。
PLC和嵌入式模块进行通信时,PLC相当于从站,嵌入式模块相当于主站。除了自发向嵌入式模块发送报警信息和连接保持信息外,一般都是接收到数据返回请求后,再向嵌入式模块发送数据。PLC接收完嵌入式模块发送来的数据后,触发端口0接收完成中断对数据包进行分析。如果是系统时间设置命令,则按照数据包里的时间设置值修改PLC的系统时间。如果是补调命令,则按照查询时间读取历史数据并存储到补调数据寄存器中,如果是巡检命令,则将实时采样数据存储到巡检数据寄存器中,然后调用PackandSend子程序,设置好寄存器地址即可按照上位机命令返回相应数据。PLC发送完成后触发端口0发送完成中断,将各标志位寄存器复位,为下一次通信做准备。串口0的通信程序流程图如图6所示。
本文以一种分布式污水远程监控系统为例,提出了一种以西门子PLC为核心的测量方法。实验证明,文中所述方案可以准确、可靠地测量恶劣环境下的现场数据。PLC的采用不仅增大了系统的稳定性,而且还可以很方便地根据实际需要适当地增加或改变监控对象,对系统功能进行扩展。由于PLC程序采用模块化设计,所以对系统进行简单修改后即可用于其他工业监控应用中。文中详细给出了下层基本测量模块的硬件和软件设计,以期为PLC用于测量、监控领域提供一些参考。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)