高淑芝, 曹 萌
(沈陽化工大學 信息工程學院, 遼寧 沈陽 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]
此段程序實現的是準確的延時,一般可用于時鐘制作中.
系統通過硬軟件、信息采集、數據遠程傳輸、電度計量和遠程控制等多項技術的結合初步實現了遠程數據的采集.遠程電表監測系統主要適用于大多數電力公司對居民用電、工廠用電等的電量采集.遠程電表監測系統具有遠程控制、遠程采集數據、近端調試等功能.此系統的開發不僅實現了電表的采集,還可以經過增加水、氣表的采集轉化模塊,實現水、氣量的采集,從而使單系統實現了三表的采集,不需要多個系統實現,從而降低了一些不必要的成本.
遠程電表監測系統是一項較為復雜的系統,現在仍然有許多不夠完善的地方.在下行通信中,隨著技術的不斷進步,采用近距離無線通行會越來越多.在不久的將來,相信遠程電表監測系統將普遍化,因為這項技術可以從中解放出來更多的人力,同時也可以保證遠程電表系統的實時性以及正確性,對未來的發展具有重要的價值與意義.