凌 松,駱敏舟,王善杰
(1.常州大學(xué),常州 213000;2.常州先進(jìn)制造技術(shù)研究所,常州 213000;3.合肥工業(yè)大學(xué),合肥 230022)
基于FPGA的五軸聯(lián)動(dòng)控制器的設(shè)計(jì)
凌 松1,駱敏舟1,王善杰3
(1.常州大學(xué),常州 213000;2.常州先進(jìn)制造技術(shù)研究所,常州 213000;3.合肥工業(yè)大學(xué),合肥 230022)
在機(jī)器人運(yùn)動(dòng)控制系統(tǒng)中,要求機(jī)器人沿某一指定軌跡運(yùn)行時(shí),必須將軌跡分割成許多小段,通過(guò)求解各個(gè)中間點(diǎn)的逆運(yùn)動(dòng)學(xué)方程,計(jì)算出一系列的關(guān)節(jié)角度,控制器根據(jù)得出的每個(gè)時(shí)刻的關(guān)節(jié)量驅(qū)動(dòng)各軸電機(jī)聯(lián)動(dòng),以保證準(zhǔn)確的經(jīng)過(guò)所有中間點(diǎn)。一般伺服電機(jī)和步進(jìn)電機(jī)的驅(qū)動(dòng)器采用脈沖加方向的控制模式,脈沖的數(shù)量對(duì)應(yīng)運(yùn)行位置,脈沖頻率對(duì)應(yīng)運(yùn)行速度,所以多路脈沖的輸出控制,成為多軸聯(lián)動(dòng)的關(guān)鍵技術(shù)之一。
在文獻(xiàn)[1,2]中,作者主要是利用DSP的PWM模塊來(lái)實(shí)現(xiàn)多路脈沖的輸出以達(dá)到多軸聯(lián)動(dòng),經(jīng)過(guò)分析得出,采用這種方法,需要占用DSP的內(nèi)部資源,降低了處理速度,而且輸出的脈沖頻率范圍窄,分辨率不高。
本文以控制5路步進(jìn)電機(jī)為例,采用現(xiàn)場(chǎng)可編程門陣列(FPGA)利用直接數(shù)字頻率合成(Direct Distal Frequency Synthesis,DDS)算法實(shí)現(xiàn)了的5路脈沖輸出,并設(shè)計(jì)了SPI接口與DSP芯片通訊。這種方案有效減輕了控制系統(tǒng)中DSP的負(fù)擔(dān),而且實(shí)現(xiàn)了較高分辨率的脈沖輸出,提升了多軸聯(lián)動(dòng)的效果。
系統(tǒng)主要由三個(gè)部分組成,如圖1所示。DSP采用TI公司的TMS320F28335芯片,主要用于空間軌跡的規(guī)劃計(jì)算,通過(guò)求解逆運(yùn)動(dòng)學(xué)方程,得出各個(gè)軸在不同時(shí)刻的位移量,然后再轉(zhuǎn)換成脈沖的數(shù)量和頻率,通過(guò)通信口發(fā)送給FPGA處理。FPGA用的是Altera公司的EP2C5T144C8N芯片,通過(guò)設(shè)計(jì)SPI通信模塊,接收DSP的脈沖信息,然后通過(guò)脈沖生成模塊完成對(duì)5路脈沖數(shù)量和頻率的控制。步進(jìn)電機(jī)為三相混合電機(jī),驅(qū)動(dòng)器型號(hào)為斯達(dá)特的MSa-3H110M,設(shè)置為脈沖加方向的控制模式。
圖1 總系統(tǒng)框圖
本文通過(guò)對(duì)利用DSP的脈沖模塊生成脈沖的方法與采用DDS算法生成脈沖的方法進(jìn)行了介紹和比較,闡明了后者控制算法的優(yōu)越性。
TMS320F28335有多達(dá)6路獨(dú)立的PWM模塊,可以同時(shí)產(chǎn)生6路獨(dú)立的PWM。PWM頻率是由周期寄存器TBPRD和計(jì)數(shù)器模式?jīng)Q定的,現(xiàn)將PWM模塊工作于增計(jì)數(shù)模式。每步增加時(shí)間由時(shí)基時(shí)鐘TBCLK決定,TBCLK由系統(tǒng)時(shí)鐘SYSCLKOUT標(biāo)定,系統(tǒng)時(shí)鐘SYSCLKOUT設(shè)置為150MHz。
由DSP芯片手冊(cè),見(jiàn)參考文獻(xiàn)[3],可得在增計(jì)數(shù)模式下PWM頻率的計(jì)算公式:
其中,SYSCLKOUT=150000000,寄存器HSPCLKDIV設(shè)為1,寄存器CLKDIV設(shè)為64,整理后得:
由公式(3)可知更改寄存器TBPRD就可以改變PWM頻率。
表1給出了生成PWM頻率的范圍。周期寄存器TBPRD是16位寄存器,能表示的十進(jìn)制的范圍為0-65535,超出這個(gè)范圍的頻率無(wú)法產(chǎn)生。并且當(dāng)忽略小數(shù)部分的時(shí)候,會(huì)影響輸出頻率的精度。從數(shù)據(jù)結(jié)果可以得出,由PWM模塊生成的脈沖頻率范圍很窄,在當(dāng)前寄存器配置情況下頻率范圍在30Hz和500KHz之間,這樣就帶來(lái)了電機(jī)調(diào)速的局限性,只能在很小的范圍內(nèi)進(jìn)行調(diào)速。
從表1格數(shù)據(jù)可以看出在35Hz到3000Hz之間PWM的分辨率較高,精度大于1Hz,而在頻率相對(duì)較高的時(shí)候(10KHz以上),分辨率很差,步進(jìn)頻率大于5Hz,在多軸聯(lián)動(dòng)的情況下,容易產(chǎn)生某個(gè)運(yùn)動(dòng)軸運(yùn)動(dòng)過(guò)快或者過(guò)慢,造成機(jī)械臂的抖動(dòng)。
從上述結(jié)果可以得出,由DSP芯片生成的PWM脈沖頻率范圍和分辨率不理想,實(shí)際使用范圍有限。
采用DDS算法實(shí)現(xiàn)了多路脈沖的發(fā)生功能,同時(shí)設(shè)計(jì)了SPI通訊接口和通信協(xié)議完成對(duì)脈沖的控制。
表1 生成頻率與周期寄存器值對(duì)照表
2.2.1 DDS算法實(shí)現(xiàn)
DDS是用于頻率合成的一種方法[4],在給定時(shí)鐘脈沖的驅(qū)動(dòng)下,相位累加器和頻率控制控制字進(jìn)行累加運(yùn)算,然后將結(jié)果作為下一次的輸入值,其原理圖如圖2所示。相位累加器的溢出的頻率就是所合成信號(hào)的頻率,通過(guò)改變累加寄存器的計(jì)數(shù)步長(zhǎng)就可以更改輸出波形的頻率。
圖2 DDS原理圖
合成信號(hào)的頻率f和和頻率控制字K滿足以下函數(shù)關(guān)系式:
本文中FPGA的輸入時(shí)鐘為50MHz,為了產(chǎn)生步進(jìn)為1Hz的脈沖頻率,現(xiàn)在將累加寄存器N計(jì)數(shù)最大值設(shè)為50M,當(dāng)K=1時(shí),DDS頻率分辨率的1/N。
采用Verilog HDL語(yǔ)言設(shè)計(jì)程序如下:
上述程序是用于產(chǎn)生單路脈沖的方法,可以看出采用DDS算法生成脈沖的程序編寫簡(jiǎn)單。多路脈沖只需要在單路的基礎(chǔ)上復(fù)制和稍加修改就能實(shí)現(xiàn)。其中,改變data_memory的值就能實(shí)現(xiàn)脈沖頻率的改變,數(shù)值每增加1,相應(yīng)的脈沖頻率就增加1Hz,即脈沖步進(jìn)為1Hz,能夠?qū)崿F(xiàn)高分辨率的脈沖輸出。通過(guò)對(duì)cnt11的讀取就能得出已發(fā)出的脈沖數(shù)量,實(shí)現(xiàn)對(duì)脈沖數(shù)量的控制。
2.2.2 SPI模塊的設(shè)計(jì)
為了讓DSP能夠?qū)崿F(xiàn)對(duì)脈沖頻率和數(shù)量的控制,需要在FPGA上設(shè)計(jì)通信模塊和相關(guān)協(xié)議。SPI的通信簡(jiǎn)單,只需4根線就能完成全雙工、高速、同步的通訊[5],非常易于在FPGA上實(shí)現(xiàn)。SPI總線的的時(shí)序如圖3所示。
圖3 SPI時(shí)序圖
最終采用Verilog HDL語(yǔ)言編寫完成后的SPI模塊如圖4所示。
圖4 SPI模塊框圖
其中,SCK為SPI時(shí)鐘;SDI為數(shù)據(jù)串行輸入端口;SDO為數(shù)據(jù)串行輸出端口;CS為片選信號(hào);R/W為讀寫信號(hào);DATA為輸出寄存器,用于將接收到的數(shù)據(jù)發(fā)送給脈沖產(chǎn)生模塊處理。SPI模塊接收完一個(gè)完整的數(shù)據(jù)包后,還需要將脈沖數(shù)據(jù)存入對(duì)應(yīng)的脈沖產(chǎn)生模塊的寄存器中。
通信協(xié)議可以自定義,只需將每個(gè)軸的脈沖頻率、數(shù)量和方向按自定義格式放在SPI總線上發(fā)送即可,F(xiàn)PGA就能根據(jù)協(xié)議進(jìn)行數(shù)據(jù)分析,控制各軸的脈沖輸出。
實(shí)驗(yàn)中利用DSP芯片通過(guò)SPI總線發(fā)送5路脈沖的頻率和數(shù)量的信息,利用示波器觀察FPGA輸出的波形(如圖6所示)。發(fā)送協(xié)議如圖5所示,依次發(fā)送的是從第一個(gè)軸到第五個(gè)軸的脈沖數(shù)量和頻率。
表2 脈沖輸出對(duì)照表
圖5 SPI通訊協(xié)議
從表2可以觀察出,控制器能夠準(zhǔn)確解析通信協(xié)議,實(shí)際輸出的脈沖與理論要求的值吻合。并且輸出脈沖在1Hz~50KHz范圍內(nèi),波形特性良好,可以滿足電機(jī)聯(lián)動(dòng)控制的要求,如圖6所示。
圖6 五路聯(lián)動(dòng)步進(jìn)脈沖信號(hào)
本文主要研究了基于FPGA實(shí)現(xiàn)多路脈沖的輸出控制,為多軸聯(lián)動(dòng)提供了硬件基礎(chǔ),可以讓上位機(jī)專注于運(yùn)動(dòng)控制算法的處理,無(wú)需操作底層的脈沖輸出,提升運(yùn)動(dòng)控制系統(tǒng)的運(yùn)行效率,并在實(shí)際中得到很好的應(yīng)用。
[1]許賢澤,喻佳,張立英.步進(jìn)電機(jī)多軸聯(lián)動(dòng)DSP控制系統(tǒng)研究[J].機(jī)電產(chǎn)品開(kāi)發(fā)與創(chuàng)新,2005,18(5):110-112.
[2]童勇鑫.基于TMS320F2812的模擬數(shù)控系統(tǒng)[J].機(jī)械,2008,35(11):68-69.
[3]Texas Instruments.Digital Signal Controller (DSC)[DB/OL].http://www.ti.com.cn/cn/lit/ds/symlink/sm320f28335.pdf.
[4]楊秀增.基于FPGA和DDS的信號(hào)源設(shè)計(jì)[J].電子設(shè)計(jì)工程,2009,17(11):7-8.
[5]華卓立,姚若河.一種通用SPI總線接口的FPGA設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2008,24(17):212-213.
The design of 5-axis coordinate controller based on FPGA
LING Song1, LUO Min-zhou2, WANG Shan-jie3
在機(jī)器人運(yùn)動(dòng)控制系統(tǒng)中,利用脈沖增量法進(jìn)行多軸聯(lián)動(dòng)控制時(shí),需要在運(yùn)行過(guò)程中實(shí)時(shí)改變
各軸伺服電機(jī)的脈沖數(shù)量和頻率,以保證機(jī)械臂能夠準(zhǔn)確經(jīng)過(guò)期望路徑點(diǎn)。本文利用FPGA芯片,采用DDS算法實(shí)現(xiàn)了高精度5路脈沖的產(chǎn)生,并且設(shè)計(jì)了SPI接口和通訊協(xié)議與DSP主控芯片通信,完成了5路脈沖的實(shí)時(shí)控制。文中通過(guò)對(duì)比直接采用DSP芯片內(nèi)部PWM模塊來(lái)生成多路脈沖的方法,從產(chǎn)生的脈沖頻率精度,范圍以及控制方式上,闡明該控制方法的優(yōu)勢(shì)。最后采用Altera公司的EP2C5T144C8N搭建了硬件控制實(shí)驗(yàn)平臺(tái),實(shí)現(xiàn)了對(duì)五個(gè)步進(jìn)電機(jī)的聯(lián)動(dòng)控制。
FPGA,DDS算法;步進(jìn)電機(jī);多軸聯(lián)動(dòng)
凌松(1986 -),男,江蘇常州人,碩士,主要研究方向?yàn)闄C(jī)器人和嵌入式系統(tǒng)。
TP271
A
1009-0134(2014)06(上)-0138-03
10.3969/j.issn.1009-0134.2014.06(上).39
2014-03-11