李 淵,武建新,郭宇鴻,李博偉,2
(1.內(nèi)蒙古工業(yè)大學(xué) 機(jī)械學(xué)院,內(nèi)蒙古 呼和浩特 010051;2.烏海市特種設(shè)備檢驗(yàn)所,內(nèi)蒙古 烏海 016000)
本文所研究的是6自由度機(jī)械手,所以采用Galil公司提供的六個(gè)自由度的DMC-2163運(yùn)動(dòng)控制器。DMC-2163系列是Galil經(jīng)濟(jì)型多軸獨(dú)立控制器,它提供兩個(gè)通信通道:RS-232(最高波特率19.2kBd/s)和10Mb/s以太網(wǎng),且提供4MB Flash EEPROM 存儲(chǔ)器,用于存儲(chǔ)應(yīng)用程序、參數(shù)、變量、數(shù)組,可以很容易地在現(xiàn)場(chǎng)對(duì)固件進(jìn)行升級(jí)。
DMC-2163專(zhuān)為解決復(fù)雜運(yùn)動(dòng)問(wèn)題而設(shè)計(jì),能夠在包括點(diǎn)動(dòng)、點(diǎn)到點(diǎn)定位、矢量定位、電子齒輪同步、電子凸輪、組合運(yùn)動(dòng)、軌跡運(yùn)動(dòng)的應(yīng)用中使用??刂破魍ㄟ^(guò)對(duì)運(yùn)動(dòng)規(guī)劃曲線的平滑處理以及加、減速過(guò)程的控制,可大大減小對(duì)機(jī)械部分的運(yùn)動(dòng)沖擊。為了對(duì)復(fù)雜輪廓平滑跟蹤,DMC-2163還提供無(wú)限直線、圓弧線段的矢量進(jìn)給??刂破鞯碾娮育X輪也提供了多主軸以及龍門(mén)模式的操作[1]。
六自由度機(jī)器人是一種典型的工業(yè)機(jī)器人,在自動(dòng)搬運(yùn)、裝配、焊接等工業(yè)現(xiàn)場(chǎng)有著廣泛的應(yīng)用。該機(jī)器人采用六關(guān)節(jié)串聯(lián)結(jié)構(gòu),各關(guān)節(jié)以“絕對(duì)編碼器電機(jī)+精密諧波減速器”作為傳動(dòng)。在機(jī)器人的控制方面,采用集成了PC技術(shù)、圖像技術(shù)、邏輯控制及專(zhuān)業(yè)運(yùn)動(dòng)控制技術(shù)的運(yùn)動(dòng)控制器,其性能可靠穩(wěn)定,高速高精度[2]。本次實(shí)驗(yàn)所使用的機(jī)械手的一些技術(shù)參數(shù)如表1所示。
本文所論述的是六自由度機(jī)械手,采用了Galil公司的DMC2163運(yùn)動(dòng)控制卡,使運(yùn)動(dòng)系統(tǒng)具有精確的定位抓取功能。圖1為機(jī)械手抓取物體的實(shí)物圖以及機(jī)械手配電柜的接線圖。
表1 機(jī)械手技術(shù)參數(shù)
圖1 機(jī)械手抓取物體的過(guò)程及配電柜
其他的控制系統(tǒng)一般采用 WSDK、SmartTerminal作為伺服調(diào)節(jié)工具,而本文所述的系統(tǒng)采用的伺服調(diào)節(jié)工具是GalilTools。GalilTools為控制卡調(diào)試基本工具,并帶有開(kāi)發(fā)函數(shù)包。調(diào)試工具部分分為收費(fèi)版本和免費(fèi)版本,收費(fèi)版本功能接近WSDK,免費(fèi)版本接近SmartTerminal。它支持現(xiàn)有所有型號(hào)的控制器,支持XP及以上的Windows系統(tǒng)。使用Galil-Tools伺服調(diào)整軟件,當(dāng)打開(kāi)此軟件時(shí),會(huì)自動(dòng)識(shí)別控制卡的通訊狀態(tài),而不需要像舊的伺服調(diào)整軟件(如SmartTeminal、WSDK)那樣首先注冊(cè)卡的信息。通過(guò)GalilTools軟件向控制卡發(fā)送指令,實(shí)時(shí)控制和監(jiān)測(cè)伺服電動(dòng)機(jī)的運(yùn)動(dòng)。也可以通過(guò)軟件編寫(xiě)程序,然后下載到控制卡中,由控制卡連續(xù)自動(dòng)執(zhí)行。
Galil運(yùn)動(dòng)控制器提供了功能強(qiáng)大且使用方便的編程語(yǔ)言,用戶使用GalilTools能夠快速編程來(lái)解決任何運(yùn)動(dòng)控制方面的難題。能夠把程序下載到運(yùn)動(dòng)控制卡的存儲(chǔ)器中,無(wú)需主機(jī)干預(yù),即可執(zhí)行。多任務(wù)功能同時(shí)執(zhí)行8個(gè)用戶程序,允許各獨(dú)立任務(wù)同時(shí)執(zhí)行。采用GalilTools來(lái)執(zhí)行復(fù)雜程序,讓主計(jì)算機(jī)執(zhí)行其他任務(wù);不過(guò),即使程序正在執(zhí)行中,控制器仍能隨時(shí)接收來(lái)自主計(jì)算機(jī)的命令。除標(biāo)準(zhǔn)運(yùn)動(dòng)命令外,Galil還提供許多命令,使其做出自行決定,這些命令包含各種跳轉(zhuǎn)、事件觸發(fā)及子程序。Galil還提供了用于檢測(cè)、修正系統(tǒng)誤差及處理來(lái)自外部開(kāi)關(guān)的中斷自動(dòng)子程序。為了更高的編程靈活性,Galil提供了用戶自定義變量、陣列及算術(shù)函數(shù)[3]。
為了各種運(yùn)動(dòng)形態(tài)和應(yīng)用,Galil提供了廣泛的指令集,用2字符ASCII命令代表這些指令,使編程更加簡(jiǎn)單。使用雙字符語(yǔ)言編寫(xiě)的程序主要可以完成如下的運(yùn)動(dòng)方式:PTP定位、JOG運(yùn)動(dòng)、2D直線和圓弧插補(bǔ)、直線插補(bǔ)、電子齒輪、ECAM和仿形加工等。
只有完整的GalilTools版本(即收費(fèi)版本)才有PID自動(dòng)調(diào)整功能。下面主要介紹PID自動(dòng)調(diào)整功能在GalilTools中的具體實(shí)現(xiàn)過(guò)程。
(1)首先啟動(dòng)GalilTools軟件,在“Scope”功能下有“Tuner”功能項(xiàng),所有的PID數(shù)值都是初始值。PID自動(dòng)調(diào)節(jié)工具如圖2所示。
圖2 PID自動(dòng)調(diào)節(jié)工具
(2)設(shè)置“Scope”的 Mode選項(xiàng)為Repeat,然后點(diǎn)擊Start使得Scope可以接收獲取數(shù)據(jù)。
(3)編寫(xiě)一段 DMC(Digital Motion Control)程序,使得速度、加速度、減速度均為最大值。然后把編寫(xiě)的程序下載到控制器中,以后就可以更加直觀地對(duì)比PID調(diào)整前后的圖像。如下是一段實(shí)現(xiàn)X軸間歇運(yùn)動(dòng)的DMC程序:
(4)在GalilTools的終端中輸入XQ#A(執(zhí)行程序),然后點(diǎn)擊Tuner中的 Autotuner,系統(tǒng)會(huì)進(jìn)行PID的自動(dòng)調(diào)整。
點(diǎn)擊Autotuner后的效果如圖3所示。而沒(méi)有經(jīng)過(guò)PID整定的控制效果圖如圖4所示。對(duì)比圖3與圖4可以發(fā)現(xiàn),在經(jīng)過(guò)PID調(diào)整以后,顯然實(shí)際位置與編碼器反饋回來(lái)的位置基本重合,因此提高了控制系統(tǒng)的穩(wěn)定性。
圖3 經(jīng)過(guò)PID自動(dòng)調(diào)整的控制效果
圖4 未經(jīng)過(guò)PID調(diào)整的控制效果
Galil除了提供 GalilTools、SmartTerminal和WSDK基本通信軟件以外,還提供了軟件開(kāi)發(fā)工具CToolkit、ActiveX Toolkit,用戶可以用 C、C++、VB、VC、Labview開(kāi)發(fā)應(yīng)用接口程序。在開(kāi)發(fā)接口程序時(shí),用戶可以利用API函數(shù)直接調(diào)用Galil的Dll,或者使用 ActiveX COM 控件[4]。
本文所述的系統(tǒng)是在Windows平臺(tái)下使用Visual Studio 2010軟件開(kāi)發(fā)的。為了使在 VS 2010中編寫(xiě)的運(yùn)動(dòng)程序也具有PID自動(dòng)調(diào)整功能,則需要在VS 2010中首先調(diào)用 GalilTools,這樣在 VS 2010中編寫(xiě)的C++程序在執(zhí)行過(guò)程中也同時(shí)啟動(dòng)了Galil-Tools,即整個(gè)運(yùn)動(dòng)過(guò)程具有了PID自動(dòng)調(diào)整功能。
在Visual Studio 2010控制臺(tái)程序編寫(xiě)時(shí),需進(jìn)行如下配置:
(1)在系統(tǒng)環(huán)境變量的PATH變量中,添加C:\Program Files\Galil\GalilTools\bin\。
(2)打開(kāi)VS 2010,新建一個(gè)C++空工程。
(3)在解決方案中,選擇資源文件,右擊添加C:\Program Files\Galil\GalilTools\lib\hello.cpp。
(4)項(xiàng)目/屬性/配置屬性/C/C++/常規(guī)/附加包含目錄“C:\Program Files\Galil\GalilTools\lib”。
(5)項(xiàng)目/屬性/配置屬性/C/C++/代碼生成/運(yùn)行庫(kù)改為多線程調(diào)試DLL。
(6)項(xiàng)目/屬性/配置屬性/鏈接器/輸入/附加依賴(lài)項(xiàng)“C:\Program Files\Galil\GalilTools\lib\Galil1.lib”。
(7)將LibGalil-1.6.4.552-vs2010-x86中的Debug(包含Galil1.obj和Galil1.dll)分別復(fù)制到C:\Program Files\Galil\GalilTools\bin\和 C:\Program Files\Galil\GalilTools\lib\。
在Visual Studio 2010中,開(kāi)發(fā)了一個(gè) MFC的人機(jī)操作界面,實(shí)現(xiàn)機(jī)械手對(duì)物體的準(zhǔn)確抓取,其具體操作過(guò)程如下:首先連接控制器,然后選擇回原點(diǎn)標(biāo)定,最后進(jìn)行機(jī)器人抓取物體。在抓取物體的過(guò)程中應(yīng)進(jìn)行物體的圖像捕捉,在系統(tǒng)內(nèi)部進(jìn)行各種矩陣變換,使得機(jī)械手能夠準(zhǔn)確抓取到物體。人機(jī)界面的開(kāi)發(fā)是在調(diào)用GalilTools軟件基礎(chǔ)上進(jìn)行的,使得整個(gè)運(yùn)動(dòng)系統(tǒng)具有PID自動(dòng)調(diào)整功能,這樣機(jī)械手就能快速、準(zhǔn)確地抓取物體。機(jī)械手的人機(jī)界面如圖5所示。
本文以六自由度機(jī)械手作為GalilTools的應(yīng)用實(shí)例,首先在GalilTools中進(jìn)行簡(jiǎn)單的應(yīng)用編程,再利用VS 2010作為開(kāi)發(fā)平臺(tái)進(jìn)行了一些開(kāi)發(fā)環(huán)境的配置工作,配置完成后制作了一個(gè)MFC人機(jī)界面,通過(guò)人機(jī)界面的操作,使機(jī)械手能夠?qū)⑽矬w準(zhǔn)確抓起。由于GalilTools具有這些優(yōu)點(diǎn),因此在進(jìn)行機(jī)械手人機(jī)界面的設(shè)計(jì)中,就是在調(diào)用它的基礎(chǔ)上開(kāi)發(fā)應(yīng)用的。
圖5 機(jī)械手的人機(jī)界面
[1] 吳忠.基于Galil運(yùn)動(dòng)控制器的切割機(jī)控制系統(tǒng)[J].機(jī)電工程,2003,20(4):44-46.
[2] 馬強(qiáng).六自由度機(jī)械臂軌跡規(guī)劃研究[D].哈爾濱:哈爾濱工程大學(xué),2007:9-14.
[3] 何均.高平穩(wěn)數(shù)控運(yùn)動(dòng)控制算法與系統(tǒng)軟件開(kāi)發(fā)方法研究[D].南京:南京航空航天大學(xué),2010:23-26.
[4] 王偉.基于GALIL卡的火焰切割機(jī)數(shù)控系統(tǒng)的開(kāi)發(fā)研究[D].大連:大連交通大學(xué),2011:25-31.