<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于DSP的運動控制器的開發(fā)

          基于DSP的運動控制器的開發(fā)

          作者: 時間:2009-12-16 來源:網(wǎng)絡(luò) 收藏

          3 軟件程序設(shè)計及流程
          整個控制系統(tǒng)程序主要包括EEPROM引導(dǎo)程序和主程序兩部分。其中,F(xiàn)lash引導(dǎo)程序的作用是把系統(tǒng)程序從片外低速EEPROM傳送到片外高速RAM中運行,在控制卡的硬件調(diào)試階段,程序規(guī)模比較小,程序可以存放在片內(nèi)的。Flash中,這樣則不需要引導(dǎo)程序,直接在片內(nèi)運行程序。系統(tǒng)程序主要由主程序、讀寫雙口RAM程序、脈沖輸出程序、插補程序和加減速控制程序組成。主程序調(diào)用各子程序,進(jìn)行與上位機的通信、I/O、QEP、定時器及中間寄存器的初始化、設(shè)置中斷標(biāo)志、讀取計數(shù)器的值、計算各控制量、積分平滑等功能。當(dāng)發(fā)生中斷時,調(diào)用相應(yīng)中斷程序,并修改或重置標(biāo)志位。
          圖2所示為主程序的流程圖。主CPU使用硬件復(fù)位控制的復(fù)位操作,DSP復(fù)位后運行片內(nèi)ROM或加載到RAM中的系統(tǒng)主程序。DSP主程序由初始化程序、時鐘循環(huán)等待中斷程序組成。初始化程序完成所有變量的初始化,復(fù)位全部外設(shè)和關(guān)閉所有輸出。之后進(jìn)入循環(huán)和等待中斷的過程,檢測到主機命令之后,讀取命令并根據(jù)系統(tǒng)需要調(diào)用相應(yīng)的處理程序。命令處理完后再進(jìn)入循環(huán)等待狀態(tài),命令處理程序是實現(xiàn)功能的關(guān)鍵程序,包括運動控制的算法,速度控制、位置控制等功能的實現(xiàn),還包括完成數(shù)據(jù)寫入和讀取等功能,同時對外部中斷進(jìn)行處理。當(dāng)上位機給運動控制卡發(fā)送控制命令時,DSP首先讀取主機發(fā)送來的軸的目標(biāo)位置,根據(jù)速度控制的模式設(shè)定指令選擇相應(yīng)的速度控制算法,同時查詢外部事件,如有事件發(fā)生,執(zhí)行相應(yīng)的處理程序。接著就可以送出軸的控制輸出,檢測各軸是否都完成運動(判斷軸狀態(tài)寄存器完成標(biāo)志位),完成則推出命令處理程序,否則繼續(xù)執(zhí)行。

          本文引用地址:http://www.ex-cimer.com/article/152225.htm


          4 結(jié)束語
          運動的硬件設(shè)計需要注意:如抗干擾、外圍電路的速度與DSP的實時性能匹配問題。這些問題相互影響,要確定一個正確的電路結(jié)構(gòu)和合理的PCB布線,需要大量的實際經(jīng)驗,因此在電路結(jié)構(gòu)方面仍有待改進(jìn),使之更適應(yīng)穩(wěn)定、高速的控制要求。對控制軟件的改進(jìn)主要包括以下兩方面:
          (1)完成上位機上接口函數(shù)、運動控制函數(shù)庫和上層調(diào)試環(huán)境的設(shè)計、編寫NURBS數(shù)學(xué)處理程序,在運動內(nèi)部實現(xiàn)不同的插補算法,建立的操作平臺和完善的人機交互功能,使得具有更強大的控制性能和更容易編程;
          (2)對伺服電機的控制只提供了硬件上的支持,在軟件上需要對光電編碼器的反饋信號進(jìn)行分析,計算出與給定位置的誤差,再通過軟件PID算法調(diào)節(jié)器獲得位置控制量來控制伺服系統(tǒng)。


          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();