基于Qt的數控系統測試軟件的設計與實現
2018-4-3 來源:轉載 作者:吳純赟 栗勇 杜少華 葛小川
摘要:數控系統的測試相比較一般的系統更加復雜,以往的測試工具存在測試過程復雜、測試效率低下、可移植性差、用戶交互不理想等缺點。在研究了Linux驅動及Qt技術的基礎下設計并實現了藍天數控系統的測試驅動程序以及基于Qt的測試應用軟件,完成對數控系統I0, DA,鍵盤操作站等的測試。軟件具有較高的移植性,可以運行在不同平臺上,測試人員可以自主選擇測試的項目與過程,提高了測試效率,簡化了測試過程,縮短了測試時間。測試軟件在生產車間中投入使用,有效地保障了數控系統的可靠性。
關鍵詞:數控系統;軟件測試;Qt技術
0、引言
數控技術是工業化過程中發展國家高新技術產業和尖端工業的重要一環,也是先進制造技術的核心研究內容。數控系統測試軟件為工業生產提供了有效保障,目前我國的數控測試軟件主要采用基于c語言的命令行模式,雖然在功能上能覆蓋常用的模塊,但存在可移植性差、用戶交互性弱、測試過程復雜等缺點?;赒t的數控系統測試軟件正是要解決以上問題,為測試人員提供一個操作簡便、可視化程度高、移植性好的測試環境。
在深入理解Linux內核以及Qt界面、信號與槽機制的前提下,基于Qt的數控系統測試軟件重新設計了GJ303系統的測試3動程序,并且使用Qt的UI實現了可視化操作。軟件完成了對IO,DA,鍵盤、操作站等功能模塊的設計與實現,編譯后部署在藍大高精數控測試生產線上進行實際測試,并記錄測試時間和故障率,從而驗證測試軟件的可行性。
1、需求說明
GJ303是新一代開放式普及型數控系統,采用高性能工業級PC平臺,在工業生產中已經有廣泛的應用,生產車間需要在數控系統出廠前對IO,DA,鍵盤操作站等進行測試,以確保軟硬件的正確性和穩定性,為工業生產提供保障。
對于IO部分,需要GJ303系統與外接板連接,通過測試程序對IO讀寫信號進行測試;DA部分需要程序對DA輸出值進行測試;鍵盤和操作站部分需要通過程序對數控系統鍵盤鍵位的有效性及操作站控制的有效性等進行測試。
從上述可以看出數控系統的測試存在步驟多、測試過程繁瑣、測試過程掌控不到位等問題。在此背景下,結合當前數控封裝測試車間的實際應用場景,采用Qt技術j實現功能完備、測試過程簡單高效、移植性強、可視化程度高的數控系統測試軟件。
2、測試軟件驅動的設計與實現
測試軟件需要對數控系統的硬件資源進行操控,所以底層需要一套專門的驅動來配合上層的Qt程序。藍大數控系統內核是基于Linux 2. 6系統,測試馭動程序符合一般Linu、字符馭動程序開發的流程。在整個數控系統測試軟件中,驅動程序扮演著承上啟下的作用。
在Linux2. 6內核中,使用cdev結構體描述一個字符設備,cdev結構體的定義描述如下:

cedv結構體的dev_t成員定義了設備號,為32位,其中12位主設備號,20位次設備號。使用下列宏可以獲得主設備號和次設備號:
MAJOR (dev_ t dev)
MINOR (dev_ t dev)
使用下列宏可以通過主設備號和次設備號生成dev_t:
MKDEV (int major int minor)
文件操作file operations是程序操作設備的主要結構,它的成員在應用層中以open ( ) ,write ( ) , read(),close ()等系統調用來體現。以上操作在測試軟件中需要進行自定義,以read函數為例,GJ303系統中需要先設置偏移找到讀取的起始位置,再根據傳入的讀取范圍分配內核空間內存,最后調用_copy_ to_ user函數將需要的數據從內核空間拷貝到用戶空間。write函數操作過程類似,只是拷貝數據的方向相反。
上層的應用程序在測試過程中需要對機床的各個功能硬件進行命令的收發,通過以上馭動程序的調用就可以高效便捷地進行交互。
3、測試軟件應用層的設計與實現
3.1 總體架構設計
測試軟件從結構上分成二層,如圖1所示,用戶界面采用Qt技術實現,底層調用馭動測試程序。驅動程序直接解析用戶界而傳來的測試命令,數控硬件系統根據馭動程序進行相應的操作完成測試。

