基于物联网的非侵入式用电器在线监测系统设计与实现
2021-03-01王晓丽肖海飞
何 勇,王晓丽,肖海飞,沈 正
(上海工程技术大学 电子电气工程学院,上海 201620)
0 引 言
近年来,泛在电力物联网和智能电网成为了电力系统发展的趋势,而用户设备的负荷特征与用电细节是实现智慧用电和需求响应的支撑[1]。非侵入式监测技术则是获得用户用电信息的有效手段和关键技术[2]。因此,在物联网背景下采用非侵入式监测技术实现用电器的有效、快速监测与识别显得至关重要[1]。
传统的用电器监测主要是通过采用AD+MCU模式的用电器监测仪等实现,采集的数据通过自带的显示屏显示[3-4]。这类检测仪功能单一且存在着无法远程监测的问题,与电力物联的发展相背。李成勇等人在Arduino 平台下设计了单向用电器识别系统,但只是简单的通过对比用电器的电压和功率等来区分用电器,对用电器的辨识能力有限且不具备说服力[5];汪颖等人提出了一种基于V-I 轨迹曲线精细化识别的非侵入式负荷监测方法,识别效果较为优越,但是相关成果未能广泛验证,并且面临着样本库构建困难,算法普适性低的困难[6]。李静等人提出了一种用于家用智能电表的负荷识别方法,但该识别方法较为复杂,在家庭用电中大规模投入使用时面临着控制芯片难以实现的问题,并且未给出具体的实际应用方案[7]。
当前用电器监测与识别无法兼顾识别方法的优越性与实际应用时的切实可行性,因此,本文设计并实现了一种基于物联网的非侵入式用电器监测系统,可以实现对家庭多个用电器的电参数采集,用电器识别和数据远程传输等功能,在保证识别和监测功能的前提下兼顾了实际应用的可行性。最终的验证结果表明该系统很好地实现了监测、识别、数据传输等功能,系统可靠稳定,为家庭用电的智能化发展有实际推动作用。
1 系统总体设计
用电器监测系统结构,如图1 所示,由线下采集设备、服务器和上位机3 部分组成[8]。线下采集设备包括用电器监测仪和ZigBee 网络两部分。用电器监测仪采用高性能STM32F407ZET6 作为主控芯片使用,完成电参数的采集,FFT 处理和运行多维识别算法识别用电器等功能。采用TI 的CC2530 单片机进行ZigBee 组网,终端节点将用电器监测仪的数据通过网络统一汇总到协调器,再由协调器上传到服务器,服务器存储所有数据,以便远程访问。
图1 用电器监测系统结构图Fig.1 Structure diagram of power monitoring system
2 线下采集设备硬件设计
线下采集设备的硬件部分主要包括用电器监测仪部分和ZigBee 无线通信网络部分,其硬件结构如图2 所示。
图2 用电器监测系统硬件结构图Fig.2 Hardwarestructure diagram of power monitoring system
用电器监测系统由主控模块、电参数采集模块、显示模块、电源模块、存储模块、继电器保护模块等组成。具体的工作流程如下:电压和电流经互感器处理之后送入CS5463 电能计量芯片进行测算,STM32 读取CS5463 芯片获取用电参数,得到用电器的电压、电流、有功功率和功率因数等数字量;再运用芯片识别算法与提前录入用电器数据库的信息进行匹配,完成用电器种类识别的任务;最后由ZigBee 网络将用电器电参数信息和用电器种类上传到服务器,用户通过访问服务器在上位机端获取监测信息。
2.1 电参数采集电路设计
电参数采集电路选用CS5463 电能计量芯片,HCT215 电流互感器和ZMPT101B 电压互感器的组合电路。CS5463 是一款低成本,高精度的电表计量芯片,可根据一定算法对50 Hz/60 Hz 交流信号精确计算电压、电流的有效值、有功功率、无功功率、功率因数及谐波成分等主要电参量,可以很好地帮助实现本系统所需的电参数采集。电参数采集电路如图3 所示。
图3 电参数采集电路Fig.3 Electric parameter acquisition circuit
待测的电压和电流信号经过互感器处理后送入CS5463 芯片,CS5463 再通过内部的集成电路得出电流,电压和功率等电参数值,最后与STM32 采用SPI 协议进行数据通信,将电参数值送入STM32 供其处理。
2.2 ZigBee 无线通信网络设计
本次设计基于CC2530 单片机搭建ZigBee 无线通信网络,极大提高了系统的实时性,具体电路如图4 所示。CC2530 移植官方的Z-Stack,实现自动组网的功能。该网络分为协调器和终端节点两部分,终端节点与监测仪进行串口通信交互数据,之后通过无线网络将数据汇总到协调器,协调器使用GSM模块通过MQTT 协议将数据发送到服务器,供远程查看。
图4 无线通讯网络电路图Fig.4 Circuit diagram of wireless communication network
3 用电器多维识别算法设计
用电器的种类和型号日益增加,采用单一参数做为用电器的识别依据,辨识准确度较低,因此,采用多个电参数作为识别判据可以大大提高用电器识别的准确度。一般来说,用作用电器识别的电参数有电流、电压、有功功率、无功功率、功率因数、电压电流信号的谐波等,综合考虑不同用电器的特征电参数,本次设计选择用电器稳定工作时的电流有效值IRMS、有功功率P、功率因数λ和电流的k次谐波比IkHW(电流信号的第k次谐波有效值与基波有效值的比值)这4 个特征电参数作为用电器识别的判据。
3.1 特征电参量的提取
电流有效值、有功功率和功率因数都可以通过CS5463 测量芯片测得,只需通过程序读取即可。而电流的k次谐波比IkHW无法直接测得,离散傅立叶变换(DFT)可以帮助提取电流谐波,但其计算量太大,无法保证实时性,因此选择采用计算更快的快速傅里叶变换(FFT)求解电流的各次谐波,进而计算其k次谐波比IHWk。
快速傅里叶变换有多种算法,本次设计采用按时间抽取的基4 算法[9]。(Decimation In Time FFT,DIT-FFT)基4 时间抽取法的基本原理是将N点的时域信号x(n)分成4 组序列,分别计算这4 组序列的离散傅立叶变换,从而减少运算量。通过蝶形运算,将N点DFT 的计算分解为4 个N/4 点DFT,每个N/4 点DFT 分解为4 个N/16 点DFT……经过L级抽取后,一个复杂的FFT 就被分解为N个单点DFT 和L级蝶形运算,而单点DFT 就是该点时域序列本身,这样就能快速算出x(n)的频谱序列X(k)[10]。
本次设计将采集的长度为N的交流电流瞬时值数组,根据按时间抽取的基4 算法,经FFT变换后得到长度为N的离散序列,该序列由各次谐波的电流的幅度谱X(k)构成,X(k)即为电流的k次谐波的振幅值。根据k次谐波比IkHW的定义,有式(1):
本次设计中取电流的3 次谐波比I3HW作为识别参数。
3.2 识别算法
假设对于整个监测系统,所有的用电器种类为N,对其中的每一个用电器的电参数进行多次测量,取平均后得到一组特征向量,主要包括流有效值IRMS、有功功率P、功率因数λ和电流的k次谐波比I3HW,N个这样的特征向量构成一个4×N的矩阵A,式(2):
矩阵A中每一列代表一种用电器,每一行代表N个用电器的某一特征电参数,用电器的种类由列标号对应,用电器识别的数据模型库表示为矩阵A。
对于某一待测用电器,经过测量后得到其特征电参数,表示为矩阵B,式(3):
将矩阵A中的每一列与矩阵B依次作差后取绝对值,得到的差值矩阵表示为矩阵C,式(4):
对矩阵C中的每一行按从小到大的顺序排列,并用列标号代替原来的差值绝对值,每行取前n个差值最小的用电器,这里以n=4 为例,则可以得到一个4×4 的标号矩阵表示为矩阵D,式(5)。
矩阵D中的每个元素都是某一个用电器的列标号,即代表某个种类的用电器。理论上来说待测用电器越接近或等于某一数据模型库用电器x,则x的列标号应该在矩阵D中出现最多且出现时最靠左。因此只要统计矩阵D中出现过的全部列标号的出现次数,将次数最多的那个列标号所代表的用电器类型作为待测用电器的识别结果输出。实际中,考虑对于矩阵D每一行都按照从小到大排列,那么最左一列的列标号的置信概率最大,因为其代表的测量值与数据库记录值的差值最小,待测用电器更有概率为该标号的用电器;不同的特征电参数在识别过程中对于结果的影响权重也是不同的。因此,对于矩阵D在统计列标号出现次数时,应该增加一个权重来体现这种置信差距。本系统设计中初步采用式(6)作为权重矩阵。
D中每一个列标号的加权值可从矩阵W中对应获取,各用电器的加权出现次数由公式(7)求得:
Nikjk代表某个用电器出现了一次,Wikjk代表对应位置的加权值,通过式(7)可以求得所有识别结果的加权出现次数,最大者对应的用电器即为识别结果。
4 监测系统软件设计
4.1 STM32 主程序设计
本次设计的程序使用MDK5 和IAR 软件,利用C 语言编写程序。程序整体框图如图5 所示。
图5 STM32 主程序流程图Fig.5 STM32 main program flow chart
各功能子程序主要包括电参数的采集分析及存储程序、FFT 算法程序、用电器识别算法程序、键盘程序、液晶显示器显示程序、ZigBee 通信程序和上位机通信程序等。通过电参数的采集和FFT 算法处理,得到用电器正常工作时的电参数信息,从而为用电器识别提供数据支撑,识别算法和用电器电参数数据模型库通过用电器识别算法程序提前写入。
为了在STM32 上实现FFT 算法程序[11],需下载官方提供的DSP 库并添加至所建工程项目。添加时inc 文件下的stm32_dsp.h 和table_fft.h 两个文件是必须的,src 文件夹下的文件可根据需要有选择地添加,本次设计采用的是256 点的FFT,故只需添加cr4_fft_256_stm32.s 文件。
系统上电后,基于CC2530 单片机的ZigBee 网络自动搭建,与此同时,监测仪也对STM32 的I /O口、通用串口、SPI 接口、中断寄存器等进行初始化设置;接着对外围设备初始化,使外围设备处于待工作状态。用户可以通过按键或者ZigBee 网络远程实现对监测仪进行功能选择和参数设置。监测仪每采集到一次CS5463 数据后就会进行数据分析,将分析结果输出在LCD 显示屏上,并通过ZigBee 网络将数据上传至服务器。
4.2 识别算法软件设计
识别算法是整个用电器识别功能的核心,其算法程序流程如图6 所示。本次设计采用4 个电参数作为识别标准,拟建立8 类用电器的模型数据库。二维数组储存的是用电器识别数据模型库,对应矩阵A;一维数组储存的是测量和计算得到的特征电参数,对应矩阵B;二维数组Differ[4][8]储存的是差值绝对值,对应矩阵C;二维数组Sort[4][4] 储存的是排序后的用电器类型,对应矩阵D。
图6 识别算法程序流程图Fig.6 Identification algorithm program flow chart
4.3 ZigBee 软件设计
ZigBee 组网的整体过程非常复杂,这里采用TI公司给用户提供的ZigBee 协议栈(Z-Stack)进行组网[12],Z-Stack 包含了一个实时操作系统,用户只需要熟悉其API,就能够开发出满足自身需求的嵌入式软件。本系统需要完成对协调器和终端节点的软件设计,协调器和终端节点的软件设计流程分别如图7 和图8 所示。
图7 协调器软件设计流程图Fig.7 Flow chart of coordinator software design
图8 终端节点软件设计流程图Fig.8 Flow chart of terminal node software design
设计的ZigBee 网络分为1 个协调器和4 个终端节点,采用星型拓扑结构完成网络的搭建。协调器是网络的第一个设备,协调器在自身的初始化后,完成网络的启动。启动后,还负责接收来自终端节点的数据,最后将数据通过串口发送给主控中心,同时接收主控中心的数据,下发给下面的终端节点。终端节点是网络的最后一环,采集到的传感器数据会发送给协调器汇总,同时接收协调器的指令,完成对设备的控制。
4.4 服务器和上位机软件设计
搭建mosquitto 服务器软件,开启MQTT 服务后,用户连接MQTT 服务器,根据订阅的主题,即可以收到所需的数据。服务器端编写python 程序,对MQTT 数据进行监听,将所需的数据保存进Mysql数据库,同时处理来自用户的请求,可以实现对历史记录的访问。
为了实现实时在线监测,用电器监测系统采用ZigBee 实现远程无线数据传输,上位机采用具有跨平台功能且移植方便的Qt 编写,实现数据分析与展示。
5 测试分析
本系统的主要功能是监测多个用电器的用电信息和用电器种类,并且实现数据远程传输。通过1个协调器和4 个终端结点及用电器监测仪搭建系统并进行测试。协调器上电并初始化建立ZigBee 网络,每个终端结点距离协调器不超过100 m,监测仪和ZigBee 实物如图9 所示。
图9 ZigBee 终端结点和监测仪实物图Fig.9 Picture of ZigBee terminal node and monitor
对用电器实施远程监测前首先需对系统的识别功能进行测试。在测试前预先将用电器的特征电参量写入识别数据模型库,通过多次将用电器接入系统并记录系统识别成功次数的方式进行识别功能的测试,测试结果见表1。
表1 用电器识别测试结果Tab.1 Electrical appliance identification test results
通过多次测试实验可以看出,本文设计的用电器识别算法识别效果较好,对4 种用电器的识别准确度都在90%以上,满足设计使用需求。
为进行在线监测功能的测试,4 个终端结点分别接入笔记本电脑、LED 灯、电烙铁、电风扇。上电后通过PC 端的Qt 上位机访问服务器获得监测信息,从而实现对用电器的远程监测。上位机端主要包括对用电器的实时监测和用电器监测历史信息记录两部分,在线监测界面主要显示用电器的识别结果和5 类电参数值,包括用电器的电压,电流等。监测中的上位机界面如图10 所示,此时显示的是1 号监测点的1 号监测仪的用电器识别和监测界面。
图10 上位机端监测界面图Fig.10 Monitoring of the host computer interface diagram
从图10 上位机的实时监测界面可以看出,监测系统很好地完成了设计内容,对监测点1 的1 号监测仪实现了数据的远程传输和实时监测,同时用电器种类识别正确,各电参数监测显示正常无误。
上位机历史信息如图11 所示,历史数据也可帮助用户了解用电器的运行状态。经过多次长时间运行实验,系统工作稳定,识别和监测效果良好,有利于用电器的智能化发展,保障用电安全。
图11 历史信息界面图Fig.11 Historical information interface diagram
6 结束语
本文设计并实现了一种基于物联网的非侵入式用电器在线监测系统,详细介绍了该系统的工作原理和实现方法。从测试实验来看,该系统具有以下优势:
(1)能准确实现用电器的非侵入式识别与监测功能;
(2)通过对ZigBee,mosquitto 服务器软件和Qt上位机的合理运用完成了数据的实时远程传输,监测方便且监测范围大,实现了基于物联网的远程监测,系统的功能丰富,应用面广;
(3)设计方案即保证了系统各功能的准确实现又兼顾了实际应用的可实施性。本系统的实现有助于推动电力物联背景下非侵入式用电器监测系统在实际应用领域的发展,对用电安全和电力物联发展具有一定的促进作用。