基於(yú)Qt的數控係統測試軟件的設計與實現
2018-4-3 來源:轉載 作者:吳純贇 栗(lì)勇 杜少華 葛小川
摘要:數控係統的測試相比較一般的係統更加複雜,以往的測試工具存在測試過程複雜、測試效率低下、可移植性差、用戶交互不理想等缺點。在研究了(le)Linux驅(qū)動及Qt技術的基礎下設計並實現了藍天數控係統的測試驅動(dòng)程序以及基於Qt的測試應用(yòng)軟件,完成對數控係統I0, DA,鍵盤操作站等的測試。軟件具有較(jiào)高的移植性,可以運行在不同平台上,測試人員可以自主選擇(zé)測試的項(xiàng)目與過程,提高了測(cè)試效率,簡化了測試過程,縮短了測試(shì)時間。測試(shì)軟(ruǎn)件在(zài)生產車間中投入使用,有(yǒu)效地保障了數控係統的可靠性(xìng)。
關鍵詞:數控係統;軟件測試;Qt技術
0、引言
數控技術是工業化過(guò)程中發展國家高新(xīn)技術產業和尖端工業的重要一環,也是先進(jìn)製造(zào)技(jì)術的核心研究內容。數控係統測試軟件為(wéi)工業生產提供(gòng)了有效保障,目前我國的(de)數控測試軟件主(zhǔ)要采用基於c語言的命(mìng)令行模式,雖然在功能上能覆蓋常用的模塊,但存在可移植性差、用戶交互性弱、測試過程複雜等缺點(diǎn)。基於Qt的數控係統測試軟(ruǎn)件正是要解決以(yǐ)上問題,為測試人員提供一個操作簡便、可視化程度高、移植性好的測試環境。
在深入理解Linux內核以及Qt界麵、信號與槽機製的前提下,基於Qt的數(shù)控係統測試軟件重新設計了GJ303係統的測試3動程序,並且使用Qt的UI實現(xiàn)了可視化操作。軟件完成(chéng)了對IO,DA,鍵盤、操(cāo)作站等功能模塊的設計與(yǔ)實現,編譯後部署在藍大高精數控測試生產線上(shàng)進行實際測試,並(bìng)記錄測試時間和故(gù)障率,從而驗證(zhèng)測試軟件(jiàn)的可行性。
1、需求說明
GJ303是新一代開放式普及型數控係統,采用高(gāo)性(xìng)能工業(yè)級PC平(píng)台,在工業生產中已經有廣泛的(de)應用,生產車間(jiān)需要在數控係統(tǒng)出廠前對IO,DA,鍵盤操作站等進行測試,以確保軟硬件的正(zhèng)確性和穩定性(xìng),為工業生(shēng)產提供保障。
對於IO部分,需要GJ303係統與外接板連接,通過測試程序對(duì)IO讀寫信號進行測試(shì);DA部(bù)分需要程序對DA輸出值進行測試;鍵盤和操作站部分需要通過程序(xù)對數控係統鍵盤(pán)鍵位的有(yǒu)效性及操作站控製的(de)有效性等進行測試。
從上述可以看出數控係統的測試存(cún)在步驟多、測試過程(chéng)繁瑣、測試過程(chéng)掌控不到位等問題。在此背景下(xià),結合當前數控封裝測(cè)試車間的實際應用場(chǎng)景,采用Qt技術j實(shí)現功能完備、測試過程簡單高效、移植性強、可視化程度高的數控係統測試軟件。
2、測試軟件(jiàn)驅動的設計與實現
測試軟件需要對數控係統的硬件資源進行操控(kòng),所以底層需要一套專門的驅動來配合上層的Qt程序。藍大數(shù)控係統內核(hé)是基於Linux 2. 6係統,測試馭(yù)動程序符合一般Linu、字符馭動程序開發的流程(chéng)。在整個數控係統測試軟件中,驅動(dòng)程序扮(bàn)演著承(chéng)上啟下的作用。
在Linux2. 6內(nèi)核(hé)中,使用(yòng)cdev結構體描(miáo)述一個字符設(shè)備,cdev結構體的定義描述如下:
cedv結構體的dev_t成員(yuán)定義了設備號,為32位,其中12位(wèi)主設備號,20位次設備號。使用下列宏可以獲(huò)得(dé)主設備號和次設(shè)備(bèi)號:
MAJOR (dev_ t dev)
MINOR (dev_ t dev)
使用下列宏可以通過主設備號和次設備號生成dev_t:
MKDEV (int major int minor)
文件操作file operations是(shì)程序操作設(shè)備的主要(yào)結構,它的成員在應用層中以open ( ) ,write ( ) , read(),close ()等係統調用來體現。以上操作在測試軟件中需要進行自定義,以read函數為例,GJ303係統中需要先設置偏移找到讀取的起始位置(zhì),再根據傳(chuán)入的讀取範圍分配內核空間(jiān)內存,最後調用(yòng)_copy_ to_ user函數將需要的數據從內核(hé)空間拷貝到用戶空間。write函數操作過程類(lèi)似,隻是拷貝數據(jù)的(de)方向相反。
上層的應用程序在測試過程(chéng)中(zhōng)需要對機床的各(gè)個功能硬件進行(háng)命令的(de)收發,通過以上馭動程序的調用就可以高效(xiào)便捷地進行交互。
3、測試軟件應用層的設計與實現
3.1 總體架構(gòu)設計
測試(shì)軟件從結構上分成二層,如圖(tú)1所示,用戶界麵采用Qt技術實現,底層調用馭動測試程序。驅動程序直接解(jiě)析用戶界而傳來的測試命令,數控硬件係統根據(jù)馭動(dòng)程序進行相應的操作完成測試。
圖1 係統整體結(jié)構
Qt具有(yǒu)跨平台以及界(jiè)而美觀等優點,且在嵌入式領域已經有(yǒu)廣泛地應用(yòng),所以(yǐ)本(běn)軟件的用戶交互界麵全部由Qt來實現。應用(yòng)層的開發在搭載(zǎi)Ubuntu 14. 04的PC下(xià)完成,測試與部署則在藍大數控(kòng)GJ303係統上進行(háng)。上圖中數控係統部分實際還需要用(yòng)到I0, DA的外接測試(shì)板以及外置手輪。
3. 2 事件處理機(jī)製
由於(yú)以往的藍大數控係統測試工具都是基於C語言的命令行格式,測試人員即便測(cè)試某個(gè)小功能也要掌握(wò)所有的命令選項,一步步地進入到測(cè)試點。這(zhè)不僅造成測試過程複雜,還容易(yì)出錯。傳統的程序界而跳轉采用順序馭(yù)動,導致邏輯複雜,跳轉(zhuǎn)代碼與業務代碼摻雜在一起,結構混亂,不利於軟件的功能擴展及移植。
軟件使用Qt實現事件馭動機製,並抽取(qǔ)測試人員常(cháng)用的測試選項於頁而供直接使用,很好地解決了以上問題。測試軟件的測試(shì)組件由按鈕和(hé)命(mìng)令行組成。按鈕是由事(shì)件馭動的測試路徑,需要通過數控係(xì)統自帶(dài)的鍵盤綁定相應的事件;命令行則是快捷測試路徑的入口,需(xū)要綁(bǎng)定並解析相應鍵盤輸入的字符串。為了讓軟件更好地支持與底(dǐ)層硬件通信,提(tí)高測試效率,以上測試路徑采用異步的事件通(tōng)知。異步意味著當主線程接受完一個信號後可以繼續處理業務邏輯,不必等待,當調(diào)用QApplication : : exec時,就(jiù)進入了事件循環隊列。對於按鈕和命令,自定義的事件主要對QKeyEvent進行封(fēng)裝,隻需對不同(tóng)的事件源進行判斷就可以滿足動(dòng)態需求。測試人(rén)員在(zài)對某個功能進行(háng)測試時,其輸入將被包裝成一個事件源。如(rú)果是(shì)簡單的鍵(jiàn)盤事件,將調用Qt自帶(dài)的事件處理器,但當要輸入命令時,就先由事件(jiàn)分發器捕獲回這次命令事件,然後判斷是否自定義的事件,若是則分發器(qì)查找對應的(de)自定義事件處理器(qì),並觸發相(xiàng)應的操作(zuò),具體流程如圖2所示(shì)。為了便於管理眾多的按鈕與命令輸入框,也為了統一結果顯示(shì)頁而,軟(ruǎn)件(jiàn)還擴展了Qt的部分控件:
(1) 狀態控製方法,由於不同控件有各(gè)自的布局及大小管理方法,使(shǐ)用時十分不便,本軟(ruǎn)件設計的voidset-eometry (int , int , int , int)成員方法可以統一設置所以控件的大小及位置,前兩個參數表示(shì)起點位置,後兩個參數表示長度和寬度;
(2) 字體設置方法,為了使界而(ér)支持各種編碼的字符(fú),設計了QString to -Chinese (const char* str,constchar* code)方法,內部使用了(le)QTextCodec字符編碼器將傳入的信息提示字符串str轉變(biàn)為code指(zhǐ)定(dìng)的編碼,使得軟件支持國際化。
基於異步的事件處理機製對(duì)數控測試軟件的各個功(gōng)能模塊進行(háng)了解耦,不同模塊(kuài)間形成(chéng)了責任鏈模式,在提高性能的同時也增加了擴展性。
圖2 自(zì)定義事件處理機製
3. 3 IO與DA測試的設計與(yǔ)實現
IO與(yǔ)DA是數控係統的基礎(chǔ),是數控係統(tǒng)機床控製係統的重要組(zǔ)成部分,因此對這兩部分的(de)測(cè)試就尤(yóu)為重要。GJ303數控係統的IO模式(shì)是48IN320UT以及32IN240UT,測試(shì)時需要考慮多種輸入輸出的情(qíng)況。
IO測試模塊程序流程如圖3所示,以48IN320UT輸出測(cè)試為例,犯個比特(tè)要每隔is輸出一位,要控製時間間隔(gé)便要使用Qt定時器來完成任務。該功能模塊的實現方法定義: void IO_ outport (int offset , int st , un-signed int word),該方法內(nèi)部實現需要使用上文的(de)驅動程序,即調用writ。係統調用(yòng),該(gāi)係統調(diào)用將向操作(zuò)係統內核傳遞IO輸出數據。
DA的測試需要提供一組待測電壓(yā)以及一(yī)組與之對應的地址。軟件中封(fēng)裝了void DA outport (int st int chunsigned int word)方法,word參數就是要測試的DA地址值,前(qián)而兩個參數是狀態(tài)控製參數。為了可(kě)擴(kuò)展性,測試的地址岡值可以由(yóu)測試人員自行輸入,軟件後台會(huì)將最近的一次設定值保存在數組中,並寫入配置文件刷(shuā)新到磁(cí)盤上。測試開始時軟件會根據最終的地址傳入上述方(fāng)法,底層使用係統調(diào)用傳遞給數控係統(tǒng)。
圖(tú)3 IO測試流程
3. 4 鍵盤測試的設計與實現
數控係(xì)統的鍵盤是其在工業生產環境(jìng)中最常用的外設,操作人員(yuán)絕大部分操作及維護都是通過它來完成的,因此對鍵盤的測試尤為重要。GJ303數控係統的鍵(jiàn)盤和普通PC機的鍵位基(jī)木相同,但多了幾個係統鍵。該部分測試的主要思想是利用Qt的鍵盤事(shì)件。當在主界而按下代表鍵盤測試的按鈕後,整個鍵盤進入測試模式,測試(shì)人員之後按下(xià)的(de)每個鍵都會在軟件(jiàn)的界麵上進行回(huí)顯,直(zhí)到連按2次ESC鍵後(hòu)退出測試。
進(jìn)入鍵盤測試後就觸發(fā)了事件源,事件(jiàn)分發器捕獲事件(jiàn)源並判斷自定義事件。軟件中(zhōng)對(duì)該功能的自定義(yì)事件改變了QKeyEvent原來的(de)傳播行為,將輸出重定向至內存中(zhōng),再在界而上輸出。隻要生產時鍵盤焊接等工藝沒有發生錯誤,測試(shì)時鍵盤(pán)的事件源就會被準確地(dì)捕獲(huò),一次典型的捕獲(huò)過程如圖4所示。
圖4 鍵盤測試流(liú)程
3. 5 操作站測試(shì)的設計與實現
操作站是鍵(jiàn)盤的延伸,是數控係統對機床進行控(kòng)製的操作而板,可以控製數控運行過程(chéng)中主軸的轉動方向、液壓係統、照明等,圖5是GJ303係統配(pèi)套的(de)操作站。
圖5 操作站
對操作站(zhàn)的(de)測試不同於鍵盤,因為它是數控係統(tǒng)獨有的,Qt的事件並不(bú)支持。軟件中采用的方(fāng)法是(shì)對操作(zuò)站的鍵位進(jìn)行(háng)轉換,然後用類似於(yú)鍵盤的測(cè)試方法在主界麵上回顯按下的鍵(jiàn)位。
對於數控係統底層馭動來講,操作站的每個鍵位都對應著IO的某個地(dì)址,地址的格式是8位的無符號整數。在軟(ruǎn)件中為了簡(jiǎn)潔使用unsigned char ch_pre變量表示,整個轉換的過程使用void mopValueToText(unsigned char ch_pre, unsigned char ch_rev,char*str)這個方法來完成,轉換過程如圖(tú)6所示。
圖6 操作站轉(zhuǎn)換過程
接(jiē)下去的操作是分發器調用以上轉(zhuǎn)換方法,而非某個自定義事件。轉換(huàn)方法的核心部分是將IO地址一一轉換(huàn)成中文或其他語言(yán),代碼片段如下:
case 0x81 : sprintf (str, " % s",”進給修調(diào)0%”);
0x81就(jiù)是(shì)IO地(dì)址“進給修調”是需要(yào)在主界而上顯示(shì)的表述。
4、測試(shì)結果
測試軟件通過交叉編譯後部署在(zài)測試車間的GJ303數控係統上供測試人員使用。針(zhēn)對3個月的車間平均測試統計,結果如表1所示。
表1 GJ303數控係統測試時間比較
表1中(zhōng)數據是部署後車間流水線上每台數控係統各個項目的平均測試時間(jiān),是經過(guò)長時間累計測試得出(chū)的。從中可以看出4個項目測試時間都有較大的縮短,使得測試效率得到提高。對於出廠數控係統的故障率和返(fǎn)修率也進行了統計,如表2所示。
表2 GJ303數控係統故障率比較
從表2可(kě)以看出在使用新(xīn)的測試軟件(jiàn)後平均故障率大幅卜降,給生產帶來了較大的保障,提高了產品(pǐn)的經濟效(xiào)益。
5、結論與展望
基於Qt的GJ303數控係統測試軟件完成了對I0,DA,鍵盤與工作站的測試,並且在藍大數控測試(shì)生(shēng)產線上進行了部署。經過長期運(yùn)行(háng)證明了該軟件測試係統的穩定性與高效性。軟件幫助測試(shì)人員建立了完善易用的人機交互界麵,對各個(gè)部分的(de)測試效率也有較大地(dì)提高。
由於軟件采用了Qt技術,因此(cǐ)其跨平台性也進一步得到了提高,目前已經針對GJ301,GJ302等藍天數控係統進行改造,是測試軟件能部署在更多的數控係統(tǒng)上,從而創(chuàng)造更(gèng)多的經濟效益。
未來的工作還要進一步擴展測(cè)試軟件的功能,例如編碼器、軸測試等,最終(zhōng)使軟件能夠適應更多的生產環境。
來源:中國科學(xué)院大學,中國(guó)科學院沈陽計算技術研究所高檔數控國家土程研究中心.沈(shěn)陽高精數控智能技術股份有限公司
投稿箱:
如果您有機床行業、企業相關新聞稿件發表,或進(jìn)行資訊合作,歡迎聯係本網編輯部, 郵箱:skjcsc@vip.sina.com
如果您有機床行業、企業相關新聞稿件發表,或進(jìn)行資訊合作,歡迎聯係本網編輯部, 郵箱:skjcsc@vip.sina.com
更多相關信息
業(yè)界視點
| 更多
行業(yè)數據
| 更多
- 2024年11月 金(jīn)屬切削機(jī)床產(chǎn)量數據
- 2024年11月 分地區金屬切削(xuē)機床產量數據
- 2024年11月(yuè) 軸(zhóu)承出口情況
- 2024年11月 基本型乘用車(轎車)產量數據
- 2024年11月 新能源汽車產量(liàng)數據(jù)
- 2024年11月 新能源汽車銷量情況(kuàng)
- 2024年10月 新能源汽車產量數據
- 2024年10月 軸承出口情況
- 2024年10月 分地區金屬切削機床產量數據
- 2024年10月 金屬切削機床產量數據(jù)
- 2024年9月 新能源汽(qì)車銷量情況
- 2024年8月 新能源汽車產量數據
- 2028年8月 基(jī)本型乘用車(轎車)產(chǎn)量數據