姜 柯 劉浩旭 李 維
(大連理工大學(xué)能源與動力學(xué)院,遼寧 大連 116024)
近年來,隨著汽車發(fā)動機技術(shù)的進步,且相關(guān)部門對尾氣排放限值越來越嚴格,推動著汽車發(fā)動機的開發(fā)進程。在開發(fā)過程中,發(fā)動機臺架試驗涉及多種復(fù)雜的試驗設(shè)備,要求試驗人員具有較高的知識水平和操作技能[1]。大部分發(fā)動機試驗臺架監(jiān)控系統(tǒng)均采用C/S架構(gòu),將系統(tǒng)分為客戶端和服務(wù)器端實現(xiàn)不同的功能。丁旭等[2]利用各種網(wǎng)絡(luò)通信協(xié)議實現(xiàn)臺架與系統(tǒng)之間的數(shù)據(jù)傳輸。王慶等[3]利用C#編程實現(xiàn)對發(fā)動機試驗臺架現(xiàn)場試驗數(shù)據(jù)實時監(jiān)控,對數(shù)據(jù)進行統(tǒng)一管理。韓二鋒[4]以PLC控制器為核心,基于西門子觸摸屏組態(tài)軟件WinCC開發(fā)出一套柴油發(fā)動機性能監(jiān)測系統(tǒng),并對運行參數(shù)進行實時監(jiān)測。與以上系統(tǒng)相比,B/S模式不用安裝特定的客戶端,僅需要利用瀏覽器就能夠使用所有功能,便于系統(tǒng)后續(xù)的維護與更新,具有較高的效率和開放性。文章基于B/S模式設(shè)計出一套試驗臺架監(jiān)控系統(tǒng),通過該監(jiān)控系統(tǒng),可以對試驗過程進行可視化監(jiān)控,實時掌握臺架試驗狀況,試驗人員能夠自動存儲數(shù)據(jù),有效地提高了臺架的試驗和運行效率,對發(fā)動機臺架試驗具有重要的意義。
在進行發(fā)動機臺架試驗時,臺架會向外部發(fā)送XML信息,包含臺架的各種運行參數(shù)。后端可以使用面向?qū)ο蟮腏ava編程語言,通過TCP/IP協(xié)議與臺架建立連接,接收XML信息并解析出對應(yīng)數(shù)據(jù),然后通過操作關(guān)系型數(shù)據(jù)庫的JDBC技術(shù)與MySQL數(shù)據(jù)庫建立連接,將數(shù)據(jù)存入其中。經(jīng)由輕量級Web服務(wù)器TomCat部署項目,可以使試驗數(shù)據(jù)在網(wǎng)頁上以數(shù)字、圖表形式實時可視化顯示。出現(xiàn)故障時可以通過頁面按鈕進行怠速、停機等操作,輸入試驗日期對臺架歷史試驗數(shù)據(jù)進行條件查詢。前端頁面采 用HTML-JavaScript-CSS 的 網(wǎng) 頁 開 發(fā) 技 術(shù)[5]、HTML構(gòu)建網(wǎng)頁結(jié)構(gòu)、JavaScript控制網(wǎng)頁行為、CSS控制網(wǎng)頁表現(xiàn),使用AJAX實現(xiàn)與后端程序的動態(tài)數(shù)據(jù)交互。系統(tǒng)總體流程如圖1所示。
圖1 系統(tǒng)總體流程
系統(tǒng)從軟件架構(gòu)上,采用MVC框架模式,將系統(tǒng)分為視圖、控制器和模型三部分[6]。視圖為系統(tǒng)中的表現(xiàn)層,即瀏覽器中的HTML頁面,用于處理用戶請求和展示相關(guān)內(nèi)容;控制器是系統(tǒng)中的控制層,由Servlet類實現(xiàn),負責在視圖和模型之間交互信息,接收表現(xiàn)層的請求響應(yīng),將數(shù)據(jù)轉(zhuǎn)交至相應(yīng)的模型進行顯示;模型是系統(tǒng)中的業(yè)務(wù)邏輯層和數(shù)據(jù)持久層,包括Service類和JDBCImpl類,負責所有數(shù)據(jù)的查詢調(diào)取和各種業(yè)務(wù)功能的實現(xiàn),將系統(tǒng)處理結(jié)果提交給控制層,控制層提交給表現(xiàn)層顯示。
發(fā)動機試驗臺架監(jiān)控系統(tǒng)采用模塊化思想[7],設(shè)計劃分出不同的功能模塊,分為用戶管理模塊、數(shù)據(jù)采集模塊、頁面顯示模塊及數(shù)據(jù)查詢模塊。
2.2.1 用戶管理模塊
根據(jù)不同的登錄用戶,分為普通人員和試驗人員兩種不同的權(quán)限,試驗人員在普通權(quán)限外,可以對臺架運行參數(shù)進行范圍設(shè)置,點擊網(wǎng)頁按鈕執(zhí)行怠速、停機操作。對網(wǎng)頁配置過濾器進行登錄驗證,若無用戶登錄信息,則直接跳轉(zhuǎn)登錄頁面。
2.2.2 數(shù)據(jù)采集模塊
通過網(wǎng)絡(luò)通信協(xié)議與試驗臺架保持連接,解決數(shù)據(jù)黏包和斷線重連問題,持續(xù)接收并解析出試驗數(shù)據(jù),一方面送往前端頁面顯示,另一方面通過數(shù)據(jù)庫連接池與數(shù)據(jù)庫建立連接存取數(shù)據(jù)。
2.2.3 頁面顯示模塊
包括試驗臺架集中顯示頁面和單臺顯示頁面,使數(shù)據(jù)在頁面上可視化顯示,更直觀形象,便于工作人員實時掌握臺架具體運行狀況。通過頁面對運行參數(shù)進行設(shè)置,超出范圍后,系統(tǒng)會發(fā)出警報聲并發(fā)出電子郵件提醒。
2.2.4 數(shù)據(jù)查詢模塊
可以輸入臺架編號和試驗日期對數(shù)據(jù)庫中歷史試驗數(shù)據(jù)進行條件查詢,能夠查詢和修改關(guān)于試驗臺架的具體信息。搜索出歷史試驗數(shù)據(jù),可以生成圖表和導(dǎo)出Excel文件。
數(shù)據(jù)庫承擔著試驗臺架監(jiān)控系統(tǒng)中存儲和管理數(shù)據(jù)的工作,對數(shù)據(jù)文件具有較快的讀寫速度。在Web數(shù)據(jù)庫的選擇上,MySQL數(shù)據(jù)庫體積小、執(zhí)行效率高、平臺兼容性好且開源免費,適用于中小型網(wǎng)站的開發(fā),采用該數(shù)據(jù)庫能夠滿足系統(tǒng)需求。數(shù)據(jù)庫中主要實體有用戶實體、臺架實體和試驗數(shù)據(jù)實體,根據(jù)系統(tǒng)中數(shù)據(jù)關(guān)系與特點,詳細分析各實體之間聯(lián)系,可以建立實體-聯(lián)系模型的實體關(guān)系圖(E-R圖)。數(shù)據(jù)庫E-R圖如圖2所示。
圖2 數(shù)據(jù)庫E-R圖
矩形表示數(shù)據(jù)庫中的實體,橢圓形表示實體的固有屬性,菱形表示各實體間的聯(lián)系。每一個實體都對應(yīng)數(shù)據(jù)庫中一個數(shù)據(jù)表,其中臺架信息表和試驗數(shù)據(jù)表是一對多的關(guān)系,為保持數(shù)據(jù)的一致性和完整性,需要添加外鍵約束。
用戶可以通過網(wǎng)頁登錄框輸入用戶名和密碼,頁面接收到登錄信息后,向控制器發(fā)送HTTP請求,請求中攜帶包含用戶名和密碼的表單。后端程序接收請求后,調(diào)用業(yè)務(wù)邏輯層方法,根據(jù)用戶名在數(shù)據(jù)庫用戶信息表中的條件查詢該用戶。若不存在該用戶或存在用戶但密碼不正確,彈出登錄失敗提示框;若成功則自動跳轉(zhuǎn)至集中監(jiān)控頁面,同時運用服務(wù)端會話跟蹤技術(shù),將用戶信息(用戶編號、用戶名、密碼、權(quán)限狀態(tài))儲存在Session對象中,可以對后續(xù)操作的權(quán)限驗證和訪問其他頁面進行登錄驗證。
監(jiān)控頁面包括集中監(jiān)控頁面和單臺監(jiān)控頁面。集中監(jiān)控頁面為每個臺架劃分一個小區(qū)域,頁面上包含全部臺架進行集中監(jiān)控。每個小區(qū)域?qū)崟r顯示轉(zhuǎn)速、扭矩、功率等重要運行參數(shù),點擊相應(yīng)區(qū)域可以跳轉(zhuǎn)到單臺顯示頁面。
后端程序通過TCP/IP通信協(xié)議與臺架遠程連接,連接過程中,為實現(xiàn)與臺架的斷線重連功能,引入了心跳包機制。系統(tǒng)每隔10 s發(fā)送給臺架一個固定信息,如果無回應(yīng),則嘗試重新連接。數(shù)據(jù)傳輸過程中,臺架連續(xù)發(fā)送的數(shù)據(jù)包會在接收時黏成一團,后一次數(shù)據(jù)頭連著前一次數(shù)據(jù)尾。為解決數(shù)據(jù)黏包問題,需要在程序里建立緩沖區(qū),接收到臺架的XML數(shù)據(jù)后立刻解析。為讀取XML數(shù)據(jù)中的運行參數(shù),采用了DOM4J解析技術(shù),先獲得數(shù)據(jù)所在根標簽對象,再根據(jù)里面標簽名得到試驗數(shù)據(jù)。試驗數(shù)據(jù)經(jīng)由控制器傳遞到前端網(wǎng)頁,通過Vue框架,將數(shù)據(jù)與表現(xiàn)層模型綁定,表現(xiàn)層模型隨數(shù)據(jù)改變而改變,達到頁面中顯示內(nèi)容實時更新的效果。
在單臺監(jiān)控頁面中,將運行參數(shù)劃分為不同種類,用數(shù)字形式實時顯示,每秒定時調(diào)用setInterval函數(shù)更新最新的試驗數(shù)據(jù)。中間區(qū)域引入ECharts開源可視化庫繪制圖表,以曲線圖形式展示部分參數(shù)隨時間的變化趨勢,以表盤中指針跳動形式更新轉(zhuǎn)速信息。為保證試驗臺架的安全性,頁面上還存在怠速、停機按鈕。出現(xiàn)故障時點擊按鈕,在登錄賬號操作權(quán)限驗證通過后,即可經(jīng)由TCP/IP連接,向臺架發(fā)送包含怠速或停機命令的XML信息,臺架收到對應(yīng)信息,就會執(zhí)行相應(yīng)的怠速、停機操作。數(shù)據(jù)庫按鈕可以跳轉(zhuǎn)至歷史數(shù)據(jù)查詢頁面,實現(xiàn)調(diào)取歷史試驗數(shù)據(jù)的相關(guān)需求。點擊設(shè)置按鈕后可以進入?yún)?shù)設(shè)置頁面,對試驗臺架參數(shù)進行相應(yīng)的范圍設(shè)置。提交設(shè)置后,監(jiān)控頁面可以將每次獲得的運行參數(shù)與設(shè)置的參數(shù)進行對比,若超出范圍,則對應(yīng)數(shù)據(jù)顯示樣式變?yōu)榧t色,并基于SMTP協(xié)議(簡單郵件傳輸協(xié)議),將數(shù)據(jù)超限郵件發(fā)送給特定的SMTP服務(wù)器,進而轉(zhuǎn)發(fā)給提前設(shè)定的電子郵箱地址進行提醒。單臺監(jiān)控頁面如圖3所示。
圖3 單臺監(jiān)控頁面
系統(tǒng)解析出試驗數(shù)據(jù)后,會多線程操作,運用數(shù)據(jù)庫連接池,將數(shù)據(jù)存入對應(yīng)臺架的試驗數(shù)據(jù)表內(nèi)。需要查詢歷史試驗數(shù)據(jù),可以在數(shù)據(jù)查詢頁面對應(yīng)的輸入框,輸入想要查詢的臺架編號和試驗日期,點擊查詢按鈕后,條件參數(shù)提交給后端業(yè)務(wù)邏輯層。后端計算開始索引后,調(diào)用數(shù)據(jù)持久層方法對數(shù)據(jù)進行條件和分頁查詢,得到對應(yīng)信息后將數(shù)據(jù)打包返還頁面顯示。試驗信息復(fù)選框勾選后,點擊按鈕生成可保存的折線趨勢圖;或?qū)?shù)據(jù)傳至后端程序,生成帶表頭格式的Excel文件,并在網(wǎng)頁上自動下載。旁邊的臺架信息按鈕,點擊可查詢所有試驗臺架的具體信息。點擊查詢出的臺架信息列表中存在修改按鈕,會彈出表單,執(zhí)行對臺架信息的修改操作。數(shù)據(jù)查詢頁面的所有數(shù)據(jù)可以異步動態(tài)交互,點擊按鈕后無須刷新網(wǎng)頁,即可實現(xiàn)數(shù)據(jù)的即時更新。數(shù)據(jù)查詢頁面如圖4所示。
圖4 數(shù)據(jù)查詢頁面
在Windows系統(tǒng)下使用IntelliJ IDEA作為開發(fā)工具,后端使用Java語言和MySQL數(shù)據(jù)庫,前端采用HTML-JavaScript-CSS的網(wǎng)頁開發(fā)技術(shù),基于B/S模式設(shè)計并開發(fā)出發(fā)動機試驗臺架監(jiān)控系統(tǒng),服務(wù)端部署后僅需Web瀏覽器即可訪問監(jiān)控系統(tǒng)網(wǎng)頁,對運行中的發(fā)動機試驗臺架實時監(jiān)測和操控。整個系統(tǒng)相比C/S模式,操作簡單、擴展性好、信息共享度高且易于維護,實現(xiàn)了對發(fā)動機試驗臺架運行狀態(tài)的實時監(jiān)控和數(shù)據(jù)的即時存儲,發(fā)現(xiàn)故障時能夠進行相應(yīng)操作,提高了臺架試驗效率和安全性。