0 引言
隨著近年來光纖通訊行業(yè)的迅猛發(fā)展,對光纖產(chǎn)品的質(zhì)量要求越來越高。光纖連接器用于光纖之間的對接,其主要組成部件是V型槽結構。V型槽結構作為連接光纖的微光學器件,其加工精度直接影響著光纖連接器的性能。通常V型槽的加工精度由槽的傾斜角、表面粗糙度、直線度等來衡量。為了實現(xiàn)V槽的亞微米級的加工精度,需尋求一種最為有效的加工方式。目前V型槽陣列的加工方法主要有三種:濕法腐蝕,壓膜,超精密加工。利用超精密機床對V型槽進行磨削加工,是實現(xiàn)其高精度的一種非常有效的方法。
超精密數(shù)控系統(tǒng)作為超精密數(shù)控機床的控制核心,也是加工V型槽陣列需要重點研究的環(huán)節(jié)。QT是C++圖形用戶界面應用程序框架,具備藝術級的圖形界面開發(fā)功能,QT的良好封裝機制也使得QT的模塊化程度非常高,可重用性較好。PMAC則是功能強大,市場定位較高的一款控制器。本課題在上位機上借助QT開發(fā)工具,調(diào)用Turbo PMAC clipper提供的PcommSeRer Pr02:Lih岬庫函數(shù),開發(fā)了V型槽加工機床的數(shù)控系統(tǒng)軟件。該軟件不僅實現(xiàn)了優(yōu)越的人機界面功能,還能根據(jù)V槽的關鍵參數(shù)自動生成NC代碼并檢測代碼的正確性,并能對系統(tǒng)的參數(shù)進行規(guī)范的數(shù)據(jù)庫管理,以及進行V槽加工過程的三維模擬仿真,可視化強。同時,軟件也實現(xiàn)了系統(tǒng)的CNC運動控制功能。針對這樣一款專門應用于V型槽陣列加工的軟件,它的實用性,市場需求度都是不言而喻的。
1 V溝機數(shù)控系統(tǒng)的硬件設計
系統(tǒng)硬件結構主要包括:研華工控機,Turbo PMAC Clipper多軸運動控制器,端子板,KOI工MORGEN AKD.P系列驅(qū)動,氣浮主軸,KOmMORGEN直線電機,ReniShaw光柵尺,氣浮工作臺,配以其他的I/O等輔助設備。
2 V溝機數(shù)控系統(tǒng)的軟件開發(fā)
V溝機數(shù)控系統(tǒng)具有普通數(shù)控系統(tǒng)的數(shù)控加工、系統(tǒng)診斷、數(shù)據(jù)采集等功能。同時還應具有本身特殊的功能,即根據(jù)V型槽的關鍵參數(shù)以及加工工藝自動生成NC代碼,將代碼下載至PMAC控制器中,從而進行加工。整個軟件開發(fā)過程包括:軟件功能的設計以及功能模塊的劃分,人機界面的設計,各功能模塊的編寫和調(diào)試,整個應用程序的集成、調(diào)試和運矧引。在訪n(10ws7操作系統(tǒng)下,利用QT4.8開發(fā)工具,通過調(diào)用PcommServer Pr02 Library庫函數(shù),實現(xiàn)軟件的編寫和系統(tǒng)的控制功能。
2.1 建立QT與PM漁C的通訊
基于QT+PMAc的開放式數(shù)控系統(tǒng),其開放性既體現(xiàn)在軟件上,又體現(xiàn)在硬件上。QT提供了非常強大的圖形用戶功能,允許用戶根據(jù)自己的需要開發(fā)人機交互界面;PMAC運動控制卡則提供了多于400個運動相關的函數(shù),實現(xiàn)數(shù)控系統(tǒng)插補、前瞻、補償、伺服算法、聯(lián)動功能等各種控制功能。
PcommSenrer Pm2“bEary是PMAC為在Windows系統(tǒng)下開發(fā)人機界面提供的動態(tài)鏈接庫。它是基于COM組件的形式提供的,用戶通過安裝PMAC Executive pr02 suite軟件包,在系統(tǒng)盤里可找到pcommserver.exe、pcomm32w.dll、pcomlIl32w.1ib等文件,但并沒有提供庫的頭文件,因此不能用一般的顯式隱式來調(diào)用。那么要在QT中調(diào)用庫函數(shù),就必須知道QT如何調(diào)用COM接口,下面說明其調(diào)用方法。
QT提供的QAxContainer模塊,該模塊允許使用COM對象,以及在QT應用程序中嵌入ActiveX控件。它提供了2個類:QAxwidget(Qwidget的子類,作為ActiveX控件的容器)和QAxObject(QWidget的子類,易于訪問非可視化COM對象)。本次開發(fā)中采用生成命名空間的方式來調(diào)用cOM對象的APIs。具體操作流程如下:
(1)通過VC++6.0中的Tools工具條中的OLE/COM object viewer選項,查找類型庫,可查得pcom—mserver.exe的類型庫ID{50ECCF67-B73C-431B-A53D-9EDDAF3CE611}
(2)叫提供了一個名為d啪pcpp的工具可以為想要訪問的類型庫生成一個c++名空間,將dumpcpp工具所在的bin目錄添加到系統(tǒng)路徑中。
(3)運行命令提示符,在用戶名后輸人命令:dumpcpp-n PCOMMSERVERKb{50ECCF67-B73C-431B-A53D-9EDDAF3CE611}。運行后,會自動生成兩個文件:ponmmserverHb.cpp和ponmmserverlib.h。
(4)在QT應用程序的.pm中添加“CONnG+=qaxcontainer”,并添加上述導出的頭文件和源文件。通過包含頭文件“#include ponmmserverlib.h”和在程序開頭使用“using namespace PCOMMSERVERLib;”語句,并定義“PCOMMSERVERLib:PmacDevice*Pmac”對象指針,利用Pmac即可調(diào)用運動庫函數(shù)。
2.2 數(shù)控軟件主界面設計
利用QT優(yōu)越的圖形界面設計功能,實現(xiàn)人機接口界面如圖2所示,界面實現(xiàn):坐標、速度、狀態(tài)、程序的顯示,三維圖形的顯示和模擬仿真,自動加工信息處理,文件的管理,零件尺寸、系統(tǒng)、伺服、砂輪等參數(shù)設置,MDI,G代碼編譯,錯誤診斷等功能。整個界面秉承了設計友好,操作簡單,交互性好的原則。
2.3 各功能模塊的設計和開發(fā)
數(shù)控軟件作為整個數(shù)控系統(tǒng)的核心組成部分,功能眾多。為了使數(shù)控系統(tǒng)易于維護,具有可重構性、可擴展性,采用模塊化設計方法。
(1)系統(tǒng)的初始化
建立injtial()函數(shù)實現(xiàn)控制器的初始化,首先調(diào)用SelectDevice(int hWiIldow,im&pdwDe、rice,bool&pbsuccess)函數(shù)選擇設備號,調(diào)用后會彈出設備選擇對話框,選擇PMAC 00,點擊OK按鈕。然后,調(diào)用open(int&pdwDevice,b001&pbSuccess)函數(shù)打開運動控制器,若PC未連接卡或通訊出現(xiàn)異常則報錯,另外系統(tǒng)關閉時需調(diào)用close(int&p“Device)關閉控制卡。
(2)系統(tǒng)設置及處理下載系統(tǒng)的配置文件,如I、M、P、Q變量配置,G代碼的解釋程序,監(jiān)控的PLC程序以及其它的特殊的參數(shù)設置。
(3)NC文件的讀取、編譯、下載
對系統(tǒng)進行設置完成后,打開并讀取加工文件,然后對其進行編譯,編譯成功后下載至運動控制器,下載文件到控制器時使用:D響rIlload(int dwDevice,constQString&fileP訕,bool bMacro,b00l bM印,bool bkg,b001 bDmd,bool&pbSuccess)函數(shù),該函數(shù)在使用時需要注意參數(shù):①filepatll指的是絕對路徑,相對路徑無法識別。②bDIlld代表是否下載,所以需要置為tme,否則,不能成功執(zhí)行。③執(zhí)行多個DowIlload命令需要中間調(diào)用Sleep()函數(shù)。
另外,PMAC雖然支持G、M、D、T代碼,但是需要按照要求的格式來預先對各種代碼進行解釋,PMAC在執(zhí)行上述代碼時會自動轉(zhuǎn)去調(diào)用相應的子程序(即解釋程序),例如:執(zhí)行G01會自動調(diào)用PROGl000的N1000行,執(zhí)行M03會自動調(diào)用豫OGl001的N3000行,其它類似。
(4)自動加工、手動運行、回零等功能的實現(xiàn)下載編譯完加工程序文本,通過調(diào)用GetResponse(0,”&1BlR”,pAnswer)使程序自動連續(xù)運行,同樣的對于單步運行、暫停亦可通過該函數(shù)發(fā)送命令“S”、“H"。GetResponse(int dwDevice,const QString&question,QString&pAnswer)相當于萬能函數(shù),它能直接向控制器發(fā)送指令,而pmac自帶類似Basic的語言,兩者結合使用。手動功能的實現(xiàn)通過發(fā)送手動命令“#nJ+”或“#nJ-”(n為電機號),回零發(fā)送回零指令“#nHM”,該函數(shù)執(zhí)行成功則字符串pAnswer為空,否則會報錯。若要發(fā)送控制符指令,則利用GetcontmlRe—sponse(int dwDeVice,int number,QString&pAnswer)函數(shù),number代表控制符的ASCII碼的十進制值。在編寫軟件時,利用GetRespo璐e函數(shù)直接發(fā)送指令,同在PMAC自帶的PEWIN32軟件終端窗口操作類似,通過變量、命令和程序三者相互配合,完成運動控制、過程控制和主機通信等任務。
(5)坐標、速度、狀態(tài)的實時顯示開設一個監(jiān)控線程類MoIlitorThread,實時獲取系統(tǒng)的狀態(tài)反饋并顯示。在一個statusGeⅡtems()函數(shù)內(nèi)調(diào)用GetResponse()函數(shù)獲取位置、速度、行號等程序信息,并將獲取的信息傳遞給對應的全局變量。線程啟動時就調(diào)用stamsGetItems(),設定多長時間獲取一次數(shù)據(jù),獲取完一次則發(fā)送信號,激發(fā)updatedata()槽,使得顯示在編輯框中的信息隨之更新。
(6)基于OpenGL的三維模擬仿真Qt提供的QOpenGL模塊,輕松地實現(xiàn)了在應用程序中使用openGL功能,建立基于OpenGL交互控制的虛擬數(shù)控機床加工仿真系統(tǒng),實現(xiàn)G代碼的三維模擬仿真,使系統(tǒng)具有良好的實時性、交互性以及三維圖形顯示能力。
(7)工藝參數(shù)、系統(tǒng)參數(shù)、坐標系設置參數(shù)的有效管理
建立基于Micros硪Omce Access(微軟數(shù)據(jù)庫管理系統(tǒng))的數(shù)據(jù)庫表格,通過QT提供的Qtsql模塊以及QODBc驅(qū)動來實現(xiàn)對數(shù)據(jù)庫文件的訪問和操作。要執(zhí)行數(shù)據(jù)庫的各種操作,必須首先建立數(shù)據(jù)庫模型QSqlDatab鵲e的一個對象,擁有一個QSqlDatabase對象代表著擁有一個數(shù)據(jù)庫的連接,在一個已經(jīng)打開的QSqlDatabase對象上,就可以執(zhí)行各種數(shù)據(jù)庫操作。創(chuàng)建一個QSqlDatabase對象的方法是使用QSqlDatabase類的靜態(tài)函數(shù)addDatab鵲e,而打開這個數(shù)據(jù)庫連接,則需要先設置數(shù)據(jù)庫的DSN(Data S0urce Name),DSN的設置是通過成員函數(shù)setDatabaseName完成的。在QODBc中,DSN選用”DRIVER={Microsoft Access Driver(術.mdb)};FIL={Ms Access};DBQ=Xxx.mdb”字符串的形式提供。部分代碼如下:
QSqlDatabase db=QSqlDatabase::addDatabase(”QODBC”); ∥建立一個數(shù)據(jù)庫連接并指定驅(qū)動 QString fliePatll=”..\CNCnew\Test.mdb”;∥指定數(shù)據(jù)庫相對路徑 QString dsn:QString(”DRIVER={Microsoft Ac— cess Driver(宰.mdb)};” ”FIL={MS Access};DBQ=%1”).a(chǎn)rgfniePatll);∥設置dsn db.setDateName(dsn);∥設置數(shù)據(jù)庫名字 db.open();∥打開連接
完成連接后即可用QsqlTableModel類來訪問數(shù)據(jù)表,用record(),values()函數(shù)獲取相應記錄的字段值。 (8)V溝槽的參數(shù)化編程
最后,將生成的G代碼用正確的格式顯示到文本框,并以PMAC能下載的格式保存在.pmc類型的文件里。
3 軟件測試
連接好設備,在PC上運行軟件,打開參數(shù)設置頁,設置好系統(tǒng)、坐標系等參數(shù),將要加工的V槽的關鍵參數(shù)輸入到工件參數(shù)設置頁,點擊相應的功能按鈕自動獲取NC代碼,同時,可以對代碼進行保存、編輯、修改、刪除等操作,選擇代碼文件,點擊編譯按鈕,實現(xiàn)NC代碼的自動編譯,編譯通過,方可運行。運行程序之前,根據(jù)成功編譯的代碼來進行三維模擬加工仿真,頁面可以實現(xiàn)仿真速度的設置,以及單步、多步測試。整個過程操作非常簡單,根據(jù)按鈕選擇相應的功能。程序運行正常,控制精準。
4 結束語
采取QT+PMAC的模式,初步設計和開發(fā)出了V溝槽加工數(shù)控系統(tǒng)軟件。軟件實現(xiàn)了界面友好,操作易行的人機交互功能,并集成數(shù)控系統(tǒng)各個模塊,完成了從初始化、參數(shù)設置、加工文件處理、運行、顯示及錯誤警告處理到三維模擬仿真的各種功能,整個程序采取模塊化設計,可擴展性強,易于維護。
(審核編輯: 智匯胡妮)
分享