卿金暉, 胡黃水, 王宏志
(長春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 吉林 長春 130012)
現(xiàn)有的無刷直流電機(jī)(Brushless Direct Current Motor, BLDCM)控制算法大多采用PID控制算法,經(jīng)典的PID控制主要是針對準(zhǔn)確的模型有較好的控制效果,但隨著科技的發(fā)展,無論是在工業(yè)控制還是醫(yī)療行業(yè),設(shè)計(jì)的產(chǎn)品控制系統(tǒng)更為復(fù)雜,更容易出現(xiàn)非線性、耦合等問題,從而影響電機(jī)的控制精度,所以對電機(jī)的控制方法提出了更高要求。
為了解決上述問題,許多學(xué)者對無刷直流電機(jī)的PID控制器進(jìn)行研究[1-3]。文獻(xiàn)[4-5]采用FPGA設(shè)計(jì)PID控制器,雖然在硬件設(shè)計(jì)上避免了單片機(jī)、DSP等芯片自身資源不足,無法實(shí)現(xiàn)復(fù)雜的控制系統(tǒng)等問題,但實(shí)際上實(shí)現(xiàn)的還是經(jīng)典PID算法,非線性、滯后性現(xiàn)象仍然存在,依舊無法滿足現(xiàn)代化工藝設(shè)計(jì)需求。文獻(xiàn)[6-7]針對無刷直流電機(jī)調(diào)速系統(tǒng)的PI調(diào)節(jié)器中參數(shù)無法隨系統(tǒng)參數(shù)的變化而變化的問題,設(shè)計(jì)了模糊PI控制系統(tǒng),并通過daPIC30F4011設(shè)計(jì)了模糊PI控制器,但不考慮微分部分,無法避免控制器中產(chǎn)生的振蕩等問題。
文中針對傳統(tǒng)PID控制器不能滿足現(xiàn)有復(fù)雜控制系統(tǒng)對控制精度的要求,設(shè)計(jì)了基于FPGA的無刷直流電機(jī)模糊PID控制器,仿真結(jié)果表明,設(shè)計(jì)的模糊PID控制系統(tǒng)具有響應(yīng)時(shí)間短、控制精度高等優(yōu)點(diǎn)。
常規(guī)的PID控制原理是根據(jù)期望輸出r(t)與實(shí)際輸出y(t)之間的誤差e(t)作為輸入,對輸入的誤差e(t)進(jìn)行比例、積分及微分運(yùn)算,控制調(diào)節(jié)輸出u(k),對電機(jī)進(jìn)行實(shí)時(shí)控制[8-10],其誤差信號可表示為
e(t)=r(t)-y(t)。
(1)
常規(guī)的PID控制算法數(shù)學(xué)表達(dá)式可表示為
(2)
式中:kp----比例系數(shù);
Ti----積分系數(shù);
Td----微分系數(shù)。
將其離散化,得到k時(shí)刻的輸出
(3)
同樣,k-1時(shí)刻輸出
u(k-1)=
(4)
式(3)減去式(4)可得出PID控制器輸出增量
Δu(k)=u(k)-u(k-1)=
Ae(k)+Be(k-1)+Ce(k-2),
(5)
遞歸控制輸出為
u(k)=u(k-1)+Δu(k)=
u(k-1)+Ae(k)+Be(k-1)+Ce(k-2),
(6)
其中
(7)
增量式PID結(jié)構(gòu)框架如圖1所示。
圖1 增量式PID結(jié)構(gòu)框架
模糊PID控制原理是在常規(guī)PID控制器的基礎(chǔ)上添加模糊控制器對PID控制器中的kp,ki,kd三個(gè)參數(shù)進(jìn)行修改[11]。
(8)
圖2 模糊PID控制原理
模糊控制器無法直接使用精確值,需將其進(jìn)行模糊化處理。文中首先對輸入的誤差和誤差變化率進(jìn)行模糊化,然后設(shè)置模糊語言變量和論域,最后通過模糊控制器得到相應(yīng)的輸出模糊量[12]。誤差和誤差變化率的模糊語言變量設(shè)置為:負(fù)大(NB)、負(fù)中(NM)、負(fù)小(NS)、零(ZO)、正小(PS)、正中(PM)、正大(PB),它們的論域?yàn)閇-3,3][11],因此,文中輸入變量e和輸出變量kp的隸屬函數(shù)分別如圖3和圖4所示。
圖3 輸入變量e的隸屬函數(shù)
圖4 輸出變量kp的隸屬函數(shù)
模糊控制規(guī)則是模糊控制器的關(guān)鍵,運(yùn)用合適的模糊規(guī)則可以使控制效果達(dá)到最佳[13]。
文中在不同的|e|,|ec|下,對被控對象參數(shù)kp,ki,kd的自整定要求如下:
1)當(dāng)|e|較大時(shí),需要較好的快速跟蹤功能,取較大的kp和較小的kd,同時(shí)需防止超調(diào),需要對積分項(xiàng)進(jìn)行限制,可以使ki=0。
2)當(dāng)|e|中等大小時(shí),為使系統(tǒng)響應(yīng)具有較小的超調(diào),取較小的kp,同時(shí)取適中大小的ki和kd。
3)當(dāng)|e|較小時(shí),系統(tǒng)將趨于穩(wěn)定,此時(shí)系統(tǒng)具有較好的穩(wěn)定性,取較大的kp和ki。為避免系統(tǒng)在設(shè)定值附近振蕩,kd由此時(shí)的|ec|決定:|ec|較小時(shí),取較大的kd;|ec|較大時(shí),取較小的kd。
依據(jù)式(8)將kp,ki,kd做出相應(yīng)變換,文中通過在Matlab中的仿真結(jié)果以及專家經(jīng)驗(yàn),建立了Δkp,Δki,Δkd的模糊規(guī)則表,分別見表1~表3。
表1 Δkp模糊規(guī)則
表2 Δki模糊規(guī)則
表3 Δkd模糊規(guī)則
根據(jù)模糊規(guī)則推理出來的是模糊量,需要通過解模糊轉(zhuǎn)化為精確值,文中采用重心法對模糊量清晰化處理,即
(9)
式中:μj(e,ec)----隸屬度函數(shù)值;
r----模糊規(guī)則數(shù)目。
計(jì)算出清晰值后,根據(jù)清晰值得到kp,ki,kd模糊控制器查詢表,最后根據(jù)式(8)即可得到調(diào)整后的kp,ki,kd值。
根據(jù)模糊PID控制的特點(diǎn),為實(shí)現(xiàn)該控制器的實(shí)時(shí)性和穩(wěn)定性,同時(shí)在考慮價(jià)格方面之后,選用Altera的Cyclone Ⅳ系列的開發(fā)板DE2-115。模糊控制器的FPGA實(shí)現(xiàn)采用模塊化設(shè)計(jì),主要由fuzzy模塊和PID模塊兩個(gè)部分組成。模糊PID核心算法邏輯結(jié)構(gòu)如圖5所示。
圖5 模糊PID核心算法邏輯結(jié)構(gòu)
其中在PID模塊是由硬件描述語言對傳統(tǒng)的PID算法進(jìn)行描述,并增加了PID參數(shù)整定端口。fuzzy模塊完成對PID的參數(shù)調(diào)節(jié),并傳遞給PID部分。在fuzzy模塊中,使用Matlab的模糊工具平臺(tái),搭建模糊控制模型,并結(jié)合Simulink工具箱對模型進(jìn)行仿真,將合適的kp,ki,kd參數(shù)查詢表寫入Quartus的.mif文件,存儲(chǔ)在由Altera提供的IP核ROM中。可以根據(jù)反饋回來的誤差e和誤差變化率ec進(jìn)行尋址操作。當(dāng)?shù)玫侥骋粫r(shí)刻的e和ec時(shí),先對其進(jìn)行模糊化,再通過模糊值依次查找當(dāng)前時(shí)刻kp,ki,kd所對應(yīng)的清晰值,并作為輸出傳遞給下一部分。
Quartus Ⅱ RTL視圖如圖6所示。
圖6 Quartus Ⅱ RTL視圖
圖6中clk,rst_n分別為系統(tǒng)的時(shí)鐘信號和復(fù)位信號,引腳rt,y_in分別為給定轉(zhuǎn)速值和實(shí)際轉(zhuǎn)速值。f_start為模糊模塊的使能信號,當(dāng)為高電平時(shí)模糊模塊開始工作。每當(dāng)模糊模塊完成一次工作,fuzzy_done輸出一次高電平,并將通過kp,ki,kd三個(gè)引腳分別輸出此時(shí)的Δkp,Δki,Δkd值,當(dāng)PID模塊接收到Δkp,Δki,Δkd之后,通過uk引腳輸出經(jīng)過處理后的控制量。同時(shí)將PID模塊完成標(biāo)志位信號pid_done置高電平。
整個(gè)核心算法部分均采用硬件描述語言Verilog HDL進(jìn)行描述,結(jié)構(gòu)清晰,思路明了,各個(gè)部分并行運(yùn)行,大大加快了運(yùn)行速度,提高了系統(tǒng)的穩(wěn)定性。整個(gè)算法模塊均用Verilog HDL硬件描述語言構(gòu)建而成,充分利用了硬件并行執(zhí)行速度快和抗干擾性強(qiáng)的優(yōu)勢。同時(shí),整個(gè)算法的構(gòu)建采用模塊化設(shè)計(jì)思想,功能劃分清晰,具有很強(qiáng)的邏輯性和靈活性。
通過在ModelSim中對編寫的程序進(jìn)行仿真分析,設(shè)期望轉(zhuǎn)速為2 000 r/min,傳統(tǒng)PID和模糊PID的kp,ki,kd初值分別設(shè)置為1.78,0.03和2.99,硬件系統(tǒng)時(shí)鐘周期為50 MHz。在ModelSim中部分仿真如圖7所示。
圖7 ModeSim中的電機(jī)轉(zhuǎn)速仿真結(jié)果
其中fuzzy_pid表示模糊PID控制的轉(zhuǎn)速值,tr_pid表示傳統(tǒng)PID控制的轉(zhuǎn)速值。通過Matlab對ModelSim中得到的PID控制器的輸出數(shù)據(jù)進(jìn)行圓滑擬合處理,得到的擬合仿真如圖8所示。
圖8 Matlab中擬合ModeSim數(shù)據(jù)的轉(zhuǎn)速曲線
由圖中可以看出,fuzzy_pid在0.08 s的時(shí)候,轉(zhuǎn)速初步接近2 000 r/min,并在0.1 s左右轉(zhuǎn)速趨于穩(wěn)定;tr_pid在0.3 s時(shí)接近2 000 r/min,并在0.38 s時(shí)趨于穩(wěn)定。模糊PID和傳統(tǒng)PID都能在0.38 s之前達(dá)到設(shè)定值2 000 r/min的轉(zhuǎn)速。但與傳統(tǒng)的PID相比,模糊PID能更加快速地到達(dá)設(shè)定值,并且超調(diào)量小。由此可以看出,模糊PID較傳統(tǒng)PID具有響應(yīng)速度更快速、超調(diào)量更小的優(yōu)勢。
設(shè)計(jì)了基于FPGA的無刷直流電機(jī)模糊PID控制器,在傳統(tǒng)PID控制的基礎(chǔ)上增加了模糊控制算法,通過ModelSim仿真出實(shí)驗(yàn)數(shù)據(jù),利用Matlab擬合數(shù)據(jù)。結(jié)果表明,采用FPGA設(shè)計(jì)的無刷直流電機(jī)模糊PID控制器相比于傳統(tǒng)控制器具有響應(yīng)速度快、超調(diào)量小等優(yōu)點(diǎn)。