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



摘 要: 逐點比較圓弧插補作為一種常見的插補算法在數控系統中廣泛應用。為了進一步提高傳統插補算法的速度,通過分析逐點比較法的特點簡化了給進判別邏輯,提出一種改進的逐點比較圓弧插補算法實現方案。充分利用Verilog HDL語言特點,通過設計全局變量并使用FPGA豐富的內部邏輯資源實現了算法精度的可調。算法的FPGA硬件驗證結果表明該實現方案具有運算速度快、插補精度可調和邏輯資源占用少的優點。
關鍵詞: 圓弧插補; Verilog 硬件描述語言; FPGA; 逐點比較法
中圖分類號: TN492?34 文獻標識碼: 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 引 言
數控技術是工業制造的基礎,數控機床在進行各種工件的輪廓加工時,一般都要用到插補算法[1]。插補算法根據起點、終點和半徑等初始條件,實時計算工件加工過程中刀具移動的軌跡及其坐標值。數控插補算法主要有硬件和軟件兩種實現方法,其中,傳統的硬件插補電路是由小規模數字電路模塊搭建而成,不僅存在電路復雜、元器件多、體積和功耗大、可靠性低的不足,而且其加工速度和精度很難得到進一步提高[2?3]。而軟件插補則受到計算機軟件運算速度限制,插補的速度、精度等性能指標也很難滿足高速控制要求[4?5]。隨著“中國制造2025”實現制造強國戰略目標的提出,數控技術必將迎來新的發展機遇和挑戰,高速、高精度的插補算法實現技術則是核心之一。
目前,插補算法主要有逐點比較法[6]、數字積分法[7]和數字比較法[8],其中,逐點比較法因為其控制精度高、算法簡單成為在兩軸插補系統中最常用的算法。借助FPGA芯片集成度高、工作速度快、邏輯單元功能強大,并具有靈活性高和可反復編程的特點[9],本文針對現有逐點比較插補算法硬件實現的不足,提出一種改進的基于FPGA的算法實現方案。采用可綜合的Verilog HDL語言完成了算法的硬件電路設計,給出了仿真驗證與結果分析。
1 傳統逐點比較圓弧插補算法
傳統的逐點比較插補算法流程分為偏差判別、坐標給進、偏差計算和終點判別4步。
以圖1所示的第一象限內一段逆圓弧為例,設其起點[S]的坐標為[Xs,Ys,]終點[E]的坐標為[E(Xe,Ye),][N(Xi,Yi)]為插補路徑上的動點,圓心為原點[O(0,0),]半徑為[R。]
為了表達動點[N]與理想圓弧之間的位置關系,引入偏差函數[Fi=X2i+Y2i-R2,]根據[Fi]的正負情況來判斷動點是在圓內還是圓外,因此有如下插補規則:
(1) 當[Fi>0]時,動點在圓外,給進為[-ΔX。]
(2) 當[Fi=0]時,動點恰好在圓上,給進為[-ΔY。]
(3) 當[Fi<0]時,動點在圓內,給進為[+ΔY。]
上述插補規則只局限于第一象限的逆圓,表1歸納總結了實際插補中可能出現的其他象限和順圓情況下的插補規則[10],其中,[SRi]([i=]1,2,3,4)代表第[i]象限的順圓弧,[NRi]([i]=1,2,3,4)代表第[i]象限的逆圓弧。
2 改進型逐點比較圓弧插補算法設計與實現
由表1可見,插補過程中首先需要判斷偏差的正負,然后在確定的偏差情況下判斷下一步給進[ΔX]或[ΔY]的多少。實現這一判別的直接方法就是通過多個條件語句依次進行,其不足是判別速度慢,也不利于算法實現中精度的提高。為此,本文提出一種簡化給進判別條件的方法。
2.1 改進的算法設計
通過分析表1,本文將偏差判別函數分為大于等于“0”和小于“0”兩種狀態,并引入二進制邏輯,將表1中的所有情況定義為表2所示的邏輯關系。本設計還引入了一個新的邏輯變量[Pi,]規定[Pi=0]時,給進[X;][Pi=1]時,給進[Y。]根據上述分析條件,可歸納出如表3所示的[Pi]真值表。
由式(1)首先可以確定給進方向是[x]軸還是[y]軸,但無法判斷給進的方向是正方向還是負方向,因此,需要再引入另外兩個邏輯量[Fx]和[Fy,]并設定:當需要給進[x]的正方向時,[Fx=0;]給進[x]的負方向時,[Fx=1;]同理,當給進[y]的正方向時,[Fy=0;]給進[y]的負方向時,[Fy=1。]綜合表1和表3可以得到[Fx]和[Fy]的邏輯表達式為:
[Fx=NYf] (2)
[Fy=NXf] (3)
通過式(1)~式(3)可以分別計算出[Pi,Fx]和[Fy,]從而可以確定動點下一步給進方向。
逐點比較法中,常通過比較動點和終點的坐標數值是否相等來判斷插補過程是否完成。然而,當插補一個整圓時,起點的坐標和終點坐標相等。這種情況下,上述判別方法不再適用。因此,本文在程序設計中引入了一個標志寄存器[Q,]如果起點不等于終點,寄存器[Q]置0,插補程序正常執行;如果起點等于終點,寄存器[Q]置1,先停止一拍,在下一個觸發脈沖到來時,寄存器[Q]置0,然后即可進行插補。本設計實現的改進型圓弧插補算法流程如圖2所示。
2.2 改進的算法實現
根據改進后的逐點比較插補算法,在Quartus Ⅱ13.0和ModelSim 10.4軟件平臺下,本文完成了插補電路的可綜合Verilog HDL語言設計,并進行了仿真驗證。選用CycloneIV E系列EP4CE6E22C6器件的條件下,仿真得到的第一象限逆圓弧插補波形如圖3所示。圖中,輸入的二進制起點橫坐標[Xs]為00101,起點縱坐標[Ys]為00000;輸入的二進制終點坐標[Xe,Ye]為(00000,00101)。en為使能信號,當[en=0]時,輸入端有效。Sorn為路徑方向信號,當Sorn=0時,進行逆圓弧插補;Sorn=1時,進行順圓弧插補。x_out與y_out為輸出的動點坐標;end_ f=1標志插補過程結束信號。
改進后的算法靈活性好,可以通過擴大輸入起點、終點坐標以及半徑的倍數來獲得更多的步進點數,從而提高插補的精度。圖4所示為步進點數為100的[14]圓弧的插補軌跡,從圖4曲線可見,刀具的運動軌跡與理想圓弧的擬合程度較好。圖5為起點坐標和終點坐標均為(50,0)的整圓插補軌跡。由于改進了終點判別條件機制,本文方案可以完成一個整圓的插補過程。
可見,本文改進后的圓弧插補算法在相同條件下占用的硬件資源較少,這是因為本文設計的算法省去了大量的條件判斷語句,使得程序風格簡潔,不僅節省了邏輯資源,也大大提高了算法的速度和效率。
3 結 語
本文提出一種基于符號條件位判別的改進型逐點比較圓弧插補算法,并進行了FPGA仿真驗證。驗證結果表明,仿真波形與理論分析一致。與傳統的算法實現相比,本文方案具有插補速度快,占用資源少,插補精度高,輸出脈沖穩定,硬件實現功耗低的特點,并解決了傳統插補算法在起點與終點相同的情況下終點判別失效的問題,可應用于數控機床系統。
注:本文通訊作者為施佺。
參考文獻
[1] 肖力.FPGA測試控制系統[D].北京:北方工業大學,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的數控硬件插補系統的研究與實現[D].西安:西安工業大學,2013.
[4] 張偉,王黎.基于FPGA的數字積分法插補控制器設計與實現[J].現代電子技術,2011,34(22):150?153.
[5] 王漢霆.基于FPGA的運動插補控制芯片的研究與設計[D].武漢:華中科技大學,2009.
[6] 李莉,馮志永.數控系統中圓弧插補算法的改進和實現[J].控制與檢測,2009(7):61?62.
[7] 李存志,邢建國.比較積分法直線、圓弧插補方法的改進[J].機械設計與制造,2015(9):185?188.
[8] 陳宏臣.基于FPGA技術的數控插補器算法改進研究[D].成都:西南交通大學,2010.
[9] 王誠.Altera FPGA/CPLD設計基礎篇[M].北京:人民郵電出版社,2011.
[10] 席港港.傳統逐點比較法直線插補方法的改進[J].山東理工大學學報,2012,26(1):67?69.