高淑芝, 曹 萌
(沈阳化工大学 信息工程学院, 辽宁 沈阳 110142)
随着科技的快速进步、数字远程通信网络科技的不断发展,远程电表监测系统已成为发展的必然趋势,其应用领域也在不断地扩大.国内在这一领域的研究起步比国外稍晚,大约在20世纪80年代末开始.但是目前我国这方面的技术和国外已经不相上下.由于我国电网覆盖面积大,地理环境差异大,采用单一的远程通信不能达到目的,所以,研究难度比较大,从而导致我国在这一领域的发展较慢,同时也限制了我国远程监测技术在各地方的应用.然而国外在20世纪90年代末以后,有关自动水电表技术项目不断增加,安装用户不断增多,给水电表制造公司带来了意想不到的收入.迄今为止,远程电表技术发展已经有了很大的飞跃.如今许多发达国家和地区都广泛采用远程电表代替传统的电表.目前远程电表通信方案主要是有线通信和无线通信.例如:电力载波抄表、宽带网络、ADSL、手机短信,还有目前发展较快的GPRS抄表[1].基于GPRS无线网络远程电表监测系统具有很好的发展前景.
对于水、电、气3表的系统设计中采集信息数据的原理大同小异,都是利用终端进行3表数据的采集,通过传输通道把数据发送给上位机,即手机、PC.而且水、电、气3表采集中电表的研究比较受重视,所以,本文重点设计远程电表监测系统.
基于GPRS系统实行的是电表自动采集,可以大大地减少抄表人员的数量和劳动强度,减少人力抄表所导致的误差,提高准确度,降低成本.当需要数据时只需在电脑、手机等上位机上触动相应的按钮,用户最新用电数据和用电总和就会在显示屏幕上清晰快速地显示出来.
通信是信息的传递,其目的是使消息进行点对点的传输与交换.在远程电表监测系统设计中,通信方式的确定关系到系统的传输性能,是远程电表监测系统设计的核心部分.系统在电表与终端之间采用下行通信方式,主要是RS485通信方式;而在终端与上位机之间采用的主要是上行通信方式,即GPRS远程无线通信.
上行通信是指上位机与终端之间的数据传输与交换.其主要特点是传输容量大、距离远、速率快等.上行通信主要包括电力载波通信、电话网通信、电缆通信、光缆通信、GSM无线通信、GPRS网络无线通信及目前较为先进的4G网络无线通信.本文运用的是GPRS网络无线通信.
GPRS是通用分组无线服务技术(General Packet Radio Service)的简称,其中G是一种数据服务业务.采用这种通信方式,可以把数据终端采集的数据通过GPRS网络接到Internet网与上位机进行通信[2].这样价格便宜,而且传输速率也很高,并且能够实时在线远程控制采集终端的数据.
下行通信是指表与数据终端连接的通信.在下行通信中不需要较远的传输距离,但需要具有一条通信线路上边可以连接多个节点的特点(即可以挂载更多的表).目前,市场上采用的下行通信方式主要有RS232总线、RS485总线、蓝牙通信、ZigBee无线通信等.本文使用的下行通信方式是RS485总线通信[3].
RS485总线通信中有两线制和四线制两种接线方式.RS485总线通信的四线制接线方式原理上采用的是点对点通信方式,这种方式一般在实际应用中采用的相当少,大多采用的是两线制接线方式.两线制在接线方式中采用的是总线式拓扑结构[4],即在同一条总线上可以挂载32个节点,这样的下行方式连接的用户更多.在RS485总线通信网络中两线制接线方式一般采用的是主从通信方式,即一个主机可以带多个从机工作.这样的通信方式传输速率较高,达到10Mbps,抗干扰性更好,传输距离更远.但它构成的主从模式通信方式只能以主站轮询的方式进行,系统的实时性较差,同时随着距离的增加,通信速率降低.但是,这些缺点用在抄表系统下行通信中是可以适当避免的.
远程电表监测系统采用RS485电表加数据终端采集,完成电能计量、电压和功率测量等,根据设置的要求定时或随时进行数据采集.数据终端接收的数据,经过GPRS网络发送到上位机.上位机也可以通过GPRS网络控制数据终端,从而实现远程监控与监测.这可以大大减少电力部门的劳动力和财力的输出[5],并为电力公司更好地提高管理水平提供技术支持.
控制器是设计的核心部分.控制器采用的是速度快、性能高的STM32.
电能表选用了市场上使用最多的RS485接口式的电能表,该电能表的内部通信模块如图1所示.
图1 RS485接口式电能表内部通信原理图Fig.1 Internal communication schematic diagram of RS485 interface watt-hour meter
数据终端系统是测量电表电量的微控制系统.数据终端总体架构如图2所示.系统是以微控制器为核心,通过串口通信模块采集表的信号,经微处理器处理后,向GPRS模块和显示模块发出触发信号,使GPRS模块与微处理器进行数据通信,GPRS模块把接收到的数据通过GPRS网络(或SIM短信)发到上位机终端设备上,显示模块显示当前所要发送的数据信息[5-6].电源为各个模块提供电能,让每个模块都能正常工作,是一切模块能量的来源.
图2 数据终端总体架构Fig.2 The overall structure of the data terminal
电源主要是为电路提供能量,使其产生动力,推动整个电路的运作.在电源电路设计中,主要对SIM800 GSM GPRS模块供电电路和STM32F103C8微控制器供电电路进行设计.
3.2.1 SIM800供电电路
SIM800 GSM GPRS模块的供电方案有两种选择:一是采用VBAT供电;二是采用输出电压为9 V、电流为1 A的低压差线性稳压源LDO 供电[7].
VBAT供电即采用电池供电,这种方案供电随意性大,可移动.VBAT供电方案中的电容是为了去耦,当电路接通或关断时会产生一个很高的脉冲,这一脉冲可能会使一些部件烧毁,也可能干扰到电路中的其他部件,使电路不正常.电路中使用的二极管是肖特基二极管,其特点是低功耗、反向恢复时间短,并且它是一种超高速半导体材料制成.这个二极管的作用是实时续流以释放能量.对于D2具有保护电路反接的作用.
VBAT供电方案如图3所示.
采用输出电压为9V、电流为1A的低压差线性稳压器LDO 供电,电路如图4所示.
用输出电压为9 V、电流为1 A的低压差线性稳压器LDO 供电时需要把稳压器接入图3电路.图4电路图作用是以大电流低电压稳压芯片MIC29302为核心达到稳压的作用.
图3 VBAT供电方案Fig.3 VBAT power supply program
图4 LDO供电方案Fig.4 LDO power supply program
3.2.2 STM32F103C8的供电电路
微处理器STM32F103C8正常工作的标准电压为3.3 V,为使微处理器STM32F103C8正常工作,制作了稳压电路(见图5).微处理器STM32F103C8的电源稳压电路以5V线性稳压芯片NCP1117ST50T3G为核心,将5V输入电压稳压到3.3 V[7-8].
图5 稳压电路Fig.5 Voltage regulator circuit
任何使用电源供电的电路都缺少滤波这部分,图6为稳压电路输出端3.3 V提供滤波.
图6 滤波电路Fig.6 Filter circuit
时钟电路的设计应用于STM32F103C8芯片中,为STM32F103C8芯片提供准确的时钟脉冲.时钟电路采用低频32.768 kHz的晶振.晶振一般有两种:有源晶振和无源晶振.有源晶振是一个有四脚的能产生基准频率的石英晶体振荡器,具有较好的抗干扰能力与稳定性,一般用于没有时钟的电路中.无源晶振是一个有二脚的石英晶体谐振器,一般用于有时钟的电路中.在STM32F103C8中已经集成时钟电路,所以,采用无源晶振.此时钟电路的作用主要是计时[9].
复位电路是系统出错或重新下载完程序使电路恢复到初始状态的电路设备,为了保证系统安全可靠运行以及必要时手动操作,复位电路是不可或缺的.复位电路的最大功能是上电复位.
TFT彩色液晶显示屏采用的内部核心控制器是四线电阻触摸屏控制器XPT2046,四线电阻触摸屏控制器XPT2046内部集成了一个转换精度为12位和转化率为125 kHz的逐步逼近型ADC转换器.四线电阻触摸屏控制器XPT2046可以连接到1.5 V 到5.25 V 低电压的GPIO 接口上.四线电阻触摸屏控制器XPT2046可以通过执行两次A/D转换来检测按屏幕的位置.除了位置,触摸屏也可以测试按在屏幕上的压力.对于参考电压VREF可以用于模拟辅助输入、温度采集测量和0~5 V电压监控.四线电阻触摸屏控制器XPT2046内部集成了一个片上的温度传感器,可以在 2.7 V 的典型工作状态下,关闭参考电压VREF,功耗达到小于 0.75 mW.工作温度范围为-40~85 ℃.
数据传输终端的软件总体设计主要包括两大部分:一是对微控制器进行初始化、堆栈指针设置、端口的通信方式、串行通信的控制寄存器、波特率寄存器的设置、定时器的预分频系数和初值等终端参数的设置程序;二是完成终端的网络连接、抄表命令的转发、数据的采集以及数据通过网络准确无误地传输等数据传输通信程序.在主程序中调用数据采集与处理子程序对电表电量进行采集,利用存储器操作子程序对数据进行存取转存.同时选择合适的低功耗芯片,空闲时使用睡眠模式实现低功耗的目的.总程序设计框图如图7所示.
图7 总体设计框图Fig.7 Overall design block diagram
在上电复位时开始系统初始化,如果未接到请求或定时未到的情况下,进入系统休眠.当唤醒系统时,开始数据的采集或参数的修改,每次采集完的数据或修改完的信息要进行写保存.本次的总程序采用了3个中断,即唤醒终端、2个USART中断,这些中断还有优先级别区分,这样设计有益于系统远程控制.
4.2.1 GPRS通信模块与上位机通信的程序设计
SIM800 GSM GPRS通信模块与上位机之间通信的子程序设计框图如图8所示.
图8 GPRS通信子程序框图Fig.8 GPRS communication subroutine block diagram
SIM800 GPRS通信模块与上位机之间的通信,主要是微处理器通过串口向SIM800 GPRS通信模块发出AT指令来控制GPRS模块与上位机之间的数据交换.使用下列指令连接上位机实现模块的 TCP 和 UDP 数据传输[9-10]:
AT+CGCLASS=“B”:设置移动台类别.
AT+CGDCONT=1,“IP”,“CMNET”:设置 PDP上下文标标志为 1,采用互联网协议(IP),接入点为“CMNET”.
AT+CGATT=1:用于GPRS 业务附着和分离的设置.
AT+CIPCSGP=1,“CMNET”:用于GPRS 连接设置,接入点为“CMNET”.
AT+CLPORT=“TCP”,“8086”:用于TCP 连接本地端口号设置,本地端口号设置为 8086.
AT+CIPSTART=“TCP”,“61.174.40.245”,“21590”:用于将GSM800 GSM GPRS模块建立一个TCP 连接,通过连接端口为21590连接公用网目标地址:61.174.40.245,如果模块连接成功会返回: CONNECT OK.
AT+CIPSEND:接着模块返回:>,然后发送字符串,最后发送十六进制的:1A,启动数据发送.然后模块返回:SEND OK,说明发送成功.
要实现模块与电脑的 GPRS 通信,需要确保所用电脑具有公网 IP,否则无法实现通信,如果没有公网 IP 用户,使用花生壳映射 IP 端口.
4.2.2 TFT显示模块与微处理器的程序设计
TFT的写命令和写数据程序可以驱动TFT工作:
//发送命令函数TFT26_Write_COM
void TFT26_Write_COM(char VH,char VL)
{ TFT26_rs(0);//数据命令选择端,选择命令
TFT26_Writ_Bus(VH,VL);
}
//发送数据函数TFT26_Write_DATA
void TFT26_Write_DATA(char VH,char VL)
{
TFT26_rs(1);//数据命令选择端,选择数据
TFT26_Writ_Bus(VH,VL);//调用并行数据写入函数
}
void TFT26_Writ_Bus(uint VH,uint VL)//并行数据写入函数
{
//LCD_DataPortH=VH;//高位P1口
//屏蔽高八位,将数据送入到STM32F103C8的PA0-PA7端口
GPIOA->BSRR=VH & 0x00ff;
GPIOA->BRR=(~VH) &0x00ff;
//GPIO_SetBits(GPIOA,VH &0x00ff);
//GPIO_ResetBits(GPIOA,(~VH & 0x00ff));
//LCD_DataPortL=VL;//低八位P0口
//屏蔽低八位 将数据送入到STM32F103C8的PB8-PB15端口
GPIOB->BSRR=(VL)≪8 & 0xff00;
GPIOB->BRR=((~VL)≪8) & 0xff00;
TFT26_wr(0);//读写控制端,0代表写,1代表读
TFT26_wr(1);
}
4.2.3 延时程序
延时是运用STM32F1X微控制器内核SysTick定时器实现准确定时.STM32F1X微控制器的SysTick是1个24 bit递减计数器,通过对SysTick控制与状态寄存器的设置,可选择72M HCLK时钟或HCLK的8分频作为SysTick 的时钟源.SysTick的重装寄存器决定了定时器频率[10].下面程序是采用SysTick定时器延时的.
void Init_SysTick(void)//SysTick寄存器的初始化函数
{
if(SysTick_Config(SystemCoreClock/1000))//定义为ms级延时
while(1);
}
//精确毫秒级延时,可以根据不同的需求,改为微秒级、秒级的延时
void Delay_ms(__I0 uint32_t nTime)
{
TimingDelay=nTime;//变量TimingDelay是一个全局变量
while(TimingDelay !=0);//等待TimingDelay变为0
}
void TimingDelay_Decrement(void)//中断调用函数,用于定时.
{
if (TimingDelay !=0x00)//判断TimingDelay是否为0
{
TimingDelay--;
}
}[11]
此段程序实现的是准确的延时,一般可用于时钟制作中.
系统通过硬软件、信息采集、数据远程传输、电度计量和远程控制等多项技术的结合初步实现了远程数据的采集.远程电表监测系统主要适用于大多数电力公司对居民用电、工厂用电等的电量采集.远程电表监测系统具有远程控制、远程采集数据、近端调试等功能.此系统的开发不仅实现了电表的采集,还可以经过增加水、气表的采集转化模块,实现水、气量的采集,从而使单系统实现了三表的采集,不需要多个系统实现,从而降低了一些不必要的成本.
远程电表监测系统是一项较为复杂的系统,现在仍然有许多不够完善的地方.在下行通信中,随着技术的不断进步,采用近距离无线通行会越来越多.在不久的将来,相信远程电表监测系统将普遍化,因为这项技术可以从中解放出来更多的人力,同时也可以保证远程电表系统的实时性以及正确性,对未来的发展具有重要的价值与意义.