韓賽飛+施佺+劉炎華+黃新明+孫玲



摘 要: 逐點比較圓弧插補作為一種常見的插補算法在數(shù)控系統(tǒng)中廣泛應(yīng)用。為了進(jìn)一步提高傳統(tǒng)插補算法的速度,通過分析逐點比較法的特點簡化了給進(jìn)判別邏輯,提出一種改進(jìn)的逐點比較圓弧插補算法實現(xiàn)方案。充分利用Verilog HDL語言特點,通過設(shè)計全局變量并使用FPGA豐富的內(nèi)部邏輯資源實現(xiàn)了算法精度的可調(diào)。算法的FPGA硬件驗證結(jié)果表明該實現(xiàn)方案具有運算速度快、插補精度可調(diào)和邏輯資源占用少的優(yōu)點。
關(guān)鍵詞: 圓弧插補; Verilog 硬件描述語言; FPGA; 逐點比較法
中圖分類號: TN492?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2017)19?0153?03
Implementation of an improved circular interpolation algorithm
with point?by?point comparison based on FPGA
HAN Saifei, SHI Quan, LIU Yanhua, HUANG Xinming, SUN Ling
(School of Electronic Information, Nantong University, Nantong 226019, China)
Abstract: As one of the common interpolation algorithms, the circular interpolation algorithm with point?by?point comparison is widely used in numerical control systems. In order to improve the speed of the traditional interpolation algorithm, the characteristics of point?by?point comparison method is analyzed to simplify the feed discrimination logic, and an improved implementation scheme of circular interpolation algorithm with point?by?point comparison is proposed. With the use of feature of Verilog HDL, the global variable is designed and the rich internal logic resources of FPGA are used to realize the precision adjustment of the algorithm. The results of FPGA hardware verification show that the proposed scheme has the advantages of fast computation speed, adjustable interpolation precision and little logic resource occupation.
Keywords: circular interpolation; Verilog HDL; FPGA; point?by?point comparison method
0 引 言
數(shù)控技術(shù)是工業(yè)制造的基礎(chǔ),數(shù)控機(jī)床在進(jìn)行各種工件的輪廓加工時,一般都要用到插補算法[1]。插補算法根據(jù)起點、終點和半徑等初始條件,實時計算工件加工過程中刀具移動的軌跡及其坐標(biāo)值。數(shù)控插補算法主要有硬件和軟件兩種實現(xiàn)方法,其中,傳統(tǒng)的硬件插補電路是由小規(guī)模數(shù)字電路模塊搭建而成,不僅存在電路復(fù)雜、元器件多、體積和功耗大、可靠性低的不足,而且其加工速度和精度很難得到進(jìn)一步提高[2?3]。而軟件插補則受到計算機(jī)軟件運算速度限制,插補的速度、精度等性能指標(biāo)也很難滿足高速控制要求[4?5]。隨著“中國制造2025”實現(xiàn)制造強國戰(zhàn)略目標(biāo)的提出,數(shù)控技術(shù)必將迎來新的發(fā)展機(jī)遇和挑戰(zhàn),高速、高精度的插補算法實現(xiàn)技術(shù)則是核心之一。
目前,插補算法主要有逐點比較法[6]、數(shù)字積分法[7]和數(shù)字比較法[8],其中,逐點比較法因為其控制精度高、算法簡單成為在兩軸插補系統(tǒng)中最常用的算法。借助FPGA芯片集成度高、工作速度快、邏輯單元功能強大,并具有靈活性高和可反復(fù)編程的特點[9],本文針對現(xiàn)有逐點比較插補算法硬件實現(xiàn)的不足,提出一種改進(jìn)的基于FPGA的算法實現(xiàn)方案。采用可綜合的Verilog HDL語言完成了算法的硬件電路設(shè)計,給出了仿真驗證與結(jié)果分析。
1 傳統(tǒng)逐點比較圓弧插補算法
傳統(tǒng)的逐點比較插補算法流程分為偏差判別、坐標(biāo)給進(jìn)、偏差計算和終點判別4步。
以圖1所示的第一象限內(nèi)一段逆圓弧為例,設(shè)其起點[S]的坐標(biāo)為[Xs,Ys,]終點[E]的坐標(biāo)為[E(Xe,Ye),][N(Xi,Yi)]為插補路徑上的動點,圓心為原點[O(0,0),]半徑為[R。]
為了表達(dá)動點[N]與理想圓弧之間的位置關(guān)系,引入偏差函數(shù)[Fi=X2i+Y2i-R2,]根據(jù)[Fi]的正負(fù)情況來判斷動點是在圓內(nèi)還是圓外,因此有如下插補規(guī)則:
(1) 當(dāng)[Fi>0]時,動點在圓外,給進(jìn)為[-ΔX。]
(2) 當(dāng)[Fi=0]時,動點恰好在圓上,給進(jìn)為[-ΔY。]
(3) 當(dāng)[Fi<0]時,動點在圓內(nèi),給進(jìn)為[+ΔY。]
上述插補規(guī)則只局限于第一象限的逆圓,表1歸納總結(jié)了實際插補中可能出現(xiàn)的其他象限和順圓情況下的插補規(guī)則[10],其中,[SRi]([i=]1,2,3,4)代表第[i]象限的順圓弧,[NRi]([i]=1,2,3,4)代表第[i]象限的逆圓弧。
2 改進(jìn)型逐點比較圓弧插補算法設(shè)計與實現(xiàn)
由表1可見,插補過程中首先需要判斷偏差的正負(fù),然后在確定的偏差情況下判斷下一步給進(jìn)[ΔX]或[ΔY]的多少。實現(xiàn)這一判別的直接方法就是通過多個條件語句依次進(jìn)行,其不足是判別速度慢,也不利于算法實現(xiàn)中精度的提高。為此,本文提出一種簡化給進(jìn)判別條件的方法。
2.1 改進(jìn)的算法設(shè)計
通過分析表1,本文將偏差判別函數(shù)分為大于等于“0”和小于“0”兩種狀態(tài),并引入二進(jìn)制邏輯,將表1中的所有情況定義為表2所示的邏輯關(guān)系。本設(shè)計還引入了一個新的邏輯變量[Pi,]規(guī)定[Pi=0]時,給進(jìn)[X;][Pi=1]時,給進(jìn)[Y。]根據(jù)上述分析條件,可歸納出如表3所示的[Pi]真值表。
由式(1)首先可以確定給進(jìn)方向是[x]軸還是[y]軸,但無法判斷給進(jìn)的方向是正方向還是負(fù)方向,因此,需要再引入另外兩個邏輯量[Fx]和[Fy,]并設(shè)定:當(dāng)需要給進(jìn)[x]的正方向時,[Fx=0;]給進(jìn)[x]的負(fù)方向時,[Fx=1;]同理,當(dāng)給進(jìn)[y]的正方向時,[Fy=0;]給進(jìn)[y]的負(fù)方向時,[Fy=1。]綜合表1和表3可以得到[Fx]和[Fy]的邏輯表達(dá)式為:
[Fx=NYf] (2)
[Fy=NXf] (3)
通過式(1)~式(3)可以分別計算出[Pi,F(xiàn)x]和[Fy,]從而可以確定動點下一步給進(jìn)方向。
逐點比較法中,常通過比較動點和終點的坐標(biāo)數(shù)值是否相等來判斷插補過程是否完成。然而,當(dāng)插補一個整圓時,起點的坐標(biāo)和終點坐標(biāo)相等。這種情況下,上述判別方法不再適用。因此,本文在程序設(shè)計中引入了一個標(biāo)志寄存器[Q,]如果起點不等于終點,寄存器[Q]置0,插補程序正常執(zhí)行;如果起點等于終點,寄存器[Q]置1,先停止一拍,在下一個觸發(fā)脈沖到來時,寄存器[Q]置0,然后即可進(jìn)行插補。本設(shè)計實現(xiàn)的改進(jìn)型圓弧插補算法流程如圖2所示。
2.2 改進(jìn)的算法實現(xiàn)
根據(jù)改進(jìn)后的逐點比較插補算法,在Quartus Ⅱ13.0和ModelSim 10.4軟件平臺下,本文完成了插補電路的可綜合Verilog HDL語言設(shè)計,并進(jìn)行了仿真驗證。選用CycloneIV E系列EP4CE6E22C6器件的條件下,仿真得到的第一象限逆圓弧插補波形如圖3所示。圖中,輸入的二進(jìn)制起點橫坐標(biāo)[Xs]為00101,起點縱坐標(biāo)[Ys]為00000;輸入的二進(jìn)制終點坐標(biāo)[Xe,Ye]為(00000,00101)。en為使能信號,當(dāng)[en=0]時,輸入端有效。Sorn為路徑方向信號,當(dāng)Sorn=0時,進(jìn)行逆圓弧插補;Sorn=1時,進(jìn)行順圓弧插補。x_out與y_out為輸出的動點坐標(biāo);end_ f=1標(biāo)志插補過程結(jié)束信號。
改進(jìn)后的算法靈活性好,可以通過擴(kuò)大輸入起點、終點坐標(biāo)以及半徑的倍數(shù)來獲得更多的步進(jìn)點數(shù),從而提高插補的精度。圖4所示為步進(jìn)點數(shù)為100的[14]圓弧的插補軌跡,從圖4曲線可見,刀具的運動軌跡與理想圓弧的擬合程度較好。圖5為起點坐標(biāo)和終點坐標(biāo)均為(50,0)的整圓插補軌跡。由于改進(jìn)了終點判別條件機(jī)制,本文方案可以完成一個整圓的插補過程。
可見,本文改進(jìn)后的圓弧插補算法在相同條件下占用的硬件資源較少,這是因為本文設(shè)計的算法省去了大量的條件判斷語句,使得程序風(fēng)格簡潔,不僅節(jié)省了邏輯資源,也大大提高了算法的速度和效率。
3 結(jié) 語
本文提出一種基于符號條件位判別的改進(jìn)型逐點比較圓弧插補算法,并進(jìn)行了FPGA仿真驗證。驗證結(jié)果表明,仿真波形與理論分析一致。與傳統(tǒng)的算法實現(xiàn)相比,本文方案具有插補速度快,占用資源少,插補精度高,輸出脈沖穩(wěn)定,硬件實現(xiàn)功耗低的特點,并解決了傳統(tǒng)插補算法在起點與終點相同的情況下終點判別失效的問題,可應(yīng)用于數(shù)控機(jī)床系統(tǒng)。
注:本文通訊作者為施佺。
參考文獻(xiàn)
[1] 肖力.FPGA測試控制系統(tǒng)[D].北京:北方工業(yè)大學(xué),2012.
[2] HAN Xingguo, WANG Binwu, WANG Weiqing. The research of open CNC system circular interpolation track based on kinetics and kinematics [C]// Proceedings of the Fifth IEEE Conference on Measuring Technology and Mechatronics Automation. Hongkong, China: IEEE, 2013: 1216?1218.
[3] 楊敬威.基于FPGA的數(shù)控硬件插補系統(tǒng)的研究與實現(xiàn)[D].西安:西安工業(yè)大學(xué),2013.
[4] 張偉,王黎.基于FPGA的數(shù)字積分法插補控制器設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2011,34(22):150?153.
[5] 王漢霆.基于FPGA的運動插補控制芯片的研究與設(shè)計[D].武漢:華中科技大學(xué),2009.
[6] 李莉,馮志永.數(shù)控系統(tǒng)中圓弧插補算法的改進(jìn)和實現(xiàn)[J].控制與檢測,2009(7):61?62.
[7] 李存志,邢建國.比較積分法直線、圓弧插補方法的改進(jìn)[J].機(jī)械設(shè)計與制造,2015(9):185?188.
[8] 陳宏臣.基于FPGA技術(shù)的數(shù)控插補器算法改進(jìn)研究[D].成都:西南交通大學(xué),2010.
[9] 王誠.Altera FPGA/CPLD設(shè)計基礎(chǔ)篇[M].北京:人民郵電出版社,2011.
[10] 席港港.傳統(tǒng)逐點比較法直線插補方法的改進(jìn)[J].山東理工大學(xué)學(xué)報,2012,26(1):67?69.