APP下载

基于Socket技术的高校建筑能耗采集系统设计

2012-09-15王彪任

皖西学院学报 2012年2期
关键词:服务端电表线程

王 敏,王彪任

(1.安徽工商职业学院,安徽 合肥230041;2.合肥工业大学,安徽 合肥230009)

基于Socket技术的高校建筑能耗采集系统设计

王 敏1,王彪任2

(1.安徽工商职业学院,安徽 合肥230041;2.合肥工业大学,安徽 合肥230009)

就当前建筑能耗采集系统的研究现状问题,在对目前流行的几种能耗采集技术比较分析的基础上,针对高校建筑能耗系统的业务需要和功能需求,提出了基于多线程Socket编程接口的能耗数据采集系统设计,并针对网络通信传输中存在的数据丢包现象提出了相应的解决方案,以保证数据的稳定、安全传输。

建筑能耗;网络通信;数据采集;Socket

1 引言

随着高校学生规模的不断扩大,水、电、气等基本能源消耗总量不断增加。因此,如何提高能源的利用效率,避免浪费成为开展“节约型校园”建设工作的重要内容。目前,大部分高校建筑能耗尚未实现有效的信息化管理,能耗数据采集工作基本由人工抄表方式来实现,缺乏实时性,很难真实反映高校建筑能耗使用情况。近年来,随着住房与城乡建设部、教育部联合开展的“建设节约型校园”工作的逐步推进,很多高校加大了对建筑能耗监测、采集的信息化工作。为了满足建筑能耗监管的需要,各种数字式能耗采集系统的研究应用越来越广泛[1]。目前,国内外应用的能耗数据采集方式主要有:

1.1 以太网远程数据采集 采用基于TCP/IP协议的以太网进行数据通信传输,具有传输速度快、传输容量大、可靠性高等优点,是目前应用最多的数据采集方式[2]。

1.2 无线远程数据采集 利用空间的无线信道实现数据的通信传输,只需要小功率的无线发送器和接收器便可,具有系统结构清晰、施工方便等优点。但是,无线电信号会受到建筑物的反射、吸收等作用干扰,影响信号传输的稳定性。

1.3 电力载波远程数据采集 主要利用现有输电线路实现数据传输,目前我国电网还没有专门的滤波系统,脉冲信号、电磁信号以及无线电信号对电网的干扰很大,致使数据错码、丢码情况时有发生[3]。

基于以太网的远程数据采集方式由于其具有数据传输速度快、传输容量大、可靠性高等许多优点,在建筑能耗采集系统的设计中得到了广泛的应用[2][4]。

2 高校建筑能耗采集系统设计

使用Java语言设计高校建筑能耗采集系统,运用多线程Socket编程接口完成通信层服务的设计编程。服务端与客户端使用心跳包技术保持Socket长连接,减少因为频繁建立、撤销Socket连接带来的系统开销。对传输的能耗数据采用MD5、DES加密技术来保证能耗数据准确性和安全性。目前,系统运行情况良好,基本满足应用需求,能够实现对校园建筑能耗数据的采集、整理和存储,为相关管理部门统计分析校园各建筑能耗情况,制定节能管理办法提供数据支持和决策依据。

2.1 系统结构

建筑能耗数据采集系统结构主要包括:能耗计量装置(如电表)、数据采集网关(IG)和数据中心(IC)三个模块。如图1所示:

(1)数据采集中心,负责管理、授权下属数据采集网关,向其下发数据采集指令,对采集到的能耗数据进行处理和存储,为高校的能源管理提供数据支撑(包含楼宇用电信息,电能质量信息等);

图1 系统架构图

(2)数据采集网关,是一个嵌入式设备,以较快的频率定时(本系统设置为2分钟)从下属电表(每个数据采集网关通过485串行总线连接若干电表,本系统支持32路电表)获取电能读数,并存储在本地闪存。当接收到上层采集中心的采集指令时,按照预定义的通信报文协议将最新一次能耗读数传送至数据中心。数据采集网关和上层数据采集中心之间通过校园以太网作为通信线路传输数据;

(3)能耗计量装置,由智能电表组成,负责根据预定义的通信报文协议上报即时读数给数据采集网关,智能电表和数据采集网关之间通过485串行总线传输电表能耗读数数据。

2.2 通信协议设计

高校建筑能耗采集系统的通信层负责从智能网关(IG)采集能耗数据到信息中心(IC),考虑到对能耗数据进行实时点播查询的需求以及降低因频繁建立、销毁Socket而带来的系统开销,IC与IG之间采用Socket长连接方式进行通信。IC通过Socket监听服务来监听来自IG的Socket连接请求,IC定时向IG发送能耗采集指令Batch_Query,IG接收到采集指令后再从电表中查询其读数,并返回给IC。若IC连续几次都未收到响应,则可判定IG与IC尚未建立连接或者连接已断,需要重新建立连接。如果需要点播查询,则可向IC发送查询请求Node_Query,IC将返回指定电表的电能数据,其工作过程如图2所示:

