基于Linux的建筑能耗数据采集器设计

2016-09-21 06:19刘振通罗明华栾鸾刘兆峰
山东建筑大学学报 2016年2期
关键词:采集器能耗服务器

刘振通,罗明华,栾鸾,刘兆峰

(山东建筑大学 信息与电气工程学院,山东 济南 250101)



基于Linux的建筑能耗数据采集器设计

刘振通,罗明华*,栾鸾,刘兆峰

(山东建筑大学 信息与电气工程学院,山东 济南 250101)

当前,建筑能耗过高的问题日益突出。能耗数据采集器是建筑能耗监测系统数据采集环节的主要设备,对采集器进行优化设计可提高监测系统的可靠性。文章针对现有建筑能耗数据采集器系统专用、配置繁琐以及配置不灵活等问题,基于Linux操作系统的工作原理与设计方法,对建筑能耗数据采集器的软硬件进行了设计,并通过对建筑能耗数据采集器工作运行,验证了建筑能耗数据采集器的可行性和实际效果。

Linux;建筑能耗监测;数据采集器

0 引言

随着经济的不断发展,建筑能耗过高的问题日益突出。建筑消耗在资源消耗中占有很大比重,因此可通过构建建筑能耗监测平台进行建筑能耗数据的管理与分析,从而找到提高资源利用效率的办法,遏制资源浪费。遏制资源浪费的关键问题在于能耗的数据的采集与传输[1-2]。能耗数据采集器是建筑能耗监测系统数据采集环节的主要设备,对采集器进行优化设计可提高监测系统的可靠性。

传统数据采集器多基于单片机设计,无法运行嵌入式操作系统,文件管理、任务调度很难实现[3-4]。国外在建筑能耗监测方面已经在建设初期对监测系统进行了规划,采用整体设计的方案,软件以及设备编码进行统一固化,没有采用可分离式的集中数据采集装置。这种方案在成本以及灵活性上较差,不适合国内众多现有公共建筑的节能改造。国内现有的数据采集器在功能上基本满足DBJ/T14-071—2010《公共建筑节能监测系统技术规范》[5]中的相关规定,但在软硬件方面还存在一些问题。硬件方面存在存储体积小、可扩展性差、不稳定等问题。软件方面则是多数采用Wince系统,虽然基于Windows的编程较为方便,但Wince消耗的硬件资源较大、实时处理能力较差,在低资源的嵌入式设备中会导致系统运行不够流畅。此外,现有的数据采集器在配置方面不够灵活,多数使用现有的系统进行软件的修改升级,通用性较差。

未来采集器的发展应趋向于智能化、配置灵活化和总线多样化。灵活的配置功能能够适应不同的计量设备、减少系统升级费用及扩大设备的兼容性;总线化使得采集器能够挂载更多的计量设备,此外现场总线的使用可提高设备间通信的可靠性,多样化的总线接口可提高设备的采集能力[6]。

为了改善现有采集器的性能以适应未来发展的趋势,文章采用以ARM9为核心的S3C2416芯片结合Linux操作系统完成对数据采集器的设计开发。文章将围绕如何进行采集器硬件架构和软件架构的设计以及重要软件功能的实现进行设计论述。

1 建筑能耗数据采集器设计理论依据

数据采集器基于Linux和ARM处理器进行设计,主要对建筑物内部计量装置进行数据采集。采集的数据经过打包处理,通过以太网上传到建筑物能耗监测子系统如图1所示。数据采集器的硬件主要包括:ARM处理器核心板、存储设备、RS485接口、网络接口以及基本信息显示。应用程序运行平台使用精简嵌入式Linux操作系统,内核版本选用2.6,该版本内核较为稳定。由于采集器需要完成对数据的存储以及具有网络配置功能,因此数据库和web服务器不可缺少。采集器搭载了Linux操作系统,因此可以移植较多的软件,使得开发更方便快捷。

2 基于Linux的建筑能耗数据采集器软硬件设计

2.1硬件设计

如图2所示,采集器采用了模块化设计。模块化设计便于硬件的维护,在一定程度上增加了系统的可靠性。

图1 建筑能耗监测系统图

(1) 核心板

核心板采用S3C2416处理器,其内核为ARM926EJ,主频运行为400MH,有内存管理单元,因此可以运行Linux操作系统。内存搭载64M内存以及256M的NANDFLASH。

图2 硬件架构图

(2) 网络模块

网卡采用DM9000,这是一款完全集成、符合成本效益的单芯片快速以太网MAC控制器,完全符合IEEE802.3u,采用TCP/IP协议,使得传输可靠、透明,传输速率在10~100Mb/s,该速率能够满足系统需求。

(3) 串口模块

