基于B/S架构的石化自动加药监测系统软件设计
2018-10-15张晓伟
董 超,张晓伟,李 超
(天津理工大学 天津市复杂系统控制理论及应用重点实验室,天津 300384)
0 引 言
工业循环水在石油化工等企业的生产过程中起着举足轻重的作用,它的运行状态的好坏关系到生产设备的安全和产品的生产质量及效率。然而,循环水通过反复使用后,会产生一系列的问题,例如水中产生的一些微生物、沉淀物淤积在管道壁上、管道和设备腐蚀等。因此,为了使工业循环水水质保持良好的运行状态,需要遵循一定的技术要求,向循环水中投加相关的化学药剂[1]。近年来,随着科学技术的发展,一些水处理公司研发了循环水自动加药装置,目的是检测PH、浊度、总磷、碱度等水质指标,然后根据这些指标数据投加化学药剂,达到改善工业循环水水质质量的效果。与此同时,工业循环水水质指标数据对石化企业生产具有举足轻重的作用,通过对水质指标数据的综合分析,监控人员可以充分地掌握循环水的运行状态,从而指导石化企业生产的正常运行。
目前,石化企业主要采用基于C/S架构的监测系统对自动加药装置检测的水质数据进行监测。其大致工作过程是:自动加药装置将采集的水质数据传至现场数据采集箱,然后由现场数据采集箱通过企业内部的工业以太网传给后台数据库服务器,服务器端软件对水质数据进行处理和保存,监控中心的工作人员通过客户端软件连接至后台数据库服务器,从而实现对循环水水质数据的监测。该监测模式的优点是客户端的处理能力强,系统响应时间较短,实时性好。但是监测终端需要安装专门的客户端软件,随着公司业务的变更,所有客户端的监测软件都需要更新和升级,不仅其升级和维护成本较高,而且不方便,难以满足企业级应用软件需求[2]。
对此,文中提出一种基于B/S架构的石化自动加药监测系统。首先简要介绍了系统的总体结构,然后分别对监测系统软件架构以及数据库服务端程序和Web服务器程序进行了重点设计,实现了对石化企业水处理车间自动加药装置检测数据的监测需求。该系统的优越性表现在:客户端软件是浏览器,不需要安装专门的监测软件;具有良好的开放性,工作人员可在工业以太网覆盖的任何地点通过客户端浏览器对系统进行访问;系统维护和升级经济、便捷,软件升级时仅需要对后台服务器程序进行更新,而无需更新所有的客户端软件。
1 自动加药监测系统总体结构
以某石化企业水处理车间的循环水水质监测项目为例,自动加药监测系统总体结构如图1所示。
图1 自动加药监测系统总体结构
整个监测系统由两部分组成。第一部分由水处理车间的循环水自动加药装置和数据采集箱组成。循环水自动加药装置的组成部分包括西门子S7-300、传感器、计量泵以及检测仪表等组件,西门子PLC是自动加药装置中的核心部分,主要作用是采集传感器和检测仪表中的循环水水质指标数据,并通过Modbus通信协议将水质数据传输至现场的数据采集箱。监控中心的数据库服务器端软件采用TCP/IP协议,通过石化企业内部的工业以太网采集现场数据采集箱中的循环水水质数据。第二部分由数据库服务器、Web服务器和监测终端组成。监控中心的工作人员在客户端浏览器上输入循环水自动加药监测系统网址,登录系统后向Web服务器发出查询请求,Web服务器通过Ajax技术和ADO.NET技术与后台数据库进行交互,并将结果发送到浏览器软件,以网页形式显示,从而实现了对自动加药装置检测数据的实时监测、曲线走势分析、雷达图分析、历史数据查询和报警提醒等功能。
2 自动加药监测系统软件设计
循环水自动加药监测系统软件采用B/S体系结构,主要包括表示层、功能层和数据层,如图2所示。
(1)表示层:Web浏览器。该层涵盖了循环水自动加药监测系统的显示逻辑功能,将以往的多种界面并存的状况改变为一种界面形式。其主要功能是向石化企业局域网上的Web服务器发出访问要求,Web服务器根据请求信息将所查询的内容通过HTTP协议发送给监测终端的浏览器,并进行显示[3]。
(2)功能层:Web服务器。该层是整个系统软件中任务最繁重的一部分,涵盖了自动加药监测系统的所有事务处理逻辑。其主要作用是接受PC端Web浏览器的查询请求,并通过数据库技术和Web前端技术与系统数据库服务器进行数据交互,把数据库服务器返回的结果发送到前端浏览器[4]。
图2 B/S模式三层架构
(3)数据层:数据库服务器。该层包含了自动加药监测系统的数据处理逻辑。其主要功能是接收Web服务器的访问请求,通过SQL语句对数据库进行增、删、查、改等操作,并将结果发送给Web服务器[5]。
自动加药监测系统软件采用B/S模式的三层体系结构,优点是客户端软件只负责显示逻辑,即实时显示各个自动加药装置检测水质参数的数据、趋势曲线等功能,而不用负责数据库的访问以及复杂数据的处理和计算。事务处理逻辑部分主要由Web服务器完成,这样一方面减轻了客户端软件的压力,另一方面减少了维护人员对客户端软件程序的维护工作,从而可以使他们在Web服务器和数据库服务器程序的更新上投入更多的精力[6]。对于这种三层体系结构而言,它们之间的关系是相互独立的,即层与层之间的改变互不影响。下面分别对数据库服务器端程序和Web服务器端程序的设计进行详细介绍。
2.1 数据库服务器端程序设计
在石化自动加药监测系统中,现场数据采集箱与系统数据库服务器进行通信的方式是使用Socket技术。后台数据库服务器端软件的功能是监听某个固定的端口,接受现场数据采集箱的连接请求,当连接成功后,将发送过来的循环水水质数据保存在后台数据库。在程序主线程中,最大连接数的上限是11,程序主线程的流程图如图3所示。在本次设计中,数据库采用Microsoft SQL Server 2016。
在图3中,System.Threading.Timer是应用比较普遍的定时器类,同时也是使用回调方法的计时器类,使用方法比较简单。另启线程的源代码如下:
System.Threading.Timer ti=new System.Threading.Timer(new TimerCallback(ReceiveData),cs,0,0);
TimerCallback函数委托指定System.Threading.Timer执行的方法为ReceiveData(object obj),cs为回调方法时所使用的对象。当serversocket.Accept()函数的后两个参数的值都为零时,启动计时器,然后ReceiveData()函数调用Receive()方法来接收现场数据采集箱的循环水水质指标数据,调用insert_into_sql()方法将水质数据保存到后台的数据库中[7]。
Insert_into_sql()函数的主要作用是通过调用ADO.NET数据库操作类来实现循环水水质数据向Microsoft SQL Server 2016数据库的高效导入[8],具体的程序代码如下:
//连接数据库,数据库服务器为XHS-PC,数据库名为aspszdb
stringmyStr="Data Source=XHS-PC; Initial Catalog=aspszdb; Integrated Security=True";
SqlConnection myConn=new SqlConnection(myStr) ;
myConn.Open();
//使用SQL语言将数据导入数据库
SqlCommand cmd=new SqlCommand(strSQL.ToString(),myConn)
Cmd.ExecuteNonQuery();
在实际的组网过程中,若后台的数据库服务器的IP地址是随机变化的,则现场的数据采集箱与后台数据库服务器端将无法进行有效的连接。文中通过采用动态域名解析服务的方法能够有效地解决这种问题。首先,与DNS(domain name system,域名系统)服务商取得联系,为数据库服务器申请域名teckb.eopc.net,并将该域名写入现场数据采集箱的程序中[9]。然后,当后台数据库服务器接入石化企业的Intranet后,它会把自己当前的IP地址发送给DNS服务器。再次,当现场数据采集箱端建立TCP/IP连接时,它会通过域名寻址方式与DNS服务器进行连接,再由DNS服务器找到后台数据库服务器动态IP地址,这样数据库服务器和现场数据采集箱就能够成功地建立通信连接,从而进行数据传输[10]。
2.2 Web服务器程序设计
ASP.NET是一种目前比较流行的基于.NET Framework平台的Web应用程序开发技术,由微软公司研发,而且可以使用微软.NET Framework平台所提供的全部功能。同时,它采用高效率的面向对象的方法开发Web应用程序,其开发的程序可以支持动态编译、类型安全以及异常控制等[11]。ASP.NET支持多种类型的语言进行编程,例如Visual C++、Visual Basic和Visual C#等。
IIS(Internet information services)是目前微软公司中最流行的Web服务器产品之一,它是能够在Intranet或Internet上发布信息的Web服务器,许多著名的网站都是IIS服务器上构建的[12]。
本设计采用C#作为开发语言,Visual Studio 2013作为开发环境,ASP.NET作为Web程序的实现技术,并采用与之兼容性较好的IIS作为Web服务器平台。Web服务器可以将设计好的网站内容通过IIS进行发布,实现循环水水质监测数据的可视化操作[13]。石化循环水自动加药监测系统软件的功能结构如图4所示。
图4 监测系统软件功能结构
(1)用户登录模块:监控中心的工作人员可以通过此模块进入自动加药监测系统的功能界面。此模块可以设置每个员工的登录密码和登录权限,根据员工的级别设置不同的访问权限,这样有利于保证整个自动加药监测系统的安全性。此外,该模块的主要功能是由ASP.NET网站管理工具来实现的。
(2)实时信息显示模块:该模块的主要功能将每个水处理车间的循环水水质指标数据以表格的形式实时显示在Web前端页面,从而使石化企业的工作人员可以掌握最新的循环水运行状态。
(3)趋势曲线分析模块:将石化企业各个循环水自动加药装置的检测数据以曲线的形式显示出来,能够更加直观形象地表明循环水水质指标数据的走向趋势,监控人员可以一目了然地准确了解每项水质指标的变化情况,进而判断循环水的运行状态是否正常。
(4)雷达图分析模块:将雷达图分析技术应用于自动加药监测系统中的水质数据分析具有重要意义。通过将PH、浊度、余氯、总磷等水质参数经过归一化处理后显示在雷达图上,有助于工作人员直观地分析出各项水质参数是否正常,进而判断循环水的整体运行质量。文中通过采用Web前端技术Javascript中的ProcessArray()函数编程实现水质数据的归一化处理,使各个水质参数处于同一数量级,然后又主要使用Highcharts控件中的highchart.js和jquery.js文件编程实现各个水质参数数据在雷达图上的显示。
(5)历史数据查询模块:循环水水质指标的历史数据对石化企业有着重要意义。工作人员可以自定义区间对石化厂区各个水处理车间的水质指标历史数据进行查询,然后通过对历史数据的分析,可以全面掌握每项水质参数的变化情况。对于经常出现异常的水质参数,可以进行针对性地处理,有助于提高企业的生产效率和循环水系统的正常运行。
(6)报警提示模块:该模块是自动加药监测系统软件功能模块的重要组成部分。通过对循环水的超标水质参数进行报警提示,有助于石化工程技术人员第一时间采取有效措施进行处理,防止工业事故的发生,保证生产正常运行。由于各项水质参数都有衡量自己是否正常的阈值,所以在报警模块的程序设计中,会为每项水质参数设定自己的阈值,如果系统采集的水质参数的实时数据超过该阈值,则会在前端的浏览器页面进行报警提示。
3 结束语
基于B/S架构的石化自动加药监测系统软件的设计实现了客户端的零安装、零维护,工作人员可以在企业内网覆盖的任何地方通过监测终端的浏览器对系统进行访问,提高了系统的灵活性和开放性,降低了系统的开发和维护成本[14]。同时,自动加药监测系统软件基于B/S的三层架构模式,每层之间相互独立,并且都有自己的封装代码,在设计方面满足了循环水水质监测数据的查询和显示需求,在程序方面代码聚合程度较高,维护比较方便,扩展相对容易[15]。因此,基于B/S架构的循环水自动加药监测软件在石化企业的工业生产中具有重要的工程应用价值,未来发展前景非常广阔。