2.2.1 通信协议的技术约定:

(1)IG与IC之间采用Socket长连接;

(2)Socket通信采用字符流,其中IG客户端为C语言实现,IC服务端采用Java语言实现;

(3)每个消息根据业务需要分为若干个域,每个域之间采用分隔符‘|’分割;

图2 通信协议工作过程

(4)消息采用XML标签格式,标签分为三种:a、消息头:用<Head>和</Head>括起“消息头”的内容;b、数据:用<Data>和</Data>括起“消息体”的内容;c、校验值:用<MD5>和</MD5>括起32位MD5校验码的内容;

2.2.2 通信协议的消息定义

通信协议的每个消息都由消息头和消息体组成,消息头主要包含命令或响应类型,消息体主要包含实际的业务数据。消息格式为:

<Head>命令或响应类型</Head><Data>消息体</Data><MD5>校验码</MD5>。

其中,命令或响应类型为两字节的ASCII码字符,各个消息的数据格式以及定义说明如下:

(1)Node_Login:数据采集网关向信息中心发送登录请求消息(IG→IC)。消息定义为:<Head>00</Head><Data>网关编号|登录密码</Data>。例如:在建立与“0012”号IG的Socket连接后,第一次请求数据前,IG先请求登录该数据包的基本样式为:<Head>00</Head><Data>0012|000000</Data>。

(2)Node_Query:信息中心向数据采集网关发送单一电表电能查询请求消息(IC→IG)。消息定义为:<Head>10</Head><Data>taskid|待查电表编号</Data><MD5>ABC123</MD5>(假设MD5校验值为ABC123)。例如:查询连接在某IG上,编号为00022号电表的三项数据,该数据包的基本样式为:<Head>10</Head><Data>taskid|00022</Data><MD5>ABC123</MD5>。

(3)Node_Result:数据采集网关向信息中心发送对单一电表电能查询结果(IG→IC)。消息定义为:<Head>20</Head><Data>taskid|读表时间*|所查电表编号*|采集的电流值*|采集的电压值*|采集的电度值*</Data><MD5>ABC123</MD5>。例如:某IG返回IC对自己所接编号为00022号电表的查询数据,“02.3安培220.1伏特123456.7度”,该数据包的基本样式为:<Head>20</Head><Data>taskid|2010-05-0611:22:30|00022*023*2201*01234567*</Data><MD5>ABC123</MD5>。

(4)Batch_Query:信息中心向数据采集网关发送查询所接所有电表电能数据请求消息(IC→IG)。该消息无消息体,只包含taskid,消息定义为:<Head>30</Head><Data>taskid</Data><MD5>ABC123</MD5>。

(5)Batch_Result:数据采集网关向信息中心发送批量查询结果消息(IG→IC)。消息定义为:<Head>40</Head><Data>taskid|读表时间|所查该网关所接电表总数|电表1编号*采集的电流值*采集的电压值*采集的电度值@电表2编号……</Data><MD5>ABC123</MD5>。

(6)HeartBeat:数据采集网关向信息中心发送心跳包,表明自己在线(IG→IC),该消息无消息体。消息定义为:<Head>50</Head><MD5>0…0</MD5>(MD5校验值为“全零”)。

2.3 通信层服务架构

服务端IC采用多线程方式处理来自客户端IG的的Socket连接请求。服务端启动一个主线程用于监听来自客户端的Socket连接请求,每建立一个与IG端的Socket连接便创建一个新的工作线程,以负责该IG端之间的数据接收、发送及处理。服务端启动监听主线程的同时启动一个定时数据采集任务,轮询所有已连接并登陆的网关IG,向其发送批量数据采集指令,IG收到指令后便会返回该网关下所有电表该时刻的能耗电能数据。系统通信层主要架构如图3所示:

图3 通信层服务架构

①启动监听线程和批量数据查询任务。

②客户端IG发起Socket连接请求并登陆。

③服务器将每个客户端创建的Socket新建一个工作线程处理,并将每个工作线程保存在集合Vector中。

④批量数据查询任务定期扫描Vector中保存的客户端IG并将批量数据采集指令加入到待发信息队列中。

⑤Vector中的工作线程启动发送线程。

⑥发送线程将待发送消息队列中的消息发送给客户端。

⑦客户端IG向服务端中的工作线程返回信息。

3 关键问题

由于校园网环境的复杂性,本系统在实际应用中需要解决诸如断线重连、数据重发等关键问题,以保证数据采集的稳定性、准确性。

3.1 断线重连

根据技术需求分析,采用长连接Socket数据通信实现能耗数据采集。系统通过需要引入心跳包来维持IC端、IG端的数据链接通道。具体实现是IG端每隔几分钟发送心跳包给IC服务端,IC端收到信息后回复一个响应包给IG。对于IC端,如果在超过N(N一般为2)个心跳周期后仍没有收到IG端心跳包,则可以判断IG端已经断开。对于IG端,在发送心跳包后,没有收到响应,则可以判断与IC服务器的连接已经断开,需要重新发起连接。通过上述断线重连机制,可以很好地保持IC与IG端之间的Socket长连接,保证能耗数据的稳定传输。