RS232接口用于对数据采集器进行参数配置。RS485接口用于对建筑物计量设备的数据采集。由于RS485接口要与远端设备进行连接,电路设计上增加了TVS二极管防止因电压浪涌对芯片造成损害等问题的发生。

(4) 数据存储

存储设备采用可拔插的SD卡,使数据存储简单便捷。采集器挂载的设备多达100个,每个设备最多读4项,每项数据按20个字节存储,最小的读取周期为15min,则每天的数据总量为24h×0.25×20Bytes×4×100,约为48MB,一个月的存储总量为48MB×31=1488MB。采用2GB的SD卡就可以满足一个月的数据存储需求。

(5) 显示模块

显示模块能够显示采集器的基本信息、系统运行状态等。与其他采集器相比,维护操作人员能够更快捷、更直观地对采集器的基本情况有所了解。

(6) 系统可靠性

作为工业级的应用,必须考虑系统设计的可靠性,保证硬件能长时间、无故障地运行。

在器件的选择上,应使用正规、工业级的元器件;由于设备处于强电配电室,电磁干扰比较强烈,设备应封装在密闭的金属壳中降低电磁干扰的影响[6];485通信电缆使用屏蔽双绞线,接口处使用能够满足通信速率的高速光耦芯片。

2.2软件设计

应用程序使用SQLite3和Boa完成数据库和服务器的开发任务。

SQLite3是一个独立、无服务、无配置和面向事务的数据库引擎,其占用的内存只有几百kB,经过精简编译后的大小也仅为120kB,相对于MySQL这种几百兆的数据库来说,SQLite3更能满足嵌入式硬件需求。SQLite3支持大部分的SQL语言,并且有丰富的API,C程序能够方便地调用[8-9]。

目前的Web服务器主要有Boa、thttpd和Apache等。Boa体积最小,二进制文件仅为61kB,处理速度较快,而且占用的内存较少。Boa服务器也存在一些缺点,它是一个单进程的服务器,无法同时处理多个用户的响应。但这已经能够满足采集器配置功能的需求。

(1) 软件架构

软件整体架构由硬件驱动、内核、系统调用和应用程序组成。Linux内核提供了丰富的API,用户可以方便地调用进行应用程序的开发。

采集器应用程序的设计基于内核和系统调用,其完成的主要任务包括:数据采集、数据整理和数据上传,其数据流向如图3所示,首先从485串口中读取各计量装置读数,然后根据不同的计量装置分别保存在对应的数据库文件中,上传的数据包使用XML格式进行编码,以文本的格式完成数据上传[5]。

图3 数据流向图

(2) 软件启动流程

系统开机流程如图4所示,系统上电之后,首先加载Linux内核,然后调用Init进程。Init是第一个被启动的应用程序,负责开启各项系统程序以及用户配置服务程序。

(3) 用户配置服务

用户配置服务程序采用shell脚本进行编写。使用shell脚本程序来调用其他的C程序,这不仅可以降低开发难度,而且能够使程序运行更加可靠。shell脚本程序是用户与系统进行交流的工具,通过shell命令可以完成对整个系统的管理与操作。shell脚本程序是成熟可靠的系统工具,它是由一连串的shell命令组成的纯文本程序。

图4 开机流程图

用户配置服务脚本程序负责开启Boa网络服务器和485串口传输参数设置两个进程,其主要代码如下:

# !/bin/bash

#usr_config.shthisfilebeusedtostartorstopusrprocesses

#author:liuzhentong

BASE1=/usr/bin/boa

BASE2=/usr/mylinux/config_485

case“$1”in

start)

i=3

while[ “$i” > “1”]

do

$BASE1

exit_n=$?

if[ “exit_n” == “0”];then

i=0

else

i=$(($i-1))

fi

done

$BASE2

;;

stop)

esac

exit0

485串口传输参数设置过程如图5,主要的参数信息存储在数据库文件中,485读取程序能够方便地进行参数信息的读取。存储在数据库中的参数信息可以得到有效的保护。数据库使用体积只有几百KB的SQLite,它拥有丰富的C函数库,可使用C语言对数据库进行操作。

图5 用户配置服务脚本框图

(4) 浏览器配置服务

该模式采用了B/S架构,即浏览器服务器架构。采集器作为服务器,用户可以通过浏览器对采集器运行参数进行设置,包括服务器的IP地址、采集设备的数量以及采集的周期等。采用B/S架构模式,免去了配置软件的开发、降低了开发周期以及开发人员的投入,用户只需要使用浏览器就可以对设备进行管理和访问。此外,该架构的使用还能够使采集器被远程监控与访问。采集器采用Boa完成设备端的服务器搭建任务。Boa支持CGI功能,因此可以采用C语言编写CGI程序,实现与浏览器之间的数据交换。

Boa程序的移植配置过程如下:

