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