3.2 数据重发

在复杂的校园网环境下,能耗数据在通信传输中偶尔会出现数据丢包、MD5验证错误等现象,这将会直接影响数据传输的准确性和完整性,因此在高校建筑能耗采集系统中加入了数据重发机制。具体实现:在服务端与客户端建立Socket连接后,服务端主动轮询所有在线的客户端,向其发送能耗数据采集请求消息,同时将这些请求消息保存在一个重发队列中,启动一个线程定时检查重发队列中的消息,在指定时间内重新发送。在服务端收到能耗数据信息后,经过MD5校验后,数据出现异常则丢弃这条信息,如果数据正确则将重发队列中相应的采集请求消息移除,不用重发。通过数据重发机制,保障了所采集能耗数据的准确性和完整性。

4 系统运行结果与分析

为了测试本文Socket通信服务设计的性能,作者建立了如表1所示的测试环境对Socket通信服务的响应时间、吞吐量等关键技术指标进行测试。客户端并发请求模拟工具采用Apache JMeter,测试时可通过设置JMeter的参数,来模拟不同并发量的客户端,测试Socket通信服务的性能。

表1 测试环境

测试方法:首先启动Socket服务,再分别启动Socket客户端1和Socket客户端2的JMeter测试程序。每个客户端启动连接到服务端后,每间隔6秒向服务端发送一次数据,总共发送10次。JMeter会计算出各个Socket连接的响应时间以及吞吐量(单位时间内处理的请求数)。Socket通信服务测试结果如下:

表2 本文通信服务测试结果

表2的测试数据表明:Socket服务在200个并发客户端连接时最大响应时间和最小响应时间基本接近,两个客户端的吞吐量也基本一致,即系统服务可以很好地响应多客户的连接请求。当客户端并发连接增至250个时,第二批发送连接请求的客户端2的最大响应时间出现明显增大的趋势,但是其吞吐量仍然维持在1.5~2.0/秒。表2表明,本文基于多线程的Socket通信服务设计达到了系统设计目标:同时承载200个以上的客户端并发请求。

5 总结

本文详细介绍了校园建筑能耗监测系统的架构设计、通信协议设计,并对系统设计中遇到的关键问题进行了分析并给出了解决方案。最后给出了系统的运行结果,对不同并发客户端连接请求下,服务端的响应时间、吞吐量等技术指标进行对比分析,结果表明系统设计能够有效满足校园能耗数据采集的设计需求。如何在保证系统功能的前提下,采用非阻塞式IO设计对系统进行重构,进一步提高系统的并发性能,是我们需要进一步深入研究的课题[5]。

[1]Khalifa T,Naik K,Nayak A.A Survey of Communication Protocols for Automatic Meter Reading Applications[J].Industrial Electronics.2011,13(2):168-182.

[2]彭蓓蓓,曾春年.基于以太网传输的远程抄表系统的研究[J].武汉理工大学学报(信息与管理工程版),2005,28(3):39-42.

[3]杨辉.电力载波远程抄表系统提高利用率的研究[J].机电信息,2010,(6):61-62.

[4]周汗卿.JDBC数据库编程的研究[J].中小企业管理与科技,2010,(4):212.

[5]刘芳,陈伟青,周孝清,等.广州地区写字楼类建筑能耗调查与分析[J].建筑节能,2007,23(18):57-60.

Design of Collecting System of the Building Energy Consumption in Higher Education Based on Socket Technology

WANG Min1,WANG Biao-ren2
(1.Anhui Vocational College of Industry and Commerce,Hefei 230041,China;2.Hefei University of Technology,Hefei 230009,China)

This paper,based on the comparison with the present sorts of the energy consumption collecting technology,analyzes the current research situation of the collecting system of building energy consumption.According to the practical requirements of the system of building energy consumption in higher education,the author designs the data collecting system of the energy consumption based on multi-thread socket API,and puts forward the program of how to solve the packet loss problem in network communication transmission in order to ensure a safe and steady data transmission.

energy consumption;network communication;data collecting;Socket

TN919

A

1009-9735(2012)02-0048-04

2012-01-10

安徽省高等学校省级质量工程项目(20101726,20101720)。

王敏(1977-),女,安徽六安人,硕士,研究方向:自然语言处理,电子商务。

猜你喜欢

服务端电表线程
巧判电表测量对象
电表“对”与“错”归类巧掌握
基于C#线程实验探究
基于国产化环境的线程池模型研究与实现
Cartoons
新时期《移动Web服务端开发》课程教学改革的研究
在Windows Server 2008上创建应用
浅谈linux多线程协作
摸清黑客套路防范木马侵入
如何测电表的量程