1 引言 運動控制卡是一種基于工業PC機、用于各種運動控制場合(包括位移、速度、加速度等)的上位控制單元,而插補模塊是運動控制單元不可缺少的。本文所設計的基于PCI總線的DSP運動控制卡,可完成數控系統中實時性要求較高的插補、位置控制、實現數控系統中多軸聯動的插補計算、位置控制等功能。傳統的插補器一般都具有直線和圓弧的插補功能,使用不同算法處理直線、圓弧、螺旋線運動。使用這種方法并非所有的控制特征被編程到每種插補類型,而添加一種新的插補類型需要大幅度改動軟件結構。而該DSP運動控制卡的插補器采用基于非均勻有理B樣條NURBS的通用插補器,把所有編程的插補類型轉換為公共的數學表達式,使所有的功能不依賴于編程類型。通用插補器是一種能準確表達曲率的插補模型,能夠精確表達出各種曲線、曲面的軌跡;贜URBS原理的通用插補器模型包含任何曲線、曲面,所有傳統的插補類型(直線、圓。┮膊焕,克服了傳統插補器的缺點,提高了控制精度。 2 運動控制卡的硬件設計 運動控制卡的硬件設計基于PCI總線規范,采用DSP和FPGA的結合,再配以其它輔助電路,可適用于各種PC機及其兼容機系統,其硬件方框圖如圖1所示,以下分別介紹圖1中各芯片功能及其在該硬件電路中的作用。 核心處理器DSP:TMS320LF2407a是TI公司專為電機控制和其他控制系統設計的DSP。主要完成位置速度PID控制,插補迭代運算,開關量輸入和輸出以及程序和數據存儲和上下機的通信。 模擬量控制電路:將速度信號數字量用數據線接4路12位數模轉換芯片DAC7625,將數字信號轉換為-10~10V的模擬信號,輸出接模擬信號輸入的電機伺服驅動模塊。 反饋電路:在大多數運動系統中,采用光電編碼器作為閉環控制的反饋元件。光電編碼器輸出的是兩組相位相差90°的脈沖信號A和B, 先將信號差分整形以消除干擾信號的影響,然后對A、B兩相信號進行四倍頻,同時進行鑒相確定出DIR,根據DIR對四倍頻的脈沖進行加計數或減計數。計數器和位置捕捉寄存器均為32位,DSP可對其進行讀取或清零。 通訊電路:通過PCI接口從模式3.3V芯片PLX9030和雙口RAM芯片70V24與PC機的PCI總線相連,可以進行高速數據傳輸。其中雙口RAM70V24作為上下機交換數據公共緩沖區。70V24芯片具有8個異步仲裁標志位,更好地保證雙方對數據的準確操作。另外,使用FPGA芯片FLEX10KA來實現PLX9030對雙口RAM70V24的時序轉換。 開關量電路:包括通用16/16通用I/O點、能使4個電機輸出,4個軸左右的極限輸入和原點中斷輸入。 3 運動控制卡的插補計算 數控系統中插補的作用是讀取用戶程序經解釋器解釋之后的位置指令,由軌跡的起點、終點、軌跡的類型、軌跡的方向,計算出軌跡運動的各個中間點坐標。插補程序在每一個插補周期算出坐標軸在一個周期中的位置增量,由此位置增量算出坐標軸相應的指令位置,作為位置閉環控制系統的輸入。該DSP運動控制卡中,設計一種基于NURBS原理的通用插補器,下面簡要說明NURBS的原理。 一條曲線的形狀由控制點的位置決定,在任意時刻t,曲線的位置為各個控制點加權平均值。離控制點越近,加權值越大,反之越小。一條K 次NURBS 曲線可以表示為一分段有理多項式矢函數: 其中,Bi(i= 0,1,…,n)為控制點, 每個控制點附有一個權因子Wi(i=0,1,…,n),首末權因子W0,Wn>0,其余Wi≥0,Ni,k為K次規范B樣條基函數. U=[u0,u1,…,un+k+1]稱為節點矢量。以三次NURBS曲線為例,即k=3時,第i段曲線可以寫成下列矩陣形式: 其中 , 由于控制頂點及權因子均已知,則Y0、Y1、Y2、Y3、Y0’、Y1’、Y2’、Y3’與參數無關,可在插補計算之前預先算出,插補計算時只需計算插補變化量Δt,從而大大加快了計算速度。 在參數空間,曲線上插補點的參數可由二階泰勒級數表示為: ti+1= ti+T·t`+(T2/2)·t(2) +O(T2 ) (3) 其中,T為插補周期,t`,t(2)分別為參數對t的一階和二階導數。若以一階差分代替微分,將 代入公式(3),整理可得參數快速遞推公式,用以預估新插補點的參數: i+1=2.5ti-2ti-1+0.5ti-2 (4) 基于上述算法可進一步推導NURBS插補的誤差,加減速控制等算法,從而完善運動控制卡的NURBS插補運算功能。 插補子程序流程如圖三所示,具體插補過程包括以下幾個步驟: 1) 設定參數初始值,在選取t2點時,需要對插補步長進行預算,在滿足弓高誤差、進給速度、進給加速度的約束 條件時才可采用、否則需進行校正。 2) 預估插補參數,得出預估參數后需取t的整數部分來確定取哪一段曲線的Y系數數組,這里0≤ti≤n,若ti超出n則說明該曲線已到盡頭 這時插補參數應取為n,取第n-1段曲線的Y參數數組,實際插補參數取值為1。 3) 根據預估插補參數計算預估插補點Fi+1,預估插補步長Li。 4) 求期望步長,需要先分別根據弓高誤差、進給速度、進給加速度的約束條件算出各自步長,然后取其最小值即為期望步長。 5) 根據希望步長計算插補偏差,判斷插補偏差是否符合精度要求,若符合則該插補點即為所求,否則需對其進行校正。 6) 確定符合要求的插補參數后,計算新插補點,并算出各軸增量。 當運動控制系統的精度要求較高時,僅根據進給速度及插補周期生成插補軌跡是不夠的, 需要進一步對步長進行調整,方法是在插補中實時監控插補弓高誤差的大小,當誤差在允許誤差范圍內時,仍按瞬時進給速度計算進給步長Li,若誤差超出了允許范圍,則按允許誤差求取約束插補步長。此外,為了獲得更好的速度穩定性,應直接以弦長速度為控制目標,為了滿足式(2) 的新插補點Fi+1,本文采用基于參數遞推預估與校正的參數曲線插補算法,它不僅計算速度快,而且可避免其他插補算法所需的曲線求導等復雜計算。 4 結束語 NURBS曲線插補具有極大的優越性,程序量小,實時性高,但是由于NURBS曲線所具有的有理形式分段參數方程使曲線的軌跡及其導數、曲率等計算異常繁瑣,因而需要通過適當的插補預處理,運用基于預估與校正的插補策略以及合理的近似計算等措施,有效地簡化了插補過程中的軌跡計算,避免了對曲線的直接求導和曲率半徑等復雜計算,確保了插補算法的良好實時性。 根據上述算法,在上位機用VC++實現上層控制,通過PCI總線和雙口RAM芯片與DSP交換數據,用DSP語言實現下層插補算法,利用DSP的高速運算能力和和實時信號處理能力,在芯片粘片機的運用中取得了良好的效果,使該運動控制卡能夠滿足運動控制系統中高速高精度的要求。 |