本项目是由山东科技大学张新慧开发完成。通过研制了一款基于物联网的 SOC 单相智能电表,遵循国网公司电能表、集中器、服务器、客户端体系架构,设计了以 SOC 芯片 HT5017 为核心的电能表,以STM32F103C8T6 芯片为核心的集中采集器,构建了以机智云物联网为平台的服务器,开发了基于 Android 平台的客户应用程序,并实现了数据传输、客户远程查看等功能。
引 言
近年来,我国现代化程度不断深入,我国电网的智能化程度也不断增加,而智能电表作为智能电网最为重要的一环在电网中扮演着重要的角色。智能电表作为智能电网的终端设备,相比于传统的电表,智能电表可以实现自动抄表、故障诊断、参数检测、数据发送等功能,可以大大节省人力物力,并且效率更高,对于提升电网的运行效率降低运行成本具有重要的意义。智能电表作为一种新型的智能家居设备,可以通过网络与用户进行连接,用户可以实时检测到本户的用电情况、故障信息等。可以推荐用户智能供电方案,对于引导用户合理用电、购买电量具有重要的意义。同时可以设定分时计费方案,对于引导用户错峰用电,促进电网稳定运行具有重要的意义。
1.1 系统设计
通过对国内外研究状况和对基于物联网的智能电表系统的分析与研究,本次设计的目标是构建一套基于物联网智能电表监控系统,主要分为三个层次:电能表、智能电表集中器、物联网云平台。电能表采用控制与采集芯片实现对电能参数的采集、上传、终端显示、故障报警、自动断电等功能。智能电表集中器采用嵌入式控制器,能够和多个电能表进行通信,读取多个终端的监测数据并将数据打包上传至物联网云平台,同时实现控制命令的下传。基于物联网云平台搭建智能电表系统的远程监控中心,能够实现电能参数的显示、电表状态和故障的显示等。
1.2 系统实现功能
基于物联网的单相智能电表系统的设计,从电能表、智能电表集中器和物联网云平台三个部分开展设计。运用传感器技术、物联网技术以及嵌入式控制技术来进行设计。主要完成以下几个方面的工作:
1)设计电能参数计量模块实现对电能参数的测量;
2)通过互感器实现对电压和电流参数的采样;
3)通过合适的低功耗控制芯片构建电能表,并且搭配合适的 LCD 显示模块、故障报警模块、紧急断电模块、通信模块等实现监控终端的数据采集与发送;
4)设计嵌入式处理器控制电路构建智能电表集中器,实现对下级电表终端的数据通信并将数据上传至物联网云平台;
5)通过物联网开放云平台,实现智能电表集中器与云平台的连接,实现电表数据的集中存储;
6)设计智能电表终端和集中器的软件,实现故障检测、数据采集、分段计费、盗电监测等功能;7)设计物联网云平台的手机端界面,开发智能电表显示终端,实现电能数据的显示和执行机构的控制。
系统方案设计
本系统设计采用高性能的电能计量SOC 芯片构建终端的监测中心。可以实现控制和监测功能,有效降低成本。通过高性能的嵌入式处理器芯片构建智能电表集中采集器,该集中器采集多个智能电表终端的数据而后将数据上传至物联网云平台。基于设计要求和成本要求,本次设计选取专业的物联网开放云平台来实现服务器功能用以实现数据存储并且搭建了智能电表手机 APP 实现电表的监控。大大降低了开发成本缩短了开发周期。整体结构框图如图2所示。
图2 整体结构框图本次设计方案采用了典型的物联网三层架构,感知层包括智能电表集中器和多个智能电表实现电能参数的检测和控制。终端还集成 LCD 显示模块,故障报警模块和键盘输入模块等。智能电表集中器主要由嵌入式处理器芯片和外围电路组成,集中器可以实现多个电表的数据采集与打包并且将数据上传至物联网云平台。网络层为广域网,智能电表集中器将打包的数据上传至路由器供物联网云平台进行采集。
基于互联网的单相智能电表系统的总体结构图如图3所示。系统整体分为智能电表、集中采集器、物联网云平台三大部分。图3 系统总体结构图智能电表计量安装于用户现场,由 SOC 计量芯片系统构成。终端可以实现对电网参数的采集,对数据进行预处理,故障时自动上报故障信息,接受云平台下传的控制命令,将预处理后的数据通过通信模块上传至智能电表集中采集器进行打包。
远程监控终端基于云平台的存储功能并且自行搭建人机界面,用户和供电公司可以通过手机 APP 实现远程监控。
系统硬件设计
智能电表系统的整体硬件电路设计方案如图4所示,主要分为智能电表监测终端硬件设计和智能电表集中采集器硬件设计。智能电表监测终端核心为 HT5017 芯片,还包括外围电路等。智能电表集中器主要包括 STM32 芯片及其硬件电路。图4 系统整体结构图3.1 电能表硬件设计电能表主要包括电能表的控制核心、芯片外围电路、采样电路、通信电路、显示电路、输入电路等。实现电能参数的采集、传输、预处理、终端显示等功能。1) 芯片选择通过对市场上常用的智能电表测控芯片选择,本设计选定 HT5017 芯片作为本次设计的电能表的控制核心。其具有芯片高度集成,抗干扰能力大大增强,温度、湿度等对其干扰影响小、可靠性高、性能良好。该芯片的引脚配置和实物图如图5所示。图5 HT5017 芯片引脚定义图和实物图2)最小系统HT5017 芯片的最小系统电路如图6 所示。主要包括复位电路、下载电路、外部晶振电路。通过这些外围电路可以使芯片正常工作。由于芯片内部已经集成了两个大小为 24pF 的电容,因此在设计时不需要再连接电容,如果外接电容的话,可能会影响芯片的 EMC 性能。图6 HT5017 芯片最小系统电路3)电源模块电能表的电源电路如图7 所示,总体上电路通过变压器取电,在变压器二次侧通过LM7805、DC-DC 和 AMS1117 芯片以及外围电路实现对电路的供电。电路供电系统包含 5V、12V 以及 3.3V 供电。可以给单片机以及采集模块、执行模块和报警模块等供电。同时通过多个电容实现对电源电路的滤波。图7 电能表的电源电路4)采样电路*电压采样电路电压采样电路选择电阻分压电路,通过采用多个电阻进行分压的方式,提高了电路降压性能,使电压转换成一定比例的弱电压,满足了计量芯片的输入电压要求,并有成本低的优点,又具备抗电磁干扰等条件。电压分压采样电路如图8所示。图8 电压分压采样电路*电流采样电路电流采样电路采用了电流互感器接入式,通过电流互感器进行降低电流,电流互感器可以将一次测的电流进行降低,从二次侧输出,可以保证电能表的安全,电流分压采样电路如图9所示。图9 电流分压采样电路5)液晶显示电路从本智能电表的性能要求出发,并结合成本考虑,本设计选择了字段型液晶显示。由于芯片 HT5017 内部集成了 LCD 驱动电路,所以液晶显示的电路设计比较简单。LCD 显示电路如图10所示。LCD 的段位引脚直接连接到主控芯片 HT5017 的段位引脚上就可以了。图10 LCD 显示电路 6)通信模块电能表通信模块选取 AS32-TTL-1W 模块,这是一款 433MHZ 具有高稳定性的工业级无线传输模块。电路接口图和实物图如11所示。图 11 无线模块实物图与电路图7)报警单元电能表的防窃电报警电路如图 12所示,当系统出现故障或者用户缺电时单片机端口输出高电压使得三极管 Q1 闭合从而蜂鸣器鸣响实现报警。防窃电报警模块电路图如13所示。图12 蜂鸣器报警电路图13 防窃电报警电路8)自动断电模块系统选用动断型继电器 SRD-12VDC-SL-C,该继电器驱动电压为 12V。图14为继电器开关控制电路的原理图。图14 继电器驱动电路9)键盘模块装置设计按键电路,使用户能很方便的对电能表进行操控,可以对电能表进行切换显示内容的操作。设计独立按键电路如图15所示。图15 按键电路
3.2 集中采集器的硬件设计1)控制芯片
集中采集器选用STM32F103C8T6 作为控制核心。该芯片引脚数量较少,成本低且能够满足本次设计的需求,实现对多个智能电表的电能参数读取、处理和上传。如图 16为芯片的引脚定义和实物图。图16 芯片引脚定义图和实物图
2)最小系统电路
集中采集器主控芯片采用 STM32F103C8T6 芯片,系统电路图如图17所示。最小系统电路主要包括芯片的外部晶振电路、复位电路、下载电路和电源电路等。该最小系统电路可以满足芯片的正常工作需求且设计简单可靠。 图17 STM32F103C8T6 芯片系统电路
3)电源模块
集中采集器模块的供电需求主要是嵌入式处理器电路和通信电路。采用 LM1117 三端芯片实现+3.3V 电压的输出供给芯片。同时通过 MIC29302 芯片实现+3.9V 电压的输出供给通信模块实现数据的传输。电路图如18所示。
图18 电源电路
4)通信电路
采用EC20R2.1模块实现数据的上传,设计了基于MIC29302 芯片为核心的稳压电路,输出 3.9V 电压为 EC20 模块供电。此外集中采集器预留了 AS32-TTL-1W 无线串口模块实现与电能表的数据通信。电路图如19所示。 图19 4G 模块和 AS32 无线模块接口图
系统软件设计
系统软件设计主要完成电能表、集中采集器的软件设计,物联网云平台的构建以及 Android 应用软件的设计。4.1 电能表程序设计
通过电能表、集中采集器的软件设计采用 C 语言的方式进行编程和调试,编译软件使用的是 Keil。主要内容包括电能表主程序、RTC 时钟、计量单元、存储单元、无线通信的软件设计,集中采集器的主程序、数据接收以及数据发送的软件设计。
1)电表主程序
电能表的主程序流程如图20所示,主程序的主要任务就是完成对模块单元的初始化设置以及协调各模块单元有序运行。 图20 主程序流程图
在系统接入电源以后,首先就要对系统进行初始化。设置外部晶振为系统主时钟,完成 I/O 口功能设置,包括 USART 串口、ADC 串口功能的设置,完成电能参数寄存器的初始化操作。系统从时钟电路得到时钟信号,进而处理器将会对采集来的电压、电流信号的数据进行参数计算。有功功率通过电压、电流相乘经过低通滤波器得到,无功功率先将电压移相 90º,通过移相后电压、电流相乘经过低通滤波器得到,将得到的电能参数数据储存至电能寄存器中,最后通过无线通信模块发送至集中采集器。
2)RTC 时钟子程序设计
从 RTC 模块读取 TPS 输出的温度值,为了保证芯片在运行的过程中能够根据环境温度进行稳定补偿,需要减小 TPS温度数值的跳动,具体补偿代码如下。
Void RTC_compensate_initial(void){ uint8_t i; uint32_t ichecksum; //TPS config------------------------------- HT_TBS->TBSCON=0x0301; //Chop 都打开 8 次平均输出 osr=64 HT_TBS->TBSIE=0x00; HT_TBS->TBSPRD=0x00;// //1s 打开 8 次 //RTC configure------------------------------------ HT_RTC->RTCIE=0x00; HT_RTC->RTCCON=0x00; HT_RTC->RTCCON|=0x06; //高频补偿 128Hz 之后输出 1H HT_RTC->DFIH=((uint32_t)0>>16); HT_RTC->DFIL=(0); /*****读取 Info 保存的 RTC 参数,并计算校验和,检查校验和是否正确********/ /*****如果校验和正确,加载 Info 参数到 RTC 相应 registers,否则写入默认值参数********/}
RTC 时钟校正的流程图如图 21 所示。 图21 RTC 时钟校正流程图3)计量模块子程序设计
电能计量模块主要功能就是将采样得到的数据进行计算处理。首先智能电表先进行计量参数初始化。电能采样数据每 0.5ms 刷新一次,在刷新的同时会设置一个标志信号,主程序接收到刷新信号后会执行电能计算,采样的数据进入模数转换通道转换为数字量数据,然后在芯片的 EMU 模块中进行电能计算,主要进行有功功率、无功功率、频率等参数的计算。计算完成后将数据储存在相应的 flash 寄存器,通过系统程序可以对数据进行输出、调用。电能计量的程序图如图22 所示。 图22 计量模块程序流程图
4)通信子程序
电能表的信息交互是通过通信功能来完成的,数据的接收和发送功能都是由USART 串口实现的。MCU 对电能数据进行采集,主要采集电流、电压、有功功率等参数。数据帧通过串口接收中断来获取。接收后,对数据帧进行检查,数据是否完整,地址是否吻合。最后,发送电能数据包。程序流程如图23所示。图23 串口发送程序流程图5)远程预付费模块程序设计
远程预付费的控制流程如图24所示,电能表接收物联网云平台发送的购电户号、购电量告警电量等参数后,设置购电控制投入。计算剩余电量并判断剩余购电量是否小于或等于告警电量。如果是,电能表发送警告信息,并切换控制状态为非保电状态。若判断剩余购电量大于告警电量,进入保电状态。图24 远程预付费的控制流程图
2)甲烷气体传感器电路甲烷、一氧化碳等有毒气体检测电路是整个系统电路的核心组成部分之一,核心部件 MQ-5 有毒气体传感器,具有灵敏度高、寿命长、稳定性好、电路结构简单的优点,所以常用于家庭、工厂和公共场所的气体安全检测。而且 MQ-5 不仅能检测甲烷,还能检测氢气、苯、天然气等气体的探测。所以相对准确地说,MQ-5 是个多种气体检测传感器。4.2 集中采集器的程序设计
集中采集器需要接收多个电能表的计量数据信息,对数据进行打包处理,最后通过4G 模块传输至物联网云平台中。系统主要由主程序、远程数据采集以及数据发送物联网程序组成。
1)系统主程序
集中采集器主程序需要完成电能表数据的召测采集与数据的发送任务。具体流程如图 25 所示。采集器接通电源后,首先进行系统的初始化,主要完成 USART 串口以及时钟的初始化。然后,无线采集模块、4G 通讯进行初始化设置,并对所连接电能表发送召测数据命令,如有异常,则记录异常信息。最后,接收电能表发送的数据信息,处理、打包数据并通过 4G 模块上传至物联网云平台中。 图25 主程序流程图
2)数据远程采集子程序的设计
数据远程采集主要通过定时器中断触发串口命令发送,进而完成电能表数据的采集任务。具体流程如图26所示,完成定时器、串口初始化设置。图26 数据采集流程图
然后,集中采集器向电能表发送数据召测命令,电能表发送计量数据。进而,将接收的数据进行 CRC 校验。部分程序如下:
unsigned int CRC16 (unsigned char * puchMsg, unsigned int usDataLen) /* The function returns the CRC as a unsigned short type */{ unsigned char uchCRCHi = 0xFF ; unsigned char uchCRCLo = 0xFF ; unsigned uIndex ; while (usDataLen--) { uIndex = uchCRCLo ^ *puchMsg++ ; uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex] ; uchCRCHi = auchCRCLo[uIndex] ; } return (uchCRCHi << 8 | uchCRCLo) ;}
数据校验有误,重新进行数据采集;数据校验正确,将数据存储。3)数据远程发送子程序的设计
数据远程发送子程序主要完成数据打包处理,网络连接以及数据的上传等任务。具体流程如图27 所示。图27 4G 模块数据上传流程图
首先,系统初始化串口引脚,完成 4G 模块自检以及设置 4G模块工作模式,部分代码如下:
void EC20_Init(void){ Uart2_SendStr("AT+QGPS=1\r\n"); Clear_Buffer(); Uart2_SendStr("AT+CPIN?\r\n"); delay_ms(500); strx=strstr((const char*)AtRxBuffer,(const char*)"+CPIN: READY"); while(strx==NULL) { Clear_Buffer(); Uart2_SendStr("AT+CPIN?\r\n"); delay_ms(500); strx=strstr((const char*)AtRxBuffer,(const char*)"+CPIN: READY"); } Clear_Buffer(); Uart2_SendStr("AT+CSQ\r\n"); Clear_Buffer(); Uart2_SendStr("AT+CGREG?\r\n"); strx=strstr((const char*)AtRxBuffer,(const char*)"+CGREG: 0,1"); extstrx=strstr((const char*)AtRxBuffer,(const char*)"+CGREG: 0,5");}
然后,连接物联网云平台,将远程召测的数据进行打包,完成发送,数据采用Json 格式,如下所示:
{ “data”: { “id”:”Volage”, “datapoints”: { “at”:”2019-12-22T2212”, “Volage”:”220.5” } }}
4.3 物联网云平台的软件设计系统采用机智云物联网云平台作为平台,实现数据云存储。机智云平台软件设计流程如图28所示。 图28 机智云平台软件设计流程图机智云平台软件设计主要包括:创建账号、创建智能电表设备、创建数据流并完成应用程序接口参数配置。首先创建账户,登录开发者界面,创建一个智慧电能管理系统的产品平台,选择 WI-FI 或移动网络,选用 SOC 方案,云平台会为所创建的产品自动分配产品标识码与产品密钥等信息,具体如图29 所示。图29 产品信息示意图
进而,需要向所创建的产品下面添加相应的数据点,数据点分为显示名称、标识名等,且具有只读、可写、故障、报警以及数值、枚举、布尔值等属性,根据用户的需要灵活设置。根据本系统需要,设置电压、电流、功率以及电能等数据点,并分别设置其属性,具体信息如图30所示。图30 数据点添加及修改示意图
最后,利用机智云提供的应用接口,对系统的应用程序进行配置,用户端采用 Android 平台进行开发,机智云平台将自动分配 APPID、APPSecret 等参数,具体设置界面如图31所示。图31 APP 配置界面信息
4.4 Android 客户端的软件设计
用户应用程序基于 Android 平台,采用 Java 语言进行开发。本系统开发选用 Eclipse 开发环境完成 Android 软件开发设计。
用户应用程序主要包括用户登录、网络连接、数据读取以及用户界面等,具体程序框架如图32所示。用户登录主要实现不同客户的登录功能,电网公司为客户分配了用户电表户号,通过登录户号,进入客户专属的电能管理应用系统。 图32 用户应用程序框架结构
网络部分采用 Socket 编程方式,引用 java.net.Socket 包,创建一个 Socket 对象,连接到机智云物联网云平台。具体代码如下:
mSocket = new Socket(ip,port);OutputStream outputStream = mSocket.getOutputStream();in = mSocket.getInputStream();showInfo("连接成功!");
数据传输采用 Http 协议,应用 Get 命令读取机智云平台中的数据,例如获取实时电压数据指令为:
GET http:// www.gizwits.com/devices/datapoints?datastream_id=Volageapi-key: bmj14LsfVIU4jViOzyZRKxHost: api.gizwits.com
机智云平台返回 json 格式的数据,需要将 json 格式的数据转换成 java 面向对象的实体类,并应用 Google 提供的 google.gson.Gson 包进行数据的解析,部分解析代码如下:
public class JsonRootBean{ private int errno; private Data data; private String error; public void setErrno(int errno) { this.errno = errno; } public int getErrno() { return errno; } public void setData(Data data) { this.data = data; } public Data getData() { return data; } public void setError(String error) { this.error = error; } public String getError() { return error; }}
以用户登录界面为例进行用户界面的设计,首先创建一个用户登录的活动界面,在界面中插入图片、文本、按键等控件,并设置其属性。设计完成的用户登录界面如图33所示,界面包括应用程序Logo、用户号输入文本框以及登录按钮。
系统调试
5.1 试验平台
根据之前对硬件电路图的设计,采用 Altium Designer 软件对智能电表和集中采集器的硬件 PCB 进行了设计制作。并根据设计的技术规范进行测试。主要进行准确度和功耗的验证。为了进行该验证搭建了电能表测试平台。
5.2 通信验证
本次智能电表系统的通信模块主要包括集中采集器与电能表的无线通信模块验证和集中采集器与物联网云平台的通信验证。为了更加直观的了解计量终端的通信命令,本次使用串口调试助手对电能表进行了通信验证,串口调试助手与电能表成功通信的示意图如35所示。图35 电能表串口调试示意图
下面进行集中采集器与物联网云平台的通信调试,物联网云平台的配置图如36所示。通过机智云平台的计入步骤进行配置,可以看到本设备的接入信息等。成功连接后可以实现数据的远程存储。图36 机智云平台连接示意图
之后通过自行搭建的智能电表监控手机 APP 对物联网云平台的数据进行读取并在人机界面进行了显示。如图38 为智能手机对电能参数的显示示意图,可以看到电能参数可以正常显示在 APP 上方便用户和供电公司进行读取。图37 手机 APP 显示示意图
此外,系统通过物联网平台实现了数据的存储,可以对历史数据进行分析和显示,方便供电公司和用户对自己的历史用电数据进行分析,可以通过对数据的分析来判定系统是否正常并且可以指导用户合理用电。历史数据显示界面如图38所示。 电能表同时还可以通过 LCD 模块实现终端数据的显示,方便现场人员进行调试与检测。LCD 模块显示电能参数如图39所示。
图39 电能表 LCD 显示示意图
总 结
为了进一步满足智能电表领域的要求,本研究设计了这套基于物联网的单相智能电表装置。整套系统的特点如下:
1)遵循国网公司“电能表、集中器、服务器、客户端”体系架构,借助于物联网,完成了单相智能电表系统的设计,整套系统运行稳定、成本较低。
2)基于 HT5017 的 SOC 芯片完成了电能表的设计,既能实现数据处理、数据传输以及显示等功能,也能实现电能采集功能,较传统“控制芯片+计量芯片”的架构更为简单,稳定性更高。
3)基于 STM32F103 嵌入式处理芯片构建了集中采集器,实现对下级电能参数的打包并将打包后的数据上传至远程物联网云平台,“双无线传输”的方式,使系统现场安装方便快捷,成本降低。
4)通过免费的物联网云平台机智云实现数据的存储,大大降低了系统的运行维护成本,并且设计了手机 APP 实现电能参数的监控,人机交互更加方便。在实验室完成了系统样机的调试与验证。结果表明,系统运行可靠、测量精确度高,满足多功能电表的监测需求。
全部0条评论
快来发表一下你的评论吧 !