基于usb接口的嵌入式運(yùn)動(dòng)控制器設(shè)計(jì)
竇海斌,方建軍
(北方工業(yè)大學(xué)機(jī)電工程學(xué)院,北京100041)
摘要:開發(fā)出一種基于usb2. 0接口的嵌入式運(yùn)動(dòng)控制器,探討了該運(yùn)動(dòng)控制器的體系結(jié)構(gòu)的實(shí)現(xiàn)并對(duì)usb接口模塊的軟件和硬件設(shè)計(jì)進(jìn)行了詳細(xì)的介紹。將該嵌入式運(yùn)動(dòng)控制器應(yīng)用于智能象棋機(jī)械手的控制過程中,實(shí)驗(yàn)結(jié)果表明通過擴(kuò)展usb設(shè)備可以容易的實(shí)現(xiàn)多軸聯(lián)動(dòng)同時(shí)在實(shí)時(shí)性能要求不高的場(chǎng)合可以滿足運(yùn)動(dòng)控制的要求。
關(guān)鍵詞:usb2.0; dsp; fpca;嵌入式運(yùn)動(dòng)控制器
中圈分類號(hào):tp273 文獻(xiàn)標(biāo)志碼:a 文章編號(hào):1001-6848(2010)06-0100-03
0引 言
多軸運(yùn)動(dòng)控制系統(tǒng)在激光加工、工業(yè)機(jī)器人、數(shù)控機(jī)床、辦公自動(dòng)化設(shè)備、雷達(dá)和軍用武器隨動(dòng)系統(tǒng)以及柔性制造系統(tǒng)的應(yīng)用越來越廣泛。pci或isa接口的多軸運(yùn)動(dòng)控制器不能進(jìn)行長(zhǎng)距離傳輸,控制器要插到ipc擴(kuò)展插槽里面,占用ipc外圍資源,從主機(jī)應(yīng)用程序過來的數(shù)據(jù)多放到緩存fifo中,不能方便地區(qū)分對(duì)各個(gè)軸的指令和控制參數(shù),開發(fā)t作也比較復(fù)雜。而usb2.0技術(shù)不僅可以實(shí)現(xiàn)高速數(shù)據(jù)傳輸,而且具有即插即用,功耗低,連接簡(jiǎn)便,價(jià)格便宜的特點(diǎn),同時(shí)可以實(shí)瑰不同軸指令及參數(shù)的分開,而不需要做復(fù)雜的技術(shù)處理。本文以智能象棋機(jī)器人嵌入式運(yùn)動(dòng)控制器為例,提出一種基于usb2. 0接口的多軸運(yùn)動(dòng)控制器。該運(yùn)動(dòng)控制器與上位機(jī)可以實(shí)現(xiàn)高速數(shù)據(jù)通信,完全滿足象棋機(jī)械手的控制性能要求。
1硬件結(jié)構(gòu)設(shè)計(jì)
1.1總體結(jié)構(gòu)設(shè)計(jì)
運(yùn)動(dòng)控制器硬件結(jié)構(gòu)如圖l所示。運(yùn)動(dòng)控制器通過usb接口從上位pc機(jī)獲取位置指令、命令指令以及需要調(diào)整的參數(shù)(比如pid調(diào)節(jié)系數(shù)),運(yùn)動(dòng)控制器由dsp對(duì)位置指令進(jìn)行粗插補(bǔ),在每一個(gè)插補(bǔ)周期,dsp根據(jù)反饋的正交編碼脈沖信號(hào)獲取軸的實(shí)時(shí)位置,計(jì)算出期望值與實(shí)際值之間的偏差,對(duì)偏差進(jìn)行pid調(diào)節(jié),獲得各軸的進(jìn)給量。將此進(jìn)給量依次送人fpga的脈沖發(fā)生模塊完成精插補(bǔ)操作,產(chǎn)生輸出脈沖信號(hào)送人伺服驅(qū)動(dòng)器控制電機(jī)運(yùn)動(dòng)。同時(shí)運(yùn)動(dòng)控制器可以根據(jù)pc機(jī)的命令指令向pc機(jī)上傳各伺服軸的運(yùn)行狀況等信息并通過pc界面顯示出來。
1.2 usb模塊設(shè)計(jì)
sx2有5個(gè)端點(diǎn):ep(o、2、4、6、8)。epo用基于usb接口的嵌入式運(yùn)動(dòng)控制器設(shè)計(jì)竇海斌,等來提供介于主機(jī)與設(shè)備之間的配置、命令或狀態(tài)的通信協(xié)議。在本設(shè)計(jì)中將ep2設(shè)置為out端點(diǎn),負(fù)責(zé)傳送位置指令數(shù)據(jù),配置為512字節(jié)雙緩沖的模式。ep6設(shè)置為out端點(diǎn),負(fù)責(zé)傳送pc來的命令指令,配置為512字節(jié)雙緩沖的模式。ep4設(shè)置為in端點(diǎn),負(fù)責(zé)傳送來自運(yùn)動(dòng)控制器的狀態(tài)信息,配置為512字節(jié)雙緩沖的模式。雙緩沖的模式可以使usb在讀或者寫一個(gè)數(shù)據(jù)包時(shí),另一個(gè)數(shù)據(jù)包(同一個(gè)端點(diǎn)內(nèi)的另一個(gè)緩沖器)可供dsp執(zhí)行讀或者寫操作。通過建立兩級(jí)緩存可以極大提高數(shù)據(jù)的傳輸速度,更好地利用usb2.0的高速性。
sx2與fpga的連接圖如圖2所示。fifoadr[00: 02]用來選擇fifo和命令端口,具體的對(duì)應(yīng)規(guī)則可查閱sx2的技術(shù)資料;slrd為sx2的讀有效信號(hào)常與sloe短接,與dsp的讀使能信號(hào)xrd相連;slwr為寫有效信號(hào),與dsp的寫使能信號(hào)xwe相連;flaga、flagb、flagc報(bào)告由fifoadr[2:0]選擇的fifo的狀態(tài);ready信號(hào)有效時(shí)通知dsp對(duì)sx2的fifo進(jìn)行讀寫。flagx和ready的狀態(tài)均寫入fpga申的一個(gè)寄存器中,dsp將fpca配置在zonel空間內(nèi)(ox4000h),通過a[3:4]選中此寄存器,再通過數(shù)據(jù)線d[0:7]將寄存器的內(nèi)容送人dsp,dsp通過查詢各端口fifo的狀態(tài)執(zhí)行相應(yīng)的命令。
因?yàn)槭褂昧穗p緩沖的模式,充分的發(fā)揮了usb2.0的傳輸速度快的優(yōu)勢(shì)。具體的工作過程為:當(dāng)上位pc機(jī)要發(fā)送位置指令給運(yùn)動(dòng)控制器時(shí),將位置指令發(fā)送到ep2,dsp通過讀fpga中的sx2的狀態(tài)寄存器得知ep2的fifo中有數(shù)據(jù),然后將位置數(shù)據(jù)讀人dsp中進(jìn)行粗插補(bǔ)算法。當(dāng)上位pc機(jī)要讀出當(dāng)前各軸的運(yùn)行狀態(tài)時(shí),將命令指令發(fā)送到ep6,dsp將命令指令讀人內(nèi)部寄存器中判斷出命令所要求的具體任 |