引言
隨著科學(xué)技術(shù)和制造技術(shù)的不斷發(fā)展進(jìn)步,數(shù)字控制的雕刻機(jī)漸漸成為雕刻行業(yè)的專用工具。數(shù)控雕刻機(jī)從加工原理上講是一種鉆銑組合加工,是一種典型的機(jī)電一體化產(chǎn)品,在模具雕刻、廣告制作、裝潢等行業(yè)有著廣泛的市場應(yīng)用。
目前市場上的數(shù)控雕刻機(jī)控制器硬件平臺(tái)所用的微處理器主要包括:以8位單片機(jī)為內(nèi)核,這類產(chǎn)品的價(jià)格低廉,設(shè)計(jì)比較簡單,但是有功能單一、性能差、效率低、存儲(chǔ)容量小、獨(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)為平臺(tái),由ARM完成速度控制, FPGA完成軌跡控制。在軌跡控制中結(jié)合了步進(jìn)電機(jī)的轉(zhuǎn)矩-頻率特性,使電機(jī)的軌跡精確而且平穩(wěn)。整個(gè)控制系統(tǒng)一體化完成從原始數(shù)據(jù)讀取到最終控制信號(hào)的輸出,徹底擺脫了對(duì)工控機(jī)的依賴;通過控制鍵盤設(shè)置不同的脈沖當(dāng)量及電機(jī)運(yùn)行參數(shù),可與適用于各種場合的雕刻機(jī)床相配合使用,控制精度高、通用性強(qiáng)。
控制系統(tǒng)設(shè)計(jì)
一個(gè)嵌入式系統(tǒng)必定是由嵌入式硬件和嵌入式軟件組成;嵌入式硬件主要包括嵌入式處理器、外設(shè)控制器、接口電路等;嵌入式軟件主要包括啟動(dòng)程序、嵌入式操作系統(tǒng)、應(yīng)用軟件等。嵌入式處理器是嵌入式系統(tǒng)的硬件核心;嵌入式操作系統(tǒng)是嵌入式軟件的核心。
硬件系統(tǒng)
硬件系統(tǒng)主要由以下三個(gè)部分組成:
(1)處理器(ARM9):作為控制器的處理器,在ARM上移植了Windows CE.net操作系統(tǒng),人機(jī)互動(dòng)方面要完成對(duì)LCD顯示的控制和讀取控制鍵盤的控制命令;在雕刻方面要完成對(duì)原始數(shù)據(jù)的讀?。ㄍㄟ^USB接口)、預(yù)處理、分析和計(jì)算,并將計(jì)算結(jié)果傳遞給FPGA,與FPGA協(xié)同完成對(duì)步進(jìn)電機(jī)的控制。
(2)FPGA:對(duì)接收到ARM發(fā)出的數(shù)據(jù)進(jìn)行插補(bǔ)運(yùn)算,并根據(jù)插補(bǔ)結(jié)果計(jì)算出控制步進(jìn)電機(jī)的脈沖數(shù)目和延時(shí),最終完成對(duì)步進(jìn)電機(jī)的控制實(shí)現(xiàn)三軸聯(lián)動(dòng)的雕刻。
(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存儲(chǔ)空間;觸摸式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)換成控制信號(hào),經(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ù);雕刻控制模塊對(duì)讀取的數(shù)據(jù)分析計(jì)算后完成速度控制和軌跡控制。軟件結(jié)構(gòu)圖如圖2所示。
控制系統(tǒng)中,ARM通過對(duì)設(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)動(dòng)。
雕刻機(jī)連續(xù)軌跡控制
在數(shù)控加工中,運(yùn)動(dòng)控制器通過插補(bǔ)算法來控制刀具相對(duì)于工件以一定的速度,按照給定的路徑運(yùn)動(dòng)切屑出零件輪廓。插補(bǔ)技術(shù)是數(shù)控系統(tǒng)的核心技術(shù),它主要解決控制刀具與工件運(yùn)動(dòng)軌跡的問題。本系統(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,如果刻畫動(dòng)點(diǎn)按照既定路徑運(yùn)動(dòng),則XY兩軸運(yùn)動(dòng)速度比為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ì)算出對(duì)應(yīng)的圓心角:
式3
圖4 插補(bǔ)算法脈沖發(fā)送示意圖
通過弦長對(duì)應(yīng)的圓心角將原圓弧重新劃分為多條擬合直線,然后通過直線插補(bǔ)的方式完成圓弧刻畫。
該運(yùn)算方式不再依賴每一次計(jì)數(shù)器的累加運(yùn)算,而是依據(jù)速度矢量合成原理,通過控制各軸脈沖的發(fā)送比例,使合成點(diǎn)按照加工軌跡的方向運(yùn)動(dòng),達(dá)到加工目的,避免了重復(fù)性的積分累加運(yùn)算,可以一次性將所有脈沖數(shù)據(jù)運(yùn)算完畢,只要按照一定的頻率發(fā)送即可。
插補(bǔ)算法的程序流程圖如圖5所示:
圖5 數(shù)字積分法插補(bǔ)流程圖
首先判斷是否有外部中斷信息輸入,包括系統(tǒng)需求中的機(jī)械信號(hào),如機(jī)床原點(diǎn)、工件加工原點(diǎn)、換刀、主軸調(diào)速和斷電保護(hù)等輸入/輸出信號(hào)等,以及操作人員輸入的暫停、停止加工、人為加、減速控制等信息。中斷程序響應(yīng)時(shí)需要保護(hù)好程序已經(jīng)運(yùn)算出的相關(guān)關(guān)鍵信息,包括讀取的加工段落數(shù)據(jù)信息以及已經(jīng)加工的段落位置信息。
其次依據(jù)脈沖當(dāng)量的定義:相對(duì)于每一脈沖信號(hào)的機(jī)床運(yùn)動(dòng)部件的位移量,得各個(gè)加工軸脈沖總數(shù)為:
(其中l(wèi)為每一軸的長度分量)
式4
并選出具有最大加工脈沖數(shù)的軸作為基礎(chǔ)軸。電機(jī)控制器還需要脈沖的方向信息,脈沖方向由事先約定好的方向規(guī)定來確定,可通過讀入的數(shù)據(jù)文件判斷。插補(bǔ)計(jì)算初始化階段設(shè)置各計(jì)數(shù)參量初始值,如圖5數(shù)字積分法插補(bǔ)流程圖中所示,COUNT存儲(chǔ)基礎(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ái)操作系統(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為特定值,而對(duì)于短軸來說,其延時(shí)發(fā)送頻率值可由計(jì)算時(shí)使用到的公式1/f(SHORT-LONG)求得,即每一步脈沖的頻率用式6即可確定。ARM在計(jì)算每一次脈沖的發(fā)送時(shí),需要將脈沖的延時(shí)計(jì)數(shù)次數(shù)一并計(jì)算,然后與脈沖發(fā)送的方向一起送到FPGA中。步進(jìn)電機(jī)控制器對(duì)控制脈沖的持續(xù)時(shí)間有一定要求,設(shè)其需求的脈沖持續(xù)時(shí)間為TP,則FPGA中,脈沖的持續(xù)時(shí)間計(jì)數(shù):
式7
FPGA通過送來的脈沖方向以及脈沖計(jì)數(shù)次數(shù),即可以計(jì)數(shù)延時(shí)的方式,將此脈沖按照理論的計(jì)算頻率發(fā)送至步進(jìn)電機(jī)控制器,完成對(duì)電機(jī)控制器的控制脈沖發(fā)送。發(fā)送的控制波形圖如圖6所示:
圖6 各軸脈沖發(fā)送波形圖
由圖6可以看出,該插補(bǔ)算法不僅發(fā)送脈沖均勻且成比例發(fā)送,短軸可依據(jù)自己的頻率變化規(guī)律對(duì)電機(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)為平臺(tái),結(jié)合步進(jìn)電機(jī)的固有特性和插補(bǔ)程序,使得雕刻機(jī)三軸聯(lián)動(dòng)完成各種雕刻文件。實(shí)踐表明,該控制器可以脫離工控機(jī)的支持,獨(dú)立完成對(duì)原始設(shè)計(jì)數(shù)據(jù)的分析和計(jì)算,并最終通過插補(bǔ)算法控制電機(jī)完成雕刻,在雕刻過程中可以精確的做到速度控制和軌跡控制。