鄭浩 汪正祥 張鳳登
摘要:在FPGA上設(shè)計(jì)部署模糊自適應(yīng)PID算法,并針對(duì)典型的自動(dòng)控制對(duì)象——直線倒立擺完成穩(wěn)擺控制,以驗(yàn)證該算法的硬件可實(shí)現(xiàn)性。在直線倒立擺模型基礎(chǔ)上,運(yùn)用模糊控制理論對(duì)PID參數(shù)進(jìn)行自適應(yīng)整定,再根據(jù)模糊PID處理過(guò)程,結(jié)合離散PID算法,采用半查表加半計(jì)算方式,在Quartus II及Modelsim平臺(tái)上完成Verilog HDL的硬件編程設(shè)計(jì)與仿真。通過(guò)Simulink仿真比較可知,模糊自適應(yīng)PID相對(duì)于經(jīng)典PID控制的響應(yīng)性能指標(biāo)更優(yōu),最后基于EP4CE6E22C8N芯片,以較少的資源開(kāi)銷實(shí)現(xiàn)了控制器設(shè)計(jì)?;贔PGA的模糊自適應(yīng)PID控制器能夠充分利用該器件特性,凸顯模糊自適應(yīng)PID算法優(yōu)勢(shì),實(shí)現(xiàn)對(duì)倒立擺的實(shí)時(shí)控制。
關(guān)鍵詞:FPGA;模糊PID控制;直線倒立擺
DOI:10.11907//rjdk.192050 開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
中圖分類號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2020)006-0130-06
0 引言
倒立擺裝置是控制理論研究中一種可靠的實(shí)驗(yàn)驗(yàn)證對(duì)象,直線型倒立擺一般由擺桿、電機(jī)以及角度傳感器等組成,被廣泛應(yīng)用于科研及教學(xué)中,同時(shí)其系統(tǒng)模型與許多工業(yè)產(chǎn)品具有很大相似性。如今,智能控制理論快速發(fā)展,而倒立擺系統(tǒng)的不穩(wěn)定、非線性、強(qiáng)耦合、多變量特點(diǎn),使其成為新控制方法或理論的理想驗(yàn)證對(duì)象。李悟早等,充分討論各種控制系統(tǒng)與模糊控制相結(jié)合的優(yōu)點(diǎn)、缺點(diǎn)和適用范圍,指出不同控制理論結(jié)合程度尚淺,因而各種控制理論深度融合是控制理論的發(fā)展方向之一。模糊PID(Proportion-Integral-DiffCrential)控制是復(fù)合控制理論的代表之一,即將模糊理論應(yīng)用于PID參數(shù)整定。將其它智能控制理論,如粒子群優(yōu)化算法等與PID控制相結(jié)合展開(kāi)探究,文獻(xiàn)實(shí)現(xiàn)了基于粒子群算法的倒立擺分?jǐn)?shù)階PID參數(shù)優(yōu)化,PID傳統(tǒng)整定方法有試湊法、齊格勒一尼科爾斯經(jīng)驗(yàn)法等;傳統(tǒng)PID控制已經(jīng)得到廣泛應(yīng)用,佟遠(yuǎn)等使用MCU(Micro-Control Unit)完成PID雙閉環(huán)旋轉(zhuǎn)倒立擺設(shè)計(jì),但對(duì)于一些復(fù)雜系統(tǒng)難以做到實(shí)時(shí)有效控制;盧雍卿等等也針對(duì)傳統(tǒng)PID控制,在FPGA上實(shí)現(xiàn)了在液浮陀螺回路中的應(yīng)用;白瑞林等總結(jié)出智能控制策略實(shí)現(xiàn)有兩個(gè)顯著特點(diǎn):一是實(shí)時(shí)信息處理量遠(yuǎn)大于控制量,二是信息流往往具有實(shí)時(shí)并行性要求。而現(xiàn)場(chǎng)可編程邏輯門(mén)陣列(Field-Programmable Gate Array,F(xiàn)PGA)本質(zhì)上屆于硬件數(shù)字邏輯電路,其一大設(shè)計(jì)特點(diǎn)就是“面積換取速度”,能夠以硬件的大量并行工作替代軟件的順序指令執(zhí)行。王利等分析指出,以往模糊邏輯控制應(yīng)用基本依靠數(shù)字計(jì)算機(jī)或微處理器的軟件計(jì)算模糊邏輯量,并通過(guò)查表完成邏輯推理。綜合得出,F(xiàn)PGA相對(duì)于MCU等馮.諾依曼一哈佛體系的串行時(shí)序指令處理器而言,更適合部署智能控制策略。劉剛等在運(yùn)用FPGA完成模糊自整定PID設(shè)計(jì)時(shí),采用聯(lián)合Matlab的離線計(jì)算在線查表設(shè)計(jì)方法;黃霞等同樣使用該方法,對(duì)誤差e和誤差變化率ec在論域中的所有可能組合,按照模糊規(guī)則離線計(jì)算得出修正參數(shù)并存儲(chǔ)到ROM中,再由查表方式進(jìn)行解模糊化并輸出修正參數(shù),但這種方法需要較大的存儲(chǔ)單元消耗。Boukhalfa等實(shí)現(xiàn)了模糊PID控制器在雙星電磁電機(jī)直接轉(zhuǎn)矩控制中的應(yīng)用;Arulmozhiyal設(shè)計(jì)實(shí)現(xiàn)了基于FPGA的直流電動(dòng)機(jī)模糊PID控制器。本文將模糊PID整定過(guò)程劃分成不同模塊,改進(jìn)半查表加半計(jì)算使用策略,采用Verilog語(yǔ)言分別進(jìn)行設(shè)計(jì)驗(yàn)證,消耗的硬件資源較少,并進(jìn)行了整體時(shí)序驗(yàn)證仿真,最后基于EP4CE6E22C8N芯片搭配外圍電路,完成了硬件模糊PID控制板設(shè)計(jì)。
1 模糊自適應(yīng)PID控制器設(shè)計(jì)
1.1 模糊自適應(yīng)PID控制原理
模糊自適應(yīng)PID控制即將模糊理論與PID控制相結(jié)合,融合二者的原因主要是基于PID控制應(yīng)用的廣泛性,使一些原本經(jīng)典PID控制無(wú)法勝任的場(chǎng)合也能得以應(yīng)用。PID參數(shù)模糊自適應(yīng)方法,可以很好地彌補(bǔ)經(jīng)典PID控制的不足。本質(zhì)還是PID控制,只是使用了模糊化方法對(duì)PID參數(shù)作實(shí)時(shí)優(yōu)化。單純的智能控制理論往往不具有確定性,經(jīng)典或現(xiàn)代控制理論方法都須依靠精確的數(shù)學(xué)模型設(shè)計(jì)控制器,是確定的、收斂的設(shè)計(jì)方法。而模糊控制則是一種基于現(xiàn)實(shí)及經(jīng)驗(yàn)策略的控制方法,屬于智能控制理論,但需要在一定資源條件下才能夠獲得更出色的動(dòng)態(tài)、靜態(tài)性能。模糊控制過(guò)程可按處理過(guò)程分為模糊量化處理,按模糊控制規(guī)則作模糊決策、非模糊化處理等環(huán)節(jié)。模糊PID控制中的關(guān)鍵就是PID參數(shù)的模糊控制輸出,因此將其分為輸入變量模糊化、隸屬值模糊推理、PID參數(shù)解模糊化3個(gè)階段,如圖l所示。
結(jié)合實(shí)際系統(tǒng),首先將擺桿角度偏差及偏差變換率作為模糊輸入,對(duì)其模糊化得到輸入量的模糊子集,并計(jì)算其隸屬度,再利用模糊規(guī)則表進(jìn)行模糊推理,即對(duì)模糊矩陣表作查表處理,得出輸出量的隸屬值,最后解模糊計(jì)算得到PID參數(shù)的修正值。利用Verilog進(jìn)行硬件邏輯設(shè)計(jì)也是按照這一過(guò)程進(jìn)行功能模塊劃分。
1.2 倒立擺系統(tǒng)控制結(jié)構(gòu)
整個(gè)控制器仍是基于PID控制,控制器可以看作由模糊PID推理和PID控制器兩部分組成??刂破骺刂频膶?duì)象就是直線一階倒立擺,倒立擺系統(tǒng)控制結(jié)構(gòu)如圖2所示。
圖2中模糊PID控制器的設(shè)定參考輸入為θd,擺桿豎直為理想狀態(tài),考慮到角度傳感器安裝位置,θd大小為270°。反饋輸入由倒立擺控制對(duì)象引出,即實(shí)時(shí)擺桿角度值θ。將二者之差作為系統(tǒng)誤差e,并得到誤差變化率ec(在離散情況下ec即當(dāng)前誤差與上次誤差的差),最后將二者同時(shí)作為控制器的兩個(gè)輸入,根據(jù)離散PID公式得到控制輸出,以直流電機(jī)的PWM占空比為輸出,其中△Kp、△Ki、△Kd為模糊PID推理的輸出。
1.3 模糊自適應(yīng)PID控制器設(shè)計(jì)
控制器為雙輸入單輸出,其中以擺桿角度與擺桿傾斜速度為輸入,以電機(jī)控制參數(shù)(直流電機(jī)轉(zhuǎn)速)為輸出。根據(jù)工程實(shí)踐,在此采用針對(duì)角度的閉環(huán)離散PID控制,為了平衡系統(tǒng)超調(diào)與響應(yīng)速度,將初始PID值設(shè)為250、150、40,初始PID值選取對(duì)于倒立擺的最終性能有很大影響,也須通過(guò)反復(fù)實(shí)驗(yàn)確定。最終PID參數(shù)為Kp=Kp0+△Kp、ki=Ki0+△Ki、Kd=Kd0+AKd。位置式離散PID如式(1)所示。
u(k)=kp·e(k)+ki·∑e(k)+Kd·ec(k) (1)
首先需要確定各輸人輸出量論域,文獻(xiàn)為了避免額外乘法操作消耗邏輯單元,將量化因子全部乘進(jìn)論域中,在本文也是如此。其中,擺桿偏移角度范圍為[-20°,+20°],選定輸入范圍既是下文系統(tǒng)模型線性化的要求,也是系統(tǒng)機(jī)械特性的實(shí)際要求,偏角過(guò)大時(shí)電機(jī)響應(yīng)速度無(wú)法跟上。經(jīng)過(guò)A/D轉(zhuǎn)換后e范圍為[-240,+240],并設(shè)擺角偏差變化率ec的范圍為[-100,+100]、△Kp∈[-100,+100]、△Ki∈[-50,+50]、△Kd∈[-20,+20]。輸入輸出量均選擇同樣的模糊集{NB、NM、NS、ZO、PS、PM、PB},分別代表負(fù)大、負(fù)中、負(fù)小、零、正小、正中、正大,將原始量按論域劃分后,分別對(duì)應(yīng)到不同模糊子集,以少代多,就是模糊化的本質(zhì)。對(duì)于計(jì)算隸屬度的隸屬函數(shù),論域邊緣采用Z型和S型,其余采用線性的三角形隸屬函數(shù)。以輸入e為例,隸屬函數(shù)形式如圖3所示。
在模糊控制過(guò)程中模糊推理是核心,模糊推理規(guī)則表是基于PID的整定經(jīng)驗(yàn)而制定,PID各參數(shù)的作用可以簡(jiǎn)單總結(jié)為:以比例控制為PID控制的基礎(chǔ),即一般P是必需的,其與響應(yīng)速度、超調(diào)均有關(guān);積分控制I有助于減小穩(wěn)態(tài)誤差,提高穩(wěn)定性,但可能增加超調(diào)量;微分控制D可加大慣性系統(tǒng)響應(yīng)速度并減弱超調(diào)趨勢(shì),但與系統(tǒng)響應(yīng)振蕩關(guān)系密切。據(jù)此制定△Kp、△Ki、△Kd的模糊規(guī)則表,以△Kp為例,其模糊推理規(guī)則如表1所示。
2 單級(jí)倒立擺系統(tǒng)建模仿真
2.1 倒立擺系統(tǒng)數(shù)學(xué)建模
將倒立擺系統(tǒng)抽象為小車、擺桿組成的系統(tǒng)。在不考慮摩擦阻力情況下,分析受力并將其線性化,系統(tǒng)狀態(tài)方程如下:
對(duì)式(3)進(jìn)行拉氏變換并代人參數(shù)設(shè)定值,如表2所示,得到關(guān)于輸入量u和輸出角度量φ的傳遞函數(shù)。
2.2 控制系統(tǒng)Matlab仿真
首先在APP工具箱中找到Fuzzy Logic Designer,然后根據(jù)輸入輸出模糊子集新建模糊變量,再根據(jù)模糊規(guī)則表新建Rules,最后設(shè)置模糊推理采用Mamdani型,解模糊采用重心法。之后在Simulink中搭建系統(tǒng)模型,如圖4所示。模糊自適應(yīng)PID控制與常規(guī)PID控制階躍響應(yīng)曲線如圖5所示,比較分析可以看出前者在超調(diào)量、響應(yīng)時(shí)間等方面性能更優(yōu)。
3 控制器在FPGA上的設(shè)計(jì)與實(shí)現(xiàn)
從FPGA應(yīng)用頂層模塊設(shè)計(jì)角度切人,即Top_Down設(shè)計(jì)概念。按照PID參數(shù)的模糊控制輸出過(guò)程,使用Verilog HDL進(jìn)行設(shè)計(jì),同時(shí)利用Altera提供的免費(fèi)IP核進(jìn)行輔助設(shè)計(jì)。整個(gè)控制器內(nèi)有誤差處理模塊、模糊處理模塊(內(nèi)部例化8個(gè)ROM模塊)、PID運(yùn)算控制模塊(內(nèi)部例化1個(gè)電機(jī)信號(hào)轉(zhuǎn)換模塊)共3個(gè)大模塊。此外,還用了一個(gè)分頻模塊,用于提供全局需要的分頻時(shí)鐘,可以使用內(nèi)部PLL完成。所有模塊設(shè)計(jì)都是在RTL級(jí)別。
3.1 擺角誤差處理模塊設(shè)計(jì)
該模塊輸入為12位的A/D采樣值,已知在豎直位置處A/D值為ANGLE_MIDDLE=12'd3115。經(jīng)過(guò)該模塊處理,輸出9位有符號(hào)的oute和outec,主要代碼如下所示。值得注意的是,Verilog中對(duì)于負(fù)數(shù)采取保存其補(bǔ)碼形式。通過(guò)仿真驗(yàn)證,得到仿真時(shí)序圖如圖6所示。
3.2 模糊處理模塊設(shè)計(jì)
該模塊是整個(gè)設(shè)計(jì)的核心,可分成模糊化塊語(yǔ)句、模糊推理塊、解模糊塊語(yǔ)句。在模糊推理塊中采用查表方式進(jìn)行模糊推理,而在解模糊塊語(yǔ)句中采用實(shí)時(shí)計(jì)算方式,也即使用半查表加半計(jì)算方式。對(duì)e模糊化主要代碼如下所示,對(duì)ec處理類似。
上述代碼的作用是對(duì)輸入的數(shù)字量進(jìn)行模糊化處理,即按照上文中的模糊論域劃分,映射到對(duì)應(yīng)的模糊子集。模糊推理塊主要語(yǔ)句如下所示,主要作用是先計(jì)算關(guān)聯(lián)模糊子集的隸屬度。為了避免小數(shù)運(yùn)算的產(chǎn)生,在此過(guò)程中均先作整數(shù)化處理,再生成查詢儲(chǔ)存在ROM中模糊規(guī)則表的行列坐標(biāo),并從ROM塊中取出關(guān)聯(lián)的模糊子集值。
進(jìn)行解模糊計(jì)算并輸出△Kp、△Ki、△Kd,再與初始設(shè)定的PID值相加。通過(guò)仿真驗(yàn)證,得到仿真時(shí)序圖如圖7所示。
3.3 PID運(yùn)算控制模塊設(shè)計(jì)
此目標(biāo)控制的是直流電機(jī),使用PWM的占空比變化控制電機(jī)轉(zhuǎn)速。PID運(yùn)算控制模塊主要有計(jì)算電機(jī)轉(zhuǎn)速值,以及PWM波發(fā)生模塊。文獻(xiàn)提供了一種根據(jù)輸入脈沖頻率生成特定PWM波的方式;Sabri等提出根據(jù)某特定輸入量產(chǎn)生修正的輸出占空比可調(diào)的PWM方法,說(shuō)明在實(shí)際中使用PD控制已足夠。通過(guò)仿真驗(yàn)證,得到仿真時(shí)序圖如圖8所示。
3.4 控制系統(tǒng)硬件設(shè)計(jì)
整個(gè)系統(tǒng)硬件以Ahera的EP4CE6E22C8N芯片為核心,其最小工作電路一般包括調(diào)試口、外圍FLASH等,該FPGA芯片完全滿足此次設(shè)計(jì)要求。外圍電路包括電源電路、A/D轉(zhuǎn)換電路、電機(jī)隔離驅(qū)動(dòng)電路等。系統(tǒng)硬件設(shè)計(jì)如圖9所示。
4 結(jié)語(yǔ)
本文采用一種半查表加半計(jì)算方式,基于Verilog語(yǔ)言進(jìn)行倒立擺模糊PID控制器設(shè)計(jì)。對(duì)內(nèi)部邏輯單位僅使用893/12060(7%),對(duì)內(nèi)存bits的使用僅為3616/239616(2%),說(shuō)明該設(shè)計(jì)具有經(jīng)濟(jì)性。不足之處在于,系統(tǒng)初始參數(shù)選擇缺少方法總結(jié),給運(yùn)用帶來(lái)一定不便,并且未針對(duì)更高階倒立擺進(jìn)行硬件設(shè)計(jì),系統(tǒng)控制變量較少,無(wú)法完全突出模糊PID的優(yōu)勢(shì)。因此,未來(lái)可以結(jié)合模糊自適應(yīng)PID控制,仍以FPGA為控制核心,運(yùn)用于其它更復(fù)雜高階倒立擺系統(tǒng)中。同時(shí),該設(shè)計(jì)方法具有通用性,未來(lái)可方便用于其它控制場(chǎng)合。