石永華,華磊
(華南理工大學(xué)機(jī)械與汽車工程學(xué)院,廣東廣州510000)
多軸運(yùn)動控制器的核心功能是對多個電機(jī)的聯(lián)動控制。機(jī)器人控制器和機(jī)床數(shù)控系統(tǒng)都屬于多軸聯(lián)動控制器,數(shù)控系統(tǒng)和機(jī)器人控制器的發(fā)展歷史如下:第一階段為數(shù)值邏輯控制階段,其特征是不具有CPU,依靠數(shù)值邏輯實(shí)現(xiàn)數(shù)控所需的數(shù)值計(jì)算和邏輯控制(包括第一代電子管數(shù)控系統(tǒng),第二代晶體管數(shù)控系統(tǒng),第三代集成電路數(shù)控系統(tǒng));第二個階段為計(jì)算機(jī)控制階段,其特征是直接引入CPU 控制,依靠軟件計(jì)算完成數(shù)控的主要功能(包括第四代是小型計(jì)算機(jī)數(shù)控系統(tǒng),第五代是微型計(jì)算機(jī)數(shù)控系統(tǒng),第六代是PC 數(shù)控系統(tǒng))。
PC 數(shù)控系統(tǒng)的發(fā)展初期,形成了“NC+PC”過渡型結(jié)構(gòu),既保留傳統(tǒng)NC 硬件結(jié)構(gòu),僅將PC 作為HMI。代表性的產(chǎn)品包括FANUC 的160i、180i、310i、西門子的840D 等。更加革命性的結(jié)構(gòu)是全部采用PC 平臺的軟硬件資源,僅增加與伺服驅(qū)動及I/O設(shè)備通信所必需的現(xiàn)場總線接口,從而實(shí)現(xiàn)非常簡潔的硬件體系結(jié)構(gòu)。典型的產(chǎn)品包括西門子840DSL、海德漢TNC620、POWER AUTOMATION 公司的 PA8000 NT、國內(nèi)的大連光洋的 GDS07、GDS09、GNC60、GNC61、華中數(shù)控的華中8 型、KUKA 機(jī)器人、ABB 機(jī)器人等產(chǎn)品[1-2]。
PC 數(shù)控系統(tǒng)在操作系統(tǒng)的選擇上有以下方案:DOS 操作系統(tǒng)、RT-Linux、Windows +RTS、Windows+ VxWorks、Windows + 實(shí)時補(bǔ)?。?-4]。例如KUKA機(jī)器人控制器采用的是Windows + VxWorks 操作系統(tǒng)??梢酝茢啵赑C 和WINDOWS 操作系統(tǒng)的開放式、模塊化數(shù)控系統(tǒng)是當(dāng)今數(shù)控技術(shù)發(fā)展的方向[5]。所以,作者設(shè)計(jì)了一款基于Windows +實(shí)時補(bǔ)丁操作系統(tǒng)的全軟件運(yùn)動控制器。
該控制器的硬件核心是通用PC,利用其通用接口完成人機(jī)交互;利用USB 鍵盤、觸摸屏和顯示器構(gòu)成示教控制器;以FPGA 芯片為核心設(shè)計(jì)一款基于PCI 接口的控制擴(kuò)展卡,擴(kuò)展卡具有模擬量輸入輸出、開關(guān)量輸入輸出、電機(jī)驅(qū)動器控制接口。由此組成一個完整的多軸聯(lián)動控制器。系統(tǒng)硬件構(gòu)成如圖1所示。
控制擴(kuò)展卡的原理框圖如圖2所示。PCI9054 芯片完成PCI 總線的通信協(xié)議,并將PCI 總線的數(shù)據(jù)讀寫信號轉(zhuǎn)為本地總線的數(shù)據(jù)讀寫時序,與FPGA 芯片相連接。FPGA 芯片內(nèi)部的“PCI9054 接口模塊”負(fù)責(zé)與PCI9054 芯片通信,將讀寫信號與內(nèi)部的4 個內(nèi)存區(qū)域相連接。4 個內(nèi)存區(qū)域分別是:輸入信息內(nèi)存、輸出信息內(nèi)存、脈沖內(nèi)存1 和脈沖內(nèi)存2。FPGA內(nèi)部有相關(guān)時序邏輯功能,能夠?qū)? 個內(nèi)存區(qū)域進(jìn)行處理,完成脈沖發(fā)送、開關(guān)量信號輸入和開關(guān)量信號輸出功能。
圖1 硬件構(gòu)成簡圖
圖2 擴(kuò)展卡原理框圖
PC 采用WINDOWS 操作系統(tǒng),采用VC ++ 編寫操作系統(tǒng)用戶模式下的用戶應(yīng)用程序,DDK 編寫操作系統(tǒng)內(nèi)核模式下的設(shè)備驅(qū)動程序,設(shè)備驅(qū)動程序控制控制擴(kuò)展卡,F(xiàn)PGA 芯片的程序采用Verilog 編寫。
多軸運(yùn)動控制器主要實(shí)現(xiàn)的功能是執(zhí)行G 代碼等控制器指令。G 代碼的一部分功能是判斷外部開關(guān)量模擬量的狀態(tài),然后根據(jù)邏輯需要輸出開關(guān)量和模擬量,另外一部分功能是根據(jù)G 代碼生成電機(jī)脈沖時序,從而控制多個電機(jī)的位置。
在該架構(gòu)中,有兩個重要的內(nèi)存空間,一個是WINDOWS 系統(tǒng)中的X86 內(nèi)存,另一個是FPGA 芯片里面的內(nèi)存區(qū)域。兩個內(nèi)存空間的的信息存儲結(jié)構(gòu)如圖3。輸入信息區(qū)域存儲外部輸入信息,例如傳感器,按鈕等輸入信息。輸出信息區(qū)域存儲系統(tǒng)產(chǎn)生的輸出信息,例如開關(guān)量、模擬量輸出等。電機(jī)脈沖區(qū)域存儲驅(qū)動程序產(chǎn)生的電機(jī)脈沖。FPGA 以5 μs 的周期更新其內(nèi)存與外部設(shè)備的信息交互;FPGA 以100 μs 的周期產(chǎn)生中斷,使得擴(kuò)展卡的驅(qū)動程序能夠以100 μs 的周期循環(huán)執(zhí)行,完成G 代碼執(zhí)行任務(wù),完成一次X86 內(nèi)存與FPGA 內(nèi)存的交換更新,并保證FPGA 的電機(jī)脈沖緩沖區(qū)域被及時更新。每次中斷響應(yīng),將會執(zhí)行一條或幾條G 代碼,X86 內(nèi)存的電機(jī)脈沖緩沖區(qū)域存儲一條或者幾條G 代碼指令對應(yīng)的電機(jī)脈沖序列,使得G 代碼執(zhí)行的延遲不超過100 μs??刂破饔脩舫绦虬?視窗界面顯示模塊、G 代碼編輯模塊。
圖3 運(yùn)行原理簡圖
值得注意的是,該控制器并不介入電機(jī)位置的半閉環(huán)或閉環(huán)控制,而是把這一任務(wù)交付給電機(jī)驅(qū)動器完成,現(xiàn)在的商業(yè)驅(qū)動器內(nèi)部有智能算法,可以很好地完成實(shí)際工業(yè)控制需求。電機(jī)控制框圖如圖4所示。
圖4 電機(jī)控制框圖
開關(guān)量與FPGA 內(nèi)存的讀寫交換時間。設(shè)計(jì)FPGA 的時鐘頻率40 MHz,存儲周期為200 個時鐘信號,即5 μs 可以完成FPGA 內(nèi)存與外界信息的交換。FPGA 最大可以發(fā)生電機(jī)脈沖的頻率小于10 MHz,足以滿足工業(yè)應(yīng)用。
驅(qū)動程序中斷響應(yīng)的時間。將控制卡的中斷級別設(shè)置到設(shè)備最高級別,根據(jù)文獻(xiàn)[6]推斷:中斷產(chǎn)生到中斷響應(yīng)的延遲一般為幾十條指令的時間。估算中斷響應(yīng)延遲時間小于1 μs,文獻(xiàn)[7]中的實(shí)驗(yàn)也證實(shí)了上述推斷的正確性。
驅(qū)動程序定時器精度。采用DPC 定時器,定時器的響應(yīng)例程運(yùn)行與DISPATCH_LEVEL 的IRQL 級別[8],不會被任何普通程序打斷,但是可能會被設(shè)備中斷例程搶占。DPC 例程隊(duì)列一般存放實(shí)時性要求不高的中斷響應(yīng)例程。 DPC 定時器的時鐘源實(shí)際上認(rèn)識系統(tǒng)時鐘中斷推動,系統(tǒng)時鐘中斷間隔一般為10 ~15 ms[9],所以DPC 定時精度約為10 ~15 ms 左右。
驅(qū)動程序?qū)PGA 內(nèi)存讀入到用戶程序數(shù)組的時間。主要取決于PCI 接口的速度,接口速度約為133 MB/s,設(shè)計(jì)FPGA 內(nèi)存大小為4 Kbyte,則FPGA 內(nèi)存更新一次數(shù)據(jù)的時間是30 μs。
用戶程序?qū)斎胄畔⒌姆磻?yīng)時間。采用定時查詢法查詢輸入信息,反應(yīng)時間約為定時器的精度,定時器的精度與線程調(diào)度周期有關(guān)。線程調(diào)度程序運(yùn)行在DISPATCH_ LEVEL 級別,線程調(diào)度周期約36 ms[10],用戶程序?qū)斎胄畔⒌姆磻?yīng)時間約為36 ms 或更長。
CPU 對電機(jī)軌跡的計(jì)算能力。用當(dāng)前工業(yè)應(yīng)用最復(fù)雜的六軸機(jī)器人的運(yùn)動學(xué)逆解來做測試,即已知末端點(diǎn)的位姿矩陣,求6 個關(guān)節(jié)角度。在CPU G530@2.4GHz 上做測試,36 s 完成了1 000 000 次求解,平均36 μs 每次求解。如果按軌跡插補(bǔ)間距0.1 mm,計(jì)算,該系統(tǒng)可以達(dá)到的最快末端移動速度是2 777 mm/s 的速度。系統(tǒng)的其他耗時與之相比較幾乎可以忽略。
上述的全軟件運(yùn)動控制器構(gòu)架現(xiàn)在已經(jīng)成功實(shí)現(xiàn),并將其運(yùn)用到串聯(lián)六軸機(jī)器人的控制當(dāng)中。機(jī)器人機(jī)械本體自主設(shè)計(jì)制造,額定負(fù)載58.8 kg,工作半徑1 650 mm,6 個減速器為國產(chǎn)3 弧分精度諧波減速器,6 個松下伺服電機(jī)。
圖5 機(jī)器人系統(tǒng)
測試過程如下:機(jī)械手端夾持一只紅色水筆,讓機(jī)器人從點(diǎn)P1直線運(yùn)動到點(diǎn)P2,速度設(shè)定10 mm/s,距離900 mm。其中通過松下PANATERM 伺服監(jiān)控軟件,抓取機(jī)器人行走直線時的伺服驅(qū)動器返回的相關(guān)波形曲線。水筆所畫出來的直線效果如圖6。第一軸驅(qū)動器的波形曲線如圖7。
圖6 10 mm/s 走直線
圖7 第一軸驅(qū)動器的波形曲線
測試結(jié)果:
(1)從圖6 得出,水筆軌跡精度1 mm。
(2)從圖7 得出,控制器指令脈沖序列和理論脈沖序列有著極高的一致性。
(3)從圖7 得出,電機(jī)驅(qū)動器的指令位置最大偏差3 指令單位,等效到機(jī)械位移約0.1 mm
另已知該機(jī)械本體的機(jī)械精度約為1 mm,機(jī)器人的軌跡幾何精度主要影響因素有:控制器指令脈沖精度、電機(jī)驅(qū)動器響應(yīng)性能和機(jī)械精度。由此得出結(jié)論:該機(jī)器人軌跡幾何精度主要由機(jī)械精度決定;控制器指令脈沖有著極高的準(zhǔn)確性;電機(jī)驅(qū)動器有著較高的響應(yīng)性能。
圖8 “IVU”筆跡截圖
測試過程如下:編寫一段機(jī)器人指令程序,該程序用微小直線段書寫“IVU”文字,筆跡移動速度8 mm/s。重復(fù)執(zhí)行該機(jī)器人指令程序10 次,觀察筆跡的重合度。測試結(jié)果如圖8。
測試結(jié)果:
(1)軌跡重合度1 mm。結(jié)論分析:軌跡重合度1 mm 的偏差主要由機(jī)械精度產(chǎn)生的??刂破饔兄^好的穩(wěn)定性和重復(fù)性。
綜上所述,該系統(tǒng)對外界信息的響應(yīng)能力中,F(xiàn)PGA 程序響應(yīng)強(qiáng)于中斷響應(yīng),中斷響應(yīng)強(qiáng)于驅(qū)動程序定時響應(yīng),驅(qū)動程序定時響應(yīng)強(qiáng)于用戶程序響應(yīng)??梢愿鶕?jù)系統(tǒng)的實(shí)時性要求,將控制部分放在不同的層次程序中。該構(gòu)架將實(shí)時性要求不高的工作部分放在用戶程序?qū)觼硗瓿?,例如G 代碼的讀寫保存等,將實(shí)時性要求高的部分放在驅(qū)動程序?qū)觼硗瓿?,對外界信息的響?yīng)延遲最小可以少于3 μs。G 代碼執(zhí)行的響應(yīng)延遲不超過100 μs。末端執(zhí)行器速度可以達(dá)到2 777 mm/s 以上。六軸串聯(lián)機(jī)器人進(jìn)行直線運(yùn)動的測試結(jié)果表明,該控制器構(gòu)架有良好的性能表現(xiàn),可以承擔(dān)對六軸串聯(lián)機(jī)器人等多軸聯(lián)動設(shè)備的控制。
[1]陸啟建,劉明燈.網(wǎng)絡(luò)信息時代發(fā)展中國數(shù)控技術(shù)的幾點(diǎn)看法[J].機(jī)械工程師,2001(5):53-54.
[2]PARK Sungsik,KIM Sun-Ho,CHO Hyunbo.Kernel Software for Efficiently Building Re-configuring and Distributing an Open CNC Controller[J].International Journal of Advanced Manufacturing Technology,2006,27(7/8):788-796.
[3]郁發(fā)新.常用嵌入式操作系統(tǒng)比較分析[J].計(jì)算機(jī)應(yīng)用,2006,26(4):761-764.
[4]KAWAKAMI Isamu,NIMURA Yuji,HAMADA Keiichi.Real-time Extension for Windows NT/CE Used for Control Systems[C].SICE2000.Iizuka,Japan,2000:319-324.
[5]宓方偉,陳功福.PMAC 多軸運(yùn)動控制器應(yīng)用研究[J].機(jī)床與液壓,2004(12):129-130.
[6]潘愛民.WINDOWS 內(nèi)核原理與實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2010:311-323.
[7]范劍,潘建峰,白建華.全軟件數(shù)控系統(tǒng)實(shí)時控制研究[J].制造技術(shù)與機(jī)床,2007(5):45-47.
[8]張帆,史彩成.驅(qū)動開發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2007:275-276.
[9]尤晉元,史美林.WINDOWS 操作系統(tǒng)原理[M].北京:機(jī)械工業(yè)出版社,2001:128-129.
[10]孫斌,楊汝清.基于PC 的數(shù)控系統(tǒng)的研究現(xiàn)狀和發(fā)展趨勢[J].機(jī)床與液壓,2001(4):3-5.