圖1 系統整體結構
Qt具有跨平臺以及界而美觀等優點,且在嵌入式領域已經有廣泛地應用,所以本軟件的用戶交互界面全部由Qt來實現。應用層的開發在搭載Ubuntu 14. 04的PC下完成,測試與部署則在藍大數控GJ303系統上進行。上圖中數控系統部分實際還需要用到I0, DA的外接測試板以及外置手輪。
3. 2 事件處理機制
由于以往的藍大數控系統測試工具都是基于C語言的命令行格式,測試人員即便測試某個小功能也要掌握所有的命令選項,一步步地進入到測試點。這不僅造成測試過程復雜,還容易出錯。傳統的程序界而跳轉采用順序馭動,導致邏輯復雜,跳轉代碼與業務代碼摻雜在一起,結構混亂,不利于軟件的功能擴展及移植。
軟件使用Qt實現事件馭動機制,并抽取測試人員常用的測試選項于頁而供直接使用,很好地解決了以上問題。測試軟件的測試組件由按鈕和命令行組成。按鈕是由事件馭動的測試路徑,需要通過數控系統自帶的鍵盤綁定相應的事件;命令行則是快捷測試路徑的入口,需要綁定并解析相應鍵盤輸入的字符串。為了讓軟件更好地支持與底層硬件通信,提高測試效率,以上測試路徑采用異步的事件通知。異步意味著當主線程接受完一個信號后可以繼續處理業務邏輯,不必等待,當調用QApplication : : exec時,就進入了事件循環隊列。對于按鈕和命令,自定義的事件主要對QKeyEvent進行封裝,只需對不同的事件源進行判斷就可以滿足動態需求。測試人員在對某個功能進行測試時,其輸入將被包裝成一個事件源。如果是簡單的鍵盤事件,將調用Qt自帶的事件處理器,但當要輸入命令時,就先由事件分發器捕獲回這次命令事件,然后判斷是否自定義的事件,若是則分發器查找對應的自定義事件處理器,并觸發相應的操作,具體流程如圖2所示。為了便于管理眾多的按鈕與命令輸入框,也為了統一結果顯示頁而,軟件還擴展了Qt的部分控件:
(1) 狀態控制方法,由于不同控件有各自的布局及大小管理方法,使用時十分不便,本軟件設計的voidset-eometry (int , int , int , int)成員方法可以統一設置所以控件的大小及位置,前兩個參數表示起點位置,后兩個參數表示長度和寬度;
(2) 字體設置方法,為了使界而支持各種編碼的字符,設計了QString to -Chinese (const char* str,constchar* code)方法,內部使用了QTextCodec字符編碼器將傳入的信息提示字符串str轉變為code指定的編碼,使得軟件支持國際化。
基于異步的事件處理機制對數控測試軟件的各個功能模塊進行了解耦,不同模塊間形成了責任鏈模式,在提高性能的同時也增加了擴展性。

圖2 自定義事件處理機制
3. 3 IO與DA測試的設計與實現
IO與DA是數控系統的基礎,是數控系統機床控制系統的重要組成部分,因此對這兩部分的測試就尤為重要。GJ303數控系統的IO模式是48IN320UT以及32IN240UT,測試時需要考慮多種輸入輸出的情況。
IO測試模塊程序流程如圖3所示,以48IN320UT輸出測試為例,犯個比特要每隔is輸出一位,要控制時間間隔便要使用Qt定時器來完成任務。該功能模塊的實現方法定義: void IO_ outport (int offset , int st , un-signed int word),該方法內部實現需要使用上文的驅動程序,即調用writ。系統調用,該系統調用將向操作系統內核傳遞IO輸出數據。
DA的測試需要提供一組待測電壓以及一組與之對應的地址。軟件中封裝了void DA outport (int st int chunsigned int word)方法,word參數就是要測試的DA地址值,前而兩個參數是狀態控制參數。為了可擴展性,測試的地址岡值可以由測試人員自行輸入,軟件后臺會將最近的一次設定值保存在數組中,并寫入配置文件刷新到磁盤上。測試開始時軟件會根據最終的地址傳入上述方法,底層使用系統調用傳遞給數控系統。

