王文庆, 姚 曦
(1.西安邮电大学 自动化学院,陕西 西安 710061;2.西安邮电大学 通信与信息工程学院,陕西 西安 710061)
基于ARM+WiFi的能耗数据采集器设计*
王文庆1, 姚曦2
(1.西安邮电大学 自动化学院,陕西 西安 710061;2.西安邮电大学 通信与信息工程学院,陕西 西安 710061)
针对大型公共建筑能耗实时监控的需求,设计了一种基于LINUX操作系统的能耗数据采集器。该采集器以S5PV210微处理器为核心,通过RS—485串口自动采集智能电表终端数据,将采集到的数据通过WiFi传送给上位机。重点设计了采集器的硬件电路,开发了数据采集与传输驱动程序,实现数据的采集、存储和传输功能,设计了Qt图形用户界面应用程序,实现人机交互。在实验室条件下,对XY194E系列智能电表的电压、电流等电能参数进行测试,测试结果表明,该采集器能够实时可靠地完成电量的采集。
ARM; 数据采集; 串口通信; WiFi; Qt
随着我国经济快速发展,建筑高能耗问题日益严重,要求在全国范围内逐步建立各级能耗监测平台,最终建立起全国联网的能耗监测平台[1]。只有准确提供我国建筑物能耗的具体数据,才能有效地控制建筑能耗。稳定可靠的能耗数据采集器是获得准确数据的保证,而解决能耗数据的采集和传输问题是构建能耗数据采集器的关键技术[2]。文献[3~5]提出的数据采集器是以单片机作为主控制器,其缺点在于数据采集器的处理数据速率低,稳定性和精度不高,只能应用在小数据量的数据采集,裸机开发,功能扩展性不好,不具备可视化的窗口,不支持操作系统。文献[6,7]提出的数据采集器数据上传是采用有线方式,有线通信布线复杂、组网不便、传输距离短等。
本文设计了一种基于ARM技术和WiFi技术的能耗数据采集器,通过RS—485串口通信自动采集智能电表终端电量数据,然后通过WiFi将采集到的数据传送给上位机,完成电量实时采集和可靠传输。
1.1数据采集原理
本文以分项能耗电量数据采集为例进行设计。智能电表和数据采集器之间均有标准的串行异步半双工RS—485接口,采用标准MODBUS—RTU通信协议进行采集。MODBUS通信协议信息帧结构由地址码、功能码、数据区、错误校验构成,主从查询回应方式如图1所示。
图1 主从查询回应方式Fig 1 Master slave query response mode
智能电表为从机,采集器为主机,主机发送请求,从机应答,从而实现电量数据的采集[8]。MODBUS-RTU传输模式的格式为8位二进制编码系统,一个数据帧格式包含1个起始位,8个数据位,1个停止位,MODBUS-RTU消息帧格式如表1所示。
表1 MODBUS—RTU数据帧格式
1.2系统总体结构
系统总体结构主要包括基表通信单元、数据存储单元、数据远传单元和LCD液晶显示人机交互单元。其中,基表通信单元通过RS—485完成对智能电表电量采集,采集到的电表数据传输给控制核心S5PV210;数据存储单元通过FLASH对采集来的电量数据进行存储;数据传输单元将采集到的电量数据通过WiFi模块发送出去;人机交互单元利用QT—CREATOR软件进行界面开发,并通过LCD液晶触屏实现底层数据的界面显示。系统总体结构框图如图2所示。
图2 系统总体设计Fig 2 Overall design of system
2.1主控制器选择
ARM控制器底板选用两路USB接口,一路USB_OTG下载接口,用于下载烧写启动程序,另一路USB_HOST接口,用于驱动WiFi无线网卡与上位机通信。两路串口,一路用于下载烧写LINUX操作系统内核和映像文件,另一路通过MAX3485复用成RS—485串口,用于数据采集器采集智能电表电量数据。
2.2串口通信电路设计
数据采集器通过RS—485串口进行采集智能电表数据。本系统中采用复用串口2以半双工方式进行数据传输,通过MAX3485芯片来做为电平转接,利用MAX3485作为RS—485接口的低功率差分信号收发器,将TTL电平转换为差分接口信号形式。RS—485串口通信硬件电路图如图3所示。
图3 RS—485串口通信电路Fig 3 RS—485 serial communication circuit
2.3WiFi模块电路设计
数据采集器采集的电量数据通过WiFi无线模块传输至上位机。本系统无线接入模块选用的是TP-LINK公司生产的TL—WN725N微型无线USB网卡,传输速度可达150 Mbps,使用11N无线接入技术,支持多种加密方式。此处需要对USB接口进行设计,USB接口电路采用FE1.1S作为控制芯片,通过ARM控制引脚XnhDP和引脚XnhDN进行数据读写。
3.1嵌入式平台搭建
开发软件的LINUX系统为UBUNTU 14.04,而软件最终是要在嵌入式目标机上运行,因此,就要求搭建一个适合系统运行的交叉编译环境,使编译好的程序能够在ARM平台上运行,嵌入式平台的搭建主要包括交叉编译环境、UBOOT、嵌入式内核以及文件系统的裁剪和移植等。交叉编辑器的版本为arm-linux-gcc4.4.6,嵌入式内核版本选择的是linux-3.0.8,内核根据S5PV210硬件配置在现成的内核基础上做增减和修改。根文件系统用来存放系统运行时需要的各种配置文件、库文件以及相关工具软件,文件系统选择的是busybox-1.20.0,通过NFS挂载测试。
3.2WiFi无线网卡驱动移植
LINUX内核本身支持无线网络通信,但需要配置之后才能使用。配置内核使其支持USB 2.0协议、IEEE 802.11协议、TCP/IP协议等。移植无线网卡驱动分为安装驱动、设置WiFi做路由器以及动态分配IP。
1)安装驱动。在官方网站下载源码驱动并解压,编译驱动程序,修改Makefile:
CONFIG_PLATFORM_I386_PC = y
ARCH:=arm
CROSS_COMPILE := arm-linux-
KVER:= 3.0.8
KSRC:=/opt/kernel
编译执行make,得到8188eu.ko,把8188eu.ko复制到开发板目录,加载到内核,执行cat /proc/net/wireless 查看对应网络设置出现:wlan0
2)设置WiFi做路由器。hostapd是一个开源软件,它能够使无线网卡切换到master模式模拟路由器功能,修改Makefile,make,得到可执行程序:hostapd。配置2G网络:热点名称、密码、加密方式、频段、使用协议等。设置主网卡ip:ifconfig wlan0 192.168.137.1,将可执行程序和配置文件复制到开发板目录,根据配置文件产生WiFi热点。3)动态分配ip。修改Makefile,make,得到可执行程序:dnsmasq,配置网卡的接口、域名、续订时间等,将可执行程序和配置文件复制到开发板目录,根据配置文件给链接的客户端自动分配IP。
3.3串口数据采集软件设计
电量采集是通过RS—485串口与智能电表连接进行通信的,本文采用的是MODBUS-RTU通信协议。串口通信通过配置波特率为、数据位长度和奇偶校验初始化串口,然后进行CRC校验。串口数据采集流程如图4所示。
图4 串口数据采集流程图Fig 4 Flow chart of serial data acquisition
部分程序如下:
char *dev = "/dev/ttySAC1";∥选择需要打开的串口
fd = OpenDev(dev);∥打开串口
init_ttyS(fd,9600,8,1,’N’);∥串口初始化
rcv_lenth=RTU_ReadModbus(fd,0x01,0x0014,0x0003,rcv_buf);∥读电表数据
3.4WiFi数据传输软件设计
采集的电量数据通过WiFi模块上传给上位机,WiFi数据传输流程如图5所示。
图5 数据传输流程图Fig 5 Flow chart of data transmission
部分程序如下:
fd=socket(AF_INET,SOCK_DGRAM,0)∥ 创建udp套接字socket
sendto(fd,send_buf,t,0,(struct sockaddr*)&serv_addr,sizeof(serv_addr))∥发送数据
3.5QT人机交互界面软件设计
设计包括Qt开发环境搭建和Qt应用程序设计。
1)Qt开发环境搭建:移植QT需要tslib 触摸屏校正程序的支持,移植tslib,把tslib安装好的内容build-tslib拷贝到/opt/rootfs/home/build-tslib下,修改ts.conf的内容,设置环境变量profile,添加tslib的环境变量。解压QT源码,进行configure配置,编译、安装到/home/tarena/QT/build-qt下。
2)Qt应用程序设计:Qt采用信号与槽机制,信号和槽通过connect()函数连接。一个应用程序对应一个工程文件,工程文件为caijiqi.pro,程序的整体设计流程如图6所示。
图6 Qt应用界面流程图Fig 6 Flow chart of Qt application interface
Qt应用界面如图7所示。
图7 Qt应用界面Fig 7 Application interface of Qt
登录界面keyboard实现触屏键盘,username输入用户名,password输入密码,点击login登录,点击cancel取消登录。主功能界面主要的信号为按键的click()信号,对应的槽函数实现电量数据实时查询功能,中间空白窗口显示数据,实现人机交互。Qt应用程序在运行时调用QApplication构函数进行管理,主函数部分程序如下:
QApplication CaiJiQi(argc,argv);
CaiJiQi *caijiqi = new CaiJiQi();
caijiqi ->show();
return CaiJiQi.exec();
系统测试前需要把ubuntu系统的tftp服务器和nfs服务器搭建好,用来加载新内核和挂接网络文件系统。系统测试借助于串口调试工具SecureCRT和网络调试助手NetAssist。打开网络调试助手,建立UDP连接,选择十六进制接收,通过串口线把数据采集器与PC机连接,通过SecureCRT工具对系统的串口进行调试,将LCD 型数显多功能智能电表通过RS485接口的A,B口分别与采集器的RS—485的A、B口相连,采集的电量数据通过无线WiFi的UDP通信在网络调试助手中进行显示。连接示意图如图8所示。
图8 数据采集器与智能电表连接示意图Fig 8 Connection between data acquisition device and intelligent electric meter
读电压发送指令:0x01 0x04 0x00 0x14 0x00 0x03 0xF0 0x0F,上位机实时显示电压测试结果如表2所示。
表2 上位机显示读电压结果
读电流发送指令:0x01 0x04 0x00 0x1A 0x00 0x03 0x91 0xCC,测试方法同电压。
经过多次实验,上位机接收到的电量数据完全正确。其中每组数据的第1个字节是电表的地址0x01,第2个字节是返回的功能代码0x04,第3个字节是返回的数据长度0x06,第4~9个字节是接收到的数据,最后两个字节是CRC校验码。测试结果表明,能耗数据采集器能够实现对智能电表电量进行采集,并将数据存入存储器,控制WiFi建立无线链路传送到上位机进行显示。
以S5PV210为主控制器,设计并实现了能耗数据采集器,该采集器能够实现对电表电量的采集、存储以及传输功能,并通过LCD触屏显示实现人机交互。与传统的能耗数据采集器相比较,充分利用了嵌入式LINUX系统的开源特性以及无线网络组网方便,低成本,实时性强,并且方便后续的功能扩展。随着嵌入式技术的发展和WiFi的不断普及,这种基于嵌入式和RS—485总线加WiFi的能耗数据采集器在工业中也有重要的意义,具有广阔的应用前景。
[1]中华人民共和国建设部,中华人民共和国财政部.关于加强国家机关办公建筑和大型公共建筑节能管理工作的实施意见[J].上海建材,2007(6):3-4.
[2]王文庆,景明智,亢红波.矿井监控系统串网接口转换器设计[J].西安邮电大学学报,2014(4):57-62.
[3]马青,童子权.基于单片机的数据采集与近距离无线传输系统[J].中国科技信息,2009(4):178-179.
[4]刘倩,沈晓东,吴刚,等.一种基于单片机的电网数据自动采集器[J].电工技术,2001(10):8.
[5]杜伟略.基于AVR单片机的数据采集器设计[J].无锡职业技术学院学报,2011,10(2):53-56.
[6]谈宏华,陈康,涂坦,等.基于AT89C51的数据采集系统设计[J].机电一体化,2005,11(6):55-57.
[7]卢进军.基于AT89C51的数据采集系统设计[J].河南科学,2014(8):1474-1477.
[8]刘畅,张永坚,李然然.公共建筑用电能耗的数据采集技术研究[J].单片机与嵌入式系统应用,2011,11(10):9-11.
[9]成洁,卢紫毅.Linux 窗口程序设计——Qt4精彩实例分析[M].北京:清华大学出版社,2008.
王文庆( 1964-) ,男,北京人,博士,教授,硕士生导师,主要从事智能信息处理等方面研究。
姚曦,通讯作者,E—mail:815799091@qq.com。
Design of data collecting device of energy consumption based on ARM and WiFi*
WANG Wen-qing1, YAO Xi2
(1.School of Automation,Xi’an University of Posts and Telecommunications,Xi’an 710061,China;2.School of Communication and Information Engineering,Xi’an University of Posts and Telecommunications,Xi’an 710061,China)
To meet requirements of energy consumption real-time monitoring in large-scale public buildings,a kind of data collecting system of energy consumption based on the Linux environment is designed.The system uses S5PV210 micro processor as core.Data of smart meter terminal are automatically collected by RS—485 serial and transmitted to upper PC via WiFi.Hardware circuit of collector is designed and data acquisition and transmission drive program is developed data acquisition,storage and transmission are realized.Qt application program is designed and human-computer interaction is realized.Take XY194E for example,several parameters such as voltage,current are tested.Test results show that the system can complete electricity data acquisition reliably and real-time.
ARM,data collection;serial communication;WiFi;Qt
2015—11—11
陕西省科技厅工业攻关计划资助项目(2014K05—29);陕西省教育厅专项计划资助项目(14JF028)
TP 274
A
1000—9787(2016)08—0115—04
DOI:10.13873/J.1000—9787(2016)08—0115—04