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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM+FPGA的運動控制器設計與實現(xiàn)

          基于ARM+FPGA的運動控制器設計與實現(xiàn)

          作者: 時間:2013-01-04 來源:網絡 收藏

          3.1 內部關鍵功能模塊設計

             不擅長對數(shù)據進行運算處理,但本系統(tǒng)對每個軸的控制都要進行相應的運算,因此在每個軸的控制模塊設計中盡量不涉及復雜的算法實現(xiàn),算法部分留給 進行處理。原則上 僅僅接收經 進行處理過的數(shù)據,而后按照 主控單元的處理結果進行處理。

            單軸控制模塊框圖如圖3 所示。在每個位置管理單元中都配置了兩個計數(shù)器:邏輯位置計數(shù)器和實際位置計數(shù)器。其中邏輯位置計數(shù)器的輸入端接到脈沖發(fā)生器的輸出端,其功能是計量從脈沖發(fā)生器實際發(fā)出的脈沖數(shù)量。實位計數(shù)器的輸入端接到編碼器的輸出端,其功能是計量從編碼器發(fā)出的脈沖個數(shù)。邏輯位置寄存器和實際位置寄存器實際上構成一個閉環(huán)系統(tǒng),前者為閉環(huán)系統(tǒng)的輸入,后者為閉環(huán)系統(tǒng)的輸出。當兩者的誤差范圍不超過某一個限度時,在FPGA中對實時的脈沖發(fā)送速率進行調節(jié);當兩者的誤差超過某一個設定的范圍時,F(xiàn)PGA 向ARM 發(fā)送一個中斷請求。當某個軸接收到減速信號SD 或者極限到位信號EL 時,在FPGA 內部經過同樣一個中斷發(fā)生器模塊向ARM 發(fā)送一個中斷。ARM 接收到中斷信號后,開啟運動控制進程,對PID 控制參數(shù)進行整定,計算控制量。

          基于ARM+FPGA的運動控制器設計與實現(xiàn)

          圖3 單軸控制模塊設計

            3.2 驅動程序接口設計

            在系統(tǒng)設計中,兩片F(xiàn)PGA 作為ARM 的外設,掛在ARM 的外設地址空間。當ARM 要訪問FPGA時,首先要在ARM 中運行包含F(xiàn)PGA 所在地址空間地址的指令,而后ARM 的片選線選中FPGA,F(xiàn)PGA檢測到自己被選中,從而開始檢測地址總線上傳來的ARM 指令所包含的地址數(shù)據。根據從ARM 地址線傳來的地址總線上的數(shù)據,F(xiàn)PGA 讀取從ARM 數(shù)據總線上傳來的數(shù)據總線上的數(shù)據,而后開始進行相應的動作,從而完成一次控制任務。寄存器是本運動控制系統(tǒng)的基本組成部分之一,ARM 對FPGA 的控制就是通過配置在FPGA 內部的寄存器來實現(xiàn)的。完成配置的FPGA 整體結構如圖4 所示。

          基于ARM+FPGA的運動控制器設計與實現(xiàn)

          圖4 FPGA 內部結構圖

            4 控制算法設計與仿真

            4.1 單神經元自適應PID 控制器設計

            單神經元自適應PID 控制器的結構如圖5 所示。

          基于ARM+FPGA的運動控制器設計與實現(xiàn)

          圖5 單神經元自適應PID 控制器

            圖5 中,神經元的3 個狀態(tài)變量分別為:

          pid控制器相關文章:pid控制器原理




          關鍵詞: ARM FPGA 運動控制器

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();