《武汉工程大学学报》  2012年3期 74-78   出版日期:2012-03-31   ISSN:1674-2869   CN:42-1779/TQ
煤气计量站数据查询系统的设计与实现


0引言  城市煤气供应中,最突出的矛盾是气源厂与煤气公司双方贸易结算问题[1].据调查,国内许多煤气公司均因气源厂提供的煤气湿度、杂质含量等问题对计量的影响[2],在供方计量装置提供的数据上产生很大的争议.原因是气源厂原孔板计量装置精度等级低、煤气湿度大、焦油等杂质含量过高无法准确计量.双方各自计量的流量数据存在很大的差异,在进行贸易结算的时候双方常常为数据总量产生较大分歧,这对供销双方都造成了一定的损失.  数据源于计量,管理依靠数据.昆明市煤气计量站是为昆明焦化制气有限公司与中石油昆仑燃气公司进行煤气贸易结算提供煤气计量数据的计量单位,该站采用了数据采集系统保证了数据的准确性和完整性,数据统计的误差率为万分之一,从而使双方的交易有数据可依,确保了各自的利益,做到了公平、公正的原则.数据采集系统是实时采集监控系统,由三个子系统组成:数据采集子系统、监测子系统、基于Web的数据查询系统.数据采集子系统通过PLC(Programmable Logic Controller.可编程逻辑控制器)完成新增计量管道的温度、压力和压差3个模拟量的采集转换及对流量信号的补偿和累计运算.监测子系统在组态软件上显示实时数据,Web数据查询系统则允许管理人员远程访问数据,查询实时、历史数据.流量补偿公式为:
Q=差压×当地大气压+实际表压当地大气压+设计表压×273.15+设计表压273.15+实际温度×Qmax设计气体密度(标况)实际气体密度(标况)1系统分析与设计1.1系统分析 数据采集监控系统是通过组态软件开发的,它融过程控制设计、现场操作以及资源管理一起,将生产系统和应用以及信息交流汇集于一起,实现最优化管理[3].它基于Windows XP操作系统,采用美国AB公司的PLC(Micro-Logix 1500),澳大利亚悉雅特公司的Citect SCADA工业过程控制应用软件,Citect软件通过串口与PLC进行数据通讯.数据查询系统则是对其获得的数据进行自动化处理,满足管理者的日常查询需要,方便其获取记录数据情况.  数据查询系统有两种方式:基于C/S[4]模式和基于B/S模式.Internet技术的快速发展,基于Web方式的B/S体系结构业务信息交互已广泛被应用.这是因为这种结构具有开放性、灵活性和易用性的特点.对于客户端而言,面对的是界面统一、易于操作并且与平台无关的浏览器,不需要接受过多的操作培训,也不需要经历烦琐复杂的配置过程,在任何联网的地方都可以处理业务;对于开发者来说,不需要开发专用的客户端软件,客户端功能模块经过Web服务器就可以发布,系统的升级和维护都变得简单化.基于C/S模式适合本地局域网查询,基于B/S模式便于远程访问管理.随着管理的自动化发展,一般都是两种模式混合使用,本地采用C/S模式查询,远程采用B/S模式访问.  系统要实现的功能为:管理人员能够查询实时煤气流量,也可以查询过去某时间的历史数据;管理人员能够通过数据统计比较,快速分析出煤气用量的变化情况,预判煤气的生产用量,进而保证用户煤气的供应.1.2功能设计  根据需求分析,此系统主要实现煤气计量站数据的查询和统计,它包含九个功能模块:日实时情况查询、日情况查询、月情况查询、季度情况查询、年情况查询、任意时段查询、累计流量查询、同期比较、用户管理.日情况查询主要是完成对当日各煤气计量管道与煤气流量相关参数的即时查询及统计;月情况查询模块主要是完成对某月内每日各煤气计量管道相关参数的日均值和累计值查询及统计;季度情况查询主要完成对某季度内每月各煤气计量管道相关参数的月均值和累计值查询及统计;年情况查询完成某年内各煤气计量管道相关参数的年均值和累计值的查询和统计.任意时段查询模块完成对任意日期内各煤气计量管道相关参数的日均值和累计值的查询和统计.累计流量查询对四根管道的数据进行计算统计;同期比较包括四个子功能,同年比较、同月比较、同年同日比较、不同年同日比较.用户管理主要是完成用户管理以及修改密码.1.3数据库设计  根据上述的系统功能设计,该系统数据库包含以下数据表:用户表、采集记录表、日实时表、日表、月表和年表,各表如下:  用户表:它包含三个码,用户名、密码和权限.  采集记录表:该表记录系统从计量站煤气输送管道采集到的数据,现场每五分钟采集一次数据,包括数据采集时间、管道温度、管道压力、管道压差、管道瞬时流量、管道单位时间平均流量、管道累计流量、管道时段流量、温差补偿系数、密度补偿系数、放散标志位.  采集记录表是总表,日实时表、日表、月表和年表都是经过采集时间字段通过一定的计算生成的新表.第3期罗彬,等:煤气计量站数据查询系统的设计与实现
武汉工程大学学报第34卷
2关键技术水晶报表是一个优秀的报表开发工具,它具有强大的报表功能,为在信息管理的项目中创建、管理、发布Web报表,提供了完整的解决方案[5].水晶报表提供了一种可视化的报表设计工具,将设计和运行有效的分离开,使数据报表的输出更加容易.开始设计时需要指定报告数据来源.使用水晶报表,可以实现分组、筛选,以图形报表的方式显示数据.  LINQ[6]是一种用来进行数据访问的编程模型,是C#中新增的一个扩展,通过LINQ,可以使.NET语言直接支持数据查询.数据源有数据库、XML(Extensible Markup Language,可扩展标记语言) Lan、数组、集合,各种数据格式之间因为经常需要转换而常常引发问题.例如,C#中用string表示字符串,SQL(Structured Query Language,结构化查询语言)中则用NVarchar/Varchar/Char表示,编写操作数据库的代码时容易因为疏忽产生异常,经常会出现数据类型不匹配导致数据库操作失败的情况.另外,每一种数据源都有自己操作数据的方式.  LINQ以统一的方式操作各种数据源,降低数据访问的复杂度.其主要优点体现在它是一种标准,不但可以在一个关系数据库中进行查询操作,而且可以在文本文件、XML文件以及使用同一语言的数据源中查询操作.此外,任何与.NET兼容的语言都可以实现LINQ标准.LINQ通过对语言的改进,可以直接在程序中通过类似SQL的语句对数据源进行查询,LINQ所支持的数据源有SQL Server、XML以及内存中的数据集合.LINQ to ADO.NET主要负责数据库的查询,具体包括LINQ to SQL、LINQ to DataSet、LINQ to Entities[7]等3种技术.3系统主要功能实现3.1首页       默认页面为登陆界面.本系统主要为内部工作人员使用,账户由管理人员设置,然后分配给工作人员,所以不包含注册功能.Login_Check(string user, string pwd)函数通过连接数据库比较用户名和密码,如果条件都符合,则进入系统页面,如图1所示.图1主页面
Fig.1homepage3.2查询设计  DateTimePicker[8]控件(日期控件)用于选择日期和时间,DatetimePicker控件只能选择一个时间,而不是连续的时间段,也可以直接输入日期和时间.通过控件的Format属性设置日期或时间的格式.如果想要在该控件内用按钮调整时间值,则需要将ShowUpDown属性设置为true.  DataGrid控件能以表格的方式显示数据源中的数据,并提供了诸如分页、排序以及过滤等一些强大的内置功能,所以它能大大简化Web应用程序的开发过程.同时,开发者还可以通过运用各种不同的数据绑定列来自定义DataGrid控件显示数据的方式,这样就大大增强了DataGrid控件的功能.这里将向大家介绍如何运用其中的TemplateColumn、EditCommandColumn、HyperlinkColumn、ButtonColumn以及BoundColumn等来自定义DataGrid控件显示数据的方式.  按条件查询的步骤一般分为以下四个步骤:  第一步,连接数据库.主要代码如下:  String conStr=“Server= ;database= ;uid= ;pwd= ;”  SqlConnection conn = new SqlConnection(connStr);  conn.Open();  第二步,获得查询所需要的“日期”条件.  string _Date = Date_TextBox.Text.Trim();  第三步,从数据记录表(cj_jlb)中读出按时间查询的*号管道的统计数据.查询的基本操作语句是:  SELECT select_list[FROM table_source][WHERE search_condition]  第四步,显示查询结果.  SqlDataAdapter da_tube1 = new SqlDataAdapter(SQL_tube1_total, conn);  DataSet ds_tube1 = new DataSet();  tube1_total_DataGrid.DataSource = ds_tube1;  tube1_total_DataGrid.DataBind();  查询的步骤基本上都是以上四步,只是按照日、月、季度、年分别设置查询条件.下面是运行所得到的日情况查询所示图,如图2所示.图2日查询
Fig.2Check by day3.3同期比较  同期比较首先选择比较条件,然后得到所需的数据,然后通过DataBindXY(IEnumerable, String, IEnumerable, String)[9]函数将集合中数据点的 X 值和 Y 值绑定到指定数据源的指定列的数据,得到比较数据图.  图3是不同年同日(即不同年份的同一天)比较示意图,其中X轴表示年份,Y轴表示流量,单位为m3.图3不同年同日比较
Fig.3Comparison by date3.4查询结果分析    根据流量补偿公式,加上数据补偿,得到最后的管道数据瞬时流量.表1是查询得到的数据和标准仪表查询的数据.其中温压补偿系数=1,密度补偿系数=0.961 5.
表1累计流量测试
Table 1total flow test
时间瞬时流量/m3理论累计值/m3实际累计值/m3误差误差率/%结果2011-10-1101:002011-10-1102:0026 25826 25826 257.20.80.003 047合格2011-10-100:002011-10-31 00:0017 709 12817 709 12817 709 122.65.40.000 030合格通过数据对比,可以得出结论,该系统的误差率为百万分之一.而供需双方需求的目标是误差率超过万分之一,所以系统统计数据合格.4结语  该数据查询系统是在Visual Studio 2005[10]下基于C#语言开发的,水晶报表和LINQ语言给系统开发提供了非常大的便利,减少了代码的编写工作.该系统是煤气行业用于煤气供、需结算的计量系统,可以查询实时、历史数据,为供需双方提供了准确的数据,保证了双方的利益.该系统与传统计量相比,具有一定的创造性和先进性,系统采用工业计算机对各种参数及变量进行运算、管理、存贮,使之能在任何时候复现、查阅,全系统对参与流量计算的参数进行补偿运算,可提高整个系统的计量精度.系统提供了数据图像对比功能,便于管理者根据历史数据决定产能,调度好生产供销总量,加强企业的经营管理.参考文献: