基于ARM的远程电能质量监测系统的研究
姓名:荆小刚申请学位级别:硕士专业:检测技术与自动化装置
指导教师:蔡卫峰
20080615
硕-I:论义摧于ARM的远程I【I能质量;临测系统的研究摘要随着社会的进步和经济的快速发展,电能质量问题不断恶化,使得高效的电能质量监测变得越来越重要。传统的电能质量监测仪器往往功能单一、缺少网络功能,不能满足实时在线监测的要求。本文提出了一种基于ARM的远程电能质量监测的方法,系统完成实时信号的采集,并利用嵌入式linux自带的TCP/IP协议栈内建一个WEB服务器,且提供现场人机界面。网络用户可以在任何一个WEB浏览器访问这个系统。本文首先阐述了电能质量监测仪的国内外发展状况和电能质量的标准,并给出相应的测量方法,然后分别从硬件和软件方面构建监测系统。硬件方面主要讨论了硬件系统各个功能模块的设计。系统软件方面首先构建嵌入式linux系统,并编写和修改了linux操作系统下的接口驱动程序,主要是编写了A/D转换器的驱动,并且移植了嵌入式数据库sqlite;应用程序中主要介绍了数据处理中最重要的谐波算法(FFT算法)的实现、远程监测Boa服务器的配置以及QT的显示界面的制作。关键词:电能质量,FFT,¥3C2410,Boa服务器,QTAbstract硕.1:论文AbstractWiththerapiddevelopmentofsocietyandeconomy,powerqualityproblemsaregettingwore,somakingefficientpowerqualitymonitoringisbecomingincreasinglyimportant.noTraditionalpowermonitoringequipmentsusuallyhavesimplenetworkfunctions,andon-linealsohaveinterface,thereforetheyacallnotmeetthereal.timemonitoringrequirements.ThispaperpresentsARM-basedlong—distancepoweraqualitymonitoringmethodswhichcompletetheacquisitionofreal-timesignalandbuilt-inembeddedlinuxthathastheTCP/IPprotocolstack.ItalsoprovidesaWEBserverusingon—sitehuman—computerinterface.NetworkUSerSFirstofall,thiscanvisitthesystemwithanyWEBbrowser.papernarratesthepowerqualitymonitor’Sdomesticandintemationaldevdopmentsituationandsomepowerqualitystandards,thenitgivestheappropriatemeasurementdesignmethods,atlastitbuildsamonitoringsystemfromhardwareandsoftwareaspects.Inhardwaredesignitmainlydiscussesthevarioushardwaremodule.Insoftwareitfirstnarratestheconstructionofembeddedlinuxsystem,andthenthecodingandamendmentofA/Dlinuxoperatingandsysteminterfacedriversprogramming.Itdatabasesqlitemainlyfocusesontheconverter’Sdriverembeddedtransplanting.Inapplicationprocedures,itintroducestherealizationofthemostimportantharmonicalgorithm(FFTalgorithm)intheprocessingofthedata,theconfigurationforlong-rangemonitoringBoaserverandtheproductionofQTinterfacedisplaying.Keywords:powerquality,FFT,¥3C24t0,BoaSerVer,QTll声明本学位论文是我在导师的指导下取得的研究成果,尽我所知,在本学位论文中,除了加以标注和致谢的部分外,不包含其他人已经发表或公布过的研究成果,也不包含我为获得任何教育机构的学位或学历而使用过的材料。与我一同工作的同事对本学位论文做出的贡献均己在论文中作了明确的说明。研究生签名:差11111l多:lb7柝7月f日学位论文使用授权声明南京理工大学有权保存本学位论文的电子和纸质文档,可以借阅或上网公布本学位论文的部分或全部内容,可以向有关部门或机构送交并授权其保存、借阅或上网公布本学位论文的部分或全部内容。对于保密论文,按保密的有关规定和程序处理。研究生签名:』酗—雌c)一降7月/日硕.Ij论文皋于ARM的远程l乜能质量:盗测系统的研究1绪论在现代社会中,电能是一种最为广泛使用的能源,其应用程度是一个国家发展水平的主要标志之一。随着科学技术和国民经济的发展,人类对电能的需求日益增加,同时对电能质量的要求也越来越高Ⅲ。1.1课题背景及意义近年来,电能质量问题越来越引起人们的重视。电能质量问题主要表现在以下几方面:(1)随着电力电子器件和非线性设备的广泛应用,供电系统中增加了大量的非线性负载,特别是静止变流器,从低压小容量家用电器到高压大容量用的工业交直流变换装置,由于静止变流器是以开关方式工作的,会引起电网电流、电压波形发生畸变,引起电网的谐波“污染”。(2)冲击性、波动性负荷,如电弧炉、大型轧钢机、电力机车等运行中不仅会产生大量的高次谐波,而且使得电压波动、闪变、三相不平衡日趋严重,这些对电网的不利影响不仅会导致供用电设备本身的安全性降低,而且会严重削弱和干扰电网的经济运行,造成对电网的“公害”。(3)由于大量基于计算机系统的控制设备和电子装置等一类敏感负荷的出现,使暂时过电压和瞬态过电压、电压凹陷与短时间断等一些以前未被人们所重视电能质量问题日趋严重,.造成的经济损失也在不断增加。所以对电能质量的管理和电力污染的治理工作势在必行,而国内电力用户对电能质量的重视程度也在不断提高。(4)随着市场经济的建立和发展,电力生产对计划调度、经济调度的要求越来越高,利用经济杠杆的力量促使用户主动高峰负荷,控制最大需求量,既.有利于电力系统的运行,促进电力行业的发展,又有利于用户合理地使用电能,减少经济开支。为了保障电能质量,改善和提高供电水平,使用电能质量检测装置来检测电能质量的各个参数,以便采取各种技术措施,抑制电能质量的恶化或进行负荷的调整、电网的改造。所以开发功能齐全、操作简便的电力参数综合监测装置对电网的各种运行参数(如三相电压、电流等)测量,得到电网中电压、电流和各次谐波成分,以实现对电网的实时监测,具有非常重要的现实意义。1.2国内外电能质量监测设备的发展现状在国外许多工业发达国家,电能质量问题早己被当作电力系统面临的重要问题来看,在加强有关电能质量问题的研究,已得出不少理论成果,并提出一系列综合检测控制和管理方法【2,3】。1996年,欧共体率先将电气产品的电磁兼容性要求纳入国家技术法规的范畴,其中就包括电能质量标准【41。目前,常见的电能质量监测设备从简单到复杂,’大致可以分为三大类‘5,6】:l绪论硕j二论文第一类是比较早的传统监测仪器,包括万用表、数字相机(记录扰动波形)、示波器(记录波形和时变数据)、扰动分析仪、谐波分析仪和频谱分析仪。缺点是实时性较差,当电能质量波动较大时,无法得到全面的质量信息。设备功能也很单一,一般只能检测几项电能质量指标。而且,它们大多安装在孤立的节点上,受器件和分析方法的,对系统中的短时暂态扰动难以快速、准确地捕捉,精度也往往达不到要求。第二类是数字型监测仪器,这是目前用的最多的一类。它采用采用单片机或数字信号处理器,用数值计算的方法对信号进行采集、解析与识别等加工处理,以达到提取信息和便于应用的目的:首先可以改善监测速度和准确性,趋向于高性能的实时处理,例如数字式闪变测量仪;再次可以向多功能方向发展,例如扰动与谐波综合分析仪等。这类仪器对单个站点的测量有比较好的效果。不足之处在于:由于装置本身,无法同时监测多项指标;需要大量人力、物力进行测量、分析;数据量有限,不利长期跟踪和深入评估。第三类就是目前要大力发展的智能型综合监测仪器,特点在于除了对采集到的数据进行信号识别之外,还可以进行进一步的分析处理,从而提供更有意义的结论和建议。电能质量监测设备的研制,我国也有20多年的历史了。国内的厂家有如上海宝钢安大电能质量公司、保定三伊方长电力电子有限公司、安徽省振兴科技股份有限公司、深圳领步科技有限公司等,这些公司产品基本上是数字式的监测设备,功能比较单一。如目前国内广泛使用统计型电压表监测电压的质量水平,这些电压监测仪只能监测电压的合格率,需要人工到现场,费时费力,缺乏统计分析功能。而对于谐波和电压波动、闪变的测试则用便携式测量仪器,这种电能质量监测手段和管理模式存在着实时性差、测量指标少、工作量大、测量误差大、效率低等缺陷。总之,我国的电能质量监测产品还存在不少问题【7】:检测指标不全面;不少产品没有经过权威部门的全面认证,质量不高:检测不方便,效率低;实时监测系统尚处于试点阶段,离成熟推广还有相当距离:产品缺乏相应的国家标准或工业标准。目前,国内的电能质量监测设备在高端产品的市场份额基本上被国外公司占有,如日本HIOKI(日置)公司、美国Fluke(福禄克)公司、瑞典联合电力UNIPOWER公司、瑞士LEM(莱姆)等国际PQ(PowerQuality)领域的知名公司。虽然他们的技术水平先进,质量可靠,但价格很高。现代电网规模越来越大,监测点越来越多,未来电能质量的监测要实现不同供电点甚至多个供电系统的集中监测。在功能上,更强调智能化,除具有计算、显示功能外,还要有一定的判断、决策功能,例如能进行事件预测、故障辨识、干扰源识别和实时控制等,初步具有自动的、实用先进的智能评估功能。电能质量在实现了在线监测、实时分析的基础上,正向着网络化、信息化、标准化和智能化的方向发展完善【6】。目前,已经出现了“网络就是仪器”的概念,利用网络实现电能质量的远程监测和网络化管理,2顾:L论文基于ARM的远程IU能质量监测系统的研究象瑞士联合电力公司最新开发PQSecure的在线式电能质量监测分析系统和瑞士莱姆公司开发PQFIX电能质量监测装置都可以非常灵活地利用现有通讯接口(RS232、RS485、MODEM)等实现电能质量网络化监测【81。1.3本文的主要研究工作根据电力行业的发展需要,在对电能质量检测,的意义、发展现状、发展趋势有了一定认识后,本文提出了基于嵌入式系统的远程电能质量监测装置的设计思路和设计方法。整个系统以实际需要为出发点,硬件设计上采用流行通用的基于ARM920T核的¥3C2410处理器,软件基于嵌入式Linux下丌发、FFT等信号处理方法进行电能质量指标分析计算,实现对电能各项指标的实时监测,并且具有远程通讯功能,并研究QT作为嵌入式显示界面丌发的设计方法。本文各部分安排如下:第1章绪论。主要介绍了当前电力系统的电能质量问题和国内外电能质量监测装置发展状况。第2章电能质量的概念及其数学分析方法。介绍电能质量的基本概念,对电能质量参数提供了计算方法,重点介绍了FFT算法。第3章系统的总体设计。介绍了系统的功能模块组成,处理器的选择和嵌入式操作系统的选择。第4章远程电能质量监测系统的硬件设计。该装置主要由信号调理电路、A/D转换电路、存储器电路、通讯电路和LCD显示等部分构成,本章详细介绍了各个部分的硬件设计。第5章远程电能质量监测系统的系统层软件设计。介绍了linux开发环境的建立、ADC设备驱动的编写和嵌入式数据库的移植。第6章远程电能质量监测系统的应用层软件设计。介绍了数据采集中的软件同步、数据处理模块、远程通讯模块和QT人机界面的设计。最后为结论。32IU能质量指标及测量顾.Ij论文2电能质量指标及测量2.1电能质量指标电能质量描述的是通过公用电网供给用户端的交流电能的品质。理想状态的公共电网应以恒定的频率、正弦波形和标准电压对用户供电【l】。国内外对电能质量确切的定义还没有形成统一的共识。IEC(1000.2.2/4)标准将电能质量定义为:供电装置正常工作情况下不中断和干扰用户使用电力的物理特性。IEEE协调委员会对电能质量的技术定义为:合格的电能质量是指给敏感设备提供的电力和设备的接地系统均是适合该设备正常工作的。由此看到,电能质量问题终究是由电力用户的生产需求驱动的,所以用户的衡量标准应占有优先的位置。目前为止,我国已经制定了电能质量的国家标准,主要集中在以下几个方面:(1)电力系统频率允许偏差;(2)供电电压允许偏差;(3)公用电网谐波;(4)三相电压允许不平衡度;(5)电压波动和闪变;(6)暂时过电压和瞬态过电压。下面就这六项指标的定义、意义及其数学分析方法进行了阐述和探讨。2.1.1电力系统频率允许偏差【9,10]电力系统允许频率和电压允许偏差是电能质量传统两大基本指标。允许频率偏差的大小不仅体现了电力系统运行管理水平的高低,同时反映了一个国家工业发达的程度。电力系统正常运行情况下,应在标称频率下运行,但是电力系统负荷在不断地变动其大小,电源出力及其调节系统追随负荷变化又有一定的惯性,致使系统频率一直在变动的状态当中,这种电力系统在正常的运行条件下,系统频率的实际值与标称值之差称为系统的频率偏差。用公式表示为:af=厂一fo(2.1)其中,鲈为频率偏差,厂为系统频率的实际值,厶为系统的标称值,在我国电力系统中,标称频率为50Hz。《电能质量电力系统频率允许偏差》(GB/T15945.1990)中规定电力系统正常的频率偏差标准为50Hz±0.2Hz,当系统容量较小时,偏差值可放宽到50Hz±0.5Hz。标准中并没有说明系统容量大小的界限。全国供用电规则中有规定供电局供电频率的允许偏差:电网容量在3000MW及以上者为±0.2Hz;电网容量在3000MW以下者为±0.5Hz.。实际运行中,我国各跨省电力系统频率偏差都保持在±0.1Hz范围内,这样使电网运行更有保障。4硕J:论文基于ARM的远程电能质量临测系统的研究2.1.2供电电压允许偏差【ll】电压是电能质量的重要指标之一,其中电压偏差是衡量供电系统正常运行与否的一项主要指标。供电电压允许偏差是指电力系统各处的电压允许偏离其额定值的百分比。其数学表达式为:电压偏差c%,=兰盟等蓁蹇巢荔秽×,oo%c2.2,《电能质量供电电压允许偏差》(GB12325.1990)规定:35kV及以上供电电压正、负偏差的绝对值之和不超过额定电压的10%;10KV及以下三相供电电压允许偏差为额定电压的±7%;(委)220V单相供电电压允许偏差为额定电压的+7%~.10%。用电设备的额定寿命和运行指标是对其额定电压而言的。当出现电压偏差时,其运行参数和寿命将受到影响。电压基本上取决于电能供求平衡关系。另外,不合理的电力系统运行方式和电网结构也会造成电压的偏差。2.1.3公用电网谐波【l2】比较公认的谐波定义是:谐波是存在于电力系统中的一个周期性电气量的正弦波分量,其频率为基波频率的整数倍。由于谐波的频率是基波频率的整数倍,也称它为高次谐波。电网谐波主要的来源是各种非线性负荷用户,如各种整流设备、调节设备、轧钢机以及电气拖动设备。各种低压电气设备和家用电器,即使供给给它理想的正弦波电压,它的电流也是非正常的,即有谐波电流存在。变压器的激磁回路也会产生谐波电流。家用电器数量比较大,如果谐波含量过大,也会对电力系统造成严重的影响,所以在制造时应在一定数量范围内。谐波对电力系统的危害极大,将导致电器设备寿命缩短,网损加大,还会干扰保护继电器、测量设备、控制和通信电路以及用户电子设备等,使灵敏设备发生误动作或元件故障。提高电能质量,防止谐波的危害,电力系统的谐波,就是要把上列指标到国家标准规定的允许范围之内。根据国家标准《电能质量公共电网谐波》,对公共电网谐波的限值如表‘2.1所示。表2.1国标中各级电网谐波电压限值电压/KVO.386,10’总谐波畸变THD(%)5432奇次(%)4.O3.22.41.6偶次(%)2.01.61.20.835,66llO/2202IU能质量指标及测量硕:l:论文2.1.4三相电压允许不平衡度【13】三相不平衡度是由于三相负载不平衡以及系统元件参数的不对称所致。当三相电源电压畸变不对称时,对于三相四线制电路,电压中除了含有谐波分量外,还含有正序、负序、零序分量。对于三相三线制电路,没有零序分量。所以,三相电量的不平衡度通常以负序分量均方根值与正序分量均方根值的百分比值来表示。用符号占表示,即&,=U2/UI×100%占,=12/Ilx100%(2.3)(2.4)其中旬、8/表示三相电压不平衡度和三相电流不平衡度;U、%表示电压正序、负序分量均方根值;,.、,,表示电流正序、负序分量均方根值;三相电压不平衡带来的一系列危害,主要有:(1)在低压配电线路中,三相不平衡会影响计算机正常工作,还会引起照明电灯寿命缩短、电压过高或照明不足等。(z)--相不平衡时,将引起电网耗损的增加。(3)干扰通讯系统,影响正常的通信质量。《电能质量三相电压允许不平衡度》(GB/T15543.1995)规定了电力系统公共连接时电压不平衡允许值为2%,短时不平衡度不得超过4%,其短时允许值是指任何时刻都不能超过值,以保证继电保护和自动装霹正确动作。对接入公共连接点的每个用户,规定其引起该点正常电压不平衡允许值一般为1.3%。2.1.5电压波动与闪变【1和16】电压波动是指电压幅值在一定范围内有规则变动时,电压变动或工频电压包络线的周期性变化,或电压幅值不超过O.9~1.1(9.u.)的一系列随机变化。电压波动值为电压均方根值的相邻两个极值之差与标称电压的百分数表示其相对百分值,即d拳竺磐!=竺疃2UⅣx100%(2.5)为了抑制电压波动,可以采取以下措施:(1)合理地选择变压器的分接头以保证用电设备的电压水平;(2)设置电容器进行人工补偿;(3)线路出口加装限流电抗器:(4)采用电抗值最小的高低压配电线路方案;(5)配电变压器并列运行;(6)大型感应电动机带电容器补偿;(7)采用电力稳压器稳压。电压波动引起照明灯的照度波动。闪变用来说明对不同频率电压波动引起灯闪的敏感程度及引起闪变刺激性程度的电压波动值。电压波动会使得多种电工设备工作异常。对于民用设施而言,白炽灯的应用广泛,6硕I:论文基于ARM的远程IU能质量jl:f测系统的研究电压的波动更容易引起白炽灯闪变。供电电压波动的幅值、频率、波形等都会对闪变起到不同作用,而每一个人对于光照变化的感觉存在差异,所以闪变的度量也相对麻烦。闪变的主要决定因素有:(1)供电电压波动的幅值、频度和波形;(2)照明装置,以对白炽灯的照度波动影响最大,而且与白炽灯的瓦数和额定电压等有关;(3)人对闪变的主观视感。,显然,电压波动的幅值越大,闪变越严重。不同频率的电压波动分量,引起的照度变化对人的感觉的影响是不一样的,人眼对6~12Hz的电压波动感觉最灵敏,其中对以8.8Hz的波动分量最为敏感,人眼能感觉到的极限频率范围是0.05"--35Hz。2.1.6暂时过电压和瞬时过电压【17】一实际运行的电力系统当中,系统也会受到过电压的影响,即供电电压超过标准电压可以分成暂时过电压和瞬时过电压。暂时过电压是指在电网给定点上持续时间较长的不衰减或弱衰减的(以工频或其一定的倍数或分数的频率)振荡过电压。瞬时过电压是指持续时间较短、通常带有强阻尼的振荡或非振荡的过电压。暂时过电压和瞬时过电压是由于电力系统运行操作、受雷击、发生故障等原因引起的,是供电特性之一。2.2电能质量的分析方法概述目前电能质量分析方法主要有以下三种[18,19】:(1)时域仿真方法它的主要用途是利用各种时域仿真程序对电能质量中的各种暂态现象进行研究。在电能质量分析中,其应用最为广泛。目前较通用的时域仿真程序主要有EMTP、EMTDC、NETOMAC等系统暂念仿真程序和SPICE、PSPICE、MATLAB、SABER等电力电子仿真程序两大类。由于这些系统暂态仿真程序在不断发展,功能R益强大,还可利用它们进行电力设备、元件的建模和电力系统的谐波分析。(2)频域分析方法频域分析方法主要用于谐波问题的分析计算,包括频率扫描、谐波潮流计算和混合谐波潮流计算等。频率扫描和谐波潮流计算在反映非线性负载动念特性方面有一定局限性,因此混合谐波潮流计算法在近些年中发展起来:它是在常规的谐波潮流计算法基础上,利用EMTP等时域仿真程序对非线性负载进行仿真计算,可求出各次谐波动态电流矢量,从而得到动态谐波潮流解的计算结果。(3)基于变换的分析方法在电能质量分析领域中广泛应用的基于变换的方法主要有Fourier变换方法、短时Fourier变换方法(STFT)以及小波变换方法。Fourier变换是电能质量分析领域中的基本方法,优点是算法快速简单。但其缺点也很多:(1)虽然能够将信号的时域特征和频72IU能质量指标及测量硕.I:论文域特征联系起来观察,但不能将二者有机地结合起来;(2)只能适应于确定性的平稳信号(如谐波),对时变非平稳信号难以充分描述;(3)FFT变换的时间信息利用不充分,任何信号冲突都会导致整个频带的频谱散布;当条件比满足时,会产生“旁瓣”和“频谱泄露”现象。为解决以上问题,Gabor利用加窗,提出了短时Fourier变换方法,即将不平稳过程看成是一系列短时平稳过程的集合,将Foufier变换用于不平稳信号的分析。由于实际多尺度过程的分析要求时一频窗口具有自适应性,即高频时频窗大、时窗小;低频时频窗小、时窗大,而STFT的时一频窗口则固定不变。因此,它只适合于分析特征尺度大致相同的过程,不适合分析多尺度过程和突变过程。这种方法的离散形式没有正交展开,难以实现高效算法。小波变换由于具有时一频局部化的特点,克服了FFT和STFT的缺点,特别适合于突变信号和不平稳信号的分析。小波变换作为一种新的数字技术已在图像处理、数据压缩和信号分析等领域得到广泛应用。由于小波函数本身衰减很快,也属一种暂态波形,将其用于电能质量分析领域,尤其是暂态过程分析领域将比FFT、STFT算法更具优点。2.3电能质量参数的测量2.3.1交流电压、电流、功率及功率因数的计算周期为丁的电压“(f)、电流f(f)的有效值定义为瞬时值的平方在一个周期内的均方根值,即:U2(2.6)1=(2.7)在满足采样定理的前提下,对信号u(t)、砸)进行离散化采样,得离散化序列{U。)、{气),则U的离散化表达式为:u≈1『、]7'1驴N-12瓦(2.8)Ⅳ表示一个周期内采样点数。U。表示第K个时间间隔采样瞬时值:△疋表示相临两次的采样间隔:若相邻两次采样的时间间隔相等(即△疋为时间常数△丁,N=T/ATk),在满足同硕:L论文基于ARM的远程IU能质量临测系统的研究步采样的条件下,得到电压有效值:U=(2.9)同理:‘,=1/万.I白N-Iz。2(2.10)当N足够大时,功率可表示为:P=专∑(“^Af)则:(2.11)N-1三相有功功率:尸5万‘白tv-i“^.+白tv-1“口屯+荟1,-tN-IDN-I甜fu(2.12)视在功率:S=U爿1爿+u口L+【,c,c功率因素:cos(p=一l-(2.13)(2.14)S2.3.2基于F.I呵的谐波测量2.3.2.1FFT算法原理【20】对于一个长度为Ⅳ的有限长序列x(n),只在n=0到(Ⅳ一1)个点上为非零值,其余都为零,我们可以把它看成周期为N的周期序列x(n)中的一个周期,从而有限长序列的傅里叶变换定义为:J(尼)=肿[x(,z)]:∑x(n)WN础n=O.Ⅳ一1k=0,1,...,N一1(2.15)其中,职,=P吖”。直接计算DFT的计算量与变化区间长度Ⅳ的平方成正比,当Ⅳ较大的时候,计算量会变得很大。若X(n)为复数的话,则计算DFT每一个值就需要Ⅳ次复数乘法和(Ⅳ一1)次复数加法,因此计算全部的Ⅳ个值总共需要Ⅳ2次复数乘法和N(N一1)次复数加法。而每一个复数乘法需要4次实数乘法和2次实数加法。所以,对于每一个k值,直接计算x(后)就需要4N2次实数乘法和2N(2N一1)次实数加法。由于计算机上乘法运算所需的机器时间远比加法要长,所以一般均以乘法运算量作为量度。显然当Ⅳ值很大时直接计算DFT所需要的算术运算的次数就非常大。这样庞大的运算量使得DFT的实际应用特别是实时处理难以实现。1965年库利(J.W。Cooley)和图基(J.W.Tukey)首次提出了计算DFT的一种快速算法FFT。FFT算法的基本思想:可以将一个长度为N的序列的离散傅旱叶变换逐次分解为较短的离散傅罩叶92IU能质量指标及测量硕.1:论文变换来计算,这些短序列的DFT可重新组合成原序列的DFT,而总的运算次数却比直接的DFT算少得多,从而达到提高速度的目的。FFT禾IJ用三角函数的周期性和对称性,使复数运算量从Ⅳ2次减到譬log:N次。图2.1显示了直接计算DFT和用快速算法在运算方面的比较。直接i//1024//√,一,O//64128256,12N(抽样点数)图2.1直接计算和FFT算法运算的比较可以清楚地看出在运算量的节省上是非常显著的。当N=1024时,运算量节省近200倍。它的基本算法可分为两类:即按时间序列x(n)(以为时间标量)进行逐次分解得到的FFT算法称为按时间抽取算法(decimation—in—time,DIT)和按傅里叶变换序列X(k)(七为频率标号)进行分解,叫按频率抽取算法(decimation·in·frequency,DIF)。这里主要介绍DIT中的基.2FFT算法。2.3.2.2基.2FFT算法Cooley-Tukey的基·2快速傅罩叶算法就是将N点长度的DFT分解成多个%(栉为基数)的DFT进行计算。再将%点的DFT分解为%2点DFT,直到不能岔解为止。从而就使得工作量由原来的Ⅳ2级到现在的Nlog。N级。算法的关键是利用砜础的下面两个特性:%破的周期性:%破皇%啡+Ⅳ’%以的对称性:%i+譬:一赡假设序列x(n)的长度N=27,其中7是任意正整数。首先将输入序列x(n)按标号拧分解为奇数项和偶数项两个子序列:lO硕l:论文皋于ARM的远程l乜能质量临测系统的研究g(n)=x(2n)而@)=x(2n+1)g(n)和h(n)的DFT分别为:n=o如..2,iN一1(2.16)(2.17)删^2,...,譬一·G(七)=∑g(玎)咙n=O(2.18)日(尼)=∑^(刀)暇nkn=O(2.19)这时,x(n)的Ⅳ点DFTffJ写成:X@II芝脚●XQ聆孵时+芝脚●XQ栉+D略肿埔(2.20)因为%:P一7石音所以孵:(e啊t研:e一弦壁:%所以(2.20)式可写为(2.21)x(尼)=Zx(2胛)咙+∑x(2疗+1咙孵n=0pI,/2—.iN/2—-In=0=艺g(彬磁+Zh(缈xvrr以nkr‰rrkn=O(2·22),,=O将(2.19)代入(2.22)得:x(尼)=G(后)+日(后)嚼(2·23).可见,Ⅳ点序列x(,z)I拘DFT,可先通过计算两个冬点序列g(玎)和Jil@)I约DFT,然后按式(2.23)计算得来。由(2.19)式可知,G(尼)和日(尼)是以冬为周期的函数,只需计算尼:o,1,2,...,了N一1这些点的值。而X(后)则是以N为周期的函数,需要计算k=0,1,2,...,N-1各点上的值。为了用G(尼)和H(后)在后:o,1,2,...,iN一1时的计算.值得到x(尼)在尼=o,1,2,...,Ⅳ一1的值,将(2.23)改为:2l乜能质量指标及测量硕.J二论文x(尼)=G(尼)+日(尼)蝶x(k+了N)亍G(尼)一日(尼)暇k=0,1…2..,要一1七:0,1,2,...,iN~,(2.24)(2.25)这样,就将N点DFT分解为两个N/2点的DFT的和,即式(2.24)与式(2.25)。式(2.24)和式(2.25)的运算可以用图2.2所示的符号表示,根据其形状称之为蝶形运算符,蝶形运算是FFT的基本运算单元,孵称为旋转因子。口图2.2蝶形运算其运算公式可概括为:a’=a+6蝶b’譬a‘6孵我们用流程图说明8点DFT的处理方法,首先将输入序列x(n)划分成偶数部分和奇数部分,偶数部分为石(O),x(2),x(4),x(6);奇数部分x(1),缸3),x(5),x(7)。利用式(2.18)和(2.19)计算4点DFT的G(七)和H(k),再利用式(2.24)、(2.25)将G(k)和H(k)合成X(豇)。’这样,一个8点的DFT就可以分解为2个四点的DFlr,如图2.3所示。g(O)t=)【(0g(1)=x(2g(2产x(4gf3'啄(6h(O产x(htI声=’【(h(2产--x(h(3户-x(q∞Ⅷ)㈣)凇)凇)剐)珊)㈣)姗I4点DFTq”q动q筇小∞峨”小动瞰”4点DFT图2-38点DFT分解成两个4点DFT按照这个方法,可以将每个4点DFT分解成两个2点的DFF,就可以得到如图2.4所示的8点FFT蝶形运算流程图。12硕:lj论文綦于ARM的远程I【}能质量:临测系统的研究越∞Ⅺ∞瓤郇ⅪD《动Ⅺ劲板研Ⅺ"啊”Ⅺ旬杖卵Ⅺ鄄枝∞ⅪD项"Ⅺ乃图2.48点FFT信号流程图由此可见,一个N点DFT分解为两个N/2点的DFT,从而实现了运算量的减少,再经过逐次分解最终分解为2点的DFT,实现了FFT运算。本章小节本章节首先对电能质量的六大指标进行比较详细的阐述和研究;然后对电能质量的三种分析方法进行了简单的介绍;最后是一些基本量的测量公式,重点介绍了基于FFT的谐波算法,对时间抽取的基.2FFT算法过程作了详细的推导。3系统的整体设计硕.1:论义3系统的整体设计由于对电能质量问题的日益重视,所以开发功能齐全、操作简便的电力参数综合监测装置对电网的各种运行参数(如三相电压、电流等)测量,得到电网中电压、电流和各次谐波成分,以实现对电网的实时监测,具有非常重要的现实意义。较常见的电能质量监测装雹有以下几种【2lJ:工控机+采集卡的形式:这是电能质量监测装置最早采用的方式。这种监测装置采集功能强、入机交互性好,但是设备成本偏高、体积大、灵活性不够,不适宜大量定点安放在各监测现场。而且受当时认识水平和技术条件的,没有实现智能化和网络化,很难保证系统的实时性。基于单片机的设计形式:单片机上集成有丰富的外设,具有良好的控制能力。但是其数据处理能力不够强大。并且由于没有移植好的协议栈,实现基于以太网的通信比较困难,只能实现基于总线的短距离通信。这种设计方案一般适用于对数据处理要求不高、运算量不大的监测装置中。基于DSP的设计形式:在数字处理方面的能力较强,技术已经很成熟,能处理各种运算的通用或专用芯片也很多。以DSP为核心设计开发的监测装置,可以完成高速率数据处理,保证系统实时性方面的要求。缺点是其并不适合运行较大规模的嵌入式实时操作系统,且以太网等性能扩展需要额外的费用。基于ARM’的设计形式:ARM微处理器最大的优势在于速度快、低功耗、高性能、芯片集成度高、外围接口丰富。目前芯片的价格也只略高于单片机。在上可以移植嵌入式实时操作系统,容易实现多任务调度,而且简化了显示、硬盘存储、网络通信等功能的开发,大大减少了产品的开发周期。3.1监测装置总体结构本系统的总体结构如图3.1所示。软件部分主要分为三部分:linux开发环境建立、驱动层软件实现、嵌入式数据库SQLite的移植和应用程序开发。14硕.I:ik文基于ARM的远程Ib能质量jl在测系统的研究L—_J、厂—1图3.1系统总体结构图3.2硬件部分功能模块的规划,本系统以ARM处理器为核心,芯片外围扩展了电网数据采集单元、显示单元、按键模块、网络通讯单元、电源和存储器,并在ARM处理器上移植Linux操作系统,利用它强大的网络功能和内置的TCP/IP协议栈,实现远程数据的采集和监控。监测的电网参数主要有:三相电压、三相电流、有功功率~无功功率、谐波含量及频率等。系统功能模块如图3.2所示。网习圃习习圈图3.2系统功能模块图主要模块功能说明:按键控制:设置四个功能键为“上”、“下”、“确认”、“返回”。配合LCD上显示的查询参数项,进行选择。存储器:主要用到两种存储器,NANDFlash和SDRAM。本系统中NANDFlash主要用于存放启动代码、内核代码以及根文件系统。根文件系统中采用最新的YAFFS文件系统,与传统的嵌入式文件系统不同,是一种可读写的文件系统。因此可以将电网的参数记录到根文件系统中,这样用户就可以随时调用历史数据了。LCD显示:本设计用的3.5英寸的TFT屏。硬件上只要把处理器上的一些控制线与153系统的整体设计硕:l:论文TFT屏上相应的线接口即可。在软件上采用基于Qtopia完成用户图形界面,以便用户在现场观看电网参数的各种图形分析,比如电压、电流的波动情况,’各时期的电能参数。网络控制器:在服务器端采用嵌入式Linux操作系统,系统中运行着一个inetd的服务进程(是一个后台进程),用来监控连接端口。当有用户连接请求时,该服务进程会调用用户服务程序。用户服务程序完成的任务是响应用户的请求,其中包括连接请求和命,令请求。当用户要得到现场数据时,它先会向服务器发送连接请求,得到连接响应后再发送命令请求。服务器端收到命令请求后,会将电网参数发送给用户,这样用户就会得到所要求的数据。电源及复位:为处理器提供电源与复位信号。其中ARM处理器的选择至关重要,将决定系统性能的好坏。各个模块的具体电路将在下一章详细阐述。3.33.3.1ARM处理器选型ARM的简介ARM是AdvanacedRISCMachine的缩写,微处理器行业的一家知名企业122j。ARM公司1990年11月在英国剑桥成立。该公司设计了大量廉价、高性能、低功耗的RISC处理器、相关技术及软件【231。ARM公司的处理器具有性能高、成本低和能耗小的特点,适用于多种领域,如嵌入控制、消费/教育类多媒体、DSP和移动式应用等。ARM公司作为知识产权供应商,不直接从事芯片生产,而是靠转让设计许可由合作公司生产各具特色的芯片。世界各大半导体生产商从ARM公司购买其设计的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形成自己的ARM微处理器芯片进入市场。这种有效的途径既使得ARM技术获得更多的第三方工具、制造、软件的支持,又使整个系统成本降低,使产品更容易进入市场被消费者所接受,更具有竞争力。ARM处理器是典型的精简指令集计算机(RISC)。它的主要结构特性有:◆一个大而统一的寄存器文件:◆装载/保存结构,数据处理的操作只针对寄存器的内容,而不直接对存储器进行操作;◆简单的寻址模式,所有装载/保存的地址都只由寄存器内容和指令域决定;◆统一和固定长度的指令域,简化了指令的译码;.◆地址自动增加和减少的寻址模式实现了程序循环的优化;◆多寄存器装载和存储指令实现最大数据吞吐量:◆所有指令的条件执行实现最快速的代码执行g16硕I:论文基于ARM的远程lU能质量|j{f测系统的研究由此可见,基于RISC的ARM处理器在高性能、低代码规模、低功耗和小的硅片尺寸方面取得了良好的平衡。ARM处理器有很多系列,例如ARM7、ARM9、ARM9E、ARMl0E等。本设计采用的处理器是三星公司生产的¥3C2410,是ARM9的一种。3.3.2S3C2410的主要特性Samsung公司推出的16/32位RISC处理器¥3C2410[241,为手持设备和一般类型应用提供了低价格、低功耗、高性能小型微控制器的解决方案。¥3C2410采用了ARM920T内核,CMOS标准宏单元和存储器单元。它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。同样它还采用了一种叫做AdvancedMicrocontrollerBusArchitecture(AMBA)的新型总线结构。ARM920T实现了MMU、AMBABUS和Harvard高速缓冲体系结构。这一结构具有的16KB指令Cache和16KB数据Cache,每个都是由8个字长的行构成。ARM920T采用五级流水线,包括取指、译码、执行、缓冲、回写。通过提供一系列完整的系统外围设备,大大减少了整个系统的成本。主要集成以下片上功能:◆1.8W2.OV内核供电,3.3V存储器供电,3.3V外部I/O供电;◆具备16KB的指令Cache和16KB的数据Cache/MMU;◆外部存储控制器(SDRAM控制和片选信号);◆LCD控制器(最大支持4K色STN和256色TFT)提供1通道LCD专用DMA;◆4通道DMA并有外部请求引脚:◆3通道UAR.T/2通道SPI:◆1通道多主IIC.BUS/1通道IIC.BUS控制器;◆兼容SD主接口协议1.0版和MMC卡协议2.11兼容版;◆2端口USB主机/1端口USB设备(1.1版);◆4通道PWM定时器和l通道内部定时器;、◆看门狗定时器;◆117个通用I/O口和24通道外部中断源;◆功耗控制模块:具有普通、慢速、空闲和掉电模式;◆具有日历功能的RTC◆具有PLL片上时钟发生器3.3.3S3C2410存储器特性◆支持大/d,端方式;◆寻址空间:每个bankl28M字节(总共1G字节);173系统的整体设计硕一I:论文◆支持可编程的每个bank8/16/32位数据总线带宽;◆从bank0到bank6都采用固定的bank起始寻址;◆Bank7具有可编程的balll(的起始地址和大小;◆8个存储器bank:其中6个适用于ROM、SRAM和其他另外2个适用于ROM/SRAM和同步DRAM◆所有的存储器bank都具有可编程的操作周期;◆支持掉电时的SDRAM自刷新模式:◆支持各种型号的ROM引导(NOI渊ANDFlashEEPROM或其他);¥3C2410结构框图如图3.3所示。曙啁∞臣囝∞I.。箜竺l呈坠.1、r—V广—B蕊石蒴■]IuscoMt.1l_翌兰鲤竺唑-J臣丑E蜀图3.3S3C2410结构图一一一一一一18硕上论文皋于ARM的远程IU能质量临测系统的研究3.4嵌入式操作系统的选择嵌入式操作系统按实时性可以分为两类:一类是用于控制、通信等领域的强实时操作系统,主要有WindRiver公司的VxWorks、ISI的Psos、QNX系统软件公司的QNX、ATI的Nucleus等,其中在国内市场中VxWorks和Psos有较大影响;另一类是面向消费电子产品的弱实时操作系统,’包括个人数字助理(PDA)、移动电话、机顶盒、电子书等,比较著各的有WindowsCE,PaimOS。Linux为嵌入操作系统提供了一个极有吸引力的选择,它是个和Unix相似、以核心为基础的、完全内存保护、多任务多进程的操作系统。支持广泛的计算机硬件,包括X86、MIPS、PPC、ARM、.NEC、MOTOROLA等现有的大部分芯片。程式源码全部公开,开发人员可以对操作系统进行定制。Linux用户遇到问题时可以通过Internet向网上成千上万的Linux开发者请教,这使最困难的问题也有办法解决。Linux带有Unix用户熟悉的完善的丌发工具,几乎所有的Unix系统的应用软件都已移植到了Linux上。Linux还提供了强大的网络功能,有多种可选择窗口管理器(xwindows)。其强大的语言编译器gcc、计等也可以很容易得到,不但成熟完善而且使用方便。选择linux主要原因有【2526]:(1)可应用于多种硬件平台。Linux已经被移植到多种硬件平台,这对受丌销、时间的研究与开发项目是很有吸引力的。原型可以在标准平台上开发,然后移植到具体的硬件上,加快了软件与硬件的开发过程。(2)Linux可以随意地配置不需要任何的许可证或商家的合作关系。(3)它是免费的,源代码可以得到。这会节省大量的开发费用。(4)它本身内置网络支持。(5)Linux的高度模块化使添加部件非常容易。本章小节本章节主要是介绍系统的总体设计。首先介绍了系统的总体结构和系统的功能模块组成,然后是系统处理器的选择和嵌入式操作系统的选择。194系统的硬件设计顾.L论文4系统的硬件设计实现一个实时的ARM硬件系统一般包含电路设计,印刷电路板设计和硬件电路调试三个阶段,本章主要阐述了各个功能模块实现的具体电路设计方案,给出相应的电路图。4.1信号调理电路设计在采集信号时,根据奈奎斯特采样定理指出:时间连续信号转换成离散信号时,需要在一个周期内的采样次数多于2次。为保证信号质量,选用的采样频率经常大于采样定理所指出的最小采样频率,而选用信号最高频率的3.--.4倍甚至更高。因由电压和电流互感器传来的信号含有高次谐波,所以必须进行滤波,这里用的是二阶RC有源低通滤波器【27捌作为抗混叠滤波器。电压电流信号经低通滤波器后,为了满足A/D转换器对信号电平的要求,必须经过电平转换。电平转换电路与A/D转换器的连接如图4.1所示。A/D转换器的输入电压Vin和经过低通滤波器后的电压Vi的关系为:吃:黑芸塑·‰+堕兰鲨·形他3+R4)R2Ⅶ脞,(R3+R4)R2(4.1)图4.I电平转换电路4.2A/D转换电路ADS7864的工作原理和特性[29~32]:ADS7864是一种高速、低功耗、6个数据寄存器和1个高速并行接口、6通道同时采样保证无失码的双12位逐次逼近型A/D转换器。工作温度范围一40--..+85。C。两个A/D转换器对应三对输入端,可以同时采样、转换。硕一I-论文基于ARM的远程lu能质量盟测系统的研究A/D转换器的基准电压可由内部电路提供,转换精度为±1LSB。当外部时钟为8MHz时,A/D转换时间为1.75ps,相应的采集时间为0.25,us,因此,对双通道信号采样的最高速率为500KHz(此时,A/D转换和A/D结果的读出必须并行进行,即本次A/D转换时,读出上次转换结果)。ADS7864内部结构如图4.2所示。R露飘院宅罄鞭瓤凳薹章堇瓣图4.2ADS7864内部结构脚r:当该信号为低电平时,所有输出寄存器清零,A/D转换停止,关闭采样开关。复位时间最短为20ns,复位恢复高电平至少20ns之后,才可进行新的A/D转换。C己DCK:用作A/D转换所需的时钟、以及时序电路的同步时钟等。时钟最高工作频A/D转换器的主要信号功能及使用:率为8MHz。HOLDn:该信号决定多路选择器MUX的输人和启动A/D转换。当某通道的保持信号为有效(低电平)时,该通道在5ns后进入保持状态;若该时刻只有一个通道的保持信号有效,则该通道进入A/D转换序列;若在一个时钟内检测到多个通道同时进入保持状态,则进入A/D转换队列的通道依次为通道A、通道B、通道C。DBl5一DBO:编码中DBl5为1时表明输出包含有效数据。DBl4~DBl2存储数据的通道信息,DBll~DBO为12位二进制补码形式~D转换结果。BYTE:用于决定输出数据的宽度。当为低电平时,一次输出16位信号DBl5~DBO;当为高电平时,首先输出DB7~DBO,再输出DBl5~DB8。2l4系统的硬件设计顾二l:论文面和西:西作片选信号。当西有效(低电平),同时面变低时,读出相应的输出。丽i两:当内部A/DTf-始转换时,该信号变低,约13个时钟后A/D转换结束,转换结果被锁存至输出寄存器,BUSY信号恢复高电平,此时可读出刚才的A/D转换结果整个过程需16个时钟周期。A2A1AO:地址和模式控制,用于选择数据读出方式。其控制模式如表4.1所示。表4.1ADS7864通道选择模式通道选择模式A2A1AOAOOOOA1O01BO0l0Bl01lCO1O0Cll01循环模式l10FIFO模式l1l本系统采用的是循环模式(彳2彳l彳O譬110)第1个RD有效信号读出AO通道的转换结果,第2个RD有效信号读出A1(假定BYTE20),然后依次读BO,BI,CO,el通道数据。在循环模式下数据读取的时序如图4.3所示。一HOI.DA]厂]厂——一祗]嘲]『]门.厂——_穗——]帆—————]为]厂—]f1㈣舢ByTEl图4.3循环模式下读取数据的时序图ADS7864的转换启动控制使用HOLDn引J]却(HOLDA、HOLDB、HOLDC),将一硕。I:论文基于ARM的远程l也能质量i临测系统的研究个或者所有的HOLDn而信号拉低。则相应通道n的输入数据立即被置为保持模式,通道n的转换随即开始。如果其他通道已处于保持模式但还没有开始转换,通道n的转换则需列队等候直到上一轮转换完成为止。如果在一个时钟周期内不止一个通道进入保持模式,并且HOLDA也是被触发的保持信号时,通道A将首先开始转换,接着是通道B,最后是通道C。本系统中,为使三个通道六路信号同时采样,将ADS7864的三个采样保持端HOLDA、HOLDB、HOLDC连在一起进行控制;基准信号REFin和REFout直接相连;BYTE端接低电平,一次读人16位信息。8MHz的CLOCK信号外接8MHz晶体振荡器。接口电路如图4.4所示。圪kAAlDl,~Dl】\HOLDA/●P一卜\∥Dl,~DoGPGl5KbBqHoLDCS3C2410GPGl4GPGl3GPGl2lNT—ADcsPGlGPG6GPG5RESE7局ADS7864.RD圪西BYTEBUSYA,‘。1外接时钟砚KREFini、凡REFout葡蠢历图4.4ADS7864与¥3C2410的接口电路4。3以太网接口电路设计目前,以太网是使用最广泛的局域网技术,通过以太网很方便的接上Intemet。随着以太网在不同领域的广泛应用和发展,也出现了各种以太网控制芯片,本设计采用的是CS8900A[33-35】,CS8900A是CIRRUSLOGIC公司(该公司的网址是http://www.cirrus.eom)生产的低功耗、性能优越的16位以太网控制器,功能强大。芯片内嵌片内RAM,10BASE.T收发滤波器,直接ISA总线接口。该芯片的突出特点是使用灵活,其物理层接口、数据传输模式和工作模式等都能根据需要而动态调整,通过内部寄存器的设置来适应不同的应用环境。(1)主要特性CS8900A内部主要是802.3介质访问控制块(MAC)。它支持全双工操作,负责处理有关以太网数据帧的发送和接收,主要工作包括:帧头的产生和检测、冲突检测、CRC校验码的生成和验证。通过对发送控制寄存器的初始化配置,MAC能自动完成帧的冲突234系统的硬件设计硕:卜论文后重传。如果帧的数据部分少于46个字节,它能生成填充字段使数据帧达至U802.3所要求的最短长度。它的另外一些特性有:◆最大工作电流55mA;◆3V供电电压;◆工业级温度范围(.40℃~+800C);◆自动切换于DMA和片内RAM;◆可跳线控f1]IJEEPROM功能;◆提前产生中断便于数据帧预处理;◆自动阻断错误包;◆支持I/O、memory和DMA--种传输模式;(2)基本工作原理在收到由主机发来的数据报(从目的地址域到数据域,帧格式如表4.2所示)后,侦听网络线路。如果线路忙,它就等到线路空闲为止,否则,立即发送该数据帧。发送过程中,首先,它添加以太网帧头(包括先导字段和帧开始标志),然后,生成CRC校验码,.最后,将此数据帧发送到以太网上。接收时,它将从以太网收到的数据帧在经过解码、去掉帧头和地址检验等步骤后缓存在片内。在CRC校验通过后,它会根据初始化配置情况;通知主机CS8900A收到了数据帧,最后,用三种方式的某种传输模式传到主机的存储区中。表4.2802.3帧格式f7(字节)l2或6日的地址2或6源地址2O~1500O~464.1先导字段帧开始标志数据‘≯段长度数据填充!≯段检验和CS8900A与¥3C2410处理器接口电路图4.5所示。硕+I:论文基于ARM的远程Ib能质量;瞒测系统的研究Jk≯“”——Ir|=譬翟;朴:{嚣毫毫2=i暑l&§&;套&{一m一;磊自iiil《illiillli撇—一上i《ili;il’沁R19。jb射I口2no№tlI=;9霎1=~IO。)-‘蓦。三4蚕蓁纂黑m。。ih,lu。(.n=聋II.纂黧,。。,一.一州。卜2Z蛋‘萎蘸噤|||黼浔o”…IfX'S。16.聿一Pt一.】愫l∥2…多l朋2“。0^:1Ⅸl…一黼菇蘸嚣赫目‰~i’——一一jml…2lJ—^^‘2’K’㈨UDl纠朋2一kl朋2。“㈣;vl:01.13面。141l=I=:l:l=1=I=!廿《]≯“l毁一——x疆。。。脚^.丁茹图4.5CS8900A与¥3C2410的接口电路4.4NANDFlash电路设计S3C2410本身并不具有ROM,因此必须外接ROM器件,用来存储整个系统掉电后仍需要保存的信息,如bootloader、操作系统内核、文件系统以及其它应用程序和数据。目前,NANDFlash和NORFlash是现在市场两种主要的非易失闪存技术。他们的主要区别是:(1)NORNANDflash特点是片内可执行,占据容量为l~16MB闪存市场的大部分,而flash多用在8~128MB的产品中。(2)NORflash的读取速度比NANDflash稍快一些。(3)NANDflash的写入速度要比NORflash快很多。2S4系统的硬件设计顾.I:论文(4)NANDflash体积约是NORflash的一半,价格也相对较低。本系统中采用的是NANDflash,降低了系统成本,芯片具体型号为K9F1208[361,它是Samsumg公司生产的512Mb(64Mx8位)存储器。该存储器的工作电压为2.7"-'3.6V,内部存储结构为528字节x32页x4096块,页大小为528字节,块大小为(16KB+512字节);可实现程序自动擦写、页程序、块擦除、智能的读/写和擦除操作,一次可以读/写或者擦除4页或者块的内容,内部有命令寄存器。它的接口信号列表如表4.3所示:表4.3K9F1208引脚信号引脚信号名称1017:0]/CECLEALE信号描述这8个引脚线JHj来输入指令、地址信息,在读周期时输出信息芯片使能信号,低电平表示选中该芯片命令锁存信号,写操作时给出此信号表示进行写命令操作地址/数据锁存信号,写操作时给出此信号表示进行写地址或数据读使能信号,低电平表示当前总线为读操作写使能信号,低电平表示当前总线为写操作写保护信号就绪/忙输出电源接地/RE舰/WPRDY/BVCCVSS如果要访问K9F1208的内容,就需要26根地址线,但是引脚只有100---,107共8根线,因此必须经过4个周期才能把全部地址信息接受下来,表4.4给出了每个时钟周期,地址位上所对应的地址(L表示低电平)。表4.4K9F1208地址周期示意I/oOI/OlI/02A2AllA19LI/03A3I/C14A4A13A21LI/05A5A14A22LI/06I/07第1周期第2周期第3周期第4周期AOA9A17A25AlA10A18LA6A15A23L的A16A24L行地址A12A20L.列地址NANDFlash与¥3C2410接口电路如图4.6所示。硕J:论文基于ARM的远程lU能质量脏测系统的研究VDD33VLDATAOLDATAI293033019100…L+134TA2戮n1气品、“V.131,∞湍耀誉129’斋兰liar*8R2.3^^£翻厨∥LD气TA5LD~TA6L【M1A741嚣≈=、:=4243n陀En}敢E44:=一uⅣ二一。.j:K9F1208…一I7RnB图4.6NANDFlash接口电路图4.5SDRAM接口电路设计与Flash存储器相比,SDRAM不具有掉电保持数据的特性,但其存取速度大大高于Flash存储器,且具有读/写的属性,因此SDRAM在系统中主要用作程序的运行空间、数据和堆栈区。当系统启动时,CPU首先从复位地址OxO处读取启动代码,在完成系统初始化后,程序代码一般应调入SDRAM中运行,以提高系统的运行速度。SDRAM具有单位空间存储容量大和价格便宜的特点。SDRAM的存储单元可以理解为一个电容,总是倾向于放电,为避免数据丢失,必须定时刷新(充电)。因此,要在系统中使用SDRAM,就要求微处理器具有刷新控制逻辑,或在系统中另外加入刷新控制逻辑电路,¥3C2410在片内具有的SDRAM刷新控制逻辑,可方便地与SDRAM接口。本系统使用的是Winbond的HY57V561620CT【3¨,它是16位的数据宽度,工作电压为3.3V。存储容量为4组x4M字节,支持自动刷新(Auto.Refresh)和自刷新(Self-Refresh)。选用两片单片容量为32MB,一片为高位,一片为低位,并联构建32位SDRAM存储器系统,共64MB的SDRAM空间可以满足各种复杂算法的运行要求。主要引脚信号描述如表4.5所示:274系统的硬件设计硕.I:论文表4.5HY57V561620CT引脚信号描述信号A12~AOBA0、BAl描述地址总线,行地址A0~A12,列地址A0~A8,自动预充电标志A10组地址选择,用于片内4个组的选择数据总线,用于数据输入输出片选,用于禁.IE或使能除SCLK、SCKE或DQM外的其它输入信号时钟信号,用于同步时钟输入时钟使能信号行地址选择列地址选择写使能信号数据I/O屏蔽信号。读模式下,控制输山缓存;写模式下,屏蔽输入信号电源/地电源/地DQl5~DQ0SCSSCLKSCKESRASSCASWEDQMVDD厂VSSVDDQ/VSSQSDRAM接口电路如图4.7所示。m鐾曩曩摹逝互器蠹i曼墨图4.7SD洲接口电路4.6电源电路设计电源系统为整个系统提供能量,是整个系统工作的基础,具有极其重要的地位。电源系统处理的好坏,将直接影响带整个系统的稳定性和可靠性。电源电路的设计有以下28硕-J二论文基于ARM的远程I【l能质量:l在测系统的研究主要考虑因素:◆输入的电压范围、,电流:◆输出的电压、最大电流、最大功率;◆输出纹波大小;◆安全因素;◆电池兼容和电磁干扰;◆体积要求;◆成本要求;本系统中I/O为3.3V供电,内核为1.8V供电,所以电源电路是用LMlll7DT将5V电转换为3.3V和1.8V。电源电路如图4.8所示。ⅥVDD卯UⅧll7DT-3.3220唧16C22图4.8电源屯路4.7按键电路设计在本系统中,用一些按键使得用户能够和LCD界面交互。设计中所需按键数量不多(4个),所以采用了式按键输入的设计,电路原理如图4.9所示。使用时,定义GPIO为输入方式。通过判断GPIO引脚电平状态来确定按键是否按下。294系统的硬件设计硕.L论文豳4.9按键电路4.8LCD液晶显示电路设计LCD的构造原理是在两片平行的玻璃当中放置液态的晶体以及这两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。它利用了液晶的电光效应,通过电路控制液晶单元的透射率及反射率,从而产生不同灰度层次及多达1670百万种色彩的靓丽图像。本系统的S3C2410中具有内置的LCD控制器,它具有将显示缓存中的图象数据传输到外部LCD驱动电路的逻辑功能。¥3C2410内置的LCD控制器可支持灰度LCD和彩色LCD。也可以支持单色、4级灰度和16级灰度及256级彩色。对于不同尺寸的LCD,具有不同数量的垂直和水平像素、数据接口的数据宽度、接口时间及刷新率,而LCD控制器可以进行编程控制相应的寄存器值,以适应不同的LCD显示板。LCD主要接口控制引脚信号描述如表4.6所示。30硕I:论文基十ARM的远程IU能质量监测系统的研究表4.6LCD主要接口控制引脚信号信号说明功能LCD控制器和LCDVFRAME驱动器之间的帧同步它通知LCD屏新的一帧的显示,LCD控制信号器在一个完整的帧显示后发出VFRAME信号。LCD控制器汞1LCDLCD驱动器通过它将水平移位寄存器中的VL玳E驱动器间的行同步脉内容显示到LCD屏上。LCD控制器在一整行数冲信号据全部传输到LCD驱动器后发出VLINE信号。LCD控制器和驱动器之间的象索时钟信号,VCLK刷新时钟LCD控制器在VCLK的上升沿发送数据,LCD驱动器在VCLK的下降沿采样数据。LCD驱动器使用VM信号来改变用于打开或关VMLCD驱动器所使用闭象素的行和列电压的极性。VM信号在每一帧的交流信号触发,也可在编程位指定的数量的VLINE信号后触发。L团ND行结束信号PWREN电源使能信号VD[23:0]数据输出端口LCD接口电路图4.10所示。JPlVDD33●—’——1—L,、。VDD50T淼-FGND上LCD139nRE妍:VDI56Ⅷ78VD2VDBVDlV瞵Vu’VU7jl12~V【XVI为:.314—16:VI)IO5VDll718VD】2:VDl3VI)1422VDl5VDl62l—24VDl7VDl8二2326VI)19V【卫025V【卫lVL卫2_2728VD23L(D、f231.32,:111)I’ⅥL(1)Ⅵ?l111)VFOVMVlRAME3536VIJNEV(LK3738LHqD43444748一---一4950cHB~D日R25Ⅺ图4.10LCD接口电路3l4系统的硬件设计硕.I:论文4.9串口电路设计¥3C2410的UART单元提供两个的异步串行I/O口(UARTO,UARTl),每个能以中断或DMA模式工作,其波特率最高为115.2Kbps。每个UART通道包含2个16字节FIFO分别提供给发送和接收。UART可以进行以下参数的设置:可编程的波特率,红外收/发模式,1或2个停止位,5位,6位,7位或8位数据宽度和奇偶校验。每个UART包含波特率发生器、接收器和控制单元。本文中采用MAX3232ECAE收发芯片,接口电路如图4.11所示。V∞B3图4.1l串口电路本章小结’本章节主要是介绍远程电能质量监测系统的硬件设计。该装置主要由信号调理电路、A/D转换电路、存储器电路、通讯电路和LCD显示等部分构成,本章详细介绍了各个部分的硬件设计。32顾t论文某于ARM的远程lU能质量监测系统的研究5系统的软件设计一系统层软件远程电能质量监测系统的系统层软件主要是嵌入式linux开发环境的建立、ADC设备驱动的编写和嵌入式数据库SQLite的移植。5.1嵌入式linux开发环境的建立嵌入式linux开发环境包括建立交叉编译环境、bootloader(引导程序)移植、内核移植和根文件系统移植四个部分。在进行所有工作之前要先下载需要的文件,包括交叉编译器、linux内核、bootloader、根文件系统等【38,39]。5.1.1建立交叉编译环境嵌入式交叉编译环境就是在PC机上建立基于硬件板的程序编译环境,它有两个显著的特点:第一,整套交叉编译环境建立在PC机上,它和PC机的编译环境共存。第二,利用交叉编译环境编译出来的可执行程序只能在嵌入式板上运行。在/usr/local目录下建立名为黝的目录,进入此目录,进行解压缩。命令如下:#cd/usr/local#mkdirahn#cA/usr/local/arm#tarjxvf/root/cross-2.95-3.tar.bz2然后修改环境变量:#vi/etc/bashrc在bashrc文件的最后加入exportPATH=/usr/local/arm/2.95.3/bin:¥PATH。5.1.2bootloader的移植BootLoader是在系统启动之后、内核运行之前所执行的第一段代码,其任务是为调用内核准备必要的软硬件环境【40】。BootLoader引导程序最基本的功能是进行硬件初始化和设置内核参数并启动内核。其次,它还可以提供简单的人机界面和命令,以便从串口、USB口或网口下载文件,以及对存储设备进行管理等。当BootLoader将操作系统带入~个合适的硬件环境后,它将加载操作系统内核,最后将系统的控制权交与该操作系统。BootLoader的实现和处理器体系结构以及板级的硬件资源密切相关,同时由于BootLoader将实现加载内核,而不同的操作系统对调用方式和运行环境的要求不同。因此,需要针对所用的硬件和所引导的操作系统,编写合适的BootLoader程序。本文中,系统在上电或复位时是从地址Ox00000000处开始的,在这个地址存放的就是系统的BootLoader程序。335系统的软件设计——系统层软件硕L论义BootLoader有两种引导模式:(1)启动加载模式:也称“自主”模式。这种模式需要直接将内核映象文件和根文件系统烧写到Flash中,当设备启动时BootLoader会将Flash中的内核和根文件系统映象读入SDRAM指定的位置并从同一位置启动,整个过程没有用户介入。这是BootLoader的正常工作模式,在嵌入式产品发布的时候,BootLoader必须工作在这种模式。(2)下载模式:这种模式在系统启动前不需要烧写内核和根文件系统。设备启动时BootLoader通过串口或网络等手段从主机下载内核映象文件和根文件系统等。从主机下载的文件首先被BootLoader保存在目标机的RAM中,然后再被BootLoader写到目标板的FLASH类似固态存储设备中。BootLoader的这种模式通常在第一次安装内核和根文件系统时被使用,若以后系统要更新也会使用这种模式。工作在这种模式下的BootLoader通常都会向它的终端用户提供一个简单的命令行接口。目标板上的BootLoader通过串口与主机进行文件传输,传输的协议通常是xmodem/ymodem/zmdem协议中的一种。但是,串口传输的速度是有限的,因此可以通过以太网来传输。本设计用到的BootLoader是VIVI。VⅣI是韩国三星公司为¥3C2410系列硬件平台开发的BootLoader,提供NAND启动支持,内置了丰富的命令。viVi作为一种’BootLoader,其运行过程分成两个阶段。第一阶段的代码vivi/arch/s3c2410/head.S中定义,大小不超过10KB,它包括从系统上电后在Ox00000000地址开始执行的部分。这部分代码运行在Flash中,。它包括对¥3C2410的一些寄存器、时钟等的初始化并跳转到第二阶段执行。第二阶段的代码在vivi/init/main.c中,主要进行一些开发板初始化、内存映射和内存管理单元初始化等工作,最后会跳转到boot代码拷贝到SD洲中执行。ⅥVI的烧写过程为:(1)makeoryiviO函数中,接收命令并进行处理。在Flash中执行完内存映射后,会将ViVimenuconfig进行VⅣI的配置;VⅣI/t--5把专用的烧录工具Jflash.s3c2410和二进制文件(2)make进行编译,完成后会生成VⅣI二进制文件;(3)./Jflash.s3c2410VⅣI放在同一目录下,进行烧录。5.1.3嵌入式linux内核移植[41嘲】’本设计中使用的是linux2.4.18。第一步解压:首先在根目录下建立project目录,然后从网上下载内核linux.2.4.18.tar.bz2到project下进行解压。#mkdir#cdprojectprojectlinux-2.4.18.tar.bz2#tarjxzf硕.1:论文基于ARM的远程IU能质量i临测系统的研究此时,会在project下面产生linux.2.4.18目录,就是linux内核源码包。第二步:添加和修改与¥3C2410处理器有关的文件。基于ARM核的¥3C2410处理器中,添加和修改有关处理器的文件集中在linux/arch/arm/mach.s3c2410和linux/include/asm.arm/arch.s3c2410中。首先是准备一些必要的文件,主要的修改部分是内核入口部分(head.armv.s)、处理器和体系结构相关的部分(mach.smdk2410.c)、I/O端口映射部分和中断初始化部分(entry.armv.c)。主要步骤为:(1)修改配置文件linux/arch/arm/def-configs包含s3c2410命名的默认配置文件。编辑linux/arch/anrffconfig.in文件使当操作makeconfig时支持s3c2410。这里还需要加入一些对外围设备的支持选项。(2)修改Makefile文件1)arch/ann/Makefile添加表明选用的是¥3C2410的语句到这个文件。2)arch/arm/boot/Makefile在这个文件中定义了内核解压后开始的地址,这个地址值应该和BootLoader中设定的linux被加载的地址相同,标准的做法是在RAM基址以上32K(0x8000),RAM基址和内核开始之间的空间留给页表使用。(3)中断初始化和中断处理部分arch/arm/kernel/entry-armv.S这里提供汇编语言编写的宏disable_fiq、get_irgnr_and_base、irq__prio_table。get_irgnr_and_base通常是用来从处理器获得中断号。.(4)设置有关¥3C2410的体系结构1)arch/arm/mach—s3c2410/Makefile为¥3C2410添加目标代码,并在这个文件中列出目标文件。2)arch/arm/mach—s3c2410/mach—smdk2410.C这是非常重要的文件,。它包含体系结构的修补函数和I/O初始化。以MACHINE.START开始的一系列宏用来建立机器的配置。各种有关机型的参数会被填入数据结构machine.des(由来描述机器,称为机器描述符)中。3)include/asm—arm/arch—s3c2410/hardware.h虚拟地址和实际地址的转换函数放在这里。4)include/asm·arm/arch—s3c2410/s3c2410.h在这个文件中,定义内存地址、I/0地址等以及映射关系。5)include/asm-arm/arch—s3c2410/io.h这个文件中定义了和CPU有关的宏。356系统的软件吐汁——应川层软什删j‘睦Z同甲…。臣妻盛鍪鐾薹型—●—。I.~‘-——::。:=!。。,…一,凹6.9登陆页面登录成功后,即可进入电能质量监测的主页面。这是一个动态页面,通过它柬实现和远程监测设备数据的交互。图610是用户成功登录后进入监测页面。此页面主要有六项数据交互,分别为系统参数设罱、电量参数实时检测、电能质量查询、越限事件已录、数据同形查询、用户帮助。每她—争亭喘—■—导曛鼍手i-_i__蝴o,‘。’☆‘5日T…远程电能质齄监测系匀f赫爹”嚣’群雾’爹…爹。漂藿圈610电能质量监测土页面如果要查洵“电量参数实时检测”中的电压有效值,点击“电Ⅱ三有效值”.就会进入电压有效值查询页面,输入你要查询的时间段,然后点击“开始查询”按钮,就出现查询结果,如图611所示。嘎勇平醑曛胃孽释孽嘈—勇熏iiiiii圃。口J…’¨●z"I…:二二2—#。…幽611电压有效值卉询页面同理.可以查询其它参数,这里不作一一介绍了。硕+Ij论文基于ARM的远程也能质量监测系统的研究(2)修改fs/Kconfig文件,使得可以配置YAFFS。(3)修改fs/makefile,添加对YAFFS的支持,添加如下内容:obj-¥(CONFIG)AFFSJS)+=yaffs/(4)在YAFFS目录下生成makefile和Keonfig文件。<5)在/arch/arm/mach-s3c241/mach--mdk2410.c找至Usmdk__default_nand_part结构,修改nand分区,要根据vivi分区设置。Vivi分区如下:structmtd_partitionsmdk_default_nand__part[]={{name:‘'vivi”,offset:0,size:0x00020000,),{name:‘'param”,offset:Ox00020000,SlZe:Ox00010000,),{name:‘'kernel”,offset:0x00030000,SlZe:0x00100000,),{name:‘'roor'’,offset:0x00130000,size:0X01900000,),{name:‘'user'’,offset:0x01a30000,size:0x025d0000,});(6)配置内核时选中MTD支持。(7)配置内核时选中YAFFS支持,如图5.2所示。375系统的轼件&}l——系统层被仆Ⅲl:咤』”四鼍字怒翟,烹焉紫‘。。…幽5.2配置内{霉{时避中YAFFS支持(81编译内核并将内核下载到目标板的nandflash中。至此,linux在ARM上的移捕基本完成。5.2ADC驱动的设计5.2.1Linux设备驱动程序概述Ⅲ_4”Linux操作系统将所有的设备(不仅是存储器早的文件)全部都看成文件,都纳入文件系统的范畴,都通过文件的操作界面进行操作。每个设备都至少由文件系统的一个文件代表,因而都有一个文件名。每个这样的设备文件都唯一地确定了系统中的项设备。应用程序通过设备文件寻找访问具体的设备,而设备则像普通文件一样受到文件系统访问权限控制机制的保护。应用程序通常可以通过系统调用。"open0打丌这个设各文件,建立起与目标设备的连接。代表着该设备的文件节点中已载着建立这种连接所需的信息。对于执行该应用程序的进程而占.建立起的连接就表现为一个已经打开的文件。打丌了代表着目标设备的文件,即建立起与设备的连接后,就可以通过虚拟文件系统VFS调用该设备的相关处理函数如:read(),write(),ioctl0等常规的文件操作对目标设各进行操作。其分层结构见图5.3。一个典型的驱动程序有如下特性:(1)山一系列函数和数据构成,它既要与硬件设备进行通信又要遵循操作系统内核提供的统一接口。(2)一个自包含组件,能够动各地加入到操作系统内核中或被内核删除。(3)它要管理好用户程序与外设之间的数据流和控制流。(4)属于内核的可定制部分,通过设备文件来与用户程序打交道。硕J二论文基于ARM的远程I【l能质量。I/z.测.系统的研究‘系统调用接口(read(),write(),open()…)::。I文件系统卜.—叫高速缓存l33块设备字符设备驱动程序▲图5.3驱动分层结构图Linux将设备分成3类。一类是存取时没有缓存的设备,叫做字符设备;另一类是像磁盘那样以记录块或扇区为单位,成块进行输入/输出设备,称为块设备;还有一类是网络接口设备。在Linux操作系统中,驱动程序是操作系统内核与硬件设备的直接接口,驱动程序屏蔽了硬件的细节,驱动程序是内核的一部分,它完成以下功能:(1)对设备初始化和释放;(2)对设备进行管理,包括实时参数设置以及提供对设备的操作接口;(3)读取应用程序传送给设备文件的数据并回送应用程序请求的数据;(4)检测是处理设备出现的错误。实现一个嵌入式Linux设备驱动的大致流程可以分以下几个步骤:(1)查看设备原理图,理解设备的工作原理;(2)给设备分配一个唯一的主设备号;(3)在驱动程序中实现驱动的初始化。如果驱动程序采用模块的方式,则要实现模块初始化:(4)定义fileoperations结构;(5)如果设备驱动需要中断实现,写出中断服务程序;(6)编译该驱动程序到内核中,或者用insmod(以模块形式)命令加载;(7)测试该设备。5.2.1ADS7864驱动的编写ADS7864的工作原理在前一章已介绍了,图5.5是它的工作流程图。395系统的软件设计——系统层软件硕.1:论文图5.4ADS7864工作流程图根据工作原理写出A/D驱动的主要步骤是:(1)分配一个主设备号#defineDEVICE—NAMEAD—.MAJOR234”ADS7864”#define(2)fileoperations结构的定义staticstructfile_operationsads7864fopst{owner:THISyODULE,open:ads_open,close:ads_close,read:adsread,//读出转换结果);读取数据的函数是adsread0,打开A/D设备的函数是adsopcnO。ads_open0{ads7864_gpiojnit0;};函数ads7864_gpio_init0设置A/D转换器的控制线的初始化。主要设置与A/D相连的GPIO口为I/O方式,还设置如向/HOLDn写入低电平,设置A2A1A0=110和A/D的工作频率。硕I:论文基于ARM的远程Ib能质量骼测系统的tiJD'Z,ads—read(fd,&ad_data,16){sleep_on_timeout(ado_wait,time);set_ctl_gpi00;start_read();//等待16个时钟周期//设置一些控制线如读取方式和数据位选择∥开始读取数据,检查/busy是否为高电平,是,则可以读出A/D转换结果);(3)设备驱动程序的注册和注销staticint.....——initads7864_imt(void){registerchrdev(AD_MAJOR,DEVICE_NAME,&ads7864fops);//注册设备);staticvoid——exitads7864_exit(void){unregister_chrdev(AD_MAJOR,DEVICE_NAME);∥注销设备);(4)用insmod命令把A/D转换器以模块形式加载到内核中。#mknod/dev/ADS7864#insmodC2430N建立设备文件ADS7864∥加载驱动至此,ADS7864的驱动程序完成。5.3嵌入式数据库的移植5.3.1嵌入式数据库SQLite的移植【49,50]本系统中进行交互的数据很多,需要对大量的实时数据进行采集和处理,可采用免费的嵌入式数据库SQLite。SQLite是D.RichardHipp开发出来的用一个小型C库实现的一种强有力的嵌入式关系数据库,它提供了对ANSISQL92的大多数支持:支持多表、索引、事务、视图、触发和一系列的用户接口及驱动。SQLite开放源代码,体积小速度快,整个SQLite系统代码少于3万行,库小于250KB,运行时内存占用少,具有微小的内核结构。SQLite在使用前无需安装设置,不需要专门的进程来启动、停止和配置,在系统崩溃或掉电之后可以自动恢复。使用SQLite时,访问数据库的程序直接对磁盘上的数据库文件进行读写,没有中间服务器进程。接口(Interface)是一个C语言库,使用不同语言的API,在底层执行时都使用C语言库。从接口接受的命令传到SQL命令处理器,SQL命令处理器由三个的步骤完4l5系统的软件设计——系统层软件硕卜论文成:标志处理器、分析器和代码生成器,SQLite高度优化的分析器、代码生成器,可以快速地产生高效率的代码,并能有效地防止内存泄漏。要把SQLite移植到arm.1inux上,除了底层的硬件和操作系统平台外,还需要交叉编译工具arm.1inux.·,在上节已经完成了交叉编译环境的构建。移植步骤如下:(1)验证交叉编译环境和下载源码包在宿主机终端命令行中输入稃al'm—linux-gcc-V查看版本号,如能正常显示则能行,本系统的交叉编译版本号是2.95.3。在http://sqlite.org上下载源码包:sqlite-3.3.8.tar.gz。将其拷贝到工作目录/home/wang里面执行:{|i}cd/home/wang舟tarzxvfsqlite-3.3.8.tar.gz产生sqlite目录。在该目录中包含了编译所需要的所有源文件和配置脚本。SQLite3的所有源代码文件都位于sqlite.3.3.8/src/I三I录下。(2)修改配置脚本在sqlite.3.3.8/目录下有一个Makefile范例文件Makefile.1inux=gcc。首先通过下面的命令拷贝此文件并重命名为Makefile:撑cpMakefile.1inux—gccMakefile然后修改Makefile里面的如下内容:17行:“TOP1../sqlite"修改为“TOP曩.”73行:‘‘TCCL.-gcc-06”修改为“TCC毒aml·linux·gcc·06”81行:“AR缸al"er'’修改为“AR霉arm.1inux-arCla'83行:“RANLIB=ranlib”修改为“RANLIBzalTfl.1inux-ranlib”86行:“MKSHLIB=gcc-shared”修改为“MKSHLIB=姗一linux—gee-shared”96行:“TCLFLAGS篁.I/home/drh/tcltk/8.41inux”修改为“#TCL.I/home/drh/tcltk/8.41inux”FLAGS=103行:“LIBTCL=/home/drb_/tcltk/8.41inux/libtcl8.49.a—lm_1m”修改为“#LIBTCL=/home/drh/tcltk/8.41inux/libtcl8.49.a-lm-ldl”这些主要把编译器改为我们所需要的交叉编译器arm.1inux.·和去除不需要的功能如TCL。然后修改main.mk,因为Makefile包含了这个文件。找到这个文件中的下面一行:select.Otable.Otclsqlite.Otokenize.Otrigger.o把它替换成:select.Otable.Otokenize.Otrigger.o42硕j:论文皋于ARM的远程1U能质量监测系统的研究也就是把该行上的tclsqlite.0去掉。这样编译的时候将不会编译SQLite3的Tel语言绑定。。(3)编译修改工作就完成后,接下来就可以开始编译SQLite3了,这通过make命令即可完成:桴make编译完成之后,将在sqlite3.3.8/目录下生成库函数文件libsqlite3.a和头文件sqlite3.h,这就是所需要的两个文件了。而libsqlite3.a是静态函数库文件,在编译的时候需要加上“.static”选项静态编译,否则会出现找不到库的错误。.5.3.2SQLite的主要API接口SQLite的API易于使用,一般的应用只要用到三个函数就可以了,它们是:sqliteopen,sqlite_exec,sqlite_close。并且可以扩展,允许用户自定义函数,然后以回调函数的形式集合进去。下面简单介绍下核心函数:(1)打开数据库sqlite_open打开一个数据库,如果数据库不存在就创建。sqlite唪sqlite_open(constchar木dbname.//数据库名(包含路径)//读写模式//保存错误信息字符串的指针intmode,char乖奉errmsg);(2)关闭数据库sqliteclosevoidsqliteclose(sqlite*dbname//需要关闭的数据库名);(3)执行SQL语句intsqlite_exec(sqlite*dbname,const//由sqlite_open打开的数据库//要执行的sql语句char*sql,sqlite_callback,//回调函数的指针,查询的每个结∥果都要执行这个函数void*parg,//传给回调函数的参数//保存错误信息字符串的指针char**errmsg);435系统的软件设计——系统层软件硕J二论义callback回调函数有用户编写以便处理查询的结果,callback函数必须以以下的形式编写:staticintcallback(void宰parg,intargc,char掌argv,char木奉columnNames);此外,还可以通过sqlitemprintf函数来动态构造SQL语句:char掌sqlite3_mprintf(constchar枣,..。)这样我们就可以在运行时将得到的各种信息插入数据库中。本章小结本章节主要是介绍软件设计中系统层软件的设计。系统软件设计主要包括嵌入式linux开发环境的建立、驱动层软件的设计和嵌入式数据库SQLite的定制及移植。这部分的主要工作是建立交叉编译环境、bootloader移植、内核移植、根文件系统移植以及驱动层中ADS7864设备驱动的编写。硕.I:论文基于ARM的远程I【I能质量监测系统的研究6系统的软件设计一应用层软件本文应用层软件设计可分三部分一电网数据采集和处理部分、远程通讯部分和人机交互部分(QT图形设计),它们是同时进行的。本设计将应用程序划为多个任务,通过linux内核调度。各个任务采用linux提供的信号量、队列、管道和socket通讯进行通信,确保各个任务的性,减少任务间的耦合。应用程序的主流程如图6.1所示。图6.1应用程序主流程图6.1数据采集的同步实现对实时信号的准确测量是整个系统精度关键所在,一个好的采样方法很重要。在电能测量、谐波分析等运用中,目前常用的方法包括:同步采样法、准同步采样法、非整周期采样法等。在本设计中采用了同步采样法中的软件同步采样法。同步采样是目前应用最广的采样方法。它是指采样时间间隔疋与被测信号周期r及一个周期内采样点数Ⅳ之间满足T=Ⅳ掌B。实现有两种方法:一种是硬件同步采样法,二是软件同步采样法。硬件同步采样一般多采用数字锁相技术(简称PLL,即能够完成两个电信号相位同步的自动控制闭环系统)。这种方法精度较好,但电路复杂成本较高,调试困难,所以硬件同步不利于在电力测量系统中推广。软件同步采样是通过在定时中断服务程序中采样,并对定时器重置定时值来实现的。软件同步采样原理:首先求出采样间隔rs=丁/Ⅳ(丁:被测信号的周期,Ⅳ:一周456系统的软件设计——应用层软件硕.IJ论文期内的采样点数)。如果删处理器的时钟周期为互,则设定定时器的计数值为K=round(Ts/互),其中round表示四舍五入取整。在一个被测信号周期内,ARM处理器以瓦为定时间隔进行被测信号的采样。如果被测交流信号周期变化,就要重新设置K。6.2数据处理中的软件实现数据处理主要功能是完成对采样数据的计算,包括电压电流有效值的计算、有功和无功功率计算、电压偏差计算、三相不平衡度计算、谐波计算和各相电压电流谐波畸变率计算等,计算完成后保留数据。数据处理模块软件流程图如图6.2。(开始)4,-十算电压、电流峰值矛LJ有澈13童r.计算功率FFT.鲻(-法一N上数据采集上上数据保阳剑存储器’.rI(结束)图6.2数据处理模块主流程图6.2.1FIⅦ算法的实现本设计采用按时间抽选的基一2FFT算法来计算,并使其输入为倒位序、输出为自然顺序。这个程序包括变址(倒位序)和L级递推计算(N=2工,L为正整数)两大部分【511。基.2FFT算法的流程图如图6.3所示。硕h仑文皋于ARM的远程l也能质量临测系统的研究图6.3基-2FFT算法流程图按时间抽取的FFT算法通常将原始数据倒位序存储,最后按正常顺序输出结果X(O),X(1),...,X(后),假设一开始,数据在数组floatdataR[128]中,我们将下标i表示为b6bsb4b3b2b。bo。倒位序就是将原来第f个位置上的元素存放到第boblb2b3b4bsb6的位置上去,由于C语言的位操作能力很强,可以分别提取玩~坟,然后再重新组合成bAb,b364bsb6,这就是倒位序的基本算法。本设计选择128的采样点,则倒位序算法如下:分别计算60~玩。bo=i&0x01;bl=(i>>1)&Ox01:吃=(i>>2)&ox01;63=(i>>3)&Ox01;钆=(i>>4)&Ox01;b5=(i>>5)&0x01;b6=(i>>6)&0x01。所以经转换后的位黄Inv-p=bo拳64+bl木32+bz木16+ha木8+优宰4+bs凇2+66。Ⅳ点FFT运算可以分成logN2级,每一级都有N/2个碟形。DITFFT的基本思想是用3层循环完成全部运算(Ⅳ点FFT)D2】。第一层循环:由于N=2”(即128=27),需要7级计算。第一层循环对运算的级数进行控制。第二层循环:由于第L级有2卜1个蝶形因子(乘数),第二层循环根据乘数进行控制,保证对于每一个蝶形因子第三层循环要执行一次,这样,第三层循环在第二层循环476系统的软件设计——应用层软件硕L论文控制下,每一级要进行2卜1循环计算。第三层循环:由于第L级共有N/2三个群,并且同_级内不同群的乘数分布相同,当第二层循环确定某一乘数后,第三层循环要将本级中每个群中具有这一乘数的蝶形计算一次,即第三层循环每执行完一次要进行’N/2£个碟形计算。‘6.3远程通讯-Boa服务器的设计6.3.1Boa服务器概述BoaWebserver是一个小巧高效的web服务器,是一个运行于unix或linux下的、支持CGI的、非常适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。Boa服务器处理用户请求并返回数据给浏览器。若用户要动态的访问服务器,则Boa服务器调用存储在服务器中的CGI程序。它的体系结构如图6.4所示。H下TP/,—~~、’、~~———/事暇抬区稻、、~———.,/7引擎Web浏览器配置文件l■—]广一(系统应用程序崎———叫——1■一t.阿&设卅、-图6.4Boa服务器的网络体系结构·嵌入式Web服务器Boa和普通的服务器一样,能够完成接收客户请求、分析请求、响应请求、向客户端返回请求结构等任务。其工作流程如图6.5所示。48硕J二论文基于ARM的远程IU能质量j|ff测系统的研究图6.5Boa服务器的T作过程6.3.2Boa服务器的配置第一步Boa程序的移植(1)从http://www.boa.org/下载Boa源码:boa-0.94.13.tar.gz进行解压:#tarxzfboa一0.94.13.tar.gz(2)直接运行src/configure文件:撑./configure,生成Makefile文件(3)修改Makefile文件。因为工具链存放在/usr/local/arm/2.95.3/bin/中,所以把CC=gcc改为CC=/usr/local/arm/2.95.3/bin/arrn—linux-gcc;CPP=.gcc·E改为CPP=/usr/local/arm/2.95.3/bin/arm-linux-gee-E(4)编译j!l}make群/usr/local/arm/2.95.3/bin/arm-linux·stripboa第二步Boa的配置,其能够支持CGI程序的执行。Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.conf',boa.conf文件包含了boa服务器启动时所必需的配置信息,可以根据自己需求对其进行修改和配置。下面是本文对boa.conf进行的修改和配置。Port80User0Group0//设置boa运行端口为80//运行boa的用户,O表示所有用户都可以运行//运行boa的用户所在组ServerName//主机域名,通常用IP访问,可省略//默认Web首页//设置最大处理1000个请求//设置10s后未向服务器请求为超时49Directorylndexindex.htmlKeepAliveMax1000KeepAliveTimeout106系统的软件设计——应用层软件硕l:论文DefaultTypetext/htmlCGIPathhome:/usr/lib/cgi.binScriptAlias/cgi-bin/usr/lib/cgi-bin//定义文件返回类型//定义CGI程序目录//为/usr/Iib/cgi—bin定义一个别名/cgi-bin第三步:Boa的执行成功配置以后,还需要创建日志文件所在目录/var/log/boa,创建HTML文档的主目录/var/www,将静态网页存入该目录下(可以将主机/usr/share/doc/HTML/目录下的index.html文件和img目录复制至lJ/var/www目录下),创建CGI脚本所在目录/var/www/cgi-bin,将cgi的脚本存放在该目录下。另外还要将mime.types文件复制/etc目录下,通常可以从linux主机的/etc目录下直接复制即可。最后将boa.0.94.13下的boa可执行文件拷贝到bin下面。最后执行./boa&。6.3.3实现动态网页的关键技术一GI目前,实现动态Web页面的技术主要有4种:CGl(CommonASP(ActiveXServerGatewayInterface)、Page)、PHP(PersonalHomePage)和JSP(JavaServerPage)。CGI是一种通用接口标准,CGI程序就是符合这种通用标准并且运行在Web服务器端的程序,其作用就是用来控制信息要求,产生并传回所需的信息。此时Web服务器所起的作用就相当于是客户端和CGI程序间的中间人。CGI程序可以用任何程序设计语言编写,如Shell脚本语言、Perl、Pascal、C语言等,本文将采用C语言丌发CGI程序。6.3.3.1CGI的工作过程CGI的工作过程:CGI是外部扩展应用程序与Web服务器交互的一个标准接口,按照CGI标准编写的外部应用程序可以处理客户端(一般是IE浏览器)输入的需要协同工作的数据,从而完成Web服务器和客户端浏览器的交互工作。图6.6是CGI的工作过程。WWW客户端….。。图6.6CGI的工作过程(cGI程序CGI程序的工作一般分为以下几个步骤【53】:1)客户端发出请求首先是客户端的浏览器发出一个请求给Web服务器,如果这个请求是一个普通的50硕I:论文基于ARM的远程I【l能质量!I:}测系统的研究文件(如HTML文件、GIF或JPEG文件),Web服务器就将所请求的文件直接传送给客户端的浏览器。如果这个请求是一个CGI程序或外部应用,Web服务器将激活相应的CGI程序。2)Web服务器激活CGI程序当Web服务器接收到浏览器的请求是一个CGI程序时,Web服务器就要激活这个CGI程序并执行它。在这个CGI程序被执行前,Web服务器需要为该CGI程序设置一些环境变量。这些环境变量被服务器用来向CGI程序传递一些非常重要的信息,如当前Web服务器状态。当CGI程序运行结束时,这些环境变量也随之结束。3)CGI程序对客户程序的请求做出反应CGI程序通过环境变量或其他途径获得客户端的输入数据并对这些数据进行处理。CGI程序可以根据客户端浏览器的需要产生各种数据。之后,CGI程序将处理结果传送给Web服务器。4)W曲服务器将CGI程序的处理结果传送给客户端Web服务器收到CGI程序的处理结果后将对CGI程序的输出进行检查,如果CGI程序输出的结果已经自带了HTTP头信息,则将结果直接返回给客户端浏览器,否则将为CGI程序的输出结果加上HTTP头信息。5)Web服务器中断和客户端浏览器的连接,并将CGI程序的输出显示在浏览器的窗体上。6.3.3.2CGI编程的基本原t里[54,s5】CGI和Web服务器通信是通过环境变量或是标准输入/输出来实现的;Web服务器和客户端浏览器之间所交换的信息类型是由MIME类型定义的,而浏览器是通过向Web服务器提交表单来调用CGI程序的。下面将简要介绍CGI环境变量、MIME类型、表单以及表单数据传送方法。1)CGI环境变量Web服务器与CGI程序交换信息的协作方式是通过环境变量实现的,当服务器收到一个请求后,服务器通过使用环境变量收集所有可能得到的相关信息并存入内存,为CGI程序提供CGI程序需要的数据信息,CGI程序需要的信息都可以从内存中获得。根据环境变量所包含信息的来源的不同,环境变量可以分为以下三类【53,56】:和Web服务器状态有关的环境变量,如表6.1所示;表6.1和Web服务器状态有关的环境变量环境变量名SERVER含义服务器所使用的HrrP请求端口号服务器当前的时间服务器所使用的WWWServer软件的名称服务器所传输信息的最后修改时间PORTDATE——GMTSERVER——SOFTWARELAST-MODIFI.ED6系统的软件设计——应用层软件硕上论文和浏览器有关的环境变量,如表6.2所示;表6.2和浏览器有关的环境变量环境变量名HrrP_ACCEPTACCEPT——LANGUAGE含义客户端所能处理的MIME类型,如text/html客户端可以接受的语言客户端的电子邮件地址标识客户端浏览器的软件信息,如版本号HTTP——FROMUSER--AGENT和浏览器发出的请求头有关的环境变量,如表6.3所示,当客户端请求浏览网络上某一资源时,浏览器将根据客户输入的URL生成一个请求头信息,并将该头信息发给Web服务器。这类和请求相关的环境变量不仅和具体的CGI程序有关,还和传送数据的客户端有关。表6.3和浏览器发出的请求头有关的环境变量环境变量名含义服务器使用的确认形式,通常为basic传送数据的字节长度MIME数据类型AUTH.,nECONTENT——LENGTHCONTEN^翼EQUERY_STRINGUl也中“?”后面输入的字符串内容2)MIME类型MIME(MultipurposeIntemetMailExtensions)是一个技术规范,它定义了7种在国际互联网上传送的基本数据类型:Text、Multipart、Message、Application、Image、Audio和video。其中,.每种基本类型又可以分为几种子类型。’当Web浏览器向服务器发送请求时,请求信息中将包含该Web浏览器能处理的MIME类型。同样,当Web服务器向Web浏览器发送信息时,也必须首先说明该信息的MIME类型,以便于浏览器对接受的信息作出相应的处理。也就是说,MIME类型定义了Web服务器传送的数据类型以及Web浏览器能接受的数据类型。本文中用到的MIME类型主要是基本类型Text中的html即Web网页。当Web服务器向Web浏览器传送Web网页时,服务器向Web浏览器发送的头信息中包含了如下字符串:Content—type-text/html3)表单通常浏览器只通过HTTP请求获取一些静态的网页,如果客户想向服务器提交一些.数据并进行相应的处理,此时是客户机和W曲服务器的交互过程,则要使用到HTML表单(Form)。HTML表单是客户通过浏览器向Web服务器提交数据的主要方法。它由普通文字标记和一些称为“控件”的特殊元素组成,这些元素负责接受用户输入和对用户输入做出响应。用户通过键入文本和选择菜单项等方式来填写表单,然后提交表单等候服务器对数据进行处理。52顾+1:论文基于ARM的远程I也能质量J一瞻IlL测17、a系统的研究4)表单数据传送方法通常表单数据有两种方法传送给CGI程序:GET和POST。GET是缺省的方法。一般当用GET方法传递数据时,.浏览器首先将表单中用户输入的数据URI译码成‘‘NAME=VALUE,’的形式,各个‘'NAME=VALUE”对之间用“&”分开,.NAME和VALUE就是表单中各种元素的属性,其中VALUE属性存放着用户的输入数据。完成URI译码以后,浏览器就将这些被译码以后的数据放在又表单属性ACTINO定义的URL(表示了CGI程序位置)的后面,传送给Web服务器,两者之间用“?”分开。服务器最终将被译码后的客户段输入数据放在环境变量QUERYGN中,IRTS.环该CGI取存过通序程境变量的值获取客户端用户的输入筘61。POST方法,浏览器则是在向服务器传递了所有的HTTP头信息后,再将URI译码以后的表单数据单独作为整体传送给服务器,服务器接受以后再将它放在标准输出也就是CGI程序的标准输入中。CGIPOST传给GNIRTS.给传入输程序;准标过通是数参的法方对比GET方法和POST方法,可以看出两者的不同之处在于:GET方法的参数是通过环境变量QUERYCGI程序。鉴于POST方法的特点,本文中表单提交方法均采用POST方法。6.3.3.3本文使用的CGI程序库—CGIC通常,CGI程序库所提供的函数都是关于CGI程序从Web页面获取客户端的输入和URI解码的,这也是所有CGI程序所共同的部分。利用这些现有程序库可以使得编程人员将精力主要集中在CGI程序所要解决的具体问题上。现有的关于C语言编程的CGI共享程序库主要有:CGI.UTIL库和CGIC库。鉴于CGIC功能更全,本文选用CGIC作为CGI共享程序库。CGIC库本身提供了一个main()函数,CGIC的用户编写的程序代码需要放在函数cgiMain0中,否则CGI程序不能正常工作。CGIC的main()函数主要用来完成CGI程序的初始化工作、获取客户端用户的输入以及相应的解码工作,最后main()函数会调用cgiMain0函数以执行用户编写的程序代码。在初始化准备工作时期,CGIC将所有已经存在的环境变量值都存入了全局变量中,在以后的程序中如需要使用环境变量,可以直接使用全局变量。CGIC中拟定的cgiMain()N数的基本工作流程如图6.7所示。‘6系统的软件设计——应用层软件硕_j二论文图6.7cgiMain()i函数的基本工作流程CGIC还提供了一些调试工具,egiWriteEnvironment0函数可以将表单中的用户输入数据和相应的环境变量存入一个文件,cgiReadEnvironmentoi函数可以将以前保存的CGI程序出错时的运行环境加载到当前的环境,然后用调试器对CGI进行调试。6.3.3.4本课题的CGl设计:第一步:从网上下载源代码包c西c2.05,这个源代码包主要有以下几个文件,功能分别为:caputre.c.用于生成可执行文件caputre,可执行文件caputre用于在调试CGI程序时协助捕获c西环境变量。c酉c.c.CGIC程序库提供的主程序,其中包含了main()函数,用于完成CGI程序的初始化工作、获取客户端的输入以及相应的解码工作等。当进行完这些工作之后,main()函数会调用cgiMain()匿i数。cgic.h:主要用于定义一些数据类型、函数类型。Makefile文件:该文件描述了上述各个文件之件的相互依赖关系,用于编译生成可执行文件libcgic.a(静态链接库文件)、capture、cgictest.cgi。CGIC程序库已经编写了一些对表单等进行处理的基本函数,当进行CGI编程开发时,不需要自己再重新编写,只需直接调用这些基本函数即可。第二步:然后利用CGIC库提供的库函数(基本库函数见附录B)写应用程序test.C,应用程序以cgiMain()开始。在CGI程序中利用SQLite提供的API函数操作数据库(C语54硕.Ij论文基于ARM的远程I乜能质量临测系统的硼f究言编写的API),首先要提供文件名和访问模式,调用sqliteopen()连接数据库,然后调用sqlite_exec()函数来执行SQL语句,最后执行sqlitecloseO关闭数据库。此外如果想取回SQL语句访问数据库的结果,要对每一个记录执行回调函数callback()。CGI应用程序将标准输出(stdout)作为向web服务器传递数据的一种重要途径,通常,CGI应用程序将执行结果输出到标准输出,Web服务器从CGI应用程序标准输出中读取信息,并将这些信息返回给客户端。因此在程序中如果要将SQL查询结果输出给客户端的话,应用程序可以使用prinftO函数将查询结果以HTML的形式输出到标准输出,进而W曲服务器向客户端返回动态页面。实现了客户端、Web服务器以及嵌入式数据库SQLiite之间的交互。第三步:重新编写Makefile文件,利用cgic.C、cgic.h、caputre.C、test.C文件生成.cgi文件,放在CGI脚本所在目录/var/www/cgi.bin/下。本文中的CGI程序工作流程如图6.8。广弄语、显示登录主页NI乜能豁测页面监测参数选择提取梢应值显示相应页面图6.8本设计的CGI程序工作流程6.3.4Boa服务器软件功能测试运行编译过的c西文件,用IE浏览器输入地址192.168.253.8,将出现用户登录界面。为了保证系统的安全,设置了用户身份验证功能。因此用户登录界面是监控系统的首页,通过此界面用户将向Web服务器提交自己的身份和密码信息,并等待服务器的验证。如果验证合法,则进入系统管理界面;否则服务器返回用户身份信息错误的提示页面。该界面如图6.9所示。556系统的软件吐汁——应川层软什删j‘睦Z同甲…。臣妻盛鍪鐾薹型—●—。I.~‘-——::。:=!。。,…一,凹6.9登陆页面登录成功后,即可进入电能质量监测的主页面。这是一个动态页面,通过它柬实现和远程监测设备数据的交互。图610是用户成功登录后进入监测页面。此页面主要有六项数据交互,分别为系统参数设罱、电量参数实时检测、电能质量查询、越限事件已录、数据同形查询、用户帮助。每她—争亭喘—■—导曛鼍手i-_i__蝴o,‘。’☆‘5日T…远程电能质齄监测系匀f赫爹”嚣’群雾’爹…爹。漂藿圈610电能质量监测土页面如果要查洵“电量参数实时检测”中的电压有效值,点击“电Ⅱ三有效值”.就会进入电压有效值查询页面,输入你要查询的时间段,然后点击“开始查询”按钮,就出现查询结果,如图611所示。嘎勇平醑曛胃孽释孽嘈—勇熏iiiiii圃。口J…’¨●z"I…:二二2—#。…幽611电压有效值卉询页面同理.可以查询其它参数,这里不作一一介绍了。硕.I:论义基于ARM的远程I【l能质量监测系统的研究6.4QT嵌入式图形界面的开发Qt是Trolltech公司的一个标志性产品。Trolltech公司1994年成立于挪威,但是公司的核心开发团队已经在1992年开始了Qt产品的研发。1995年推出了Qt的第一个商业版。现在Qt已经被世界各地的跨平台软件开发人员使用。Qt是以工具开发包的形式提供给开发者的,这些工具开发包包括图形设计器,Makefile制作工具,字体国际化工具,Qt的C++类库等等。Qt的类库等价于MFC的开发库,但是Qt的类库是支持跨平台的类库,也就是说Qt类库封装了适应不同操作系统的访问细节,这正是Qt的魅力所在。6.4.1嵌入式QT(Qt/Embedded)介绍Qt/Embedded[57】是一个为嵌入式设备上的图形用户接口和应用开发而订做的C++工具开发包。它通常可以运行在多种不同的嵌入式Linux操作系统的处理器上。如果不考虑X窗口系统的需要,居于Qt/Embedded的应用程序可以直接对缓冲帧进行写操作。Qt/Embedded主要特点有:(1)除了类库外,Qt/Embedded还包括了几个提高开发速度的工具,使用标准的QtAPI,可以非常熟练地在Windows和Unix编程环境里开发应用程序;(2)超强的资源利用率,Qt/Embedded可避免占用运行内存,能提供更快、更高的性能;(3)Qt/Embedded的Qt/X11,Qt/Windows和Qt/Mac版本提供的都是相同的API和工具;(4)Qt/Embedded还包括类库以及支持嵌入式开发的工具;(5)Qt/Embedded提供了一种类型安全的被称之为信号与插槽的真正的组件化编程机制,这种机制和以前的回调函数有所不同;(6)Qt/Embedded还提供了一个通用的widgets类,这个类可以很容易的被子类化为客户自己的组件或是对话框;(7)针对一些通用的任务,Qt还预先为客户定制了类似于消息框和向导这样的对话框;(8)Qt的图形设计器(designer)可以用来可视化地设计用户接口,设计器中有一个布局系统,它可以使您设计的窗口和组件自动根据屏幕空间的大小而改变布局。开发者可以选择一个预定义的视觉风格,或是建立自己独特的视觉风格。使用UNIX/LINUX操作系统的用户,可以在工作站上通过一个虚拟缓冲帧的应用程序仿真嵌入式系统的显示终端;(9)Qt/Embedded也提供了许多特定用途的非图形组件,例如国际化、网络和数据库交互组件.o576系统的软件设计——应用层软件硕.I:论文6.4.2QT信号与插槽机制[58】信号(sinai)和插槽(slot)机制是QT的核心机制。信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其它工具包的重要地方。信号与插槽机制提供了对象间的通信机制,它易于理解和使用,并完全被Qt图形设计器所支持。图形用户接13的应用需要对用户的动作做出响应。例如,当用户点击了一个菜单项或是工具栏的按钮时,应用程序会执行某些代码。如果一个类要使用信号与插槽机制,它就必须是从QObjeet或者QObject的子类继承,而且在类的定义中必须加上QOBJECT宏。信号被定义在类的信号部分,而插槽则定义在publicslots、protectedslots或者pfivateslots部分。信号.槽机制完全于任何GUI事件循环。只有当所有的槽返回以后发射函数(emit)才返回。如果存在多个槽与某个信号相关联,那么,当这个信号被发射时,这些槽将会一个接一个地执行,但是它们执行的顺序将会是随机的、不确定的,我们不能人为地指定哪个先执行、哪个后执行。槽是普通的C++成员函数,可以被正常调用,它们唯一的特殊性就是很多信号可以与其相关联。当与其关联的信号被发射时,这个槽就会被调用。槽可以有参数,但槽的参数不能有缺省值。既然槽是普通的成员函数,·因此与其它的函数一样,它们也有存取权限。槽的存取权限决定了谁能够与其相关联。信号和插槽二者之间通过connect()起来,connect()的定义如下。boolQObject::connect(constQObject宰sender,//发送者,constchar宰signal,//信号QObject宰receiver,//接收者char毒memberconsteonstff插槽)[static】当调用cormect0就将信号与插槽连接起来了。6.4.3QT的移植用下面的步骤安装QT(1)从网上下载qt软件包qt—embedded.flee.3.1.1.tar.gz,拷贝到目录/usr下。(2)进入usr目录:cA/usr,进行解压,执行命令tarzxvfqt-embedded-flee-3.1.1.tar.gz。(3)进入刚建立的目录qt—embedded—free.3.1.1。(4)进行环境变量的设置exportQTDIR=¥PWDLIBRARY_PATH=¥QTDIR/lib:¥LD_LIBRARY_PATHexportLD(5)configure对qt的安装根据自带configure文档的内容进行配置,以生成Makefile批处理文档,可改变configure文档.的内容以实现不同的配置。58顶‘I:论文某于ARM的远程lU能质量:瞌测系统的研究(6)make根据新生成的Makefile文档丌始安装qt。6.4.4系统的QT界面制作图6.12是一个典型的用户界面方案设计的流程图。本系统有n个页面,每个页面有若干QT元件。当有消息或事件时,系统进行消息处理,如需转换界面进入下一界面,系统则进行窗口之间的切换。消息处理是指按键在当前界面点击查询项时,由用户主导程序下一步如何操作。应用程序创建时会初始化一个自己的消息队列,系统将收集到的消息发送到应用程序的消息队列中,应用程序从该队列中读取消息并进行相应处理【591。图6.12应用程序流程图6.4.4,1利用QtDesigner设计系统的界面【60j。Qt设计器是用来设计和实现用户界面,并能够在多平台下使用的一种工具。Qt设计器可以使用户界面设计变得简单。Qt设计器支持信号与插槽机制,使部件间能够进行有效的通信,它包含一个代码编辑器,能够在合成的代码里面嵌入自己定制的槽。Qt设计器的开发环境如图6.13所示,它是Linux系统下最好的图形开发工具。596系统的较件世”——Jq用g轼件烹黑罩一j幢盘iii]…VEEz,!E=,!!|!!E■,,!!!!!曼-。o_Ⅲi■.=j_『~●§、"倒L埝立Dq■?,一』】一一,pj!=、v一一|…一“…~;一—≤一1….…j-1~Ih…若=”=||一I--"一J——…H“=j““h、z…Ⅶ一…””。:”“一IJv一^『●|_=。=!mt,n,、』一——幽6130t设计器的开发环境.]JQT初始化后,系统进入主界面菜单。主界面有七个按钮,点击相应按钮进入下一级菜单。七个按钮对应的子菜单分别为:(1)系统参数设置:包括系统时钟设置、互感器变化设置、故障录波触发设置、电能质量限值设置、越限事件响应设置、重启和退出。(2)电量参数实时查询;包括电压有效值、电流有效值、有功功率、无功功率、视在功率、有功电度、无功电度、频率、频率因数和退出。(3)电能质量查询;包括电压偏差、频率偏差、谐波含有量、电压波动fj!|变、三相不平衡、暂时过电压和退出。(4)越限事件记录:包括电压偏差越限、频率偏差越限、谐波分量越限、电压波动越限、电压州变越限、负序电流越限、电压跌落越限、电压骤升越限和退出。(5)数据图形处理:包括实时数据查询、历史数据查询、故障录波、频谱图、趋势图、曲线图、散点图、向量图和退出。(6)数据通信:以太网通信、本地数据下载和退出。(7)用户帮助:包括使用说明、联机演示、关于和退出。下面介绍界面制作的主要函数:首先,建立一个项目mypmjemt,主程序函数test.印p,主要代码如下:Forml::Forml(QWidget+parent,oonstchar*nme,boolmodal,WFlags日)//主界面的制作:QDialog(parent,n锄岛modal,f1)(if(!namc)mm%lam《”Forml”);foml2=BeWForm20;//新建一个窗口指针,指向“系统参数设置”项的响应界面form3=newform4=ncw∞Form30;//指向“电量参数实时查询”项的响应界面Form40;//指向“电能质量查询”项的响应界面顾.1:论文基十ARM的远程l【l能质量!临测系统的研究form5=newForm50;//指向“越限事件记录”项的响应界面form6=newForm60;//指向“数据图形处理”项的响应界面form7=newForm70;//指向“数据通信”项的响应界面.form8=newForm80;//指向“用户帮助”项的响应界面QPushButton(this,”pushButtonl”);//新建按钮-pushButtonl=newpushButtonl->setGeometry(QRect(30,70,201,40));//设置尺寸………………………L∥同理,再添加6个按钮anguageChange0;//此函数用于语言转换,转换成中文resize(QSize(485,320).expandedTo(minimumSizeHint0));//设置窗口尺寸init0;//初始化,具体函数在下面)产中文转换函数的具体实现母/voidForml::languageChange0{pushButtonl一>setText(trUtf8(”系统参数设置”));//trUtfSO在Qt中用于显示中文字体pushButtonl_2一>setText(trUtf8(”电量参数实时查询”));pushButtonl_3一>setText(trUff8(”电能质量查询"));pushButtonlj->setText(trUtfS(”越限事件记录”));pushButtonl_7一>setText(trUtf8(”数据图形处理”));pushButtonlpushButtonl5一>setText(trUtf8(”数据通信"));6·>setText(trUff8(”用户帮助”));textLabel2->setText(trUtf8((”南京理工大学自动化学院”));textLabel1一>setText(trUtfS(”<fontsize=\”+3\ff>嵌入式电能质量监测系统/font>¨));∥字体的设置'Form3::Form3(QWidget事parent,constchar宰name,boolmodal,WFlagsf1):QDialog(parent,nalTle,modal,f1)//“电量参数实时查询”界面{if(!name)setName(”Form3”);6l6系统的软件设计——应用层软件硕l:论文form9=newForm90;//新建一个窗口指针,指向“电量参数实时查询”项中的“电压有效值”响应界面∥和Forml一样,进行按钮添加和设置languageChangeO;’initO;’∥用于转换成中文∥初始化Form3,当点击“电量参数实时查询”窗口时出现“电压有效值”窗口)voidForml::initO{connect(pushButtonl-3,SIGNAL(clicked()),this,SLOT(showForm3()));//与插槽机制的使用,当选中“电量参数实时查询”时出现响应界面。>voidFormI::showForm3()//用于“电量参数实时查询”响应界面的显示{Form3->showO;)Form3::initO{connect(pushButton2_l,SIGNAL(elickedO),this,SLOT(showForm3()));//在“量参数实时查询”界面中选择“电压有效值”时的响应。)voidForm3::showForm9()//用于“电压有效值”响应界面的显示{Form9->showO;)初始主界面如图6.13。62m论史^‘十ARM的t程【“能质量%硎采统的Ⅲ究嵌入式电能质量检测系统[二口[j墨[二口§*}tⅡIt#目B≈a[j堕[]m*-月『,々n■m{K凹613主界面当选中“电量参数实时检测”这个选项时,就会出现图614的选择界面匡蚕雪[j丑[二口’[二口[二口[二口电能参数实时检测[二亟二][二三二]幽614电能质鼍参数实时监测界面[二三二][二三]在“电量参数实时检测”界面中山现十个选样项,根据你的需要来查询。图615是“电压有效值”查询界面。其它参数选项查询显示界面就不一一介绍了。电压有赦值盔询团曰圈615电压有效值卉询界面6系统的软件'发计——应用层软件硕,【:论文本章小结本章节主要介绍了系统的应用层软件设计。应用层软件主要包括数据采集和处理模块、远程通讯模块(Boa服务器实现)和QT人机界面的设计。数据采集中介绍了软件同步的方法;数据处理模块主要介绍了数据处理的设计流程和FFT算法的流程;远程通讯模块主要介绍Boa服务器的配置和动态实现技术—CGI的工作过程和原理,最后是设计了测试网页;QT人机界面的设计中主要是QT的安装和用Qt设计器设计界面。硕J:论义基于ARM的远程l【l能质量:晓测系统的{¨f究7结论随着国民经济的高速发展和社会的进步,电能已经作为一种特殊的商品越来越受到人们的重视。由于非线性负荷、冲击性负荷以及不平衡负荷在电网中大量的投入使用,使得电能质量日趋严重。电能质量的实时监测既可以为电能质量分析提供了重要的前提条件,又可以为改善电能质量、制定有关治理措施和提供必要的依据。所以电能质量监测装置的研制有着重要的现实意义和广泛的市场前景。本文是研究了国内外电能质量监测装置的发展状况的基础上,提出了将¥3C2410和嵌入式Linux应用于电能质量监测装置中。本文工作主要表现在以下几个方面:(1)系统的硬件电路的设计。硬件部分采用¥3C2410作为处理器,外围设计了电源电路、复位电路、以太网接口电路、串口接口电路、NANDFlash接口电路、SDRAM接口电路等外围电路,并将嵌入式Linux操作系统移植到装置中,修改和编写了设备驱动。(2)FFT算法的研究和实现。谐波分析的重要算法就是FFT算法,本文主要研究了按时间抽取中的基.2FFT算法。(3)远程监测Boa服务器的配置。首先对Boa服务器进行分析和配置,并构建了嵌入式Web服务器。然后分析CGI技术的原理,利用已有的CGI程序库——CGIC,设计出本文CGI程序,使得远程用户使用普通浏览器对监测装置进行参数监测和控制,达到远程监测的目的。(4)QT人机界面的实现。本文对QT的整个开发流程进行了一个较深入的研究,利用QT设计器以及特有的信号与槽的机制成功开发出了数据显示界面。由于时间有限及作者经验不足,本文所设计的系统还有很多有待于进一步改善之处,主要表现在:(1)算法的改进。较低的计算效率以及占用较多系统资源等固有的缺点,使得传统FFT算法难以满足电能质量监测越来越高的要求。现代电能质量的研究已向着高精度、、高速度、高实时性和高可靠性的技术研究方向发展。深入研究现代测量技术来取代传统的方法是有待进一步开展并具有现实意义的工作。‘(2)实时操作系统的选用。本系统采用的嵌入式Linux系统是非实时性的。可以选择实时性较高的、比较成熟的嵌入式操作系统,如KURT—Linux、RT—Linux及Vxworks,移植到本系统中以提高本系统的实时性。(3)为了满足不同的需要,可以增加USB接口这种通讯方式。(4)常规的软件同步采样法中由于理想的同步条件不能满足,就会产生周期误差,可用改进的算法来减小误差。改进算法的主要有偏差累积增量法、采样间隔动态调整算657结论硕l:论文法和实时最佳同步采样法。随着电力系统的发展和科学技术的进步,对电能质量监测提出了更高、更新、更多的要求。目前,电能质量监测向着计算机化、网络化、智能化、多功能化的方向迅速发展。顾I:论文基于ARM的远程l乜能质量||{c测系统的研究致谢本论文是在导师蔡卫峰的细心指导下完成的,在研究生阶段的学习过程中,导师给予了我详细耐心的指导和极大的支持。导师严谨的治学态度、认真负责的工作作风、和蔼真诚的待人风格,都给我留下了深刻印象,也让我受用一生。感谢我的家人,他们在我学习期间给予我的关心、鼓励和支持,是我能顺利完成学业的一大动力,是我生活、学习工作的精神支柱。在此,我要特别感谢我的舍友王黔川、陈旭。在研究生生活的最后阶段,无论是从学习上、生活上还是精神上,都给予了我莫大的关心、支持和帮助。另外,感谢在研究生生活阶段中所有关心和帮助过我的同学、朋友,谢谢他们给予的关心、鼓励和支持!最后,我还要感谢各位老师和专家在百忙之中评阅我的论文,您的指导将使我受用匪浅。谢谢!67参考文献颂1:论文参考文献[1]肖湘宁.电能质量分析与控制[M].北京:中国电力出版社,2004[2】HUANG.SHYH-JIER,HSIEHvisualizationofpowersystemCHENG-TAO.Feasibilityoffi'actal—Basedmethodsfordisturbances[J].ElectricalPower&Energy2001,23(1):31—36Power【3】HUSSIANA,SUKAIRIMandH,eta1.AutomaticDetectiOilofQualityonDisturbancesIdentificationofTransientSignals[J】.InternationalSymposiumSignalProcessinganditsApplication(ISSPA),KualaLumpur,Malaysia,2001,13—16[4】全国电压电流等级和频率标准化技术委员会电压电流频率和电能质量国家标准应用手册[M】.北京:中国电力出版社,2001[5】赵新民,王祈.智能仪器设计基础[M】.哈尔滨:哈尔滨工业大学出版社,1999【6】朱永强,尹忠东,肖湘宁,申展.电能质量监测技术综述[J].电气时代,2007,5:67—69【7】孙树勤.电压波动与闪变[M】.北京:中国电力出版社,1998[8]潘贞存,陈清等.电能质量及其监测方法的研究[J].山东电力技术,1997,3:55.58【9]蔡芬.电力系统频率[M].北京:中国电力出版社,1998[10】中华人民共和国国家标准,电能质量电力系统频率允许偏差[M】.北京:中国标准出版社,1996【11】中华人民共和国国家标准,电能质量供电电压允许偏差[M】.北京:中国标准出版社,1991‘【12】中华人民共和国国家标准,电能质量公用电网谐波[M】.北京:中国标准出版社,1994【13】中华人民共和国国家标准,电能质量三相电压允许不平衡度【M].北京:中国标准出版社,1996【14】孙树勤.电压波动与闪变[M】.北京:中国电力出版社,1996[15】BollenMHJ.Understandingpowerqualityproblems,voltagesagsandinterruptions[J].IEEEPRESSPiscataway.NewJersey,2000,16(8):23—28[16】中华人民共和国国家标准,电能质量电压波动和闪变[M].北京:中国标准出版社,2000[17】中华人民共和国国家标准,电能质量暂时过电压和瞬态过电压[M】.北京:中国标准出版社,2002[18】胡铭,陈珩.电能质量及其分析方法综述【J】.电网技术:2000,24(1):3.6·38【19】Pinsky.IntroductiontoFourierAnMysisiandWavelets[M].北京:机械工业出版社,2003[20】侯朝焕,阎世尊,蒋银林.实用FFT信号处理技术[M】.北京:海洋出版社,1990【21】杨磊.基于嵌入式实时操作系统的电能质量分析仪软件的研究【D】.【北京:华北电---_●———-—_—●_----——————————-—————●————●——●—_-__-_--———_--_-__●__—_-_---_●___--__●__●_-______●_●__-—--_--_-——___-●——_————_-__●_●-__——_●●-—_-一——坝I-论文綦于ARM的远程IU能质量jI在测系统的研究力大学硕士学位论文1,2005[22]纪纯杰,贺晓能.内核分析及常见问题解答[M].北京:人民邮电出版社,2000【23】Tm苗.嵌入式系统设计与实例开发一基于ARM微处理器与/lC/OS.II实时操作系统【M].北京:清华大学出版社,2002[24]SamsungElectronics.¥3C2410user’smanual[S].2004[25]李驹光,聂雪嫒,江泽明等.ARM应用系统开发详解[M】.北京:清华大学出版社,2003[26】于明,范书瑞,曾祥烨.嵌入式系统设计与开发教程[M】.北京:电子工业出版社,2006[27】寇戈等.模拟电路与数字电路【M】.北京:电子工业出版社,2004[28】吴丙申,卞祖富.模拟电路基tiltl[M].北京:北京理工大学出版社,1997[29】傅晓程,祁才君.ADS7864及其应用[J】.仪表技术,2002,2:23.25【30】王福增,王成海,董建友.ADS7864在电网数据采集中的应用[J].现代电子技术,2003,7:85-87[31】张辉宜,陶陶,赵海军.S3C44BOX嵌入式处理器与ADS7864的接口技术[J】.计算机技术与发展,2007.17(2):78.80[32】Texas【33】CirrucInstruments.ADS7864USer’SLogic.CS8900AUSer’Smanual[S].2000manual[S].2001[34】陈鹏等.基于以太网控制器CS8900A实现嵌入式系统的网络互连[J].电子工程师,2002,28(12):4—6【35】李迎春,孙友伟.基于CS8900A的电力监控系统以太网接口设if[J].西安邮电学院学报,2004,9(3):38.40[36]SamsungElectronics.K9F1028user’Smanual[S].2001【37]Hynix.HY57V561620CTuser’smanual[S].2004[38]袁太生,张素琴.嵌入式环境下Linux移植问题的探讨【J].计算机应用研究,2003,11:61-63【39]陈峰,李滨滔,戈志华.基于¥3C2410的嵌入式Linux系统构建[J】.嵌入式与单片机,2007.24:55.57[40】万永波,张根宝,田泽.基于ARM的嵌入式系统Bootloader启动流程分析[J].微计算机信息,2005.21:90.93[41]范艳开.基7:agM的嵌入式linux操作系统移植[D】.[陕西:西北工业大学硕士论文】,2005【42】秦蔚.A蹦平台下linuX内核移植技术的分析研究与应用[D】.[云南:昆明理工大学硕士论文】,2004【43]陈莉君.Linux操作系统内核分析[M】.北京:人民邮电出版社,2002参考义献硕I二论文[44JMichaelKJolmson,eta1.LinuxKernelHackers’Guide.1998firstNAND—specificflashfile[45】CharlesManning."IntroducingYAFFS,thesystem",http://linuxdevices.tom/articles/AT9680239525.html[46]刘振纲,刘成安,卢剑翔.嵌入式Linux中Ya凰根文件系统的实现[J】.现代电子技术,2007,23(1):108-109[47】魏永明等译.LINUX设备驱动程序[M].北京:中国电力出版社,2005[48】孙天泽.嵌入式设计及Linux驱动开发指南~基于ARM9处理器[M】.北京:电子工业出版社,2005[49】黄布毅,张晓华.基于ARM.Linux的SQLite嵌入式数据库技术【J】.单片机与嵌入式系统应用,2005,30(4):21.24.[50]雷小俊,李伟.SQLite在嵌入式W曲服务器中的应用[J].信息技术,2006,6:129-130【51]李晓竹,赵毅.基于电量采集装置的FFT算法研究[J】.科技咨询导报,2007,28:45【52】许剑.基于ARM的嵌入式电力谐波分析系统的研究与设计[D].[广东:中山大学硕士学位论文】,2005[53】LarryD.Jo.hnN.BoaWebserver[EB/OL].http://www.boa.org/,2000[54]杨虎.CGI步步高[M].北京:机械工业出版社,2001[55】黄光奇.CGI编程指南[M】.北京:电子工业出版社,1999[56】张移山.CGI程序设计指南[M】.北京:中国水利水电出版社,1998【57】AbrashM.图形程序开发人员指南[M].北京:机械工业出版社,1998【58】Xteam(c9国)软件技术有限公司.Qt程序设计[M】.北京:清华大学出版社,2002【59】王田苗.嵌入式系统设计与实例开发[MI.北京:清华大学出版社,2004【60】倪继利.QT及Linux操作系统窗口设计[M】.北京:电子工业出版社,2006硕j二论文基十ARM的远程I乜能质量临测系统的研究附录A攻读硕士学位期间发表的论文和参加的科研课题1攻读硕士学位期间投搞的论文电能短时扰动信号检测与分类.投《华东电力》杂志.2攻读硕士学位期间参加的科学研究情况:南京理工大学校科研发展基金项目:基于嵌入式系统远程电网电能质量与控制技术研究(XKF07049)。在该项目中,本人工作主要负责嵌入式系统的开发,包括Linux内核的裁剪,Linux设备驱动程序的编写,Boa服务器的通讯和基于QT的GUI界面的开发;同时,进行基于FFT的算法和软件的开发。71附录颂.I:论义附录BCGIC的部分基本函数1.cgiFormResultTypecgiFormString(char木name,char木result,intmax)该函数用于从输入域name中拷贝max.1个字节的字符到result指定的缓冲区。如果输入域不存在,则拷贝厂一个空字符串到result缓冲区中,此时返回值为cgiFormNotFound。如果字符成功拷贝到指定缓冲区,返回值为cgiFormSuccess。2.cgiFormResultTypecgiFormStringNoNewlines(char串name,char奉result,intmax)该函数作用与cgiFormString函数类似,只是所有的换行和回车符都去除了。3.cgiFormResultTypecgiFormStringMultiple(char宰name,char宰枣宰ptrToStringArray)若同一名字有多个输入域,或域中的字符串可以动态变化,则可以使用本函数,它把名为name的所有输入域的值放在prtToStringArray中。4.voidcgiStringArrayFree(char木木stringArray)该函数用于释放分配给stringArray的内存。5.cgiFormResultTypecgiFormInterger(char宰name,int睾result,intdefaultV)该函数用于从输入域中去除整数放入result中。6.cgiFormResultTypecgiFormIntergerBounded(char乖name,int幸result,intmin,intmax,intdefaultV)该函数用于从输入域中将在规定范围内的整数取出并放入result中。7.cgiFormResultTypecgiFormDouble(char幸name,double奎result,doubledefaultV)该函数用于将输入域中的浮点数取出并存放在result中。8.cgiFormDoubleBounded(char*name,double幸result,doubledefaultV)。rnin,doublemax,double该函数用于从输入域中取出在规定范围内的整数则取出并将其存放在result中。9.cgiFormResultTypecgiFormSelectSingle(char·name,char·宰choicesText,intchoicesTotal,int宰result,imdefaultV)该函数判断复选框中的选项,用户只能选择众多选项中的一项,当用户提交表单,该函数将选择的项拷贝到由result指定的区域(result指向一个整数)。10.cgiFormResultTypecgiFormSelectMultiple(char·name,char·幸choicesText,intchoicesTotal,int宰result,int幸invalid)该函数判断复选框中的选项,用户可进行多项选择,当用户提交表单,该函数将所选的项拷贝到result指定的区域(此时result指向整数型数组)。11.cgiFormResultTypecgiFormCheckboxSingle(char乖name)该函数用于判定复选框是否被选中,选中则返回cgiFormSuccess,否则返回cgiFormNotFomad72硕f二论文接于ARM的远程电能质量髓测系统的研究12.cgiFormResultTypecgiFormCheckboxMultiple(char木name,char料valuesText,intvaluesTotal,int*result,int木invalid).该函数cgiFormCheckboxSingle类似,但它处理同一名字有多个复选框的情况。name指向复选框的名字;valuesText指向包含多个复选框中参数的一个数组;valuesTotal指向复选框的总数;result.是一个整型数组。复选框如果选中用1代表,没有选中则用0代表。l3.c西FormResultTypecgiFormRadio(char书name,char料valuesText,intvaluesTotal,int*result,imdefaultV)该函数作用类似于cgiFormCheckboxMultiple,只是这里是单选按钮而不是复选框。14.voidcgiHeadContentType(char幸mimeType)该函数用于告知浏览器返回的文档的类型。15.cgiEnvironmentResultTypecgiWriteEnvironment(char木filename)该函数用于将当前的CGI环境变量写入rilename文件中以便调试时使用。16.cgiEnvironmentResultTypecgiReadEnvironment(char宰filename)该函数用于从filename文件中读取CGI环境变量以便调试。基于ARM的远程电能质量监测系统的研究
作者:
学位授予单位:
荆小刚
南京理工大学
1.期刊论文 宋惠忠.俞建军.罗耀强.SONG Hui-zhong.YU Jian-jun.LUO Yao-qiang 一种基于网络化的新型电能质量综合监测系统的实现 -电力设备2008,9(4)
针对目前国内对提高电能质量综合监测水平的迫切要求,参照国际电工委员会(IEC)推荐的方法,结合工程实际,对国家标准规定的六项电能质量指标作出了监测,为了提高测量精度和实时性,同时易于用计算机实现,构造了一种网络化的新型电能质量监测系统.该系统可完成国标规定的电能质量指标的测量,并有数据显示、存储、通信和录波等功能.实践表明该系统运行情况可靠、稳定.
2.学位论文 王云杰 电能质量监测系统及PQDIF格式应用研究 2009
电能质量指标的监测和分析是改善电网电能质量的前提条件,电能质量监测系统的提出为及时、准确、系统的了解电网电能质量起到了重要的作用。
本文首先从电能质量问题引起人们关注的原因入手,指出构建电能质量监测系统的紧迫性和重要性,并介绍了一种基于WEB技术的电能质量监测系统的设计,系统由一个中心节点和多个分布式节点组成,可同时对多厂商在线监测设备所采集的数据进行监测和分析,系统通过适配器设计模式来实现系统对多厂家设备的兼容。该系统是根据各电能质量测量装置采集的原始电能质量数据经广域网络传输到监测中心后,在监测中心经存储、统计、分析形成报表或图形,再通过Web服务器进行电能质量信息发布的一种基于Web技术的监测管理模式。
其次,针对电能质量监测系统建设现状,多厂商电能质量监测设备共同服务于电能质量监测系统,使建立在多数据源、海量数据基础上的电能质量监测系统难以形成统一的数据摄取模式,因此,统一的电能质量数据交换格式在构筑电能质量监测系统中显得尤为重要,本文就IEEE标准委员会推荐的电能质量数据交换格式——PQDIF(Power Quality Data Interchange Format)进行了深入的研究,并对其实现方法做了详细描述。 最后,文章也指出了PQDIF格式在系统电能质量监测系统数据集成领域的局限性,并给出了具体的改进措施。
3.期刊论文 于雪莹.苏炎 一种适用于农村低压电网的电能质量监测系统 -山东电力高等专科学校学报2005,8(1)
介绍了电能质量监测的重要性以及在农村低压电网推行电能质量监测系统的现实意义.通过简单介绍低压电力载波抄表系统提出一种基于载波抄表系统的电能质量监测系统的设计思路,并简单介绍了该系统的硬件、软件以及利用傅立叶变换分析方法的可行性.
4.学位论文 韩绍甫 小波分析在电能质量监测系统中的应用 2006
电能质量监测作为电能质量监控的一个关键环节,在系统运行管理和技术监督中起着重要作用,同时也是保证系统良好供电质量的必要条件。功能强大的电能质量监测系统的建立,能详细记录系统运行过程中的电能质量指标、监督电能质量污染源,并进一步为电网电能质量的治理和改善提供依据。电能质量主要包括稳态电能质量和动态电能质量。本文提出了在小波分析的基础上开发电能质量综合监测系统的思想,不仅能监测常规的稳态电能质量问题,还能实现对电压骤降、骤升、间断等动态电能质量的监测。
本课题从以下方面对电能质量监测进行了研究。1.利用小波分析能检测突变点的性质,本文应用小波变换方法实现了电压骤升、电压骤降、电压间断等动态电能质量的监测,仿真表明,小波分解后的高频系数重构图形可清楚地确定电压发生突变的位置,得到电压突变的起止时刻。
2.应用小波包方法实现稳态电能质量的监测,从而较好地跟踪谐波的变化趋势,同时对高频信号进一步分解,具有较好的高频分辨率,仿真表明,可以利用小波包变换可以较为准确地提取出电号中的所有正弦信号的时频特性,达到对谐波分析的目的。
3.结合GPRS通讯技术与J2EE技术搭建了电能质量监测系统,从而实现电能质量参数的远程、实时监测和分析。该系统具有远程监控、客户端免维护、服务器端易维护、系统安全可靠、操作简单方便等优点,并通过国家电网公司验收,在上海市区电力局正式投入使用。
5.期刊论文 杨进.肖湘宁.王宏 网络型电能质量监测系统中PQDIF的实现 -现代电力2004,21(6)
在对电能质量监测研究现状、分类及测量方法进行阐述的基础上,归纳了电能质量监测数据特点,给出IEEE推荐使用的电能质量数据交换格式(PQDIF)在电能质量监测网络中的具体实现设计思路和方法,在此基础上实现了PQDIF数据格式的转换,完成PQDIF在国内推广的起步工作.
6.学位论文 谢锐凯 分布式电能质量监测系统监测原理及系统研制 2008
随着电力系统非线性负荷及冲击性负荷的不断增加,电能质量问题日益突出。提高电能质量的关键,首先是能够实时对电网和用户的电压、电流进行全天候、全方位监测,而且要求监测信息具有透明性和共享性。为此本文提出一种分布式电能质量监测系统的构建方案,并在此基础上研发出一套分布式电能质量监测系统。该系统目前已在梅州市某110kV电站顺利运行,为该地区提供大量电网电量数据,为进一步改善电网电能质量提供依据。 本文主要研究工作如下:
(1)介绍电能质量监测算法及装置的国内外研究现状,分析各种谐波算法的优缺点,为选择谐波分析算法作为分布式电能质量监测装置的核心算法奠定基础;
(2)详细介绍了广义dk-qk坐标变换算法和FFT算法,结合现场及考虑硬件,提出两种算法的使用范围,由此分别在上位机与DSP软硬件中采用,使两种算法的优势得到最充分发挥,提高了电能质量的实时采集和处理能力。
(3)提出分布式电能质量监测系统的构建方案,由此设计出分布式电能质量监测系统。系统具体采用DSP作为分布电能质量监测插件,以进行实时计算与采样数据传输;工控机作为数据库中心和处理中心,设计出实时电能质量分析软件与远程电能质量监测软件,该软件嵌入网页中并通过Internet向外发布,用户可以通过浏览器向Web服务器提交命令和参数,获得检测点的当前和历史数据。
(4)研制成功的分布式电能质量监测系统,已经在广东省梅州市某110kV变电站上运行,现场运行结果表明,系统运行良好,达到了实际要求。
总体而言,与传统电能质量监测装置相比,本课题研制的分布式电能质量监测系统具有成本低、配置灵活、拓展方便、动态实时性高、通讯能力强、性强等优势。可以进一步在电力系统电能质量监控中广泛应用。
7.会议论文 刘东晖.常弘.黄伟.焦莉 采用IEC 61850标准的电能质量监测系统的初步研究 2006
随着人们对电能质量的日益关注,电能质量的监测显得愈发重要.本文从国外电能质量监测装置技术的发展趋势入手,探讨了IEC61850标准在电能质量监测系统中的运用,研究了一种新型的符合IEC61850国际标准的电能质量监测装置,其数据格式采用PQDIF-XML方式,从而实现数据的共享及传送.本文还对电能质量在线监测网络系统进行了研究,研究结果表明该监测系统具有广阔的应用前景.
8.学位论文 黄攀 基于GIS的电能质量监测系统的研究与开发 2005
随着大量电力电子变流器及各种非线性负荷在电力系统中的广泛应用,各国电力工作者已经对它们所带来的各种电能质量相关问题高度重视。电力市场环境下提出了电能“优质高价,低质低价”的原则,一个双方认可的电能质量监测系统对供用电双方就显得更加重要。传统的电能质量管理大多是借助于监测仪,或者基于文字、简单图形的软件系统,他们通常是离线分析和局部监测的,已很难满足发展的需要。
本文结合湖南省科技重点攻关项目——基于WebGIS的电能质量监测系统的开发(湘科计字[2002]87号),对地理信息系统(GIS)技术在电能质量监测中的应用进行了研究,首先介绍了电能质量的国家标准和蓬勃发展的地理信息技术,分析了目前国内外电能质量监测系统研究的开发现状,然后提出在电能质量监测系统中,利用GIS可视化信息技术实现图形与数据相结合的方法。该方法以数据可视化的方式,给电网管理者提供一种崭新的决策支持方法,从而大大提高了电能质量的现代化管理水平。
本文还提出了采用客户机/服务器模式(C/S)和浏览器/服务器(B/S)相结合的混合模式来实现电能质量监测系统,该系统的C/S部分用MapX控件实现组件化的地理信息技术,B/S部分采用Sun公司的J2EE标准构造,采用MapXtreme作为地图服务器。该系统包括数据表现层、应用服务层和数据服务层,是典
型的三层结构。文中仔细分析了C/S和B/S两种模式下GIS技术的实现方法。本文还分析了目前主流的傅立叶变换方法和小波变换方法在电能质量指标分析中的应用。最后,本文给出了该系统从硬件电路设计,到通讯,到软件系统的需求分析、详细设计的整套解决方案。
研究结果表明,在电能质量监测系统中应用GIS技术,可以有效地提高管理效率、降低管理成本和提供可靠决策支持,实现电能质量管理的科学化、信息化和现代化。
9.期刊论文 李新中.上官帖.辛建波.孙旻 开放式电能质量综合监测系统的研究 -江西电力2007,31(1)
针对现有电能质量监测系统的不足,提出了开放式电能质量综合监测系统的构想,基于IEC 61970和IEC61850的电能质量数据建模,采用模型驱动架构方法进行开发,提供遵循标准的通用服务接口共同实现.首先叙述了开放式电能质量监测系统的概念,其次从系统的组成、设计思想和实现方案三个方面进行了阐述,最后分析了系统建设中存在的安全问题.
10.学位论文 李玎 基于Web技术电能质量监测系统的软件设计 2008
电能质量(Power Quality)问题随着电力系统的产生就已经有了,经过了多年的发展,电能质量也有了一些新的变化,考查电能质量的指标已经不仅仅停留在传统的电压、频率和供电可靠性三个指标上了。随着大量非线形、冲击性、大扰动负荷接入电网,电能质量问题日趋严重起来,而与此同时,用户和系统对电能质量的要求又不断提高,电能质量中的谐波问题和一些暂态扰动指标(如电压凸起、电压凹陷等)越来越受到供、用电双方的重视。因此,必须对电能质量进行有效地监测以满足用户和系统双方的要求。
传统的电能质量监测仪器和方式都不能满足当今对电能质量监测的要求,除了不能做到实时在线的监测和实现数据共享之外,也不具备评价、分析、控制等一系列功能。故利用计算机信息技术发展及电网数字化和自动化的成果,建立基于Web技术的电能质量监测系统,实现对各监测点的统一在线管理是大势所趋。
文中首先对各机构给出的电能质量定义和分类做了介绍,作为该系统运行调研的理论基础和数据信息评价的参考基础。介绍了国内外及各研究机构的电能质量评价标准体系,并以我国的国家标准为基础,对其六项评价指标及其监测方法进行了分析。
本文深入分析并设计了多层分布式的电能质量监测系统的网络结构,将传统的C/S模式和本文采用的B/S模式作了比较,对本文系统软件设计采用的J2EE平台和Web服务器Apache Tomcat作了技术介绍,并对系统的三层式结构及起相对应的功能作了详细地说明。
本文设计的系统采用My SQL网络数据库,文中对My SQL的特点作了介绍,并给出了它的应用编程接口、Web访问技术以及数据库访问接口,完成了包括各项PQ评价指标及其记录数据相应的报表、用户信息、监测点信息、PQ标准及相关文献等内容的数据库的设计。
通过设计和建立本文的电能质量监测系统,用户可用Web页面登录系统,查询各电能质量指标数据,实现实时查询和处理数据、显示图表、输出和打印报表、评价和分析电能质量水平等模块化功能,节省了信息资源和处理数据所需的时间,实现了系统优化。
本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1368370.aspx
下载时间:2010年5月25日
因篇幅问题不能全部显示,请点此查看更多更全内容