• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于ARM與FPGA的嵌入式開放性運動控制器的設(shè)計與開發(fā)

      2011-02-03 03:05:04萬林唐厚君賀超黃維芳
      電氣自動化 2011年3期
      關(guān)鍵詞:雙口寄存器嵌入式

      萬林 唐厚君 賀超 黃維芳

      (上海交通大學(xué),上海 200240)

      0 引言

      在國內(nèi)市場上已經(jīng)出現(xiàn)了許多種類的運動控制器,這些運動控制器有著各自的硬件平臺和軟件平臺,這一方面反映了國內(nèi)運動控制器市場的活躍,但另一方面暴露了阻礙國內(nèi)運動控制器向開放式、模塊化方向發(fā)展的原因。隨著計算機技術(shù)和現(xiàn)代電子技術(shù)迅速發(fā)展與廣泛應(yīng)用,深入研究基于新體系架構(gòu)、新技術(shù)、高性能、低成本、開放式多軸聯(lián)動運動控制器具有重要的理論意義和應(yīng)用價值[1,2]。本文基于ARM和FPGA的硬件平臺,研發(fā)了一種適用于現(xiàn)代制造系統(tǒng)需求的低成本的開放式嵌入式多軸運動控制器,其模塊化的設(shè)計思想使得該控制器非常適合于二次開發(fā)。

      1 系統(tǒng)硬件方案的設(shè)計

      嵌入式運動控制器通常有兩個控制核心。一個是MCU,主要負(fù)責(zé)人機交互部分并且與運動控制器的運算單元進(jìn)行通信,另一個控制核心主要負(fù)責(zé)運動控制過程中的大量復(fù)雜的運算工作。這個核心的運動控制單元大致可以分為三種:DSP、專用運動控制芯片、FPGA。利用DSP通過軟件的方式實現(xiàn)運動控制中的插補運算,具有編程簡單、靈活等方面的優(yōu)勢,但是無法達(dá)到像專用運動控制芯片那樣的高實時性,高可靠性,特別是對多軸控制更是如此;專用運動控制芯片雖然具備易使用,穩(wěn)定性好,功能強大,實時性強等優(yōu)點,但是專用的控制芯片可塑性和靈活性較差,很難根據(jù)客戶的具體要求定制;FPGA則是通過軟件代碼的方式生成對應(yīng)的硬件電路,它兼?zhèn)銬SP和專用運動控制芯片的優(yōu)點,同時隨著FPGA制造工藝的進(jìn)步,F(xiàn)PGA芯片的集成度越來越高,單位邏輯資源的價格大幅下降,因此使用FPGA作為運動控制器的一個控制核心是一個非常好的選擇。對于運動控制器的另外一個核心MCU,本系統(tǒng)選用ARM,ARM在嵌入式市場上占有率非常高,具有非常出色的性能以及價格優(yōu)勢,同時有許多第三方工具、軟件對ARM提供支持。

      系統(tǒng)硬件結(jié)構(gòu)如圖1所示。

      圖1 運動控制器硬件結(jié)構(gòu)圖

      2 系統(tǒng)軟件方案的設(shè)計

      在該系統(tǒng)中ARM需要完成人機交互和與運動控制器的運算單元進(jìn)行通信等多任務(wù),這些可以借助于Linux實現(xiàn)。Linux是一種開源的操作系統(tǒng),它以高效性和靈活性著稱,具有多任務(wù)的能力,同時Linux內(nèi)核提供了對常規(guī)設(shè)備的支持:鍵盤、鼠標(biāo)、SD卡等等;在該系統(tǒng)中人機交互界面通過Qt實現(xiàn),Qt是一個跨平臺的C++圖形用戶界面的程序框架,同時是開源的,具有非常強的可移植性,并且Qt提供多達(dá)250個以上的C++類,可重用性非常好,給用戶的開發(fā)帶來了極大的方便。并且Linux和Qt都可以在一定的許可權(quán)限下免費獲得,這極大地降低了系統(tǒng)成本以及提高系統(tǒng)的開放性。

      由于ARM上移植了Linux操作系統(tǒng),因此ARM需要通過驅(qū)動程序才能夠訪問FPGA的硬件資源。FPGA具有非常豐富的硬件資源,可以實現(xiàn)各種硬件接口協(xié)議。實現(xiàn)接口較簡單的一種方法是在FPGA上實現(xiàn)一個雙口RAM,并借助于在Linux中編寫雙口RAM的驅(qū)動程序,ARM便能夠方便地和FPGA進(jìn)行通信。ARM按照用戶的運動控制要求將規(guī)劃化好的運動代碼通過雙口RAM發(fā)送給FPGA,并且從雙口RAM處獲取運動單元的狀態(tài)信息。

      在該系統(tǒng)中FPGA通過雙口RAM從ARM處獲取規(guī)劃好的運動代碼,而后通過插補算法將運動代碼轉(zhuǎn)化成一定數(shù)目且頻率可調(diào)的脈沖來驅(qū)動步進(jìn)電機完成相應(yīng)的運動,同時FPGA將運動單元的狀態(tài)信息通過雙口RAM反饋給ARM。

      運動控制器系統(tǒng)的軟件整體結(jié)構(gòu)如圖2所示。

      圖2 運動控制器軟件整體結(jié)構(gòu)圖

      3 ARM和FPGA通信的設(shè)計

      FPGA內(nèi)部的雙口RAM分成兩部分:上行區(qū)和下行區(qū)。首先ARM會將規(guī)劃好的運動代碼寫到雙口RAM的下行區(qū)中,并且通知FPGA數(shù)據(jù)已經(jīng)準(zhǔn)備好,這時FPGA從雙口RAM的下行區(qū)中讀取數(shù)據(jù),當(dāng)FPGA取完數(shù)據(jù)之后便給ARM發(fā)出信號,之后ARM才能夠繼續(xù)向雙口RAM的下行區(qū)寫入數(shù)據(jù)。當(dāng)FPGA處理完一段運動代碼后便將運動單元的狀態(tài)——當(dāng)前坐標(biāo)、誤差、速度、加速度等信息寫到雙口RAM的上行區(qū),并且通知ARM準(zhǔn)備獲取運動單元的狀態(tài)信息,這時ARM從雙口RAM的上行區(qū)中讀取數(shù)據(jù),在此過程中FPGA停止向雙口RAM的上行區(qū)中寫入數(shù)據(jù),當(dāng)ARM取完數(shù)據(jù)之后便給FPGA發(fā)送數(shù)據(jù)已取完的信號,這時FPGA才能夠繼續(xù)向雙口RAM的上行區(qū)寫入運動單元的狀態(tài)信息。

      圖3、圖4分別說明了當(dāng)FPGA從ARM處讀取運動控制信息時FPGA和ARM的程序流程:(注:ARM從 FPGA處獲得運動單元的狀態(tài)信息時ARM和FPGA的程序流程和該情況類似,這里不再詳述)

      圖3 FPGA從ARM讀運動信息時FPGA程序流程

      圖4 FPGA從ARM讀運動信息時ARM程序流程

      4 運動控制器插補算法的設(shè)計

      常見的插補方法有數(shù)字脈沖相乘法,逐點比較法,最小偏差法,數(shù)字積分法,目標(biāo)點跟蹤法。其中數(shù)字積分法具有邏輯功能強的特點,可以實現(xiàn)一次、兩次甚至高次曲線的插補,適合于多坐標(biāo)軸聯(lián)動控制[3]。本文利用數(shù)字積分法設(shè)計了多軸運動控制器的S/T型加減速的插補算法。

      T型加減速的插補算法較簡單,本文主要討論S型加減速的插補算法,其具體的算法流程圖如圖5所示:(其中VACC為總軸的累加寄存器,RiACC(i=1,2,3...)為各個實際軸的累加寄存器,CurSpeed為總軸當(dāng)前的運動速度,DV為運動總軸要運行的距離,Di(i=1,2,3...)為各個實際軸要運行的距離)

      首先,F(xiàn)PGA通過雙口RAM從ARM那讀取規(guī)劃后的運動控制信息,包括各個軸合成的總軸的末速度,最大速度,最大加速度,加加速度,運動距離以及各個分軸的運動距離等。在每個插補周期中總軸累加寄存器累加當(dāng)前時刻運動控制器總軸的運動速度,當(dāng)總軸累加寄存器溢出時,各個分軸累加寄存器累加各個分軸的運動距離,當(dāng)其中某個分軸累加寄存器中的值大于等于運動控制器總軸的運動距離時,此時該軸就會發(fā)出一個脈沖。在插補過程中必須在每個插補周期中對運動總軸的的速度,加速度以及運動距離進(jìn)行控制。

      另外一個要討論的是在S型加減速中如何判斷運動單元何時該進(jìn)入S型加減速的下一階段。S型加減速通常有七個階段,其中比較典型的是由S型加減速的第一階段進(jìn)入S型加減速的下一階段,程序流程圖如圖6所示:(Cur Speed,Cur Acc,J,Init Speed,Max Speed和Max Acc分別為總軸當(dāng)前速度,當(dāng)前加速度,加加速度,初始速度,最大速度和最大加速度)

      圖5 S型加減速程序流程圖

      圖6 S型加減速由第一階段進(jìn)入下一階段流程圖

      5 結(jié)束語

      本文討論了一種基于ARM和FPGA的嵌入式開放性運動控制器的硬件和軟件方案設(shè)計,在ARM上移植了Linux和Qt,利用Qt設(shè)計了人機交互界面,重點討論了ARM和FPGA之間通信的實現(xiàn)以及運動控制中S型加減速插補算法的實現(xiàn)。該控制器可根據(jù)用戶的要求很方便的裁剪,例如可以根據(jù)用戶的要求在FPGA模塊內(nèi)部多增加一個不對稱型加減速插補模塊,而不需要對硬件電路以及FPGA的其他模塊的代碼做任何修改,再者可以在ARM上面實現(xiàn)網(wǎng)絡(luò)通信的功能,這樣就能夠遠(yuǎn)程對運動控制器進(jìn)行在線操作和診斷。

      [1] GOODWIN G G,GRAeBE S F,SALGADO M E.Control System Design[M].International,Prentice-Hall International Englewood Cliffs,New Jersey,2001.

      [2] 吳宏,龔小云,等.運動控制器的現(xiàn)狀與發(fā)展[C].CMES年會專輯.2004,(1):24-27.

      [3] 李恩林.數(shù)控系統(tǒng)插補原理通論[M].北京:國防工業(yè)出版社,2008:75.

      猜你喜歡
      雙口寄存器嵌入式
      雙口形式的戴維寧定理在電路分析中的應(yīng)用
      Lite寄存器模型的設(shè)計與實現(xiàn)
      雙口RAM在機載嵌入式系統(tǒng)中的應(yīng)用
      電子測試(2018年4期)2018-05-09 07:28:10
      搭建基于Qt的嵌入式開發(fā)平臺
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
      雙口RAM讀寫正確性自動測試的有限狀態(tài)機控制器設(shè)計方法
      雙口RAM在無人機三余度飛控計算機數(shù)據(jù)交換中的應(yīng)用
      Altera加入嵌入式視覺聯(lián)盟
      倍福 CX8091嵌入式控制器
      自動化博覽(2014年4期)2014-02-28 22:31:15
      错那县| 富平县| 周宁县| 富阳市| 乐山市| 沙雅县| 宜城市| 化州市| 库车县| 博客| 临漳县| 泸水县| 山丹县| 祥云县| 甘谷县| 九寨沟县| 平定县| 峨山| 麻阳| 黎平县| 凤山县| 孝昌县| 鄱阳县| 永登县| 尤溪县| 浦东新区| 威信县| 关岭| 浮山县| 横山县| 子洲县| 库车县| 南召县| 洛扎县| 内江市| 遵化市| 红河县| 济宁市| 屏东市| 文安县| 聂拉木县|