姜 柯 劉浩旭 李 維
(大連理工大學能源與動力學院,遼寧 大連 116024)
近年來,隨著汽車發動機技術的進步,且相關部門對尾氣排放限值越來越嚴格,推動著汽車發動機的開發進程。在開發過程中,發動機臺架試驗涉及多種復雜的試驗設備,要求試驗人員具有較高的知識水平和操作技能[1]。大部分發動機試驗臺架監控系統均采用C/S架構,將系統分為客戶端和服務器端實現不同的功能。丁旭等[2]利用各種網絡通信協議實現臺架與系統之間的數據傳輸。王慶等[3]利用C#編程實現對發動機試驗臺架現場試驗數據實時監控,對數據進行統一管理。韓二鋒[4]以PLC控制器為核心,基于西門子觸摸屏組態軟件WinCC開發出一套柴油發動機性能監測系統,并對運行參數進行實時監測。與以上系統相比,B/S模式不用安裝特定的客戶端,僅需要利用瀏覽器就能夠使用所有功能,便于系統后續的維護與更新,具有較高的效率和開放性。文章基于B/S模式設計出一套試驗臺架監控系統,通過該監控系統,可以對試驗過程進行可視化監控,實時掌握臺架試驗狀況,試驗人員能夠自動存儲數據,有效地提高了臺架的試驗和運行效率,對發動機臺架試驗具有重要的意義。
在進行發動機臺架試驗時,臺架會向外部發送XML信息,包含臺架的各種運行參數。后端可以使用面向對象的Java編程語言,通過TCP/IP協議與臺架建立連接,接收XML信息并解析出對應數據,然后通過操作關系型數據庫的JDBC技術與MySQL數據庫建立連接,將數據存入其中。經由輕量級Web服務器TomCat部署項目,可以使試驗數據在網頁上以數字、圖表形式實時可視化顯示。出現故障時可以通過頁面按鈕進行怠速、停機等操作,輸入試驗日期對臺架歷史試驗數據進行條件查詢。前端頁面采 用HTML-JavaScript-CSS 的 網 頁 開 發 技 術[5]、HTML構建網頁結構、JavaScript控制網頁行為、CSS控制網頁表現,使用AJAX實現與后端程序的動態數據交互。系統總體流程如圖1所示。

圖1 系統總體流程
系統從軟件架構上,采用MVC框架模式,將系統分為視圖、控制器和模型三部分[6]。視圖為系統中的表現層,即瀏覽器中的HTML頁面,用于處理用戶請求和展示相關內容;控制器是系統中的控制層,由Servlet類實現,負責在視圖和模型之間交互信息,接收表現層的請求響應,將數據轉交至相應的模型進行顯示;模型是系統中的業務邏輯層和數據持久層,包括Service類和JDBCImpl類,負責所有數據的查詢調取和各種業務功能的實現,將系統處理結果提交給控制層,控制層提交給表現層顯示。
發動機試驗臺架監控系統采用模塊化思想[7],設計劃分出不同的功能模塊,分為用戶管理模塊、數據采集模塊、頁面顯示模塊及數據查詢模塊。
2.2.1 用戶管理模塊
根據不同的登錄用戶,分為普通人員和試驗人員兩種不同的權限,試驗人員在普通權限外,可以對臺架運行參數進行范圍設置,點擊網頁按鈕執行怠速、停機操作。對網頁配置過濾器進行登錄驗證,若無用戶登錄信息,則直接跳轉登錄頁面。
2.2.2 數據采集模塊
通過網絡通信協議與試驗臺架保持連接,解決數據黏包和斷線重連問題,持續接收并解析出試驗數據,一方面送往前端頁面顯示,另一方面通過數據庫連接池與數據庫建立連接存取數據。
2.2.3 頁面顯示模塊
包括試驗臺架集中顯示頁面和單臺顯示頁面,使數據在頁面上可視化顯示,更直觀形象,便于工作人員實時掌握臺架具體運行狀況。通過頁面對運行參數進行設置,超出范圍后,系統會發出警報聲并發出電子郵件提醒。
2.2.4 數據查詢模塊
可以輸入臺架編號和試驗日期對數據庫中歷史試驗數據進行條件查詢,能夠查詢和修改關于試驗臺架的具體信息。搜索出歷史試驗數據,可以生成圖表和導出Excel文件。
數據庫承擔著試驗臺架監控系統中存儲和管理數據的工作,對數據文件具有較快的讀寫速度。在Web數據庫的選擇上,MySQL數據庫體積小、執行效率高、平臺兼容性好且開源免費,適用于中小型網站的開發,采用該數據庫能夠滿足系統需求。數據庫中主要實體有用戶實體、臺架實體和試驗數據實體,根據系統中數據關系與特點,詳細分析各實體之間聯系,可以建立實體-聯系模型的實體關系圖(E-R圖)。數據庫E-R圖如圖2所示。

