<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于DSP的NURBS曲線(xiàn)插補控制

基于DSP的NURBS曲線(xiàn)插補控制

作者: 時(shí)間:2007-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:本文介紹了一種TMS320LF2407a芯片的運動(dòng)卡的設計方法及插補的概念,提出了實(shí)現插補的一種實(shí)時(shí)方法,采用參數遞推預估與校正的參數插補算法,有效地簡(jiǎn)化了插補過(guò)程中的軌跡計算,避免了對的直接求導和曲率半徑等復雜計算,該算法顯著(zhù)減小了插補計算時(shí)間,從而能夠適應運動(dòng)系統的高速高精度要求。
關(guān)鍵詞運動(dòng)插補

1 引言

運動(dòng)控制卡是一種工業(yè)PC機、用于各種運動(dòng)控制場(chǎng)合(包括位移、速度、加速度等)的上位控制單元,而插補模塊是運動(dòng)控制單元不可缺少的。本文所設計的基于PCI總線(xiàn)的運動(dòng)控制卡,可完成數控系統中實(shí)時(shí)性要求較高的插補、位置控制、實(shí)現數控系統中多軸聯(lián)動(dòng)的插補計算、位置控制等功能。傳統的插補器一般都具有直線(xiàn)和圓弧的插補功能,使用不同算法處理直線(xiàn)、圓弧、螺旋線(xiàn)運動(dòng)。使用這種方法并非所有的控制特征被編程到每種插補類(lèi)型,而添加一種新的插補類(lèi)型需要大幅度改動(dòng)軟件結構。而該DSP運動(dòng)控制卡的插補器采用基于非均勻有理B樣條NURBS的通用插補器,把所有編程的插補類(lèi)型轉換為公共的數學(xué)表達式,使所有的功能不依賴(lài)于編程類(lèi)型。通用插補器是一種能準確表達曲率的插補模型,能夠精確表達出各種曲線(xiàn)、曲面的軌跡?;贜URBS原理的通用插補器模型包含任何曲線(xiàn)、曲面,所有傳統的插補類(lèi)型(直線(xiàn)、圓?。┮膊焕?,克服了傳統插補器的缺點(diǎn),提高了控制精度。

2 運動(dòng)控制卡的硬件設計

運動(dòng)控制卡的硬件設計基于PCI總線(xiàn)規范,采用DSP和FPGA的結合,再配以其它輔助電路,可適用于各種PC機及其兼容機系統,其硬件方框圖如圖1所示,以下分別介紹圖1中各芯片功能及其在該硬件電路中的作用。

核心處理器DSP:TMS320LF2407a是TI公司專(zhuān)為電機控制和其他控制系統設計的DSP[1]。主要完成位置速度PID控制,插補迭代運算,開(kāi)關(guān)量輸入和輸出以及程序和數據存儲和上下機的通信。

模擬量控制電路:將速度信號數字量用數據線(xiàn)接4路12位數模轉換芯片DAC7625,將數字信號轉換為-10~10V的模擬信號,輸出接模擬信號輸入的電機伺服驅動(dòng)模塊。

反饋電路:在大多數運動(dòng)系統中,采用光電編碼器作為閉環(huán)控制的反饋元件。光電編碼器輸出的是兩組相位相差90的脈沖信號A和B, 先將信號差分整形以消除干擾信號的影響,然后對A、B兩相信號進(jìn)行四倍頻,同時(shí)進(jìn)行鑒相確定出DIR,根據DIR對四倍頻的脈沖進(jìn)行加計數或減計數。計數器和位置捕捉寄存器均為32位,DSP可對其進(jìn)行讀取或清零。

通訊電路:通過(guò)PCI接口從模式3.3V芯片PLX9030和雙口RAM芯片70V24與PC機的PCI總線(xiàn)相連,可以進(jìn)行高速數據傳輸。其中雙口RAM70V24作為上下機交換數據公共緩沖區。70V24芯片具有8個(gè)異步仲裁標志位,更好地保證雙方對數據的準確操作。另外,使用FPGA芯片FLEX10KA來(lái)實(shí)現PLX9030對雙口RAM70V24的時(shí)序轉換。

開(kāi)關(guān)量電路:包括通用16/16通用I/O點(diǎn)、能使4個(gè)電機輸出,4個(gè)軸左右的極限輸入和原點(diǎn)中斷輸入。


圖一 硬件結構框圖

3 運動(dòng)控制卡的插補計算

數控系統中插補的作用是讀取用戶(hù)程序經(jīng)解釋器解釋之后的位置指令,由軌跡的起點(diǎn)、終點(diǎn)、軌跡的類(lèi)型、軌跡的方向,計算出軌跡運動(dòng)的各個(gè)中間點(diǎn)坐標。插補程序在每一個(gè)插補周期算出坐標軸在一個(gè)周期中的位置增量,由此位置增量算出坐標軸相應的指令位置,作為位置閉環(huán)控制系統的輸入[2]。該DSP運動(dòng)控制卡中,設計一種基于NURBS原理的通用插補器,下面簡(jiǎn)要說(shuō)明NURBS的原理。


圖二

一條曲線(xiàn)的形狀由控制點(diǎn)的位置決定,見(jiàn)圖二中的Bi。圖二中a、b曲線(xiàn)的B7點(diǎn)的位置不同,使a、b曲線(xiàn)在與B7相鄰的部分曲線(xiàn)形狀發(fā)生變化,而其余控制點(diǎn)附近的曲線(xiàn)形狀保持不變。在任意時(shí)刻t,曲線(xiàn)的位置為各個(gè)控制點(diǎn)加權平均值。離控制點(diǎn)越近,加權值越大,反之越小。一條K 次NURBS 曲線(xiàn)可以表示為一分段有理多項式矢函數:


其中,Bi(i= 0,1,…,n)為控制點(diǎn), 每個(gè)控制點(diǎn)附有一個(gè)權因子Wi(i=0,1,…,n),首末權因子W0,Wn>0,其余Wi≥0,Ni,k為K次規范B樣條基函數,可由下式遞推計算:


U=[u0,u1,…,un+k+1]稱(chēng)為節點(diǎn)矢量。以三次NURBS曲線(xiàn)為例,即k=3時(shí),第i段曲線(xiàn)可以寫(xiě)成下列矩陣形式:

其中 ,

由于控制頂點(diǎn)及權因子均已知,則Y0、Y1、Y2、Y3、Y0’、Y1’、Y2’、Y3’與參數無(wú)關(guān),可在插補計算之前預先算出,插補計算時(shí)只需計算插補變化量Δt,從而大大加快了計算速度。

在參數空間,曲線(xiàn)上插補點(diǎn)的參數可由二階泰勒級數表示為:

ti+1= ti+Tt`+(T2/2)t(2) +O(T2 ) (3)

其中,T為插補周期,t`,t(2)分別為參數對t的一階和二階導數。若以一階差分代替微分,將

代入公式(3),整理可得參數快速遞推公式,用以預估新插補點(diǎn)的參數:

i+1=2.5ti-2ti-1+0.5ti-2 (4)



基于上述算法可進(jìn)一步推導NURBS插補的誤差,加減速控制等算法,從而完善運動(dòng)控制卡的NURBS插補運算功能。

圖三 插補子程序框圖

插補子程序流程如圖三所示,具體插補過(guò)程包括以下幾個(gè)步驟:

1) 設定參數初始值,在選取t2點(diǎn)時(shí),需要對插補步長(cháng)進(jìn)行預算,在滿(mǎn)足弓高誤差、進(jìn)給速度、進(jìn)給加速度的約束條件時(shí)才可采用、否則需進(jìn)行校正。