圖3 IO測試流程
3. 4 鍵盤測試的設計與實現
數控系統的鍵盤是其在工業生產環境中最常用的外設,操作人員絕大部分操作及維護都是通過它來完成的,因此對鍵盤的測試尤為重要。GJ303數控系統的鍵盤和普通PC機的鍵位基木相同,但多了幾個系統鍵。該部分測試的主要思想是利用Qt的鍵盤事件。當在主界而按下代表鍵盤測試的按鈕后,整個鍵盤進入測試模式,測試人員之后按下的每個鍵都會在軟件的界面上進行回顯,直到連按2次ESC鍵后退出測試。
進入鍵盤測試后就觸發了事件源,事件分發器捕獲事件源并判斷自定義事件。軟件中對該功能的自定義事件改變了QKeyEvent原來的傳播行為,將輸出重定向至內存中,再在界而上輸出。只要生產時鍵盤焊接等工藝沒有發生錯誤,測試時鍵盤的事件源就會被準確地捕獲,一次典型的捕獲過程如圖4所示。

圖4 鍵盤測試流程
3. 5 操作站測試的設計與實現
操作站是鍵盤的延伸,是數控系統對機床進行控制的操作而板,可以控制數控運行過程中主軸的轉動方向、液壓系統、照明等,圖5是GJ303系統配套的操作站。

圖5 操作站
對操作站的測試不同于鍵盤,因為它是數控系統獨有的,Qt的事件并不支持。軟件中采用的方法是對操作站的鍵位進行轉換,然后用類似于鍵盤的測試方法在主界面上回顯按下的鍵位。
對于數控系統底層馭動來講,操作站的每個鍵位都對應著IO的某個地址,地址的格式是8位的無符號整數。在軟件中為了簡潔使用unsigned char ch_pre變量表示,整個轉換的過程使用void mopValueToText(unsigned char ch_pre, unsigned char ch_rev,char*str)這個方法來完成,轉換過程如圖6所示。

圖6 操作站轉換過程
接下去的操作是分發器調用以上轉換方法,而非某個自定義事件。轉換方法的核心部分是將IO地址一一轉換成中文或其他語言,代碼片段如下:
case 0x81 : sprintf (str, " % s",”進給修調0%”);
0x81就是IO地址“進給修調”是需要在主界而上顯示的表述。
4、測試結果
測試軟件通過交叉編譯后部署在測試車間的GJ303數控系統上供測試人員使用。針對3個月的車間平均測試統計,結果如表1所示。

表1 GJ303數控系統測試時間比較
表1中數據是部署后車間流水線上每臺數控系統各個項目的平均測試時間,是經過長時間累計測試得出的。從中可以看出4個項目測試時間都有較大的縮短,使得測試效率得到提高。對于出廠數控系統的故障率和返修率也進行了統計,如表2所示。

表2 GJ303數控系統故障率比較
從表2可以看出在使用新的測試軟件后平均故障率大幅卜降,給生產帶來了較大的保障,提高了產品的經濟效益。
5、結論與展望
基于Qt的GJ303數控系統測試軟件完成了對I0,DA,鍵盤與工作站的測試,并且在藍大數控測試生產線上進行了部署。經過長期運行證明了該軟件測試系統的穩定性與高效性。軟件幫助測試人員建立了完善易用的人機交互界面,對各個部分的測試效率也有較大地提高。
由于軟件采用了Qt技術,因此其跨平臺性也進一步得到了提高,目前已經針對GJ301,GJ302等藍天數控系統進行改造,是測試軟件能部署在更多的數控系統上,從而創造更多的經濟效益。
未來的工作還要進一步擴展測試軟件的功能,例如編碼器、軸測試等,最終使軟件能夠適應更多的生產環境。
來源:中國科學院大學,中國科學院沈陽計算技術研究所高檔數控國家土程研究中心.沈陽高精數控智能技術股份有限公司
投稿箱:
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合作,歡迎聯系本網編輯部, 郵箱:skjcsc@vip.sina.com
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合作,歡迎聯系本網編輯部, 郵箱:skjcsc@vip.sina.com
更多相關信息