上海交通大學(xué)電子信息與電氣工程學(xué)院(上海200240) 陸 悅 張 峰 賀 超
運(yùn)動控制技術(shù)發(fā)展至今,從實(shí)現(xiàn)上可以分為軟件實(shí)現(xiàn)和硬件實(shí)現(xiàn)兩種。硬件實(shí)現(xiàn)以往多依賴于ASIC芯片設(shè)計(jì),使得普通工程技術(shù)人員很難參與其中,因此,市面上流行很多經(jīng)濟(jì)型的單片機(jī)或者DSP軟插補(bǔ)器。由于計(jì)算速度上的限制以及軟插補(bǔ)器自身的缺陷,這些插補(bǔ)器很難做到高精度和多軸聯(lián)動。隨著EDA技術(shù)的發(fā)展,可編程邏輯器件的出現(xiàn)打破了這樣的格局。特別是工藝的進(jìn)步使得FPGA價(jià)格不斷下降,也使其更加適合運(yùn)動控制場合。本文即研究如何利用FPGA完成對步進(jìn)電機(jī)的直線運(yùn)動控制。
目前比較成熟的數(shù)控插補(bǔ)算法有逐點(diǎn)比較法、最小偏差法和數(shù)字積分法等,DDA(數(shù)字積分法)利用數(shù)字積分的方法,計(jì)算刀具沿各坐標(biāo)軸的位移,使得刀具沿著所加工的曲線運(yùn)動。DDA插補(bǔ)算法具有運(yùn)算速度快、脈沖分配均勻、易于實(shí)現(xiàn)多坐標(biāo)聯(lián)動等特點(diǎn),在輪廓控制數(shù)控系統(tǒng)中有著廣泛的應(yīng)用[1]。本文即采用DDA算法實(shí)現(xiàn)直線插補(bǔ)。
數(shù)字積分的原理是將函數(shù)的積分運(yùn)算轉(zhuǎn)換成變量的求和運(yùn)算。如果所選擇的脈沖當(dāng)量足夠小,則用求和運(yùn)算代替積分所引起的誤差可以不超過允許的數(shù)值。這樣,可以采用兩個(gè)寄存器(函數(shù)寄存器和累加寄存器)和一個(gè)全加器構(gòu)成數(shù)字積分器[2]。將單位周期選的足夠小,每單位周期都向累加器累加函數(shù)寄存器中的數(shù)值,如果累加器溢出,就向外發(fā)送脈沖,實(shí)時(shí)的改變函數(shù)寄存器的值,就可以完成電機(jī)的調(diào)速。
圖1為整個(gè)插補(bǔ)器的框圖,其中比較重要的是預(yù)判模塊、梯形模塊和S型模塊。
3.1.1 輸入?yún)?shù)
輸入部分是初始數(shù)據(jù)的接口,可以設(shè)計(jì)成各種接口從外部接受數(shù)據(jù),比如SRAM時(shí)序、PCI接口等等,這不是本文討論的內(nèi)容。該部分比較重要的是接收哪些數(shù)據(jù),在設(shè)計(jì)中,對于每條直線需要初始速度、最高速度、加速時(shí)間、運(yùn)動距離、X軸Y軸距離比例和運(yùn)動類型這幾個(gè)參數(shù)。初始速度控制電機(jī)運(yùn)動的起始速度,最高速度決定運(yùn)動過程中的最高速度,加速時(shí)間控制加減速過程的時(shí)間,運(yùn)動距離是電機(jī)運(yùn)動的總距離,X軸和Y軸距離比例用來使X軸和Y軸脈沖均勻分配,運(yùn)動類型決定加減速控制的類型。
另外一個(gè)需要注意的問題是,在FPGA內(nèi)部所有數(shù)據(jù)都是整形的,而實(shí)際參數(shù)可能是帶小數(shù)的,對此的處理是左移規(guī)格化,將參數(shù)在輸入FPGA之前做一定的預(yù)處理,將距離單位轉(zhuǎn)換成脈沖個(gè)數(shù),時(shí)間單位轉(zhuǎn)換成每單位周期,并放大統(tǒng)一的倍數(shù),最終單位為累計(jì)量每周期。例如,初始速度為0.1mm/s,脈沖當(dāng)量為0.0001mm,積分周期為100ns,左移32位,則規(guī)格化之后的初始速度為:
其他變量做類似處理。
3.1.2 加減速控制
控制電機(jī)做直線運(yùn)動最復(fù)雜的就是電機(jī)的加減速控制,為了防止電機(jī)失步,不能直接發(fā)送給定頻率的脈沖,需要有加速和減速的過程。加減速控制有兩種方法,梯形方法和S型方法。如圖2所示,梯形方法是采用恒定加速度,S型方法是采用變加速度和恒定加加速度的2次加速方案。
由于運(yùn)動距離的限制,有可能會發(fā)生加速不到最高速度就需要減速的情況。如圖3所示。
從圖2中根據(jù)加速過程中的對稱關(guān)系可以證明,在初速度和最高速度相同的情況下采用梯形加速和S型加速方式,加速過程運(yùn)動的距離相等。因此,兩種方法都可以按照梯形方式來計(jì)算給定路程下能達(dá)到的實(shí)際最高速度。
在電機(jī)控制過程中,按照加速度變化規(guī)律去改變上文提到的函數(shù)累加器的值就可以實(shí)現(xiàn)調(diào)速。不同的是,梯形方式中加速度是個(gè)恒定值,而S型方式中,加速度也需要根據(jù)加加速度來不斷調(diào)整。用加加速度調(diào)整加速度的方式和用加速度調(diào)整速度的方式相同。
為了能夠使調(diào)速均勻平滑,本算法中采用了以空間矢量為長軸的方式[3]。按照X軸和Y軸的比例,將脈沖均勻地分配到兩軸。
3.1.3 分界點(diǎn)的判斷
圖2表明,在加減速過程中有不同的階段,因此帶來了階段分界點(diǎn)判定的問題。梯形方式,分界點(diǎn)比較簡單,1和2階段的分界點(diǎn)按照最高速度值判斷即可,即一直按照給定加速度加速,直到速度達(dá)到最大值。2和3階段的分界點(diǎn)則可以根據(jù)到該點(diǎn)時(shí)的路程值來判定,由于加速和減速過程對稱,兩個(gè)過程運(yùn)動距離相等,總距離減去加速運(yùn)動距離就是該點(diǎn)處的距離值。由于最終使用的速度最大值是計(jì)算得到的實(shí)際最大值,因此不會出現(xiàn)達(dá)不到最大值的情況。
S型方式的分界點(diǎn)比較復(fù)雜,本文提供了一種很好的簡化實(shí)現(xiàn)。之前提到,兩種方式在加減速過程按照相同的方法計(jì)算實(shí)際最大速度,在最大值確定之后,可以按照一定比例設(shè)計(jì)S型方式中各個(gè)階段的時(shí)間比例,并根據(jù)此比例獲得分界點(diǎn)的速度值。例如圖2 所示,假設(shè) t1∶t2∶t3=1∶1∶1,則面積比 s1∶s2∶s3=1∶2∶1,這樣三個(gè)階段的速度增加值可以通過這個(gè)比例計(jì)算得到,而且比例數(shù)字避開了除法。計(jì)算得到恒定加加速度階段(圖2S型方式2階段)的速度變化值之后,就可以計(jì)算得到加加速度的值,這樣只要按照加加速度去控制3個(gè)階段就完成了S型加速過程分界點(diǎn)的控制。減速點(diǎn)的處理與梯形方式相同,減速過程與加速過程類似。
3.1.4 距離的累加
本文算法采用100ns作為插補(bǔ)周期,使得不論是梯形方式還是S型方式,在處理距離的累加時(shí),都可以將運(yùn)動過程看作是恒定加速度的運(yùn)動。這樣根據(jù)運(yùn)動學(xué)公式,由于速度單位是累計(jì)量每周期,所以累加值應(yīng)該為:
按照該公式,只需要計(jì)算每個(gè)插補(bǔ)周期開始速度和末速度之和,然后右移1位作為距離累加值即可,這樣還避開了除法運(yùn)算。
在討論完算法的核心內(nèi)容后,我們在此基礎(chǔ)來看各模塊的功能和程序框圖。
3.2.1 預(yù)判模塊
該模塊實(shí)現(xiàn)實(shí)際最大值的計(jì)算和分界點(diǎn)的計(jì)算功能,程序框圖如圖4所示:
3.2.2 梯形模塊
該模塊利用預(yù)判模塊的數(shù)據(jù),在使能后按照梯形方式發(fā)送脈沖。程序用狀態(tài)機(jī)實(shí)現(xiàn),時(shí)鐘頻率為50MHz,每個(gè)時(shí)鐘周期20ns,通過兩組5種狀態(tài)的狀態(tài)機(jī)的轉(zhuǎn)換可完成梯形方式控制。程序框圖如下所示:
3.2.3 S型模塊
該模塊利用預(yù)判模塊的數(shù)據(jù),在使能后按照S型方式發(fā)送脈沖。與梯形方式相比也是使用狀態(tài)機(jī)來實(shí)現(xiàn),但是增加了加加速度的控制,狀態(tài)轉(zhuǎn)換也更為復(fù)雜。程序框圖如圖6中所示:
用quartus2進(jìn)行綜合后,用ModelSim仿真結(jié)果如下:
以上仿真結(jié)果,是采用兩種不同方式在相同的數(shù)據(jù)下的仿真得到的數(shù)據(jù)。圖中曲線是將函數(shù)寄存器中的數(shù)值設(shè)置成模擬 (analog)方式觀察得到的,這些曲線表示了速度值的變化,曲線下方是發(fā)出的脈沖電平,橫軸是時(shí)間,單位是毫秒。為了重點(diǎn)表現(xiàn)加減速過程,仿真是對單軸的控制,脈沖即是發(fā)出的控制脈沖。距離充足的一組數(shù)據(jù)是:加減速時(shí)間1ms,路程15個(gè)脈沖,初速度0.1mm/s,末速度1mm/s,脈沖當(dāng)量0.0001mm;距離不足的一組數(shù)據(jù)中除路程是8個(gè)脈沖外,其他與以上相同。仿真結(jié)果,完全正確。
在實(shí)踐中,采用 Altera公司的ep1c12,實(shí)驗(yàn)得到,利用梯形加速,電機(jī)從速度0加速到頻率200k,加速時(shí)間最短在0.4秒左右,而用S型可以在不到0.1秒內(nèi)成功啟動。
本文闡述了采用FPGA實(shí)現(xiàn)DDA直線插補(bǔ)器的一種思路,并重點(diǎn)討論了加減速的控制等核心內(nèi)容。仿真和實(shí)踐都證明了其正確性。下一步需要完善的是如何動態(tài)改變運(yùn)動參數(shù),這對于實(shí)際應(yīng)用也非常重要。
[1]閆華,汪木蘭,王保升.基于FPGA的最小偏差法插補(bǔ)器是設(shè)計(jì)與實(shí)現(xiàn)[J].機(jī)械設(shè)計(jì)與制造,2008(12):14 ~ 16.
[2]李恩林著.數(shù)控系統(tǒng)插補(bǔ)原理通論[M].北京:國防工業(yè)出版社,2008.
[3]蔣志冬,丁慶生.基于FPGA實(shí)現(xiàn)的多軸數(shù)控雕刻機(jī)系統(tǒng)[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2006(1):129 ~ 131.
[4]Samir Palnitkar著,夏宇聞,胡燕祥,刁嵐松等譯.Verilog HDL數(shù)字設(shè)計(jì)與綜合[M].北京:電子工業(yè)出版社,2004.
[5]王誠,吳繼華,范麗珍,薛寧,薛小剛著.Altera FPGA/CPLD設(shè)計(jì)[M].北京:人民郵電出版社,2005.