文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.08.012
中文引用格式: 程文雅,高敏,李盛培. 基于FPGA的數字卷積加減速算法的設計與實現[J].電子技術應用,2015,41(8):43-46.
英文引用格式: Cheng Wenya,Gao Min,Li Shengpei. Design and implementation of a FPGA-based digital convolution acceleration and deceleration algorithm[J].Application of Electronic Technique,2015,41(8):43-46.
0 引言
現代數控系統、工業機器人正向著高速和高精度的方向發展,而加減速控制算法在實現其運動的高速、高精度上起著至關重要的作用。哈爾濱工程大學鄭金興等[1]提出了基于梯形速度控制的變插補周期實時插補算法,該算法可有效地控制加工精度,充分發揮了各軸聯動的加減速能力,但在運動的高速和實時性上不是很理想;朱明等[2]提出了一種實用的S曲線加減速控制算法,該算法加速度連續變化,速度變化平穩,減小了加工過程中速度突變造成的沖擊,但算法稍復雜,計算量大。目前,應用于數控系統和工業機器人中的加減速運動控制算法有很多。如梯形曲線加減速、S形曲線加減速、多項式加減速、三角函數加減速[3-4]等控制算法。這些加減速算法都可以通過軟件編程的方式實現,但由于計算量較大使得很難通過硬件編程的方式實現。為了減小計算量,實現加減速控制算法的高速與高精度,Chen和LEE[5]提出了基于FIR濾波器的加減速速度規劃算法。該算法采用濾波技術對加減速度進行光滑處理,實現了加減速的連續變化,減少了加工中由于加減速突變而產生的振動,進而實現高精度加工,同時又能達到良好的加減速性能,實現高速的加工;但其算法稍復雜,實現上有一定的難度。KIM D[6]提出了一種基于卷積的加減速運動規劃算法。該算法通過對速度進行卷積,使得在計算過程中只包含加法與除法運算,簡化了復雜的計算過程,提高了加減速控制算法的運算速度。
本文在以上研究基礎上,引入數字卷積,采用FPGA硬件編程的方式實現數字卷積加減速控制算法,提高了運算速度與精度。該算法采用定點數進行計算,節約了FPGA的邏輯門的數量并且減小了計算誤差。
1 數字卷積加減速算法
基于數字卷積加減速算法[7]卷積算子表達式為:
由于式(2)是迭代表達式,并且只包含加法和除法運算,因此采用FPGA硬件去實現將極大地降低計算量。
對于固定速度Vmax輸入經過一次數字卷積后得到如圖1所示的梯形加減速曲線。其中,總的運行時間nTs等于曲線的長度除以固定速度Vmax。經過數字卷積后速度的位移距離必須保持一致,因此,H1的值取為1/n1Ts。如果想要得到光滑、高柔性的S形加減速速度曲線,可以對固定速度輸入進行兩次數字卷積,即對得到的梯形速度曲線再進行一次數字卷積如圖2所示。另外,為了確保在經過兩次數字卷積后能夠達到最大速度Vmax,n2Ts的時間必須小于n1Ts,否則在經過數字卷積后得到的最大速度將小于固定的速度值Vmax。
2 數字卷積加減速算法的硬件實現
2.1 梯形加減速算法的實現
對于單軸點對點的梯形加減速運動,S為總的運動距離,Vmax為最大速度,N1為梯形加減速數字卷積序列長度??偟倪\行時間為S除以Vmax;在FPGA硬件設計時采用定點數進行計算,在運算過程中涉及到除法運算。因此,為了減小誤差要考慮余數的問題。文中的運動距離S、速度Vmax及余數之間的關系表達式如式(3):
其中,N表示速度為Vmax時的速度序列脈沖數,R為余數。另外,輸入速度序列為X1[k],如圖3所示。
卷積算子序列Y1[i]如圖4所示,數字卷積序列長度為N1,其中N1<N/2。通過對X1[k]與Y1[i]進行一次數字卷積得到梯形加減速運動控制速度序列如圖5所示,其表達式為式(5):
如果忽略余數R,在運動過程中將出現速度誤差,進而導致位置誤差。為了解決這個問題,本文采用速度補償的方式,在速度序列的末尾添加補償速度序列來消除余數誤差,得到的速度輸出序列如圖6所示。
2.2 S形曲線加減速算法的實現
如果對X1[k]進行兩次數字卷積將得到S形加減速曲線;對于S曲線加減速,第二次數字卷積的序列長度為N2。為了保證在經過兩次數字卷積后,能夠達到最大速度Vmax,N2的取值必須小于N1,卷積算子序列Y2[n]如圖7所示。通過X2[j]與Y2[n]進行數字卷積可得到S形加減速曲線速度序列X4[q],如圖8所示。
與梯形加減速類似,如果忽略余數R將導致速度誤差和位置誤差。為了解決這個問題,本文采用速度補償的方式,在速度序列的末尾添加補償速度序列來消除余數誤差,得到的速度輸出序列X5(h)如圖9所示。
2.3 余數補償算法
由于在通過FPGA實現的過程中采用定點數進行計算,因此,在卷積計算的除法運算過程中,需要考慮余數問題[8]。事實上,在整個數字卷積的計算中有兩種情況會產生余數:第一種情況是在數字卷積之前卷積序列長度N的計算,如式(3)所示;另一種情況是在數字卷積計算過程中產生的余數如式(2)所示。為了解決上述問題,針對不同情況下的余數問題采用不同的算法來實現補償。
對于在數字卷積之前產生的余數,余數R的計算如式(3)所示,這種情況下采用在速度序列的末尾添加速度補償序列。梯形加減速的卷積序列X2[N1+N-1]如式(5)所示,余數R可表示為:
其中,V是X2[N1+N-1]序列的值;A表示速度為V時的速度補償序列脈沖數;B表示最終補償脈沖序列的誤差值。另外,P表示在圖7中總的添加的補償速度序列脈沖數。
類似地,對于S形曲線加減速速度序列X4[N+N1+N2-1]如式(6)所示,余數R可以表示為:
其中,W是X4[N+N1+N2-1]序列的值;C表示速度為W時的速度補償序列脈沖數;D表示最終補償脈沖序列的誤差值。另外,P表示總的添加補償速度序列脈沖數。
3 仿真與驗證分析
仿真驗證過程在Matlab和Quartus II 13.1開發環境下采用硬件描述語言Verilog,在Altera的Cyclone IV器件上進行仿真和驗證實現。圖10為在MATLAB上S=250,Vmax=10,N1=7時的梯形曲線加減速運動控制實驗結果;圖11為S=250,Vmax=10,N1=7,N2=4時的S形曲線加減速運動控制實驗結果;圖12、圖13分別為梯形和S形曲線加減速速度誤差圖,從圖中可以看出速度的誤差保持在±0.02范圍內。圖14為S=250,Vmax=10,N1=7時的梯形曲線加減速通過FPGA硬件實現后在Modelsim上的仿真波形圖,圖15為S=250,Vmax=10,N1=7,N2=4時的S形曲線加減速通過FPGA硬件實現后的仿真波形,其中,標有圓圈部分為添加的余數補償速度部分。
4 結論
針對工業機器人、數控系統中的加減速控制算法引入了數字卷積,減小了計算量,并通過FPGA硬件編程的方式實現了數字卷積的梯形曲線、S形曲線加減速控制算法。本文詳細分析了采用定點數計算數字卷積加減速算法過程的余數的處理方式。對與數字卷積運算之前產生的余數,在速度序列的末尾添加速度補償序列來消除余數誤差;對于數字卷積運算過程中產生的余數,采用余數累加的方式,來減小余數誤差。采用FPGA硬件編程的方式實現加減速控制算法,簡化系統結構,提高運算效率和算法的穩定性。
參考文獻
[1] 鄭金興,張銘鈞.梯形速度控制變插補周期的實時插補算法研究[J].機床與液壓,2007(1):77-80.
[2] 朱明,游有鵬,何均.S形加減速算法前瞻處理研究[J].小型微型計算機系統,2011(10):2140-2144.
[3] 陳曉兵,廖文和.基于分段刀軌S曲線加減速控制的進給速度優化研究[J].組合機床與自動化加工技術,2012(10):44-47.
[4] 劉筱,吳文江,鄭飂默.柔性S型加減速控制算法研究[J].組合機床與自動化加工技術,2014(3):66-68.
[5] CHEN C S,LEE A C.Design of acceleration deceleration profiles in motion control based on digital FHR filters[J].Journal of Machine Tools & Manufacture,2001,38:799-825.
[6] KIM D I,JEON J W,KIM S.Software acceleration/deceleration methods for industrial robots and cnc maching tools[J].Mechatronics,1994,4(1):37-53.
[7] 陳偉娜,賴乙宗,李松,等.數控系統線性加減速算法分析與實現[J].科學技術與工程,2012(3):546-550.
[8] 王昕,王均偉,饒志,等.基于NURBS曲線軌跡規劃與速度規劃的研究[J].系統仿真學報,2008(15):3973-3980.