楊秀增,黎運宇
(廣西民族師范學院,廣西崇左532200)
插補控制器是數控系統的基本單元,用來完成運動軌跡的擬合[1]。隨著加工零件結構復雜程度的提高,對數控制系統的插補控制器性能提出了更高的要求,不僅要求插補控制器具有高精度、高速度,還要求具有多軸聯動控制功能,比如,對復雜曲面零部件加工,目前廣泛采用具有五軸聯動線性插補功能[2]的插補控制器,但是,目前的數控系統利用軟件插補器[3],軟件插補器由于用軟件實現插補功能,其性能難以滿足復雜數控系統的要求[3]。
針對以上情況,本文利用現場可編程邏輯門陣列(FPGA)[4],設計了一款基于數字積分算法(DDA)五軸步進電動機聯動控制的硬件插補控制IP核,由于該插補器控制器全都由硬件來實現,因此,本控制器具有速度快、精度高和實時性強等優點,能應用于多軸復雜的數控系統中。
圖1為本設計的硬件系統原理框圖。由圖1可見,本設計包括Avalon接口單元、寄存器文件單元和任務邏輯單元三大部分。

圖1 五軸步進電動機插補控制器IP核硬件原理框圖
Avalon接口單元是本控制IP核的接口電路,負責把用戶任務邏輯單元,按基于Avalon總線通信協議接在Avalon總線上,以便實現用戶任務邏輯單元與NiosII軟核CPU進行通信。
寄存器文件單元由如下九個寄存器組成:
分頻因子寄存器,用于寄存可編程分頻器的分頻因子,其大小能有效地控制插補器的插補速度;X軸坐標寄存器、Y軸坐標寄存器、Z軸坐標寄存器、B軸坐標寄存器和C軸坐標寄存器,分別寄存X軸、Y軸、Z軸、B軸和C軸的終點坐標值,作為數字積分器的被積函數,其值越大,被積函數值越大,意味著該軸的運動距離越遠,在單位時間內,數字積分器產生的步進脈沖越快;狀態寄存器,用于寄存控制器的當前所處的狀態(“閑”或“忙”),用高或低電平來表示;總步進數寄存器,用于寄存五個步進電動機要走的總步進數;控制寄存器,寄存著各種控制信息,包括1位暫停控制信號、1位起動信號和5位步進電動機的方向轉動控制信號。
任務邏輯單元是本IP核的行為部分[5],要實現五軸步進電動機的聯動和速度控制功能。五軸數字積分器模塊,由五個相互獨立的數字積分器組成,此模塊能對各軸坐標的值進行數字積分運算,不斷地產生各軸步進電動機的步進脈沖信號,控制著各軸步進電動機的運動速度和聯動功能;終點判定模塊對各軸輸出的步進脈沖進行計數,并且把計數的結果與總步進數寄存器的值進行比較,如相等,表示已到達終點,用over信號通知狀態機表示本次差補結束;狀態機是任務邏輯單元的協調控制中心,能產生各種時序控制信號,使五軸數字積分器和終點判定模塊的協調工作;可編程分頻器可根據分頻因子的值對50 MHz時鐘進行分頻,得到不同頻率的工作時鐘,實現步進電動機的速度控制。
寄存器文件由九個寄存器組成,寄存著控制信息、狀態信息和各種數據。每個寄存器對應著不同的地址,且讀寫方向和位寬也不盡相同,表1列出這些寄存器的名稱、相對地址、讀寫方向、位寬和功能描述。

表1 寄存器組定義與地址分配

圖2 數字積分器的原理方框圖
2.2.1 可編程分頻器設計
在本設計中,利用一個可編程分頻器來控制步進電動機的轉動速度。由圖1可知,分頻器的分頻因子變大,50 MHz的系統時鐘被分頻器分頻的頻率變小,數字積分器的工作時鐘變小,數字積分器的運算速度變慢,步進電動機速度變小;相反,分頻器分頻因子變小,分頻器的輸出頻率變大,五軸數字積分器的運算速度變快,步進電動機轉速變快。
2.2.2 五軸數字積分器設計
為了實現五個步進電動機的聯動控制,設計了五軸數字積分器。五軸數字積分器由五個互相獨立的數字積分組成,每一個坐標軸對應一個數字積分器,其原理框圖如圖2所示,坐標值寄存器存放本次直線插補的終點坐標值,作為數字積分器的被積函數。在插補前,clr要對余數寄存器內容清零,插補起動后,在clk時鐘的上升沿控制下,加法器對坐標寄存器的值和余數寄存器的值進行一次加法運算,并把運算結果存放在余數寄存器中。在設計中,余數寄存器最高位作為驅動步進電動機的步進脈沖,每個上升沿表示步進電動機要步進一步,本積分器的Verlogn HDL程序如下:
module Digital_integrator(iclk,iclr,idata,step_pulse,en);
input iclk,iclr,en;
input[15:0]idata;//數據輸入
output step_pulse;//步進脈沖
reg[16:0]sum;//中間寄存器
always@(posedge iclk or posedge iclr)
if(iclr)//高電平,清零
sum=0;
else if(en)//高電平,進行累加
sum=sum+idata;
assign step_pulse=sum[16];//步進脈沖
endmodule
2.2.3 終點判定模塊設計
終點判定模塊用于判定步進電動機是否運動到終點。插補前,NiosII根據本次差補的終點坐標值和步進電動機的最小步長的值,計算出五個步進電動機的步進數總數,并把這總數寫到總步進數寄存器,插補開始后,終點判定模塊讀取總步進數寄存器的值,并對各軸步進脈沖的上升沿進行計數,當計數的值與讀到時的總步進數相等時,表明步進電動機已到達終點,用over信號通知狀態機停止本次直線插補,本模塊的Verlogn HDL程序如下:
module end_test(x_p,y_p,_p,b_p,c_p,over,idata,RD);
input x_p,y_p,z_p,b_p,c_p,RD;
output reg over;//終點結束輸出
input[31:0]idata;//數據輸入
reg[31:0]mcounter,mreg;//中間寄存器
wire dclk;
assign dclk=x_p||y_p||z_p||b_p||c_p;always@(posedge dclk or posedge RD)if(RD)begin mreg=idata;over=0;end//RD為高電平時,讀取數據
else if(mcounter==mreg)
begin end_out=1;mcounter=0;end//如計數與總步進數相等進,結束
else begin mcounter=mcounter+1;over=0;end//否則計數endmodule
2.2.4 狀態機設計

