基于ARM+FPGA的運(yùn)動(dòng)控制器設(shè)計(jì)與實(shí)現(xiàn)
3.1 FPGA 內(nèi)部關(guān)鍵功能模塊設(shè)計(jì)
FPGA 不擅長(zhǎng)對(duì)數(shù)據(jù)進(jìn)行運(yùn)算處理,但本系統(tǒng)對(duì)每個(gè)軸的控制都要進(jìn)行相應(yīng)的運(yùn)算,因此在每個(gè)軸的控制模塊設(shè)計(jì)中盡量不涉及復(fù)雜的算法實(shí)現(xiàn),算法部分留給ARM 進(jìn)行處理。原則上FPGA 僅僅接收經(jīng)ARM 進(jìn)行處理過(guò)的數(shù)據(jù),而后按照ARM 主控單元的處理結(jié)果進(jìn)行處理。
單軸控制模塊框圖如圖3 所示。在每個(gè)位置管理單元中都配置了兩個(gè)計(jì)數(shù)器:邏輯位置計(jì)數(shù)器和實(shí)際位置計(jì)數(shù)器。其中邏輯位置計(jì)數(shù)器的輸入端接到脈沖發(fā)生器的輸出端,其功能是計(jì)量從脈沖發(fā)生器實(shí)際發(fā)出的脈沖數(shù)量。實(shí)位計(jì)數(shù)器的輸入端接到編碼器的輸出端,其功能是計(jì)量從編碼器發(fā)出的脈沖個(gè)數(shù)。邏輯位置寄存器和實(shí)際位置寄存器實(shí)際上構(gòu)成一個(gè)閉環(huán)系統(tǒng),前者為閉環(huán)系統(tǒng)的輸入,后者為閉環(huán)系統(tǒng)的輸出。當(dāng)兩者的誤差范圍不超過(guò)某一個(gè)限度時(shí),在FPGA中對(duì)實(shí)時(shí)的脈沖發(fā)送速率進(jìn)行調(diào)節(jié);當(dāng)兩者的誤差超過(guò)某一個(gè)設(shè)定的范圍時(shí),F(xiàn)PGA 向ARM 發(fā)送一個(gè)中斷請(qǐng)求。當(dāng)某個(gè)軸接收到減速信號(hào)SD 或者極限到位信號(hào)EL 時(shí),在FPGA 內(nèi)部經(jīng)過(guò)同樣一個(gè)中斷發(fā)生器模塊向ARM 發(fā)送一個(gè)中斷。ARM 接收到中斷信號(hào)后,開啟運(yùn)動(dòng)控制進(jìn)程,對(duì)PID 控制參數(shù)進(jìn)行整定,計(jì)算控制量。
圖3 單軸控制模塊設(shè)計(jì)
3.2 驅(qū)動(dòng)程序接口設(shè)計(jì)
在系統(tǒng)設(shè)計(jì)中,兩片F(xiàn)PGA 作為ARM 的外設(shè),掛在ARM 的外設(shè)地址空間。當(dāng)ARM 要訪問(wèn)FPGA時(shí),首先要在ARM 中運(yùn)行包含F(xiàn)PGA 所在地址空間地址的指令,而后ARM 的片選線選中FPGA,F(xiàn)PGA檢測(cè)到自己被選中,從而開始檢測(cè)地址總線上傳來(lái)的ARM 指令所包含的地址數(shù)據(jù)。根據(jù)從ARM 地址線傳來(lái)的地址總線上的數(shù)據(jù),F(xiàn)PGA 讀取從ARM 數(shù)據(jù)總線上傳來(lái)的數(shù)據(jù)總線上的數(shù)據(jù),而后開始進(jìn)行相應(yīng)的動(dòng)作,從而完成一次控制任務(wù)。寄存器是本運(yùn)動(dòng)控制系統(tǒng)的基本組成部分之一,ARM 對(duì)FPGA 的控制就是通過(guò)配置在FPGA 內(nèi)部的寄存器來(lái)實(shí)現(xiàn)的。完成配置的FPGA 整體結(jié)構(gòu)如圖4 所示。
圖4 FPGA 內(nèi)部結(jié)構(gòu)圖
4 控制算法設(shè)計(jì)與仿真
4.1 單神經(jīng)元自適應(yīng)PID 控制器設(shè)計(jì)
單神經(jīng)元自適應(yīng)PID 控制器的結(jié)構(gòu)如圖5 所示。
圖5 單神經(jīng)元自適應(yīng)PID 控制器
圖5 中,神經(jīng)元的3 個(gè)狀態(tài)變量分別為:
pid控制器相關(guān)文章:pid控制器原理
評(píng)論