張鵬,顧繼承,王小龍,何萌
(航空工業(yè)北京長城計量測試技術研究所,北京100095)
溫濕度環(huán)境試驗設備廣泛應用于汽車、電子、生物醫(yī)藥等行業(yè)中。為保證環(huán)境試驗數據穩(wěn)定、可靠、可溯源,需要對環(huán)境試驗設備定期開展計量校準工作。伴隨著中國社會經濟的快速發(fā)展,環(huán)境試驗設備的校準服務工作業(yè)務量迅速增加,出現了各式各樣的環(huán)境試驗設備自動化校準軟件,但是這些軟件普遍存在擴展性差、測量參數單一、覆蓋規(guī)程有限等問題。針對這些軟件的不足,本文設計了一款環(huán)境試驗設備自動化測試軟件。該軟件具有良好的兼容性,支持多規(guī)程覆蓋、多參數校準功能,能夠有效滿足計量人員的使用需求。
如圖1所示,本文研制的環(huán)境試驗設備自動化測試軟件包含五個功能模塊:①客戶管理模塊主要用于管理送檢客戶的信息、被測環(huán)境試驗設備的信息和試驗環(huán)境相關信息;②標準器管理模塊主要用來管理巡檢儀、傳感器等標準器的信息和其不確定度信息以及傳感器的修正值;③規(guī)程管理模塊主要用來管理使用規(guī)程的名字、發(fā)布時間、所屬部門等信息以及規(guī)程的測試參數;④采集模塊用來管理硬件設備驅動程序和采集數據;⑤試驗操作模塊是確定試驗信息、選定規(guī)程、選定標準器,利用標準參照規(guī)程要求的流程對被測設備進行測量的模塊,并將結果按照原始記錄或證書模板進行打印。
通過這五個模塊可以實現環(huán)境試驗設備的自動化測試,但是由于環(huán)境實驗設備校準檢測使用的規(guī)程及參數較多,如表1所示,設計過程中會遇到多規(guī)程多參數兼容性問題,如果為了保證程序的兼容性而將不同規(guī)程的運行以及不同參數的測量過程完全獨立設計,會導致開發(fā)效率低、使用者的學習難度大、校準檢測時使用效率低,再加上客戶信息、被測設備信息、傳感器信息以及測量結果查詢功能均是共同使用的,如果完全獨立設計會造成資源的浪費,且明顯增加了程序運行的復雜性。因此環(huán)境試驗設備自動化測試軟件設計中最大的難點就是實現多規(guī)程多參數的兼容性程序架構。
圖1 軟件結構
為了解決多規(guī)程多參數兼容性的程序設計難題,本文將五個功能模塊的調用關系調整為三層:信息層、規(guī)程算法層、硬件采集層,如圖2所示;然后通過一個“測試序號”參數將這三個層次之間解耦獨立之后進行動態(tài)調用。
圖2 軟件框架
信息層是通過人機交互完成客戶、被測設備、試驗條件、選用規(guī)程、選用標準器等信息輸入功能的集合;規(guī)程算法層是按照不同的規(guī)程規(guī)范要求的算法計算完成校準檢測任務功能的集合;硬件采集層是驅動采集模塊中硬件采集數據功能的集合。
調整調用關系最主要的手段是將規(guī)程算法層中的規(guī)程設計為獨立的調用單元,可用解耦規(guī)程單元與外部輸入參數依賴的方法,形成模塊獨立的代碼[14-15]。
環(huán)境試驗設備自動化測試軟件的基本業(yè)務流程如圖3所示。程序開始運行后,通過客戶管理模塊和標準器管理模塊輸入客戶信息、被檢設備信息、測試環(huán)境信息、所選標準器和傳感器信息;然后按照選定項目進入試驗模塊,按規(guī)程要求的步驟開展校準測試并計算結果,最后生成原始記錄或證書。
梳理業(yè)務流程之后,可以發(fā)現試驗模塊按照規(guī)程要求開展校準檢測功能時,需要用到客戶管理模塊、標準器管理模塊獲得的信息。如果按照常規(guī)方法進行程序設計,即在內存中開辟變量空間存儲信息內容,然后信息內容通過內存在模塊間傳遞,會導致模塊之間的依賴性非常強,屬于強耦合關系,任何代碼的變動都將導致程序的連鎖修改,無法滿足多規(guī)程多參數獨立流程、獨立界面、獨立硬件的設計要求。
為了解除模塊間的耦合,在設計過程中調整了模塊之間的數據傳遞邏輯,將原本通過內存直接向試驗模塊傳遞客戶數據、標準器數據、傳感器數據的耦合方法,調整為不利用內存空間的間接傳遞的非耦合方法:即在客戶管理模塊和標準器管理模塊中,將客戶信息、標準器信息、傳感器信息等需要傳遞的數據存儲在數據庫中,試驗模塊使用以上信息時到數據庫查詢即可。這種設計方案雖然增加了數據庫編程的代碼量,但可有效實現試驗模塊與其他模塊的解耦。
表1 規(guī)程規(guī)范與對應的參數
圖3 基本業(yè)務流程
同理,在試驗模塊內部驅動硬件時,認為不同規(guī)程、不同校準測試參數使用不同的硬件。如果硬件的驅動設置和采集的數據全部由變量經內存?zhèn)鬟f,試驗模塊與硬件調用之間同樣面臨著強耦合的問題,當更換硬件時會面臨程序上的巨大修改。因此,調整硬件采集時的數據存儲邏輯,采用將驅動配置和采集數據存儲在數據庫中的非耦合方式,將硬件功能程序從試驗模塊中解耦出來,最終使程序變成三層結構。
通過解耦設計后的試驗模塊代碼流程如圖4所示。
圖4 解耦設計后試驗模塊的代碼流程圖
在解耦的同時,還須要配合利用動態(tài)調用技術。動態(tài)調用是對應程序的靜態(tài)調用而言的,靜態(tài)調用是程序在編譯時直接將靜態(tài)調用的函數與數據一同編譯鏈接至可執(zhí)行文件中,當可執(zhí)行文件運行時,所有靜態(tài)調用的函數全部加載至內存,這種方式簡單方便。而采取動態(tài)調用的函數在編譯時不鏈接至可執(zhí)行文件內部,而是隨著程序運行的過程根據指令動態(tài)加載到內存中[16]。動態(tài)調用最大的好處是動態(tài)函數與EXE執(zhí)行文件獨立,只要函數輸入輸出接口不變(即名稱、參數、返回值類型和調用約定不變),更換動態(tài)調用函數不會對EXE可執(zhí)行文件造成任何影響,極大地提高了程序的可維護性和可擴展性[17]。
實現動態(tài)調用的技術難度比較大,比如編譯器的實現機制、動態(tài)調用路徑、調試環(huán)境等,而且不同軟件平臺動態(tài)調用的實現機制不同,解決方法也不同。本文不分析動態(tài)調用的實現細節(jié),主要分析利用了動態(tài)調用技術的軟件結構。
環(huán)境試驗設備自動化測試軟件將動態(tài)調用技術應用于試驗模塊中,將需求中提到的每一本規(guī)程規(guī)范設計為一個獨立的可動態(tài)調用的試驗模塊,然后將這些試驗模塊集合命名為規(guī)程庫,由調度模塊動態(tài)加載,軟件結構如圖5所示。
圖5 動態(tài)調用軟件框架
以JJF 1270-2010《溫度、濕度、振動綜合環(huán)境試驗系統(tǒng)校準規(guī)范》和JJF 1101-2019《環(huán)境試驗設備溫度、濕度校準規(guī)范》動態(tài)調用為例,分析軟件結構的運行流程。
首先,啟動運行,進入信息層獲取相關信息,然后進入規(guī)程算法層調用JJF 1270-2010試驗模塊。
JJF 1270-2010中規(guī)定了溫度偏差、溫度波動度、溫度均勻度、溫度指示儀表示值誤差、溫度變化速率、相對濕度偏差、相對濕度指示儀表示值誤差、風速、最低露點溫度(正在開發(fā)中)、噪聲校準項目。
選擇JJF 1270-2010規(guī)程,由調度模塊加載校準參數選取函數,如圖6所示。
圖6 JJF 1270-2010校準項目選擇界面
依據選擇的校準項目進入校準測試界面,如圖7所示,開展具體的校準測試。
在規(guī)程算法層調用JJF 1101-2019則進入1101對應的試驗模塊。
JJF 1101-2019中規(guī)定了溫度偏差、溫度波動度、溫度均勻度、濕度偏差、濕度波動度、濕度均勻度校準項目,此時調度模塊1101的參數選取函數動態(tài)加載進入界面,如圖8所示;校準測試界面如圖9所示。
在同樣的“溫濕度”校準項目中,由于JJF 1101-2019與JJF 1270-2010要求不同,各自的校準界面與算法也各不相同,如圖10所示。
綜上,軟件運行的流程圖如圖11所示:啟動可執(zhí)行文件,首先進入信息層的相應模塊,獲取客戶、環(huán)境、標準器等相關信息。然后進入規(guī)程算法層,由調度模塊加載按規(guī)程內容編寫的試驗模塊,即通過指令實現試驗模塊代碼的動態(tài)加載與釋放。調度機制采用獨占方式,即選中的試驗模塊根據指令加載至內存后,在沒有被命令退出之前,其他內容無法加載。試驗模塊測量數據時調用硬件,進入硬件采集層執(zhí)行驅動代碼進行數據測量,最終完成校準測試。
利用解耦和動態(tài)調用技術對所需的環(huán)境試驗設備相關測試規(guī)程進行編碼,得到所有滿足要求的試驗模塊。這些試驗模塊接收到調度模塊所發(fā)送的指令后,有目標地動態(tài)加載進入主程序流程中運行,有效解決了多規(guī)程多參數兼容設計的軟件難題。
圖7 JJF 1270-2010校準測試界面
圖8 JJF 1101-2019校準項目選擇界面
圖9 JJF 1101-2019校準測試界面
圖10 溫濕度采集計算界面
圖11 規(guī)程庫動態(tài)調用流程示意圖
設計了具有良好兼容性、綜合性、可操作性,支持多規(guī)程覆蓋、多參數校準功能的環(huán)境試驗設備自動化測試軟件,該軟件包含客戶管理、標準器管理、規(guī)程管理、采集、試驗操作五個功能模塊,并且通過解耦與動態(tài)調用技術將五個模塊依賴關系轉化為三個層次:信息層、規(guī)程算法層、硬件采集層。信息層通過人機交互獲取信息;規(guī)程算法層用來動態(tài)調用規(guī)程要求,開展校準檢測;硬件采集層驅動硬件采集數據。該軟件以規(guī)程為最小單元,可動態(tài)組合、動態(tài)替換,成功解決了環(huán)境試驗設備自動化測試軟件的兼容性設計難題,避免了市場上現有環(huán)境試驗設備軟件功能不全面、規(guī)程單一、操作復雜的問題,能夠有效滿足計量人員的使用需求,具有技術推廣價值。