国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ARM與FPGA的嵌入式開放性運(yùn)動(dòng)控制器的設(shè)計(jì)與開發(fā)

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

萬(wàn)林 唐厚君 賀超 黃維芳

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

0 引言

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

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

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

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

圖1 運(yùn)動(dòng)控制器硬件結(jié)構(gòu)圖

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

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

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

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

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

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

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

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

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

圖3 FPGA從ARM讀運(yùn)動(dòng)信息時(shí)FPGA程序流程

圖4 FPGA從ARM讀運(yùn)動(dòng)信息時(shí)ARM程序流程

4 運(yùn)動(dòng)控制器插補(bǔ)算法的設(shè)計(jì)

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

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

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

另外一個(gè)要討論的是在S型加減速中如何判斷運(yùn)動(dòng)單元何時(shí)該進(jìn)入S型加減速的下一階段。S型加減速通常有七個(gè)階段,其中比較典型的是由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é)束語(yǔ)

本文討論了一種基于ARM和FPGA的嵌入式開放性運(yùn)動(dòng)控制器的硬件和軟件方案設(shè)計(jì),在ARM上移植了Linux和Qt,利用Qt設(shè)計(jì)了人機(jī)交互界面,重點(diǎn)討論了ARM和FPGA之間通信的實(shí)現(xiàn)以及運(yùn)動(dòng)控制中S型加減速插補(bǔ)算法的實(shí)現(xiàn)。該控制器可根據(jù)用戶的要求很方便的裁剪,例如可以根據(jù)用戶的要求在FPGA模塊內(nèi)部多增加一個(gè)不對(duì)稱型加減速插補(bǔ)模塊,而不需要對(duì)硬件電路以及FPGA的其他模塊的代碼做任何修改,再者可以在ARM上面實(shí)現(xiàn)網(wǎng)絡(luò)通信的功能,這樣就能夠遠(yuǎn)程對(duì)運(yùn)動(dòng)控制器進(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] 吳宏,龔小云,等.運(yùn)動(dòng)控制器的現(xiàn)狀與發(fā)展[C].CMES年會(huì)專輯.2004,(1):24-27.

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

猜你喜歡
雙口寄存器嵌入式
STM32和51單片機(jī)寄存器映射原理異同分析
Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
雙口RAM在航天伺服系統(tǒng)中的應(yīng)用
搭建基于Qt的嵌入式開發(fā)平臺(tái)
Matching mechanism analysis on an adaptive cycle engine
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
雙口RAM讀寫正確性自動(dòng)測(cè)試的有限狀態(tài)機(jī)控制器設(shè)計(jì)方法
雙口RAM在無(wú)人機(jī)三余度飛控計(jì)算機(jī)數(shù)據(jù)交換中的應(yīng)用
Altera加入嵌入式視覺聯(lián)盟
倍福 CX8091嵌入式控制器