圖3 狀態機的狀態轉換圖
狀態機用于協調五軸數字積分器和終點判定模塊協調工作。圖3為本狀態機的狀態轉換圖,包括“空閑”狀態(s0)、數據初始化狀態(s1)和步進控制狀態(s2)三個狀態。在NiosII沒有起動插補器前,狀態機始終在“空閑”狀態(s0)中等待起動信號(start)到來;一旦start為高電平,表明NiosII起動插補器,狀態機由等待狀態(s0)進入數據初始化狀態(s1),在狀態中,狀態機對數字積分器的余數寄存器內容清零和用RD信號通知終點判定模塊讀取總步進數寄存器的值,在時鐘控制下,狀態機無條件地進行步進電控制狀態(s2),在此狀態中,EN為高電平,使五軸數字積分器開始進行積分運算,當over為高電平時,此狀態結束,進入“空閑”狀態s0中。
在QuartusII 8.0軟件中,SOPC Builder工具提供了6種不同接口類型和信號,設計者可根據設計需要選擇接口,并把任務邏輯各種信號,指定Avalon信號類型,表2為本設計所用到的接口單元信息。

表2 Avalon接口信息表
硬件系統工作離不開軟件的支持,硬件系統的設計結構和工作原理決定了軟件的編寫方法[6]。在插補前,讀取狀態寄存器里的值,了解系統工作狀態,如處于“空閑”狀態,NiosII把本次直線插補終點坐標寫到相應的寄存器中,然后,根據空間直線的長度和步進電動機的步距,計算出總的步進脈沖數,并寫入總步進脈沖寄存器中。最后,根據直線插補方向設置好控制寄存器方向控制位后,起動插補器。
本控制器IP核被成功地應用于如圖4所示的五軸步進電動機運動控制卡中。本運動控制卡在一片FPGA上實現。UART控制器、JTAG控制器、NiosII處理器、EPCS控制器、SDRAM控制、LCD控制器、PIO控制器和Avalon數據總線構成基于NiosII的最小系統;五軸步進電動機插補控制器是通過例化本設計IP核得到的;SPWM細分驅動器實現步進電動機的細分驅動,改善步進電動機的運動性能。加工的數據從上位機的USB口傳送到五軸步進電動機控制卡中,CP2101橋式控制芯片把USB數據流轉換成UART數據流,然后NiosII把這些數據寫到五軸步進電動機插補控制器中。本運動控制卡的具體設計方法,限于篇幅,本文不作介紹。

圖4 基于FPGA的五軸步進電動機運動控制卡設計框圖
對以上所設計的運動卡進行測試,現場可編程邏輯門陣列選用Altera公司的EP3C25Q240C8N,步進電動機選用Leetro公司生產的二相式步進電動機DM4250C。測試結果表明,本運動控制卡工作穩定,被控制的步進電動機工作平穩,插補運算速度快、控制精度高。圖5為利用QuartusII嵌入式邏輯分析儀(SigalTap II Logic Analyzer)測試五軸數字積分器的輸出信號波形:xp、yp、zp、bp和cp分別是X軸、Y軸、Z軸、B軸和C軸的步進脈沖輸出,信號每一個上升沿表示步進電動機走一步,從圖5可以看出,它們之間的步進數(上升沿數)剛好為2倍關系,說明五軸步進電動機具有良好的聯動關系,有效驗證了本設計的正確性。

圖5 用嵌入式邏輯分析儀分析五軸波形時序圖
插補器聯動控制器是多軸聯動控制卡的重要組成部分,針對目前數控制系統的軟件插補器的運行速度慢和實時性差等缺點,利用現場可編程門陣列設計一款五軸步進電動機插補控制器,實際測試結果表明,本控制器工作穩定,具有速度快、精度高和實時性強等優點,因此,本設計有一定推廣和實用價值。
[1] 陳黎融,白婕靜,劉繼偉.基于FPGA的數字積分法圓弧插補器的設計與實現[J].現代制造工程,2008,(2):58-60.
[2] 劉源,王永章,富宏亞,等.用于五軸聯動數控機床的曲線插補控制策略[J].計算機集成制造系統,2009,15(4):758-761.
[3] 于海東.直線插補控制器的FPGA實現[J].微特電機,2009(1):46-49.
[4] 李凡,廖勇.基于FPGA數字硬件的無刷直流電動機速度控制系統[J].微特電機,2010(8):65-68.
[5] 殷蘇民,楊仁宇.基于Avalon總線的插補器IP核的設計[J].機械設計與制造,2009(8):198-200.
[6] 楊秀增.可變波特率和載頻的2FSK數字調制器的FPGA實現[J].電訊技術,2010,50(5):64-67.