1 研究背景及意义
家庭能量管理系统(Home Energy Management System,HEMS)是利用先进的计算机技术、网络通信技术、综合布线技术、电子微电子技术,满足个性需求的新科技系统[1]。智能插座是家庭能量管理系统不可缺少的重要组成部分,它是实现家庭能源管理的重要手段和途径。
本文设计的智能计量与开关控制插座是西南交通大学2011年国家创新项目“家庭能量管理系统设计”中的重要组成部分。该系统由智能手表、控制终端LM3S9B96、再生发电部分以及本文设计的智能插座组成。该项目于2012年11月结题,通过验收。
2 智能计量与开关控制插座的硬件选型
本文设计的智能计量与开关控制插座由三部分组成:计量插座模块、无线模块以及继电控制模块。智能计量与开关控制插座可以实现对家用电器的电气信息实时监测,实现对电能计量的管理以及对电源的远程开断控制。
2.1 计量插座模块
计量插座采用的是TI公司的LSDIS02RS1CS智能计量插座,其主控芯片为MSP430AFE253。MSP430系列单片机:处理能力强、运算速度快、超低功耗、单片机内部资源丰富、开发环境高效[5]。
2.2 无线模块
无线模块采用TI公司的CC430单片机,其内核为CC430F5137芯片,使用EZ430RF5137开发工具进行开发。
开发过程中外部连接主要用到P1.6TX(5号引脚)、P1.5RX(6号引脚)、AVCC(45引脚)、AVSS(42引脚,即GND)和P1.0(13号引脚)。其中,P1.6TX、P1.5RX用作串口传输;P1.0用于开关控制输出;AVCC供电使用,AVSS接地。
2.3 继电控制模块
继电控制电路如图1所示。光耦采用PC817型号,继电器采用ZHNQI Q3F1Z,VCC工作电压采用9 V的直流电源,图中插脚(CHA JIAO)是为计量插座准备的,I/O接口与无线模块的P1.0引脚相连。
图1 继电控制电路
具体的工作过程如下:当无线模块收到上层控制终端的断开电源命令,其P1.0引脚输出高电平,光耦P817导通,继电器两端得到电压,达到启动标准的电流,继电器动作,开关打到3引脚,220 V侧电源断开,插座停止工作。其中继电器的默认状态为常闭状态,I/O接口电压默认为低电压(为0)。
网络技术支持略——编者注。
3 通信协议设计
3.1 自定义通信协议设计
自定义了外部通信协议,它是参照101协议进行定义的。
3.1.1 插座与终端的数据交换
智能计量与开关控制插座所涉及的数据类型具体如表1所列。
表1 插座数据设定
3.1.2 报文格式
报文由启动字符(68H)、应用层公共地址(1个字节)、类型标识(1个字节)、数量限定词(1个字节)、信息体地址(2个字节)、信息体元素(2个字节)和结束字符(16H)构成。下面对各部分具体的情况作简要介绍。
(1) 应用层公共地址
公共地址是子站的标识。主站下发的报文中,标识接收站;子站上传时,标识发送站。链路地址域占1个字节。详细的地址如表2所列。
注意:当传送数据对象的数据为08H时代表发送端向其余所有终端发送数据(指令),即每一个终端除了01H~06H的地址外,自身还附带08H的地址,例如02H和08H均代表智能开关(1)。
表2 应用层地址
(2) 类型标识
类型标识的意思是当发送命令时,对该串指令到底是让对象做什么的一种解释、说明。类型标识说明略——编者注。
(3) 数量限定词
数量限定词的作用在于说明传输信息体中元素(数据)的个数。
(4) 信息体地址
信息体的地址是用来表明数据类型的。详细的地址略——编者注。
3.1.3 无线模块与终端的基本对话过程
协议的基本对话过程有:初始化、数据传输以及远程遥控。
(1) 初始化
当主站启动或通信中断后,主站发出“请求激活”指令,等待与子站建立通信联系。子站在接收到指令后,跳出睡眠模式,向主站发送“激活确认”指令。例程如下:
① 广播激活:(只能由LM3s9B96实现)
M->R:68 08 01 00 16
R->M:68 01 02 00 16
② 点对点激活智能开关:
LM3S9B96: M->R:68 02 01 00 16
R->M:68 01 02 00 16
手表:M->R:68 02 01 00 16
R->M:68 05 02 00 16
(2) 数据传输
当智能计量与开关控制插座接收到来自上层的数据读取指令时,插座将当前的电压、电流等用电信息发送给上层。此处的上层既可以是LM3s9B96的控制终端,也可以是遥控的手表。例程如下:
LM3S9B96:M->R:68 02 03 00 16
R->M:68 01 04 02 01 10 30 23 02 10 05 00 16
LM3S9B96向插座请求数据,插座回复两个数据:电压(1001)2330/10=233 V,电流(1002)0005/1000=0.005 A。可以把所有的电参量信息打包后发送。(手表的读取命令与之相同,但回复的地址要变化。)
(3) 远程遥控
当上层给插座发送开关控制命令时,插座响应该命令,继电器动作,闭合或断开插座,并在动作之后发送确认指令。例程如下:
手表:M->R:68 02 05 01 11 00 00 16
R->M:68 05 06 00 16
手表向插座发送断开指令,插座回复断开确认。当然,LM3S9B96的控制终端亦可发送开关控制命令,此时,回复的地址就会发生变化。
(4) 数据格式说明
开关状态(两个字节表示)中0000代表断开;0001代表闭合。电压、电流、功率测量量(两个字节表示)只传输整数部分,如220 V标识为00 22。功率因数:传送小数点后数值部分(保留两位),例如功率因数为0.8,则传输数据位8000H。
3.2 计量插座与无线模块传输协议
无线模块(其内有单片机)为主站,计量插座为从站。具体协议请参照LSDIS02RS1CS智能计量插座的串口通信协议。
4 通信软件实现
4.1 写入无线模块的主程序
写入无线模块的主程序主要包括初始化程序、各种中断服务程序、通信处理程序和开关控制程序。程序流程图如图2所示。说明了智能计量与开关控制插座的整体构成和各部分之间的关系。
图2 智能计量与开关控制插座整体框图
程序的总体流程图如图3所示。下文提供了写入无线模块的部分程序。
图3 程序流程图
4.1.1 UART串口初始化
初始化的内容是定义引脚的作用和功能,确定时钟的选择,以及采用何种波特率进行传输。该初始化程序定义P1.6、P1.5引脚作为UART的TX、RX使用,确定采用SMCLK(子系统时钟)作为UART的时钟源,采用9 600 bps作为传输的波特率。
初始化程序如下:
void init_uart(void){
PMAPPWD = 0x02D52;
P1MAP5 = PM_UCA0RXD;
P1MAP6 = PM_UCA0TXD;
PMAPPWD = 0;
P1DIR |= BIT6;// 将P1.6作为TX输出
P1SEL |= BIT5 + BIT6;// 将P1.5和P1.6 选作UART 功能
UCA0CTL1 |= UCSWRST;
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 = 0x0D;// 波特率为9 600 bps
UCA0BR1 = 0;
UCA0MCTL |= UCBRS_1 + UCBRF_0;
UCA0CTL1 &= ~UCSWRST;
}
4.1.2 UART串口中断程序
使用串口中断程序主要是为了提高收发速度,使接收和发送互不影响,达到全双工通信效果。同时,程序不用等待,以最高效率运行。该段串口中断程序实现数据接收时触发中断,将接收到的数据保存到m_strUart.UartRxBuf数组中。中断程序如下:
#pragma vector = USCI_A0_VECTOR
__interrupt void USCI_A0_ISR(void){
unsigned char dat = 0;
switch(__even_in_range(UCA0IV,4)){
case 0: break;
case 2: dat = UCA0RXBUF;
if (m_chDevWorkSta & UART_RX){
if ((0 == m_strUart.UartRxIndex)
&& (UART_PACKAGE_HEAD == dat)){
m_strUart.UartRxBuf[0]=UART_PACKAGE_HEAD;
m_strUart.UartRxIndex++;
if(UART_PACKAGE_LEN==m_strUart.UartRxInd ex){
m_chDevWorkSta &= ~UART_RX;
}break;
case 4:default: break;
}
}
无线通信程序、RS232串口通信略——编者注。
4.2 TI LSDIS02RS1CS型计量插座内部程序解析
LSDIS02RS1CS型号的计量插座能够实现当前电压、电流、频率的测量,并根据测量的值计算出有功功率等电量值。通过分析插座的内部程序,可以解析得到具体的程序流程,如图4所示。
通过对读写程序的解析,并根据插座与外部通信的协议,可以通过串口获得当前用电器的各项用电参量数值。
图4 计量插座内部程序流程图
5 系统调试
本文使用IAR Embedded Workbench(简称IAR EW)嵌入式系统开发工具实现程序的编译和运行。
本次设计的智能计量与开关控制插座由计量插座、无线模块和继电器控制部分组成。调试时控制终端用PC机代替,即用USB口连接有无线模块的笔记本电脑,由此读写程序。智能计量与开关控制插座的连接情况是计量插座连接家庭电源电路,将接入继电器控制的普通插座插入计量插座,其中无线模块和继电控制电路焊在一块电路板上,用导线将无线模块与计量插座的RS232口相连,用电器接在普通插座上智能计量与开关控制插座外观图略——编者注。
当整个智能计量与开关控制插座正常工作时,插在普通插座上的用电器(白炽灯)正常工作(点亮),且无线模块实时将用电状态反馈给控制终端。当无线模块收到继电控制信号后,插座的无线模块的P1.0端口(引脚)输出高电平,继电器动作,断开电源,普通插座断电。但计量插座与无线模块仍能继续工作。
在调试过程中,可以在笔记本电脑上使用串口调试精灵查看接收和发送的结果,并与计量插座监测到的数据比对,进行程序修正。
总语
本文硬件采用MSP430AFE253、CC430F5137分别作为计量插座和无线模块的主控芯片并对继电控制模块的电路进行了设计,信息的传输采用RS232和无线射频技术。此外,在定义了外部通信协议并掌握插座内部协议的基础上,对主程序进行了编写、编译、运行。最后,对系统进行了调试,达到设计的目标。