GPRS無(wú)線(xiàn)通訊在無(wú)功補償控制系統中的應用
2) 當連接建立后,就可以在這條連接上進(jìn)行數據收發(fā)。使用SEND命令幀控制MC35發(fā)送數據,發(fā)送時(shí)要指定連接號(由本地端口、目的IP地址和端口唯一確定)。
3) 數據發(fā)送完成后不再需要這條連接時(shí),就可以把連接掛斷。
在這里我們采用在MSP430F448中軟件嵌入TCP/IP協(xié)議棧uIP的方法來(lái)實(shí)現TCP/IP協(xié)議。uIP是一種免費公開(kāi)源代碼的小型TCP/IP協(xié)議棧,專(zhuān)門(mén)為8位和16位MCU編寫(xiě)。uIP完全是用C語(yǔ)言編寫(xiě),它采用了一個(gè)事件驅動(dòng)接口,通過(guò)調用應用程序響應事件。uIP的源代碼只有幾KB,RAM占用僅幾百字節,但uIP實(shí)現了TCP/IP協(xié)議集的四個(gè)基本協(xié)議:ARP地址解析協(xié)議,IP網(wǎng)際互聯(lián)協(xié)議,ICMP網(wǎng)絡(luò )控制報文協(xié)議和TCP傳輸控制協(xié)議。用戶(hù)可以方便的調用接口函數來(lái)實(shí)現TCP/IP協(xié)議。
uIP與系統底層的接口包括與設備驅動(dòng)的接口和系統定時(shí)器的接口兩類(lèi)。在程序的主循環(huán)中,底層接口程序循環(huán)檢查是否收到數據包和周期定時(shí)器是否超時(shí)溢出。TCP/IP協(xié)議程序中主控環(huán)程序流程如圖3所示。
圖3 TCP/IP協(xié)議中程序主流程
uIP通過(guò)函數uip_input()和全局變量uip_buf、uip_len來(lái)實(shí)現與設備驅動(dòng)的接口,收發(fā)IP數據包時(shí)觸發(fā)應用程序接口事件。應用程序事件1主要是對數據包的處理:當數據來(lái)自MCU時(shí)則進(jìn)行TCP/IP打包然后送GPRS模塊發(fā)送到Internet網(wǎng)絡(luò );當收到來(lái)自GPRS模塊的數據時(shí)則進(jìn)行相應的解包處理,抽出數據,按發(fā)送前的順序還原,并加以校驗,若發(fā)現錯誤,TCP/IP棧會(huì )要求重發(fā),然后將數據通過(guò)串口送控制器。uIP協(xié)議棧提供了一系列接口函數供用戶(hù)程序調用,這使得我們不需要了解數據的具體處理過(guò)程,只需要調用相應的接口函數把數據送上層應用程序即可。
系統定時(shí)器使用msp430f448的16位定時(shí)器Timer_B作為時(shí)鐘基準,定時(shí)周期設為1s。定時(shí)器主要用于處理數據傳輸錯誤重發(fā)、應答延時(shí)、往返時(shí)間(RTT)估計等。應用程序事件2主要是對定時(shí)器超時(shí)事件的處理:當TCP連接建立時(shí),uIP周期性調用函數uip_periodic()來(lái)驅動(dòng)TCP/IP協(xié)議定時(shí)器和重發(fā)事件。當數據發(fā)送后,轉發(fā)定時(shí)器進(jìn)行減計數,如果在一個(gè)定時(shí)器周期內沒(méi)收到接收端的確認(ACK)消息,發(fā)送端就認為這個(gè)數據丟失置標志位,應用程序檢查標志則產(chǎn)生上次發(fā)送的數據并重發(fā)。
為保證無(wú)功補償控制的實(shí)時(shí)性要求,對于對方主動(dòng)發(fā)起TCP連接、對方發(fā)來(lái)數據、對方主動(dòng)釋放TCP連接、GPRS斷線(xiàn)和重連成功等事件都可以通過(guò)中斷通知給F448單片機,以便單片機進(jìn)行相應處理和操作。對于這些事件必須及時(shí)進(jìn)行處理,以便及時(shí)反映通信情況,并且避免相關(guān)的事件緩沖區和數據緩沖區溢出。由于電力系統無(wú)功補償測控終端一般都安裝野外環(huán)境中,地點(diǎn)偏遠,無(wú)人值守,設備必須能夠在特殊的環(huán)境下長(cháng)期、穩定工作。因此在軟件上設定系統具有自動(dòng)撥號、斷線(xiàn)重撥功能。在GPRS網(wǎng)絡(luò )狀態(tài)不穩定時(shí),具有自動(dòng)恢復通訊能力,保證系統穩定工作,無(wú)需人為干預。另外在電源抗干擾及散熱等方面也要特殊設計,使終端設備能適應惡劣工作環(huán)境。
服務(wù)器軟件設計
服務(wù)器端人機接口為用戶(hù)提供一個(gè)可視化的監測界面,可以直觀(guān)、方便、快捷地了解電網(wǎng)和控制器的運行狀態(tài),及時(shí)發(fā)現處理異常和故障情況。軟件采用圖形化編程界面軟件C++ Builder開(kāi)發(fā),根據不同的功能分為用戶(hù)界面子系統、數據管理子系統和網(wǎng)絡(luò )通訊服務(wù)子系統。主要完成的功能有無(wú)線(xiàn)通訊處理,數據處理,報表分析統計等。
用戶(hù)界面子系統作為主要的人機交互界面,可以根據
網(wǎng)絡(luò )通訊服務(wù)子系統采用C++ Builder的Socket控件和多線(xiàn)程技術(shù)來(lái)實(shí)現。由于服務(wù)器采用一對多的通訊方式,為防止當有多個(gè)終端同時(shí)和服務(wù)器進(jìn)行通訊時(shí)發(fā)生信息阻塞,以保證通訊的實(shí)時(shí)性和可靠性,程序中使用線(xiàn)程技術(shù)來(lái)處理服務(wù)器與每一個(gè)終端的連接。啟動(dòng)GPRS并初始化完成后,使用輔助線(xiàn)程來(lái)監聽(tīng)Socket端口,當有數據到達時(shí),輔助線(xiàn)程通過(guò)事件通知主線(xiàn)程處理收到的網(wǎng)絡(luò )協(xié)議數據包。主線(xiàn)程創(chuàng )建副線(xiàn)程來(lái)處理該次連接,在副線(xiàn)程中讀取數據并判斷是否正確,正確則保存數據,錯誤就將該數據包丟棄,數據處理完成后終止副線(xiàn)程,繼續監聽(tīng)斷開(kāi)。
結語(yǔ)
本文介紹的GPRS無(wú)線(xiàn)數據傳輸系統經(jīng)西安達泰電子公司進(jìn)行了長(cháng)達半年的運行測試,主機在西安市區,16個(gè)控制終端分布在近郊各地的變電站。測試結果表明系統的組網(wǎng)費用節約40%_50%,人工出修率不到以前的1/3。其總體的精度指標、實(shí)時(shí)性指標、容量指標、可靠性指標均優(yōu)于或等同于傳統數傳系統。只是系統有時(shí)會(huì )因移動(dòng)通信網(wǎng)絡(luò )的覆蓋范圍和信號質(zhì)量問(wèn)題而出現響應超時(shí)或停止響應,但這種情況發(fā)生的概率很低,可以通過(guò)軟件容錯和重發(fā)機制解決。
采用GPRS網(wǎng)絡(luò )遠程數據通訊比其它專(zhuān)線(xiàn)或射頻通訊方式有不可比擬的優(yōu)越性,該通信系統具有連接方便、擴充性好、成本低、維護工作量小等特點(diǎn)。在電力系統電網(wǎng)自動(dòng)化管理和實(shí)時(shí)監控中使用GPRS無(wú)線(xiàn)網(wǎng)絡(luò )通過(guò)Internet傳輸數據,將會(huì )具有很好的應用前景。
評論