侯祖峰 李曼 康文倩 孫圓星 憔凱



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