圖2 數據庫E-R圖
矩形表示數據庫中的實體,橢圓形表示實體的固有屬性,菱形表示各實體間的聯系。每一個實體都對應數據庫中一個數據表,其中臺架信息表和試驗數據表是一對多的關系,為保持數據的一致性和完整性,需要添加外鍵約束。
用戶可以通過網頁登錄框輸入用戶名和密碼,頁面接收到登錄信息后,向控制器發送HTTP請求,請求中攜帶包含用戶名和密碼的表單。后端程序接收請求后,調用業務邏輯層方法,根據用戶名在數據庫用戶信息表中的條件查詢該用戶。若不存在該用戶或存在用戶但密碼不正確,彈出登錄失敗提示框;若成功則自動跳轉至集中監控頁面,同時運用服務端會話跟蹤技術,將用戶信息(用戶編號、用戶名、密碼、權限狀態)儲存在Session對象中,可以對后續操作的權限驗證和訪問其他頁面進行登錄驗證。
監控頁面包括集中監控頁面和單臺監控頁面。集中監控頁面為每個臺架劃分一個小區域,頁面上包含全部臺架進行集中監控。每個小區域實時顯示轉速、扭矩、功率等重要運行參數,點擊相應區域可以跳轉到單臺顯示頁面。
后端程序通過TCP/IP通信協議與臺架遠程連接,連接過程中,為實現與臺架的斷線重連功能,引入了心跳包機制。系統每隔10 s發送給臺架一個固定信息,如果無回應,則嘗試重新連接。數據傳輸過程中,臺架連續發送的數據包會在接收時黏成一團,后一次數據頭連著前一次數據尾。為解決數據黏包問題,需要在程序里建立緩沖區,接收到臺架的XML數據后立刻解析。為讀取XML數據中的運行參數,采用了DOM4J解析技術,先獲得數據所在根標簽對象,再根據里面標簽名得到試驗數據。試驗數據經由控制器傳遞到前端網頁,通過Vue框架,將數據與表現層模型綁定,表現層模型隨數據改變而改變,達到頁面中顯示內容實時更新的效果。
在單臺監控頁面中,將運行參數劃分為不同種類,用數字形式實時顯示,每秒定時調用setInterval函數更新最新的試驗數據。中間區域引入ECharts開源可視化庫繪制圖表,以曲線圖形式展示部分參數隨時間的變化趨勢,以表盤中指針跳動形式更新轉速信息。為保證試驗臺架的安全性,頁面上還存在怠速、停機按鈕。出現故障時點擊按鈕,在登錄賬號操作權限驗證通過后,即可經由TCP/IP連接,向臺架發送包含怠速或停機命令的XML信息,臺架收到對應信息,就會執行相應的怠速、停機操作。數據庫按鈕可以跳轉至歷史數據查詢頁面,實現調取歷史試驗數據的相關需求。點擊設置按鈕后可以進入參數設置頁面,對試驗臺架參數進行相應的范圍設置。提交設置后,監控頁面可以將每次獲得的運行參數與設置的參數進行對比,若超出范圍,則對應數據顯示樣式變為紅色,并基于SMTP協議(簡單郵件傳輸協議),將數據超限郵件發送給特定的SMTP服務器,進而轉發給提前設定的電子郵箱地址進行提醒。單臺監控頁面如圖3所示。

圖3 單臺監控頁面
系統解析出試驗數據后,會多線程操作,運用數據庫連接池,將數據存入對應臺架的試驗數據表內。需要查詢歷史試驗數據,可以在數據查詢頁面對應的輸入框,輸入想要查詢的臺架編號和試驗日期,點擊查詢按鈕后,條件參數提交給后端業務邏輯層。后端計算開始索引后,調用數據持久層方法對數據進行條件和分頁查詢,得到對應信息后將數據打包返還頁面顯示。試驗信息復選框勾選后,點擊按鈕生成可保存的折線趨勢圖;或將數據傳至后端程序,生成帶表頭格式的Excel文件,并在網頁上自動下載。旁邊的臺架信息按鈕,點擊可查詢所有試驗臺架的具體信息。點擊查詢出的臺架信息列表中存在修改按鈕,會彈出表單,執行對臺架信息的修改操作。數據查詢頁面的所有數據可以異步動態交互,點擊按鈕后無須刷新網頁,即可實現數據的即時更新。數據查詢頁面如圖4所示。

圖4 數據查詢頁面
在Windows系統下使用IntelliJ IDEA作為開發工具,后端使用Java語言和MySQL數據庫,前端采用HTML-JavaScript-CSS的網頁開發技術,基于B/S模式設計并開發出發動機試驗臺架監控系統,服務端部署后僅需Web瀏覽器即可訪問監控系統網頁,對運行中的發動機試驗臺架實時監測和操控。整個系統相比C/S模式,操作簡單、擴展性好、信息共享度高且易于維護,實現了對發動機試驗臺架運行狀態的實時監控和數據的即時存儲,發現故障時能夠進行相應操作,提高了臺架試驗效率和安全性。