从Boa官网下载源码boa-0.94.13.tar.gz。在宿主计算机上就行源码解压:[root@tongtemp]#tar-zxvfboa-0.94.13.tar.gz-C。

进入解压后的源码文件夹进行配置:[root@tongsrc]#./configure.然后修改Makefile文件,将编译器修改为交叉编译器:

#CC=gcc

CC=arm-linux-gcc

#CPP=gcc-E

CPP=arm-linux-gcc-E

make编译文件,得到可执行的boa文件,使用命令makedistclean去除无用的调试信息,缩减代码大小。

最后将经过编译生成的boa文件复制到采集器系统的/usr/bin目录下,将boa的配置文件boa.conf复制到采集器的/etc目录下。修改boa.conf文件,将用户成员修改为root即可在目标板上使用boa服务器了[10-13]。

用户通过客户端浏览器访问采集器的配置界面,界面的形式通过网页呈现。配置界面使用网页编程Dreamweaver实现,本采集器的配置界面如图6所示:

设置菜单副栏有建筑信息、网络参数、仪表参数、协议参数、权限管理和系统设置。用户可通过浏览器配置界面对采集器运行参数就行直观地设定。

图6 浏览器配置界面图

CGI通用网关接口(CommonGatewayInterface)是一个Web服务器主机提供信息服务的标准接口。

通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端[14]。CGI程序可以用任何程序设计语言编写,如shell脚本语言、Perl、Fortran、Pascal、C语言等。但用C语言编写的CGI程序具有执行速度快、安全性高(因为C语言程序是编译执行且不可被修改)等特点。C语言的CGI程序结构主要有头文件、输出信息头、取环境变量、数据处理和返回服务器信息组成。头文件包括标准输入输出头文件“stdio.h“;输出信息头格式为:printf("Content-type:text/html/n/n")这是一个MIME头信息,它告诉Web服务器随后的输出内容是以纯ASCII文本的形式就行输出的;浏览器与服务器之间的数据通信是通过环境变量进行传递的,从网页表单中获取数据的方式GET和POST两种其主要的区别是接收的数据长度不同(GET方法有长度限制,POST方法没有长度限制),接收的数据保存在环境变量QUERY_STRING中;从环境变量中取出的数据经过了URL编码,例如传传输的数据格式为“form1=2&send=提交”,其中用户输入的数据为2,因此要经过数据处理将2提取进行保存[15-16]

(5) 主要应用进程

主要应用进程包括数据采集进程和网络传输进程两部分。其中数据采集进程含有终端设备读取和数据打包线程,网络传输进程含有接收任务线程和发送任务线程。之所以采用这种设计是考虑到数据采集和网络传输是两个独立的过程,采用双进程不会因为其中一个环节的崩溃而影响到另一个环节。终端设备读取的数据要及时地进行数据打包,采用双线程的设计能够满足系统的需求。此外,线程间通讯比进程间通讯要简单的多,这使得内存的消耗变少,提高了系统处理速度。

(6) 系统可靠性保障

系统中存在多个任务进程,难免会出现某个任务程序退出运行的状况。为了避免这种情况发生,为此增加了用户任务运行状态监测程序。如图7所示,为了使该程序能够不间断地运行,设置该监测程序为系统级的调度程序。该程序每隔一定的时间就被系统调用实时监测用户任务进程号。当发现某个用户任务退出运行,重新启动该用户任务,以此来增加系统的运行可靠性。

图7 监测程序图

3 建筑能耗数据采集器运行效果检验

因为采集器尚不完善,所以在测试模式下进行了数据的读取与上传测试。在实验室环境下读取两块具有485接口的电能表数据,利用实验室路由器组建局域网,采集器读取的数据通过实验室局域网内的计算机进行接收。首先完成整个系统的接线工作,将两块电表接入设备485接口,用网线将设备接入路由器;然后在计算机浏览器中输入设备的IP地址,进入参数配置界面。按照图8中的参数进行设置,设置的参数包括上传服务器的IP、设备数量、通信协议以及上传间隔。

图8 测试参数设置图

参数设置完成后重启设备,打开TCP测试软件,选择为TCPServer模式进行监听如图9所示。

图9 TCP监听图

两块表的电子屏显示分别为9012、21015,TCP监听的数据分别为十六进制的23、34和52、17,转为十进制分别为9012、21015,上传与读取的数据是一致的。

运行结果表明用户可以方便地通过网络配置界面进行参数的设置,设备能够按照设置的参数正常运行,能够准确地读取与上传数据。

4 结语

文章提出了采用的ARM处理器配合Linux操作系统进行数据采集装置软硬件开发的设计方案。该架构的数据采集器能够充分发挥Linux在网络功能方面的优势,使得数据远程传输变得更加稳定、可靠,降低开发周期;Linux系统的采用以及软件设计的流程改善缩减了采集器系统容量,降低了部分硬件的开支;网络配置服务使配置操作更加便捷,可视化的浏览器配置界面方便了工程人员的参数配置任务,减少了劳动量。数据读取与传输功能方面的性能优化使得数据的准确性得到了保证。