2) 預估插補參數,得出預估參數后需取t的整數部分來(lái)確定取哪一段曲線(xiàn)的Y系數數組,這里0≤ti≤n,若ti超出n則說(shuō)明該曲線(xiàn)已到盡頭 這時(shí)插補參數應取為n,取第n-1段曲線(xiàn)的Y參數數組,實(shí)際插補參數取值為1。

3) 根據預估插補參數計算預估插補點(diǎn)Fi+1,預估插補步長(cháng)Li。

4) 求期望步長(cháng),需要先分別根據弓高誤差、進(jìn)給速度、進(jìn)給加速度的約束條件算出各自步長(cháng),然后取其最小值即為期望步長(cháng)。

5) 根據希望步長(cháng)計算插補偏差,判斷插補偏差是否符合精度要求,若符合則該插補點(diǎn)即為所求,否則需對其進(jìn)行校正。

6) 確定符合要求的插補參數后,計算新插補點(diǎn),并算出各軸增量。

當運動(dòng)控制系統的精度要求較高時(shí),僅根據進(jìn)給速度及插補周期生成插補軌跡是不夠的, 需要進(jìn)一步對步長(cháng)進(jìn)行調整,方法是在插補中實(shí)時(shí)監控插補弓高誤差的大小,當誤差在允許誤差范圍內時(shí),仍按瞬時(shí)進(jìn)給速度計算進(jìn)給步長(cháng)Li,若誤差超出了允許范圍,則按允許誤差求取約束插補步長(cháng)。此外,為了獲得更好的速度穩定性,應直接以弦長(cháng)速度為控制目標,為了滿(mǎn)足式(2) 的新插補點(diǎn)Fi+1,本文采用基于參數遞推預估與校正的參數曲線(xiàn)插補算法,它不僅計算速度快,而且可避免其他插補算法所需的曲線(xiàn)求導等復雜計算。

4 結束語(yǔ)

NURBS曲線(xiàn)插補具有極大的優(yōu)越性,程序量小,實(shí)時(shí)性高[3],但是由于NURBS

曲線(xiàn)所具有的有理形式分段參數方程使曲線(xiàn)的軌跡及其導數、曲率等計算異常繁瑣,因而需要通過(guò)適當的插補預處理,運用基于預估與校正的插補策略以及合理的近似計算等措施,有效地簡(jiǎn)化了插補過(guò)程中的軌跡計算,避免了對曲線(xiàn)的直接求導和曲率半徑等復雜計算,確保了插補算法的良好實(shí)時(shí)性。

根據上述算法,在上位機用VC++實(shí)現上層控制,通過(guò)PCI總線(xiàn)和雙口RAM芯片與DSP交換數據,用DSP語(yǔ)言實(shí)現下層插補算法,利用DSP的高速運算能力和和實(shí)時(shí)信號處理能力,在芯片粘片機的運用中取得了良好的效果,使該運動(dòng)控制卡能夠滿(mǎn)足運動(dòng)控制系統中高速高精度的要求。

參考文獻

1 劉和平等,TMS320LF240x DSP結構、原理及應用,北京:北京航空航天大學(xué)出版社 2002
2 葉伯生等,計算機數控系統原理、編程與操作,武漢:華中理工大學(xué)出版社,1999
3 趙鴻,NURBS曲線(xiàn)插補技術(shù)的應用,制造技術(shù)與機床,1999
4 施法中,計算機輔助幾何設計與非均勻有理B樣條,北京:高等教育出版社2001
5 Cheng M Y,Tsai M C,Kuo J C,Real time nurbs command generators for CNC servo controllers[J], Machining tools Manufacture,2002,42:801-813

合成孔徑雷達相關(guān)文章:合成孔徑雷達原理


關(guān)鍵詞: 控制 曲線(xiàn) NURBS DSP 基于

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>