本發(fā)明一種基于fpga的永磁同步電機(jī)svpwm的實(shí)現(xiàn)方法屬于中等功率永磁同步電機(jī)控制技術(shù)領(lǐng)域。
背景技術(shù):
永磁同步電機(jī)(pmsm)因其優(yōu)良的性能和多樣結(jié)構(gòu),近年來在各個(gè)行業(yè)都得到廣泛的應(yīng)用,從普通的控制驅(qū)動(dòng)到高精度的伺服驅(qū)動(dòng),從日常的生活到國防等各種高精尖的科技領(lǐng)域。但是由于多變量、強(qiáng)耦合、非線性等特性,使得控制系統(tǒng)存在系統(tǒng)復(fù)雜、成本高等不足,因此選擇合適的控制系統(tǒng)才能發(fā)揮好永磁同步電機(jī)的優(yōu)點(diǎn)。矢量控制方式(svpwm)的提出使得永磁同步電機(jī)調(diào)速技術(shù)產(chǎn)生了一次質(zhì)的飛越,但是svpwm算法的實(shí)現(xiàn)過程比較復(fù)雜,需要實(shí)時(shí)進(jìn)行速度反饋和位置角計(jì)算,傳統(tǒng)的單片機(jī)(mcu)很難滿足,因此一般要求采用基于數(shù)字信號處理器(dsp)技術(shù)以軟件的方式實(shí)現(xiàn),這種方法的優(yōu)點(diǎn)是比較靈活、實(shí)現(xiàn)簡單。但是對于多電機(jī)控制等場合,單片dsp已經(jīng)不能滿足設(shè)計(jì)要求;另外,由于單片dsp計(jì)算速度慢、開發(fā)周期長等弱點(diǎn),在一些高精度、高穩(wěn)定性的場合,不得不摒棄這種方式。本發(fā)明提出采用基于fpga的永磁同步電機(jī)svpwm實(shí)現(xiàn)方法能夠有效避免這些缺陷。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的:本發(fā)明實(shí)現(xiàn)了一種基于fpga的永磁同步電機(jī)svpwm的實(shí)現(xiàn)方法,基于現(xiàn)場可編程門陣列(fpga)的硬件實(shí)現(xiàn)方法能在最短時(shí)間內(nèi)設(shè)計(jì)出自己的專用集成電路,減小成本、縮短開發(fā)周期。因此本發(fā)明構(gòu)建了基于fpga的svpwm控制方法,實(shí)現(xiàn)了矢量變換算法、pwm調(diào)制模塊、電流及速度pi調(diào)節(jié)器等各種控制模塊,使得這些模塊和ip(intellectualproperty)核復(fù)用率高,算法并行執(zhí)行、節(jié)省計(jì)算時(shí)間,以硬件電路的方式實(shí)現(xiàn)軟件算法,同時(shí)由于具有良好的可重復(fù)編程的特性,可以很方便的對算法進(jìn)行修改或升級,從而縮短控制器設(shè)計(jì)周期并大大節(jié)約產(chǎn)品升級換代的成本。另外,本發(fā)明中控制算法并行執(zhí)行,可進(jìn)行多通道控制擴(kuò)展,提升控制精度。
本發(fā)明的技術(shù)方案:一種基于fpga的永磁同步電機(jī)svpwm的實(shí)現(xiàn)方法,本方法應(yīng)用于中等功率永磁同步電機(jī)伺服控制系統(tǒng),該系統(tǒng)包括svpwm控制中的矢量變換模塊、svpwm調(diào)制模塊、pi控制器模塊、電機(jī)轉(zhuǎn)子的轉(zhuǎn)角θ檢測和cordic算法模塊及電機(jī)轉(zhuǎn)子轉(zhuǎn)速計(jì)算等控制模塊,所述方法采取以下步驟:
1)利用硬件加法和移位處理,設(shè)計(jì)二進(jìn)制有符號數(shù)乘法器和二進(jìn)制無符號數(shù)除法器,在坐標(biāo)變換模塊和pi控制器模塊中進(jìn)行復(fù)用;
2)為pi控制器模塊預(yù)先設(shè)置兩個(gè)輸入變量,同時(shí)通過預(yù)留kp、ki參數(shù)注入接口,使得kp、ki參數(shù)通過串口進(jìn)行加載;
3)根據(jù)離散域pi控制器的公式(1),將pi控制器模塊兩個(gè)輸入量做差得到誤差;將誤差通過有符號乘法器乘以kp參數(shù),得到誤差的比例放大結(jié)果,其中kp為比例環(huán)節(jié)參數(shù);
4)根據(jù)公式(1),將誤差通過有符號乘法器乘以ki參數(shù),得到誤差的積分放大結(jié)果,其中ki為積分環(huán)節(jié)參數(shù);
5)將步驟4)中得到的第k次誤差的積分放大結(jié)果和第k-1次計(jì)算得到的積分環(huán)節(jié)計(jì)算結(jié)果相加,得到第k次積分環(huán)節(jié)計(jì)算結(jié)果,將這一步結(jié)果進(jìn)行鎖存;
6)為步驟3)和步驟5)的計(jì)算結(jié)果設(shè)置上下限,形成ip核,將pi控制器模塊在轉(zhuǎn)速環(huán)和電流環(huán)中進(jìn)行復(fù)用;
7)針對cordic算法原理計(jì)算電機(jī)轉(zhuǎn)子的轉(zhuǎn)角θ的正余弦結(jié)果,預(yù)先設(shè)定cordic算法模塊輸入矢量(xi,yi),同時(shí)假設(shè)轉(zhuǎn)角θ為一系列基本角θi之和,其中i=0,1,2…,n-1,并且tanθi=±2i,則輸入矢量(xi,yi)按照θi的角度進(jìn)行一定次數(shù)的連續(xù)旋轉(zhuǎn),通過累加轉(zhuǎn)角之和與目標(biāo)角的關(guān)系判定旋轉(zhuǎn)方向,若第0次至第i次旋轉(zhuǎn)角的累加之和不大于轉(zhuǎn)角θ,則第i+1次時(shí)輸入矢量(xi,yi)進(jìn)行正向旋轉(zhuǎn)得到矢量(xi+1,yi+1);若若第0次至第i次旋轉(zhuǎn)角的累加之和小于等于轉(zhuǎn)角θ,則第i+1次時(shí)輸入矢量(xi,yi)進(jìn)行反向旋轉(zhuǎn)得到矢量(xi+1,yi+1);當(dāng)?shù)?次至第n次旋轉(zhuǎn)角的累加之和與轉(zhuǎn)角θ無限逼近時(shí),即矢量(xn,yn)得到逼近目標(biāo)轉(zhuǎn)角的正余弦函數(shù)值;形成cordic算法模塊,在進(jìn)行坐標(biāo)變換時(shí)能夠?qū)λ鯿ordic算法模塊進(jìn)行調(diào)用;
8)調(diào)用有符號乘法器和無符號除法器,坐標(biāo)變換模塊的輸入變量為iv,iw,根據(jù)公式(2)計(jì)算得到輸出變量id,iq;
9)根據(jù)扇區(qū)判斷單元、有效矢量作用時(shí)間計(jì)算單元、逆變器開關(guān)時(shí)間計(jì)算單元,計(jì)算出pwm波的作用時(shí)間,通過pwm波生成單元加入死區(qū)時(shí)間,生成pwm波控制逆變器進(jìn)而驅(qū)動(dòng)永磁同步電機(jī)。
一種基于fpga的永磁同步電機(jī)svpwm的實(shí)現(xiàn)方法,所述步驟3到步驟5中根據(jù)公式(3),將pi控制器模塊兩個(gè)輸入量做差得到第k次誤差;將第k次誤差減去第k-1次誤差,得到相鄰兩次誤差的差值;將相鄰兩次誤差的差值通過有符號乘法器乘以kp參數(shù),得到誤差的比例環(huán)節(jié)計(jì)算結(jié)果,其中kp為比例環(huán)節(jié)參數(shù);將第k次誤差通過有符號乘法器乘以ki參數(shù),得到誤差的積分環(huán)節(jié)計(jì)算結(jié)果,其中ki為積分環(huán)節(jié)參數(shù);將比例環(huán)節(jié)計(jì)算結(jié)果加上積分環(huán)節(jié)計(jì)算結(jié)果得到第k次pi環(huán)節(jié)的增量;將第k-1次pi環(huán)節(jié)的計(jì)算結(jié)果加上第k次pi環(huán)節(jié)的增量得到第k次pi環(huán)節(jié)的計(jì)算結(jié)果。
一種基于fpga的永磁同步電機(jī)svpwm的實(shí)現(xiàn)方法,所述步驟7中可以根據(jù)查表法計(jì)算電機(jī)轉(zhuǎn)子的轉(zhuǎn)角θ的正余弦值;將-π~+π范圍內(nèi)的角度的正弦值和余弦值預(yù)先存于rom表中;根據(jù)電機(jī)轉(zhuǎn)子的轉(zhuǎn)角θ在rom表查找對應(yīng)的正余弦值。
一種基于fpga的永磁同步電機(jī)svpwm的實(shí)現(xiàn)方法,所述步驟9中,根據(jù)扇區(qū)判斷單元、有效矢量作用時(shí)間計(jì)算單元、逆變器開關(guān)時(shí)間計(jì)算單元,計(jì)算出pwm波的作用時(shí)間,通過5段式pwm生成單元加入死區(qū)時(shí)間,生成pwm波控制逆變器進(jìn)而驅(qū)動(dòng)永磁同步電機(jī);
本發(fā)明的優(yōu)點(diǎn):
本發(fā)明所述的一種基于fpga的永磁同步電機(jī)svpwm實(shí)現(xiàn)方法,采用top-down設(shè)計(jì)思想和基于eda模塊化的設(shè)計(jì)方法,將復(fù)雜的矢量控制算法通過并行的硬件電路實(shí)現(xiàn),得到的ip軟核下載到fpga芯片后相當(dāng)于硬件asic。本發(fā)明中采用cordic(coordinaterotationdigitalcomputer)算法,可實(shí)現(xiàn)運(yùn)算精度高、占用資源少、運(yùn)算速度快等特點(diǎn)。在多電機(jī)控制中,相較于單dsp控制方式下,電機(jī)控制順序執(zhí)行的缺陷,采用基于fpga的方式,可以使得多電機(jī)控制并行執(zhí)行,從而縮短控制周期,提升控制精度。
附圖說明
圖1為永磁同步電機(jī)svpwm控制框圖
圖2為7段式pwm波生成單元框圖
圖3為n與扇區(qū)號的對應(yīng)關(guān)系
圖4為扇區(qū)號、x、y、z與cmpx、cpmy的關(guān)系
具體實(shí)施方式
下面結(jié)合附圖對本發(fā)明進(jìn)行詳細(xì)的說明。
一種基于fpga的永磁同步電機(jī)svpwm的實(shí)現(xiàn)方法,本方法應(yīng)用于中等功率永磁同步電機(jī)伺服控制系統(tǒng),如圖1所示。該系統(tǒng)包括svpwm控制中的矢量變換模塊、svpwm調(diào)制模塊、7段式pwm波生成單元,如圖2所示,pi控制器模塊、電機(jī)轉(zhuǎn)子的轉(zhuǎn)角θ檢測和cordic算法模塊及電機(jī)轉(zhuǎn)子轉(zhuǎn)速計(jì)算等控制模塊,所述方法采取以下步驟:
1)由于fpga中無法表示小數(shù),因此需要對fpga中的運(yùn)算數(shù)據(jù)進(jìn)行整體移位處理。在fpga中設(shè)計(jì)30位寬的硬件乘法器,然后利用fpga中的硬件加法和移位處理,設(shè)計(jì)二進(jìn)制有符號數(shù)乘法器和二進(jìn)制無符號數(shù)除法器。例如,乘以3/2可以表示為乘以(1+1/2),乘以1等效于左移1位,乘以1/2等效于右移1位。通過硬件加法和移位處理完成乘法器模塊和除法模塊的設(shè)計(jì)。在坐標(biāo)變換模塊和pi控制器模塊中進(jìn)行復(fù)用;
2)為pi控制器模塊預(yù)先設(shè)置兩個(gè)輸入變量
3)根據(jù)離散域pi控制器的公式(4),將pi控制器模塊兩個(gè)輸入量做差得到誤差;將誤差通過有符號乘法器乘以kp參數(shù),得到誤差的比例放大結(jié)果,其中kp為比例環(huán)節(jié)參數(shù);
4)根據(jù)公式(1),將誤差通過有符號乘法器乘以ki參數(shù),得到誤差的積分放大結(jié)果,其中ki為積分環(huán)節(jié)參數(shù);
5)將步驟4)中得到的第k次誤差的積分放大結(jié)果和第k-1次計(jì)算得到的積分環(huán)節(jié)計(jì)算結(jié)果相加,得到第k次積分環(huán)節(jié)計(jì)算結(jié)果,將這一步結(jié)果進(jìn)行鎖存;
6)為步驟3)和步驟5)的計(jì)算結(jié)果設(shè)置上下限,形成ip核,將pi控制器模塊在轉(zhuǎn)速環(huán)和電流環(huán)中進(jìn)行復(fù)用;
7)針對cordic算法原理計(jì)算電機(jī)轉(zhuǎn)子的轉(zhuǎn)角θ的正余弦結(jié)果,預(yù)先設(shè)定cordic算法模塊輸入矢量(xi,yi),同時(shí)假設(shè)轉(zhuǎn)角θ為一系列基本角θi之和,其中i=0,1,2…,n-1,并且tanθi=±2i,則輸入矢量(xi,yi)按照θi的角度進(jìn)行一定次數(shù)的連續(xù)旋轉(zhuǎn),通過累加轉(zhuǎn)角之和與目標(biāo)角的關(guān)系判定旋轉(zhuǎn)方向,若第0次至第i次旋轉(zhuǎn)角的累加之和不大于轉(zhuǎn)角θ,則第i+1次時(shí)輸入矢量(xi,yi)進(jìn)行正向旋轉(zhuǎn)得到矢量(xi+1,yi+1);若若第0次至第i次旋轉(zhuǎn)角的累加之和小于等于轉(zhuǎn)角θ,則第i+1次時(shí)輸入矢量(xi,yi)進(jìn)行反向旋轉(zhuǎn)得到矢量(xi+1,yi+1);當(dāng)?shù)?次至第n次旋轉(zhuǎn)角的累加之和與轉(zhuǎn)角θ無限逼近時(shí),即矢量(xn,yn)得到逼近目標(biāo)轉(zhuǎn)角的正余弦函數(shù)值;形成cordic算法模塊,在進(jìn)行坐標(biāo)變換時(shí)能夠?qū)λ鯿ordic算法模塊進(jìn)行調(diào)用;
8)調(diào)用有符號乘法器和無符號除法器,坐標(biāo)變換模塊的輸入變量為iv,iw,根據(jù)公式(5)計(jì)算得到輸出變量id,iq;
9)根據(jù)扇區(qū)判斷單元的兩個(gè)輸入變量計(jì)算扇區(qū)號。預(yù)設(shè)扇區(qū)判斷單元的兩個(gè)輸入變量為uα、uβ,同時(shí)三個(gè)內(nèi)部變量a、b、c。當(dāng)uβ>0時(shí),則變量a=1,否則a=0;當(dāng)
10)根據(jù)有效電壓矢量作用時(shí)間計(jì)算單元,計(jì)算出基本電壓矢量作用時(shí)間。首先假定3個(gè)輸入量uα、uβ和udc,2個(gè)輸出量cmpx、cmpy。根據(jù)公式(6),計(jì)算出3個(gè)內(nèi)部變量x、y、z的結(jié)果。其中tpwm為開關(guān)周期常量。同時(shí)根據(jù)圖4中扇區(qū)號、x、y、z與cmpx、cpmy的對應(yīng)關(guān)系得到cmpx、cmpy的結(jié)果。
11)逆變器開關(guān)時(shí)間計(jì)算單元,計(jì)算得到6路pwm的作用時(shí)間。首先假定2個(gè)輸入量cmpx、cpmy,3個(gè)輸出量cmpa、cmpb、cmpc以及3個(gè)中間變量cmpl、cmpm、cmph。根據(jù)公式(7)計(jì)算出cmpl、cmpm、cmph的結(jié)果。再根據(jù)圖2所示賦值表得到cmpa、cmpb、cmpc結(jié)果。
12)通過7段式pwm波生成單元(如圖2所示)加入死區(qū)時(shí)間,生成pwm波控制逆變器進(jìn)而驅(qū)動(dòng)永磁同步電機(jī)。
根據(jù)權(quán)利要求1所述一種基于fpga的永磁同步電機(jī)svpwm的實(shí)現(xiàn)方法,其特征在于,所述步驟3到步驟5中根據(jù)公式(3),將pi控制器模塊兩個(gè)輸入量做差得到第k次誤差;將第k次誤差減去第k-1次誤差,得到相鄰兩次誤差的差值;將相鄰兩次誤差的差值通過有符號乘法器乘以kp參數(shù),得到誤差的比例環(huán)節(jié)計(jì)算結(jié)果,其中kp為比例環(huán)節(jié)參數(shù);將第k次誤差通過有符號乘法器乘以ki參數(shù),得到誤差的積分環(huán)節(jié)計(jì)算結(jié)果,其中ki為積分環(huán)節(jié)參數(shù);將比例環(huán)節(jié)計(jì)算結(jié)果加上積分環(huán)節(jié)計(jì)算結(jié)果得到第k次pi環(huán)節(jié)的增量;將第k-1次pi環(huán)節(jié)的計(jì)算結(jié)果加上第k次pi環(huán)節(jié)的增量得到第k次pi環(huán)節(jié)的計(jì)算結(jié)果。
根據(jù)權(quán)利要求1所述的一種基于fpga的永磁同步電機(jī)svpwm的實(shí)現(xiàn)方法,其特征在于,所述步驟7中可以根據(jù)查表法計(jì)算電機(jī)轉(zhuǎn)子的轉(zhuǎn)角θ的正余弦值;將-π~+π范圍內(nèi)的角度的正弦值和余弦值預(yù)先存于rom表中;根據(jù)電機(jī)轉(zhuǎn)子的轉(zhuǎn)角θ在rom表查找對應(yīng)的正余弦值。
根據(jù)權(quán)利要求1所述的一種基于fpga的永磁同步電機(jī)svpwm的實(shí)現(xiàn)方法,其特征在于,所述步驟9中,根據(jù)扇區(qū)判斷單元、有效矢量作用時(shí)間計(jì)算單元、逆變器開關(guān)時(shí)間計(jì)算單元,計(jì)算出pwm波的作用時(shí)間,通過5段式pwm生成單元加入死區(qū)時(shí)間,生成pwm波控制逆變器進(jìn)而驅(qū)動(dòng)永磁同步電機(jī)。
實(shí)施例一
假定步驟9)中輸入兩個(gè)輸入變量uα、uβ分別為0.3和0.2,根據(jù)步驟9)計(jì)算出n=3,對應(yīng)的扇區(qū)號為i。步驟10)中輸入變量udc為1,開關(guān)周期常量tpwm為1,則計(jì)算得到x=0.2828,y=0.5089,z=0.2260,則得到cmpx=0.2260,cmpy=0.2828。根據(jù)步驟11)計(jì)算得到cmpl=0.1228,cpmm=0.2358,cmpph=0.4006,由此得到3路pwm信號作用時(shí)間為cpma=0.0994,cmpb=0.2592,cmpc=0.4006,另外3路pwm信號的作用時(shí)間與這三路分別互補(bǔ)。
實(shí)施例二
假定步驟9)中輸入兩個(gè)輸入變量uα、uβ分別為0.4和0.3,根據(jù)步驟9)計(jì)算出n=3,對應(yīng)的扇區(qū)號為i。步驟10)中輸入變量udc為1,開關(guān)周期常量tpwm為1,則計(jì)算得到x=0.4242,y=0.7018,z=0.2278,則得到cmpx=0.2278,cmpy=0.4242。根據(jù)步驟11)計(jì)算得到cmpl=0.0870,cpmm=0.2009,cmpph=0.4130,由此得到3路pwm信號作用時(shí)間為cpma=0.0870,cmpb=0.2009,cmpc=0.4130,另外3路pwm信號的作用時(shí)間與這三路分別互補(bǔ)。
實(shí)施例三
假定步驟9)中輸入兩個(gè)輸入變量uα、uβ分別為0.2和0.5,根據(jù)步驟9)計(jì)算出n=1,對應(yīng)的扇區(qū)號為ii。步驟10)中輸入變量udc為1,開關(guān)周期常量tpwm為1,則計(jì)算得到x=0.7070,y=0.5986,z=-0.1086,則得到cmpx=0.1686,cmpy=0.5986。根據(jù)步驟11)計(jì)算得到cmpl=0.0582,cpmm=0.1425,cmpph=0.4418,由此得到3路pwm信號作用時(shí)間為cpma=0.1425,cmpb=0.0582,cmpc=0.4418,另外3路pwm信號的作用時(shí)間與這三路分別互補(bǔ)。