[1]吴斌, 蒋鹏, 陈蒙蒙. 基于M-BUS的公建能耗数据采集器[J]. 杭州电子科技大学学报, 2013, 32(5):207-210.

[2]刘畅, 张永坚, 李然然. 基于ARM的公共建筑用电能耗数据采集器[J]. 微计算机信息, 2012,4(5):86-87.

[3]樊龙. 基于STM32的智能仪表数据采集系统的设计[D]. 太原:太原理工大学, 2014.

[4]陈立新, 梁明, 陈敬谦,等. 基于ARM和Linux的数据采集系统及其在电能质量监测中的应用[J]. 环境技术, 2010, 28(3):27-30.

[5]DBJ/T14-071—2010,公共建筑能耗监测系统技术规范[S].济南:山东教育出版社,2010.

[6]刘军. 智能数据采集器设计方法概述[J]. 科技致富向导, 2014,20(3):208.

[7]赵亮, 张吉礼, 梁若冰. 建筑能耗数据采集与传输系统设计及实现[J]. 建筑科学, 2013, 29(4):49-52.

[8]张晓华, 黄布毅, 杨存祥. 基于ARM-Linux的SQLite嵌入式数据库技术[J]. 电子设计应用, 2005,14(6):115-117.

[9]吕雪峰,彭文波. 嵌入式Linux软件开发[M].北京:清华大学出版社,2014.

[10]张荣荣, 其木苏荣, 李彬,等. 基于BOA服务器的智能家居控制系统设计[J]. 北京信息科技大学学报,2013,28(4):89-92.

[11]金勇. 基于ARM9的Web服务器Boa的软、硬件设计[J]. 电子世界, 2013(13):83-84.

[12]吴云轩. 嵌入式Web服务器在轨道拍摄系统的实现[J]. 长春大学学报(自然科学版), 2013,5(10):1242-1244.

[13]王建敏, 魏海波. 基于linux3.0.1和S3C6410的智能家居控制系统的嵌入式Web服务器的移植和应用[J]. 江西科技师范大学学报, 2013,12(6):95-99.

[14]陈侃松, 刘洪波, 熊攀. 基于ARM9的嵌入式Web服务器数据动态显示的实现[J]. 物联网技术, 2014,4(3):18-19.

[15]谢仕义, 徐兵. 嵌入式Web服务器的设计及其CGI实现[J]. 计算机工程与设计, 2007, 28(7):1598-1600.

[16]王友顺, 张俊宝. 基于CGI和Ajax的嵌入式Web构建研究[J]. 软件导刊, 2014,20(7):90-92.

(学科责编:李雪蕾)

ResearchanddesignofdataacquisitionunitbasedonLinux

LiuZhentong,LuoMinghua,LuanLuan, et al.

(SchoolofInformationandElectricalEngineering,ShandongJianzhuUniversity,Jinan250101,China)

Abstract:Withthedevelopmentoftheeconomy,theproblemofhighbuildingenergyconsumptionisbecomingincreasinglyprominent.Thedataacquisitionunitisthemajorequipmentofthebuildingenergyconsumptionmonitoringsystem,andtheoptimaldesignofdataacquisitionunitcanimprovethereliabilityofthesystem.ThispapershowsthatoperationalprincipleanddesignmethodofthedataacquisitionunitbasedonLinux.Accordingtotheprobleminthecurrentdataacquisitionthatsystemisspecial,bloatedandnotflexible,basedonLinux’sworkingprincipleanddesignmethod,thispaperdesignsthesoftwareandhardwareofdataacquisitionunit,andverifiesthefeasibilityofthedataacquisitionunitthroughtheactualoperationofthemachine.

Linux;buildingenergyconsumptionmonitoring;dataacquisitionunit

2015-10-12

刘振通(1989-),男,在读硕士,主要从事建筑设备智能化,控制工程等方面的研究.E-mail:zhentong1006@foxmail.com

*:罗明华(1957-),男,副教授,博士,主要从事检测与转换技术方面的研究.E-mail:mluo123@163.com

1673-7644(2016)02-0189-07

TP274

A

猜你喜欢
采集器能耗服务器
120t转炉降低工序能耗生产实践
能耗双控下,涨价潮再度来袭!
COVID-19大便标本采集器的设计及应用
探讨如何设计零能耗住宅
通信控制服务器(CCS)维护终端的设计与实现
日本先进的“零能耗住宅”
基于ZigBee的大型公共建筑能耗采集器设计
基于LabVIEW的多数据采集器自动监控软件设计与开发
中国服务器市场份额出炉
得形忘意的服务器标准