基于FPGA的智能用电器识别系统
一.项目背景
随着电子技术的发展,以单片机为核心的多功能电能表已逐渐普及,这一类电能表具有较高的测量精度和运算速度,能够对各月电能的消耗进行记录,保存电能的最大需求量,设置参数等。但这仅仅局限于计量用户全部用电器的电能消耗,并不能精确到每个用电器。并且这一类电表在测量方法上是仅根据电网的电压电流的幅值进行电能的计量和统计,因而功能比较单一。上述电表网络的通信能力很差或者根本不具备网络通信能力,难以实现同网络上位机的通信和数据同步。现有的用电器识别技术仅能在用户有大功率的用电器加载时进行控制继电器断电处理,并没有实现单个用电器识别的功能。如果要检测每个用电器的用电量,现行的通用方法是在每个家用电器的电源入口安装电压、电流传感器,再根据收集到的数据进行电量测量。这样虽然能够达到相应的目的,但是价格偏高,安装复杂,可行性较差。
基于上述背景的分析,我们希望能够创造出一套系统,改进现有电器识别系统,力争使用最低的成本实现最简洁最精确的电器识别,并通过一个客户端反馈给用户,实时反映家庭用各种电器的功耗指标。
在此,我们提出了一种基于基于阈值的加权识别算法的用电器识别算法,并通过实验验证了其可行性。
二.项目方案
智能电器识别系统以Xilinx Spartan 6 FPGA 为控制核心,通过对母线电流进行谐波分析,提取用电器的特征参数;以模糊识别为基础,以递归求解方程实现了对单个用电器、多个用电器的识别,并对新用电器加入数据库提供简易的解决方案。
三.项目详细设计
硬件设计
图3. 1智能电器识别系统的硬件电路结构框图
智能电器识别系统硬件电路的设计主要包括电网电压电流的采样电路,以及主控制器电路。由于系统的对用电器的参数采集主要来自硬件电路,所以对电压电流的采样必须准确。系统仅根据电线进户端的电压和电流就能识别出正处于使用状态的用电器,并记录相应的用电量,投入较低,安装简单。
Microblaze控制电路设计
智能电器识别子系统的硬件设计包括设计电网电压电流采样电路以及控制器电路。
电器识别模块主控芯片采用Xilinx Spartan-6 ,利用片外的12位多通道高性;能ADC的数据采集系统,对电网电流信号进行采样,提取相应的特征参数。利用板载的BPI-Flash存储器,对数据进行记录。内核是Microblaze,它是一个32位哈佛结构的处理器,其最高性能峰值高达83.3 MIPS。基于此芯片研发的系统可以方便的完成用电器的识别、电量测量、数据的传输,事件管理等工作,精度高可靠性强。
采样电路设计
图3. 2 电网侧电压采样电路
电网电压采样电路以电压互感器TVA1421-01为核心构成,如上图所示。此电压互感器为电流型,先将待测电压转换成电流信号输入互感器的一次侧,电阻R27将互感器二次侧的输出电流流转换为电压信号。电阻R27和并联电容C59构成低通滤波器。
在输入正弦信号的正半周上升的四分之一周期内,LM311的输出三极管导通,电容两端的电压跟随输入正弦信号;当正弦信号到达峰值以后,LM311 的输出三极管截止,电容两端的电压保持为输入正弦信号的峰值,等待单片机采样;单片机采样后,输出高电平信号,Q1导通,给峰值保持电容放电。最后一路为实时电压采样电路,将电压互感器输出的交流电压抬高2.5V,送至ADC。
电网侧电流测量
图3. 3 电网侧电流采样电路
并网电流即输出滤波电感的电流,为了保证安全和控制系统的可靠性,并网电流的采样电路必须采用隔离。本电路采用电流霍尔传感器CSM010SY进行隔离采样,该电流霍尔应用霍尔效应闭环原理的电流传感器,能在电隔离条件下测量直流、交流、脉冲以及各种不规则波形的电流。传感器参数:线性度<0.1%,精度<0.7%,响应时间<1us,带宽200KHz,全部满足本测量要求。采用霍尔采样相对电流互感器的好处是能够检测并网电流的直流分量,并能通过软件及时将其消除。电流霍尔输出交流电压,将其通过加法电路抬高2.5V后,送入ADC。
软件设计
图3. 4 电器识别软件流程图
智能电器识别系统采用了基于阈值的加权识别算法和解多维线性方程组两种核心算法。
首先运用12位ADC ADS7841对电压电流信号进行采样。在数据采样阶段,为了使系统运行时数据不发生紊乱,只能使系统在适当时刻采集数据。在数据处理过程中,数据采样是需要被禁止的。然而,为了保证每次数据处理过程保持一定的一致性,采样的开始时刻必须要有基准。由于本系统对电网电压做了过零检测,电压刚好过零的时刻为数据采样提供了可能性。基于以上分析,实施数据采样的具体方法为:设立标志位Data_hold用来指示数据是否需要保持,置1则系统认为需要保持,它仅发生在数据采满256个点的时刻,置0则认为采样可以在某个时刻进行,它仅发生在数据处理完毕的时刻;设立标志位AD_enable用来指示AD采样时刻是否到来,置1仅发生在Data_hold为0且电压过零时刻到来的时刻,置0发生在Data_hold为1的时刻。为满足在50Hz电网频率下,一周期采样256个点的需求,设定了一个20000/256us的定时器。采样完成后把本次的采样数据和上一次的采样数据做差,得出本次所新增用电器的采样数据,而后对采样数据提取相应的特征参数,同时对采样到的数据进行FFT变换,再次提取相应的特征参数。本系统用电器的特征参数包含电流峰值、电流均值、电流有效值、电流基波、电流谐波幅值、电流谐波相位、用电器有功功率、电流谐波长度等。电流峰值、电流均值在采样时实时对电流数据进行处理就能够得到。而电流有效值、基波等特征参数能够在FFT变换之后得到。FFT变换之后,所得到的数据是尚未归一化的,为了保证特征参数在存取过程中的一致性,需要将数据进行归一化。归一化的准则为:以基波幅值分量为100,其他谐波成分相应等比调整。为了使归一化数据能够得到恢复,还需要存储每个用电器的功率信息。然后,再根据这些参数与数据库中相应参数做出比较,为了达到用电器识别的目的,本系统采用下图所示的基于阈值的加权识别算法方法。首先针对某一特征参数和现有数据库中的相应值进行模糊算法比较,如果特征值和现有值匹配非常好,则给出一个很高的分值,随着匹配度的下降所打的分数也相应的降低。而后,针对每种特征参数模糊化的识别结果,都得到相应的匹配系数,匹配系数乘以该参数占有分值,即能得到该参数的得分。最后,将所有特征参数的得分相加,即得到该用电器的匹配分值。对于数据库中的每种用电器,都会得到一个相应的分值,通过最大分值与及格分值的比较,决定用电器识别是否成功。若最大分值已经高过定义的及格线,则认为系统电器识别成功,结果即为得到最大分数所对应的用电器;若最大分值没有超过及格线,则认为数据库中尚不存在此种用电器,需进行下一步处理。
图3. 5 基于阈值的加权识别算法方法的示意图
下图所示为电器识别的流程图。首先根据进户端的功率变化判断用电器是运行还是关闭,如果功率不变则验证识别结果是否正确、更新数据库特征信息权值信息、传输用电识别信息,之后再继续检测功率变化。由于用电器的打开识别和关闭识别是两个类似的过程,下面以用电器打开识别为例说明识别过程:开始检测到电线进户端功率增加,说明有用电器开始运行,此时根据上文说明的提取特征参数方法对运行的用电器进行特征参数的提取,先与数据库中单个用电器的相应参数进行对比,采取上文中所述的基于阈值的加权识别算法方法对用电器进行相关评分。
图3. 7 基于阈值的加权识别算法方法的示意图
实例说明
为了更清晰的说明下面列举一个打分的实例:
表3. 1显示器数据库特征值表
Electrical equipment |
Displayer |
|
Harm_length |
+006 |
|
Harm_num |
FFT_R |
FFT_I |
+001 |
-029 |
+095 |
+003 |
-014 |
-080 |
+005 |
+023 |
+067 |
+007 |
-025 |
-047 |
+009 |
+021 |
+032 |
+011 |
-014 |
-015 |
Database record Current_Harm |
如表上所示,为智能电器识别子系统的一个实例的数据库中显示器的电流谐波相关信息。Harm_length为总谐波长度;Harm_num为相应的谐波次数;FFT_R为FFT变换后该次谐波的虚部;FFT_I为FFT变换后该次谐波的实部。
表3. 2新用电器特征数据表
Electrical equipment |
New electricalequipment |
|
Harm_length |
+004 |
|
Harm_num |
FFT_R |
FFT_I |
+001 |
-011 |
+099 |
+003 |
-020 |
-050 |
+005 |
+011 |
+065 |
+007 |
-010 |
-060 |
New electrical equipment Current_Harm |
识别到一个新接入的用电器,分别和数据库存储的每个用电器相应参数作比较,给出分数。如上表所示,为本发明的一个实例的新识别到的用电器电流谐波相关的参数,这里以这一参数为例说明打分过程:电流谐波的总权值为0.8,也就是百分制中的80分,而谐波长度的权值为0.3,也就是80*0.3=24分;每次谐波的分配权值以数据库中的谐波参数为参考分配,比如本次和数据库中的显示器作比较,则每次谐波分配到的权值为0.7/6=0.117,再把新识别到的用电器的相应参数与其相比较得出分值,最后把这一参数所有分值相加,再把所有参数的分值相加可得出如下表。
表3. 3新接入用电器打分表(及格分数70分)
|
电流谐波 |
功率因数 |
电流峰均值比 |
总分 |
|
电脑 |
12 |
2 |
5 |
19 |
|
显示器 |
23 |
3 |
4 |
30 |
|
电风扇 |
72 |
9 |
9 |
90 |
正确 |
电灯 |
16 |
4 |
4 |
24 |
|
通过上表可知电风扇所打的分数最高,为90分,其余的分数都没有及格,可知该新接入用电器被识别为电风扇。同时开始记录该用电器的功率等相应参数,上述单个用电器识别过程为识别的第一阶段。如果所有分数均不及格则识别失败,转入识别的第二阶段。
识别的第二阶段:首先分析采集到用电器数据信息,将数据库中的每个用电器参数记录从Flash中读出,通过各用电器的功率信息与谐波信息进行不同用电器参数之间的排列组合,以用电器谐波长度为优先组合原则,按照用电器从少到多,得出不同用电器的组合参数。实际上,多个用电器的组合过程,就是一个解多维线性方程组的过程。之后,再使用类似单个用电器识别方法对多个同时开始运行的用电器进行识别。如果识别成功,开始记录用电器的功率等参数,并进行显示。如果所有分数均不及格则识别失败,转入识别的下一阶段。
识别的第三阶段:上述识别均不成功,说明数据库中没有存储该新接入用电器的特征参数,此时会动态地将该新用电器的特征参数加载到数据库,并提示输入该用电器的名字,至此整个识别过程完毕。
识别过程中,由于外界干扰,会有一定的误识别率。为防止系统的误识别,即使没有新用电器再接入系统,此时系统仍处于实时验证状态。在这种状态下,系统需要做的工作是:验证用电器识别结果是否正确,验证方法为,将识别结果叠加后的特征数据信息与实时信息模糊比较,得到识别结果,若识别结果不正确,则把识别结果清除,所有用电器重新识别,转入上述第一阶段,若正确,则继续处理;然后,由实时数据更新数据库特征参数的权值,以使系统更有本地化特征,更新数据库中特征参数权值的过程,实际是使用电器的正确识别结果分值最大化的过程。
表3. 4用电器能耗记录查询示意表
用电器名称 |
笔记本电脑 |
|||
使用时间段 |
使用时间 |
消耗电能 |
平均功率 |
|
2011.4.9 |
13:00-14:30 |
01小时30分钟 |
0.093KWh |
62W |
2011.4.12 |
18:30-21:40 |
03小时10分钟 |
0.411KWh |
65W |
2011.4.13 |
18:30-20:30 |
02小时00分钟 |
0.140KWh |
70W |
如上表所示,用电器识别成功后,会记录相应的能耗。其中,用电器能耗的查询记录格式为:用电器名称、用电器使用时间段、用电器的单次使用时间累计,用电器的功率,用电器的能耗等,并能生成相应的日统计、月统计、年统计等。并能针对相应的用电器进行功率限制,如果超出限制,则会实施断电处理。
用电器关闭识别过程和用电器打开识别过程类似,这里就不做过多赘述。
关键词: Xilinx Spartan 6 智能用电器识别
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码