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