引言
隨著科學(xué)技術(shù)和制造技術(shù)的不斷發(fā)展進(jìn)步,數(shù)字控制的雕刻機(jī)漸漸成為雕刻行業(yè)的專用工具,。數(shù)控雕刻機(jī)從加工原理上講是一種鉆銑組合加工,,是一種典型的機(jī)電一體化產(chǎn)品,在模具雕刻,、廣告制作,、裝潢等行業(yè)有著廣泛的市場應(yīng)用。
目前市場上的數(shù)控雕刻機(jī)控制器硬件平臺所用的微處理器主要包括:以8位單片機(jī)為內(nèi)核,,這類產(chǎn)品的價(jià)格低廉,,設(shè)計(jì)比較簡單,但是有功能單一,、性能差,、效率低、存儲容量小,、獨(dú)立工作能力較弱,、實(shí)用性能不強(qiáng)、定位精度不高,、人機(jī)交互復(fù)雜,、操作不方便等缺陷;以DSP為內(nèi)核,,這類雕刻機(jī)具有較強(qiáng)的性能及效率,,實(shí)時(shí)性較強(qiáng),成本適中,,但是功能還是比較少,,同樣缺少獨(dú)立工作能力,無法滿足人機(jī)交互界面,、外圍電路接口,、網(wǎng)絡(luò)等方面的要求。
本文提出了利用32位ARM9處理器與FPGA相結(jié)合來取代上述單片機(jī)與工控機(jī)的聯(lián)機(jī)控制,,以Windows CE.net操作系統(tǒng)為平臺,,由ARM完成速度控制, FPGA完成軌跡控制,。在軌跡控制中結(jié)合了步進(jìn)電機(jī)的轉(zhuǎn)矩-頻率特性,,使電機(jī)的軌跡精確而且平穩(wěn)。整個(gè)控制系統(tǒng)一體化完成從原始數(shù)據(jù)讀取到最終控制信號的輸出,徹底擺脫了對工控機(jī)的依賴,;通過控制鍵盤設(shè)置不同的脈沖當(dāng)量及電機(jī)運(yùn)行參數(shù),,可與適用于各種場合的雕刻機(jī)床相配合使用,控制精度高,、通用性強(qiáng),。
控制系統(tǒng)設(shè)計(jì)
一個(gè)嵌入式系統(tǒng)必定是由嵌入式硬件和嵌入式軟件組成;嵌入式硬件主要包括嵌入式處理器,、外設(shè)控制器,、接口電路等;嵌入式軟件主要包括啟動程序,、嵌入式操作系統(tǒng),、應(yīng)用軟件等。嵌入式處理器是嵌入式系統(tǒng)的硬件核心,;嵌入式操作系統(tǒng)是嵌入式軟件的核心,。
硬件系統(tǒng)
硬件系統(tǒng)主要由以下三個(gè)部分組成:
(1)處理器(ARM9):作為控制器的處理器,在ARM上移植了Windows CE.net操作系統(tǒng),,人機(jī)互動方面要完成對LCD顯示的控制和讀取控制鍵盤的控制命令,;在雕刻方面要完成對原始數(shù)據(jù)的讀取(通過USB接口),、預(yù)處理,、分析和計(jì)算,并將計(jì)算結(jié)果傳遞給FPGA,,與FPGA協(xié)同完成對步進(jìn)電機(jī)的控制,。
(2)FPGA:對接收到ARM發(fā)出的數(shù)據(jù)進(jìn)行插補(bǔ)運(yùn)算,并根據(jù)插補(bǔ)結(jié)果計(jì)算出控制步進(jìn)電機(jī)的脈沖數(shù)目和延時(shí),,最終完成對步進(jìn)電機(jī)的控制實(shí)現(xiàn)三軸聯(lián)動的雕刻,。
(3)人機(jī)交互界面:人機(jī)交互界面主要包括了鍵盤和LCD。幾乎所有關(guān)于雕刻的信息都實(shí)時(shí)的顯示在LCD上,;機(jī)床的脈沖當(dāng)量以及雕刻最大速度和加速度等參數(shù)則是通過鍵盤設(shè)定的,,同時(shí)在雕刻中鍵盤還可以根據(jù)需要輸入特殊指令。
硬件系統(tǒng)總體框架如圖1所示,。整個(gè)硬件核心為基于ARM920T的三星S3C2440處理器,,搭配有64MB SDRAM作為系統(tǒng)的內(nèi)存,128MB FLASH作為系統(tǒng)的外存,,相當(dāng)于硬盤,,以便在斷電后保存各種系統(tǒng)程序以及調(diào)試下載電路。外圍輔助設(shè)備包括USB接口:大部分加工文件保存在U盤中,,需要讀取時(shí)從U盤調(diào)入,以節(jié)省FLASH存儲空間;觸摸式LCD:用來提供系統(tǒng)的顯示以及操作,;網(wǎng)絡(luò)接口:用來提供網(wǎng)絡(luò)服務(wù),,方便遠(yuǎn)程更新程序;控制鍵盤:用來提供加工時(shí)所需的操作,,包括點(diǎn)控,、起停和加減速等。與上位機(jī)通信通過串口或者USB接口,,可實(shí)現(xiàn)在線調(diào)試或者在上位機(jī)中顯示實(shí)時(shí)信息,。FPGA與ARM以及過橋板相連,從ARM中獲取數(shù)據(jù)并轉(zhuǎn)換成控制信號,,經(jīng)過橋板放大電路放大,,發(fā)送到步進(jìn)電機(jī)的控制電路中。
圖1 硬件系統(tǒng)總體框架
軟件系統(tǒng)
系統(tǒng)的軟件選用了嵌入式實(shí)時(shí)多任務(wù)操作系統(tǒng)Windows CE.net,。根據(jù)雕刻機(jī)控制系統(tǒng)的需求,,系統(tǒng)任務(wù)模塊可以分為:人機(jī)界面模塊,USB接口模塊和雕刻控制模塊,。其中人機(jī)界面模塊包括LCD顯示和鍵盤指令的讀?。煌ㄟ^USB接口模塊讀取原始設(shè)計(jì)數(shù)據(jù),;雕刻控制模塊對讀取的數(shù)據(jù)分析計(jì)算后完成速度控制和軌跡控制,。軟件結(jié)構(gòu)圖如圖2所示。
控制系統(tǒng)中,,ARM通過對設(shè)計(jì)數(shù)據(jù)的分析和計(jì)算完成速度控制,,F(xiàn)PGA通過插補(bǔ)運(yùn)算完成軌跡控制??刂葡到y(tǒng)應(yīng)用程序流程圖如圖3所示,。
圖2 系統(tǒng)軟件結(jié)構(gòu)圖
圖3 控制系統(tǒng)應(yīng)用程序流程圖
(1)讀取數(shù)據(jù),找出可在速度不出現(xiàn)突變的情況下可雕刻的最小單位的線條數(shù),,稱之為判“S”,。分別計(jì)算“S”中各軸的位移總量,定義“Sx”,,“Sy”和“Sz”分別為x,,y和z軸的位移總量。
(2)根據(jù)操作設(shè)置的雕刻最大速度和加速度,,計(jì)算出該段位移中各軸的速度分量和加速度分量,。
(3)判斷當(dāng)前數(shù)據(jù)處于哪種速度段,根據(jù)不同的情況計(jì)算各段位移的加速,、勻速,、減速段的脈沖數(shù)和各速度段的初始頻率等這些數(shù)據(jù),,并把數(shù)據(jù)發(fā)送給FPGA。
(4)FPGA根據(jù)接收到的數(shù)據(jù)進(jìn)行插補(bǔ)運(yùn)算,,最終控制步進(jìn)電機(jī)的轉(zhuǎn)速,,實(shí)現(xiàn)三軸聯(lián)動。
雕刻機(jī)連續(xù)軌跡控制
在數(shù)控加工中,,運(yùn)動控制器通過插補(bǔ)算法來控制刀具相對于工件以一定的速度,,按照給定的路徑運(yùn)動切屑出零件輪廓。插補(bǔ)技術(shù)是數(shù)控系統(tǒng)的核心技術(shù),,它主要解決控制刀具與工件運(yùn)動軌跡的問題,。本系統(tǒng)的插補(bǔ)運(yùn)算是在以ARM9為核心的嵌入式處理器中完成的。
以二維基本直線條的插補(bǔ)運(yùn)算為例,,首先根據(jù)脈沖當(dāng)量,,分別計(jì)算出XY軸各自的總待發(fā)送脈沖數(shù)mx和my。設(shè)定XY中脈沖數(shù)較多者為基礎(chǔ)軸并將其作為參考軸,,目的在于選取一個(gè)穩(wěn)定的參考軸,,以方便各脈沖發(fā)送的計(jì)算。實(shí)際運(yùn)算時(shí)(以X軸為基礎(chǔ)軸),,根據(jù)加工速度以及脈沖當(dāng)量,,計(jì)算出基礎(chǔ)軸發(fā)送脈沖的頻率f,在每一個(gè)時(shí)間間隔
內(nèi),,均發(fā)送一個(gè)基礎(chǔ)軸脈沖并累加發(fā)送次數(shù)m,。
當(dāng)時(shí),則在
式1
時(shí),,發(fā)送一次短軸脈沖,。當(dāng)時(shí),則需要在
([ ]為取整運(yùn)算)后,,延時(shí)
后發(fā)送一次短軸脈沖,。在式1中,倍數(shù)n亦可以看作是短軸的計(jì)數(shù)器,,則當(dāng)m=mx,,即n=my時(shí),插補(bǔ)運(yùn)算完畢,。該數(shù)字積分法脈沖發(fā)送示意圖如圖4所示:
在圖4(a)中,,線段XY兩軸比例為2:1,如果刻畫動點(diǎn)按照既定路徑運(yùn)動,,則XY兩軸運(yùn)動速度比為2:1,。依據(jù)步進(jìn)電機(jī)的控制規(guī)律,控制兩軸的脈沖頻率比同為2:1,,且兩軸脈沖發(fā)送數(shù)量比為2:1,。根據(jù)上面的數(shù)字積分插補(bǔ)算法,,首先計(jì)算出X軸的脈沖發(fā)送頻率,在每一個(gè)
時(shí)間間隔內(nèi),,均發(fā)送一個(gè)基礎(chǔ)軸脈沖,,并且每隔2個(gè)基礎(chǔ)軸脈沖即發(fā)送一個(gè)短軸脈沖,,從而使短軸脈沖的頻率為0.5
,,當(dāng)基礎(chǔ)軸發(fā)送完畢時(shí),短軸脈沖亦發(fā)送完畢,,數(shù)量與計(jì)算得出的相符,。當(dāng)兩軸比例為3:2時(shí),如圖4(b)所示,,則在每1.5個(gè)基礎(chǔ)軸脈沖發(fā)送后發(fā)送一個(gè)短軸脈沖,,有效的保證了脈沖發(fā)送比例,從而保證了刻畫線段的精度,。
圓弧插補(bǔ)時(shí),,首先依據(jù)圓弧允許半徑誤差er計(jì)算出擬合弦長:
(r為圓弧半徑) 式2
再根據(jù)擬合弦長l計(jì)算出對應(yīng)的圓心角:
式3
圖4 插補(bǔ)算法脈沖發(fā)送示意圖
通過弦長對應(yīng)的圓心角將原圓弧重新劃分為多條擬合直線,然后通過直線插補(bǔ)的方式完成圓弧刻畫,。
該運(yùn)算方式不再依賴每一次計(jì)數(shù)器的累加運(yùn)算,,而是依據(jù)速度矢量合成原理,通過控制各軸脈沖的發(fā)送比例,,使合成點(diǎn)按照加工軌跡的方向運(yùn)動,,達(dá)到加工目的,避免了重復(fù)性的積分累加運(yùn)算,,可以一次性將所有脈沖數(shù)據(jù)運(yùn)算完畢,,只要按照一定的頻率發(fā)送即可。
插補(bǔ)算法的程序流程圖如圖5所示:
圖5 數(shù)字積分法插補(bǔ)流程圖
首先判斷是否有外部中斷信息輸入,,包括系統(tǒng)需求中的機(jī)械信號,,如機(jī)床原點(diǎn)、工件加工原點(diǎn),、換刀,、主軸調(diào)速和斷電保護(hù)等輸入/輸出信號等,以及操作人員輸入的暫停,、停止加工,、人為加、減速控制等信息,。中斷程序響應(yīng)時(shí)需要保護(hù)好程序已經(jīng)運(yùn)算出的相關(guān)關(guān)鍵信息,,包括讀取的加工段落數(shù)據(jù)信息以及已經(jīng)加工的段落位置信息。
其次依據(jù)脈沖當(dāng)量的定義:相對于每一脈沖信號的機(jī)床運(yùn)動部件的位移量,,得各個(gè)加工軸脈沖總數(shù)為:
(其中l(wèi)為每一軸的長度分量)
式4
并選出具有最大加工脈沖數(shù)的軸作為基礎(chǔ)軸,。電機(jī)控制器還需要脈沖的方向信息,,脈沖方向由事先約定好的方向規(guī)定來確定,可通過讀入的數(shù)據(jù)文件判斷,。插補(bǔ)計(jì)算初始化階段設(shè)置各計(jì)數(shù)參量初始值,,如圖5數(shù)字積分法插補(bǔ)流程圖中所示,COUNT存儲基礎(chǔ)軸與短軸之間的比例值,,其數(shù)值為:基礎(chǔ)軸脈沖數(shù)/短軸脈沖數(shù),;LONG為基礎(chǔ)軸的累加統(tǒng)計(jì)變量,基礎(chǔ)軸每發(fā)送一個(gè)脈沖,,其值加1,;SHORT為短軸的累加統(tǒng)計(jì)變量,初始化階段將COUNT的值賦予SHORT,。每次插補(bǔ)運(yùn)算以基礎(chǔ)軸發(fā)送一個(gè)脈沖開始,,并累加LONG中的值;然后判定LONG的值與SHORT值的整數(shù)部分,,當(dāng)兩者相等時(shí),,表示此時(shí)將發(fā)送一個(gè)短軸脈沖,不等時(shí)則繼續(xù)發(fā)送一個(gè)基礎(chǔ)軸脈沖,。發(fā)送短軸脈沖時(shí),,由于短軸的脈沖是跟隨基礎(chǔ)軸發(fā)送,所以計(jì)算其繼基礎(chǔ)軸發(fā)送后,,所需的延時(shí)發(fā)送時(shí)間,,其延時(shí)數(shù)值為1/f(SHORT-LONG),并將COUNT的值累加到SHORT中,,新的SHORT值作為下一次發(fā)送短軸脈沖的判斷基準(zhǔn),。每次計(jì)算各個(gè)發(fā)送軸后,都將產(chǎn)生一組固定的信息:脈沖發(fā)送標(biāo)志位,,脈沖延時(shí)時(shí)間和脈沖方向標(biāo)志位,,這些信息將被進(jìn)一步加工生成發(fā)送到FPGA中的控制脈沖信息。
結(jié)果分析
將ARM作為主運(yùn)算處理器時(shí),,其上不僅要運(yùn)行插補(bǔ)程序,,進(jìn)行實(shí)時(shí)的加工信息讀入、速度控制預(yù)算以及脈沖發(fā)送的計(jì)算,,同時(shí)還要運(yùn)行后臺操作系統(tǒng),,并處理用戶輸入信息,如果再在其上設(shè)定延時(shí)程序并控制脈沖發(fā)送,,則ARM的運(yùn)算負(fù)擔(dān)將變得過重,。因此,采用FPGA協(xié)處理運(yùn)算方案,,輔助ARM進(jìn)行脈沖的延時(shí)發(fā)送,。
設(shè)FPGA的頻率為,,則其進(jìn)行一次基數(shù)累加計(jì)算時(shí)間為
,電機(jī)的當(dāng)前執(zhí)行速度為Vs,,脈沖當(dāng)量為
,,則當(dāng)前的發(fā)送脈沖的頻率為:
式5
則此時(shí)每個(gè)脈沖的間隔換算為FPGA的累加次數(shù)則為:
式6
在加減速階段,采用指數(shù)方式,,其中基礎(chǔ)軸每一段的頻率變化為事先計(jì)算好的,,即式6中的fs為特定值,而對于短軸來說,,其延時(shí)發(fā)送頻率值可由計(jì)算時(shí)使用到的公式1/f(SHORT-LONG)求得,,即每一步脈沖的頻率用式6即可確定。ARM在計(jì)算每一次脈沖的發(fā)送時(shí),,需要將脈沖的延時(shí)計(jì)數(shù)次數(shù)一并計(jì)算,然后與脈沖發(fā)送的方向一起送到FPGA中,。步進(jìn)電機(jī)控制器對控制脈沖的持續(xù)時(shí)間有一定要求,,設(shè)其需求的脈沖持續(xù)時(shí)間為TP,則FPGA中,,脈沖的持續(xù)時(shí)間計(jì)數(shù):
式7
FPGA通過送來的脈沖方向以及脈沖計(jì)數(shù)次數(shù),,即可以計(jì)數(shù)延時(shí)的方式,將此脈沖按照理論的計(jì)算頻率發(fā)送至步進(jìn)電機(jī)控制器,,完成對電機(jī)控制器的控制脈沖發(fā)送,。發(fā)送的控制波形圖如圖6所示:
圖6 各軸脈沖發(fā)送波形圖
由圖6可以看出,該插補(bǔ)算法不僅發(fā)送脈沖均勻且成比例發(fā)送,,短軸可依據(jù)自己的頻率變化規(guī)律對電機(jī)進(jìn)行控制,。
結(jié)語
根據(jù)雕刻機(jī)的實(shí)際需求和步進(jìn)電機(jī)的轉(zhuǎn)矩-頻率特性,開發(fā)出了基于嵌入式的數(shù)控雕刻機(jī)控制系統(tǒng),。該系統(tǒng)硬件上以ARM與FPGA為核心,,軟件上以Windows CE.net操作系統(tǒng)為平臺,結(jié)合步進(jìn)電機(jī)的固有特性和插補(bǔ)程序,,使得雕刻機(jī)三軸聯(lián)動完成各種雕刻文件,。實(shí)踐表明,該控制器可以脫離工控機(jī)的支持,,獨(dú)立完成對原始設(shè)計(jì)數(shù)據(jù)的分析和計(jì)算,,并最終通過插補(bǔ)算法控制電機(jī)完成雕刻,在雕刻過程中可以精確的做到速度控制和軌跡控制,。