侯祖峰 李曼 康文倩 孫圓星 憔凱
摘要
此文設計實現(xiàn)了一個基于Web的電動汽車充電站監(jiān)控系統(tǒng)在給出系統(tǒng)結(jié)構(gòu)、功能和軟件邏輯架構(gòu)的基礎上,分析了SVG,Ajax的技術特點,使用SVG進行圖形界面的展示,通過jQuery/Ajax實現(xiàn)數(shù)據(jù)的實時刷新,給出了一種TCP/UDP相結(jié)合的實時數(shù)據(jù)快速傳輸方法。此Web系統(tǒng)已在tomcat服務器中部署并在多瀏覽器環(huán)境中運行運行結(jié)果表明,該Web系統(tǒng)為電動汽車充電站遠程監(jiān)控與信息共享提供了一種有效的解決方案。
【關鍵詞】Web系統(tǒng) 電動汽車充電站SVGjQuery Ajax
充電站作為新能源汽車發(fā)展基礎設施建設,國家推出一系列支持政策。在政策支持下,我國充電基礎設施建設全面鋪開,充電市場日趨活躍。這就對充電站管控提出更高要求。SCADA系統(tǒng)作為數(shù)據(jù)采集和監(jiān)視控制系統(tǒng),被廣泛運用于各類管控系統(tǒng)包括充電站監(jiān)控管理。伴隨充電站規(guī)模日益擴大,對SCADA綜合性能提出了更嚴格要求。而目前SCADA系統(tǒng)基本上采用C/S架構(gòu),表現(xiàn)出眾多局限性,包括安裝困難及后期維護成本高等?;贐/S的SCADA系統(tǒng)逐漸成為一種趨勢。目前基于Web的充電站監(jiān)控系統(tǒng)已有諸多研究,文獻[5]所設計有序充電Web監(jiān)控系統(tǒng)研究出一種較好的充電控制策略,但系統(tǒng)跨平臺性與瀏覽器兼容性上還存在不足。文獻[6]及文獻[7]實現(xiàn)的監(jiān)控系統(tǒng)解決了系統(tǒng)跨平臺問題,但實時數(shù)據(jù)從數(shù)據(jù)庫提取削弱了系統(tǒng)實時性。
本文設計充電站W(wǎng)eb監(jiān)控系統(tǒng)在B/S基礎上,通過tcp長連接向?qū)崟r庫獲取實時數(shù)據(jù),B/S端完成邏輯處理并用SVG實現(xiàn)畫面展示。瀏覽器向Web服務器發(fā)送Ajax數(shù)據(jù)請求,Web服務解析請求類型后通過tcp長連接獲取實時數(shù)據(jù)或讀取數(shù)據(jù)庫獲取歷史數(shù)據(jù)并返回。
1 系統(tǒng)結(jié)構(gòu)及功能
1.1 系統(tǒng)結(jié)構(gòu)
充電站W(wǎng)eb監(jiān)控系統(tǒng)提供SCADA系統(tǒng)數(shù)據(jù)瀏覽功能,Web服務器與SCADA網(wǎng)之間通過正向隔離裝置隔離。如圖1為系統(tǒng)結(jié)構(gòu)圖。
充電站W(wǎng)eb監(jiān)控系統(tǒng)使用SVG實現(xiàn)圖形界面,通過Ajax實現(xiàn)數(shù)據(jù)局部刷新。內(nèi)網(wǎng)具有實時數(shù)據(jù)與歷史數(shù)據(jù)發(fā)送端,外網(wǎng)具有實時數(shù)據(jù)及歷史數(shù)據(jù)接收端。SCADA服務器將實時與歷史數(shù)據(jù)通過正向隔離裝置傳輸給外網(wǎng)實時庫與歷史庫。歷史數(shù)據(jù)由Web服務器從歷史庫中讀取返回給客戶端。針對多客戶端并發(fā)操作情況,實時數(shù)據(jù)由Web服務器在sevice層通過本地UDP轉(zhuǎn)發(fā)方式將請求先發(fā)給TCP長連接程序,再由TCP與實時庫之間通信,獲取實時數(shù)據(jù)后逐層返回。
1.2 系統(tǒng)功能模塊
系統(tǒng)功能模塊包括系統(tǒng)結(jié)構(gòu)、接線圖、充電樁監(jiān)控、計量計費、曲線報表、日報表及充電記錄查詢等模塊。
2 系統(tǒng)邏輯架構(gòu)
系統(tǒng)邏輯架構(gòu)如圖2,主要包括:客戶端、Web服務層、實時數(shù)據(jù)獲取層。
畫面顯示及數(shù)據(jù)刷新在客戶端實現(xiàn),對SVG進行解析,獲取指定屬性作為Ajax請求參數(shù)從Web服務獲取數(shù)據(jù),利用客戶端本地存儲,將不需更新但需使用多次的數(shù)據(jù)在本地緩存,返回數(shù)據(jù)采用 JSON格式。Web服務層由Web、DAO、service層及udp本地轉(zhuǎn)發(fā)組成。Web層為Web服務與客戶端通信接口,接收解析客戶端請求,判斷請求類型通過UDP與TCP長連接通信獲取實時數(shù)據(jù)或通過DAO層數(shù)據(jù)訪問接口獲取歷史數(shù)據(jù),最后將結(jié)果返回客戶端。TCP長連接負責實時數(shù)據(jù)獲取。
3 關鍵技術及實現(xiàn)
3.1 SVG
3.1.1 技術特點
SVG表示可伸縮矢量圖形,其優(yōu)點體現(xiàn)在:圖形縮放不影響打印質(zhì)量、文件小、動態(tài)性、文字與圖形獨立、交互性強、且完全支持移動端運用等。
3.1.2 具體實現(xiàn)
如圖3以充電電壓表盤為例,其中使用引入表盤背景,描繪指針,顯示電壓實時值及表盤刻度文本。
3.2 Ajax數(shù)據(jù)交互
3.2.1 技術特點
Ajax是Asynchronous JavaScript and XML的縮寫。瀏覽器通過Ajax向后端發(fā)送異步請求取回數(shù)據(jù)對頁面進行局部刷新。
3.2.2 具體實現(xiàn)
使用Ajax在客戶端與Web服務間實現(xiàn)數(shù)據(jù)交互,Web服務端針對不同請求有不同處理接口,客戶端使用特定URL向后端發(fā)起請求,當請求中包含需加密字段或數(shù)據(jù)量較大時發(fā)起POST請求。請求數(shù)據(jù)量較小時發(fā)起GET請求,請求與返回數(shù)據(jù)均為JSON格式。為保證瀏覽器兼容性,使用jQuery封裝的Ajax實現(xiàn)代碼統(tǒng)一。
3.3 獲取實時數(shù)據(jù)
3.3.1 技術特點
Web服務通過TCP長連接與實時庫交互將實時數(shù)據(jù)返回客戶端保證實時性。TCP短連接完成一次讀寫自動關閉,而TCP長連接一經(jīng)建立將一直保持。頻繁刷新數(shù)據(jù)情況下,長連接長期保持比短連接每次消耗連接時間更適用。
3.3.2 具體實現(xiàn)
實時數(shù)據(jù)由TCP長連接與實時庫交互,其組成如下:
(1)接收Web轉(zhuǎn)發(fā)請求。在本地端口監(jiān)測由Web服務器service層發(fā)來的udp數(shù)據(jù)請求包并驗證,驗證后的請求進入發(fā)送隊列。
(2)向?qū)崟r庫發(fā)送數(shù)據(jù)請求。每隔500ms向?qū)崟r庫發(fā)送心跳包,當發(fā)送隊列中有請求時,取出隊首請求并發(fā)送,發(fā)送成功移除隊首請求。拋出異常時,標識發(fā)送異常標識量。
(3)接收實時庫返回數(shù)據(jù)。接收到心跳包時覆蓋接收心跳時間點,接收到返回數(shù)據(jù)時初步驗證并將數(shù)據(jù)放入接收隊列。超過1.7s未接收到心跳包或接收異常時,標識接收異常標識量。
(4)向Web服務器返回數(shù)據(jù)。檢測到接收隊列中有數(shù)據(jù)時提取隊首數(shù)據(jù)并驗證,判斷無誤后將數(shù)據(jù)返回給Web服務器。
(5)斷線重連。當發(fā)送數(shù)據(jù)異常量與接收數(shù)據(jù)異常量都被標記時,斷開連接并嘗試重新建立連接。