亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA的數(shù)字PID控制器研究與設(shè)計(jì)

        2020-10-23 08:11:26何敏龍
        數(shù)字制造科學(xué) 2020年3期
        關(guān)鍵詞:設(shè)計(jì)

        何敏龍,肖 峻

        (武漢理工大學(xué) 機(jī)電工程學(xué)院,湖北 武漢 430070)

        PID控制一直是工業(yè)生產(chǎn)中應(yīng)用最廣泛,最成熟的控制手段[1]。據(jù)調(diào)查,工業(yè)控制中有84%的策略采取PID控制,若算上基于PID的各種智能算法,這一數(shù)據(jù)將超過(guò)90%[2]。

        在工程實(shí)際中具體應(yīng)用PID控制時(shí),使用微控制器設(shè)計(jì)數(shù)字PID控制器是一種行之有效的方式[3]。筆者使用可編程邏輯門(mén)陣列(field programmable gate array,FPGA)設(shè)計(jì)了數(shù)字PID控制器。由于FPGA是并行器件[4],使用其內(nèi)部的邏輯資源搭建出PID控制器,可以按照需求與AD采集、數(shù)據(jù)傳輸?shù)瘸S媚K連接匹配,彼此之間互相獨(dú)立,運(yùn)算效率高,使用方便。

        筆者詳細(xì)闡述了利用FPGA設(shè)計(jì)數(shù)字PID控制器的具體過(guò)程。首先通過(guò)Matlab進(jìn)行必要的仿真,得到整個(gè)運(yùn)算的數(shù)值范圍要求與數(shù)值精度要求,以此為依據(jù)設(shè)計(jì)有符號(hào)定點(diǎn)加法器和乘法器。然后在Quartus II軟件中以Verilog HDL語(yǔ)言編寫(xiě)有限狀態(tài)機(jī)(finite state machine,FSM)來(lái)實(shí)現(xiàn)PID運(yùn)算過(guò)程,并建立testbench,同樣以狀態(tài)機(jī)的方式構(gòu)建了被控對(duì)象的仿真模型。最終在ModelSim仿真軟件中進(jìn)行開(kāi)環(huán)仿真、閉環(huán)仿真,保證了PID算法在RTL(real time logistics)級(jí)數(shù)字邏輯電路上的正確性,具有重要的工程應(yīng)用價(jià)值。

        1 PID控制器

        1.1 帶有限幅的增量式PID控制器

        數(shù)字PID控制器中通常采用經(jīng)過(guò)限幅的增量式PID算法,其中限幅作用可以避免執(zhí)行機(jī)構(gòu)因過(guò)大的動(dòng)作而損壞,而將控制量增量的形式表達(dá)則易于編程實(shí)施[5-6]。其時(shí)域表達(dá)式如式(1)~式(3)式所示。

        du(k)=kp[e(k)-e(k-1)]+kie(k)+kd[e(k)-2e(k-1)+e(k-2)]

        (1)

        dumax≥du(k)≥dumin

        (2)

        u(k)=u(k-1)+du(k)

        (3)

        式中:du(k)為控制量的增量;kp,ki,kd分別為比例系數(shù)、積分系數(shù)、微分系數(shù);e(k),e(k-1),e(k-2)分別為當(dāng)前誤差、上一時(shí)刻誤差和上兩時(shí)刻誤差;dumax為控制量最大限幅值;dumin為控制量最小限幅值;u(k)為控制器輸出的控制量。

        1.2 軟件仿真

        考慮被控對(duì)象以T=0.001 s進(jìn)行Z變換,最終得到輸出量的時(shí)間序列為:

        y(k)=0.000 196 7u(k-1)+0.000 195 1u(k-2)+1.951y(k-1)-0.951 2y(k-2)

        (4)

        圖1 閉環(huán)仿真曲線

        圖2 閉環(huán)仿真框圖

        從圖1中可知,響應(yīng)過(guò)程無(wú)超調(diào),調(diào)整時(shí)間ts≈0.4 s。同時(shí)記錄運(yùn)算過(guò)程中的各項(xiàng)數(shù)據(jù),絕對(duì)值最大的為10,絕對(duì)值最小的非負(fù)數(shù)為0.000 001,這就決定了微控制器中的數(shù)據(jù)范圍要求及數(shù)據(jù)精度要求。

        2 基于FPGA的數(shù)字PID控制器

        數(shù)字PID控制器基于原Altera公司CycloneIV FPGA EP4CE10F17C8芯片設(shè)計(jì),主要包括PID控制模塊、加法器模塊、乘法器模塊。其核心是利用單進(jìn)程的Moore狀態(tài)機(jī)實(shí)現(xiàn)式(1)~式(3)的運(yùn)算。

        2.1 加法器模塊與乘法器模塊

        由式(1)~式(3)可知,所有的運(yùn)算都可以分解為加法和乘法。而FPGA屬于數(shù)字邏輯器件,正整數(shù)之間的加法運(yùn)算由內(nèi)部加法器實(shí)現(xiàn),而正整數(shù)之間的乘法運(yùn)算則通過(guò)芯片內(nèi)部已經(jīng)設(shè)計(jì)好的嵌入式硬件乘法單元實(shí)現(xiàn)[8-9]。然而,本設(shè)計(jì)過(guò)程中涉及到了分?jǐn)?shù)、負(fù)數(shù)的相關(guān)運(yùn)算,因此需要自行設(shè)計(jì)加法器、乘法器以滿足要求。

        根據(jù)前文所述,運(yùn)算過(guò)程中絕對(duì)值最大的為10,絕對(duì)值最小的非負(fù)數(shù)為0.000 001,因此整數(shù)部分至少用4位二進(jìn)制數(shù)表示(24=16),小數(shù)部分至少用20位二進(jìn)制數(shù)表示(2-20=0.000 000 953 7),才能滿足計(jì)算的范圍及精度要求。最終選取32位的數(shù)制,其中最高位表示正負(fù)(1表示正,0表示負(fù)),第2位到第12位表示整數(shù),第13位到第32位表示小數(shù),則可以在[-2 048,2 047]內(nèi)進(jìn)行運(yùn)算,運(yùn)算精度達(dá)0.000 001。

        按照上述方法設(shè)計(jì)了32位定點(diǎn)有符號(hào)加法器、乘法器,現(xiàn)在通過(guò)簡(jiǎn)單的例子來(lái)說(shuō)明其計(jì)算過(guò)程。例如:利用FPGA分別計(jì)算下面兩個(gè)式子,在ModelSim中進(jìn)行仿真,其結(jié)果如圖3和圖4所示。

        -60.125+50.25=-9.875

        -24.5×(-12.5)=306.25

        圖3 加法器計(jì)算結(jié)果界面圖

        圖4 乘法器計(jì)算結(jié)果界面圖

        由圖3和圖4可知,-60.25,50.25,-9.875,-24.5,-12.5,306.25分別用本文所述的32位數(shù)據(jù)格式表示為32’h83c20000,32’h03240000,32’h809e0000,32’h81880000,32’h80c80000,32’h13240000。故知仿真結(jié)果與理論值一致。

        2.2 PID控制模塊

        PID控制模塊的核心實(shí)現(xiàn)式(1)~式(3)的運(yùn)算。筆者采取狀態(tài)機(jī)的思路進(jìn)行設(shè)計(jì)有3個(gè)優(yōu)點(diǎn):①狀態(tài)機(jī)結(jié)構(gòu)穩(wěn)定,不易出錯(cuò),適合系統(tǒng)中的關(guān)鍵模塊設(shè)計(jì)。②可通過(guò)外部驅(qū)動(dòng)定時(shí)器,在不影響其余連接模塊的情況下改變PID運(yùn)算的采樣周期。③能夠增減狀態(tài)數(shù)目,從而實(shí)現(xiàn)PID控制的相關(guān)變形算法,例如積分分離的PID控制、變速積分PID控制等[10]。實(shí)際上筆者所設(shè)計(jì)的帶有限幅的增量式PID控制就是PID控制的一種變形。

        所設(shè)計(jì)的是PID控制模塊一個(gè)6位的Moore狀態(tài)機(jī),每個(gè)狀態(tài)都有相應(yīng)的計(jì)算操作,當(dāng)該狀態(tài)持續(xù)了一定時(shí)間就會(huì)跳轉(zhuǎn)至下一個(gè)狀態(tài),而從進(jìn)入狀態(tài)st1開(kāi)始算起,直至回到狀態(tài)st1所需的時(shí)間剛好是1 ms,這就與系統(tǒng)采樣周期為1 ms對(duì)應(yīng)起來(lái)。

        該狀態(tài)機(jī)使用了3個(gè)乘法器(Multiplier)和2個(gè)加法器(Adder)。進(jìn)入狀態(tài)機(jī)之前需要進(jìn)行系統(tǒng)復(fù)位,對(duì)相關(guān)寄存器的值進(jìn)行初始化;狀態(tài)機(jī)的工作過(guò)程如下:

        (1)st1,持續(xù)100 μs。將e(k)與kp+ki+kd的值賦給Multiplier1,將e(k-1)與kp+2kd的值賦給Multiplier2,將e(k-2)與kd的值賦給Multiplier3,分別計(jì)算(kp+ki+kd)e(k),(kp+2kd)e(k-1),kde(k-2)。

        (2)st2,持續(xù)100 μs。將Multiplier1的輸出及Multiplier2的輸出賦給Adder1,注意Multiplier2的輸出需要加上32’h80000000,使加法變?yōu)闇p法,計(jì)算(kp+ki+kd)e(k)-(kp+2kd)e(k-1)。

        (3)st3,持續(xù)200 μs。將Adder1的輸出及Multiplier3的輸出賦給Adder2,計(jì)算du(k)。

        (4)st4,持續(xù)200 μs。對(duì)Adder2的輸出進(jìn)行限幅,即實(shí)現(xiàn)10≥du(k)≥-10。

        (5)st5,持續(xù)200 μs。將st4的輸出加到u(k),實(shí)現(xiàn)u(k)=u(k-1)+du(k)。

        (6)st6,持續(xù)200 μs。內(nèi)部寄存器移位,并從外界讀取最新的誤差。

        設(shè)計(jì)完成后,進(jìn)行開(kāi)環(huán)仿真。令誤差恒為1,通過(guò)FPGA計(jì)算實(shí)際值與MATLAB計(jì)算的理論值進(jìn)行對(duì)比,結(jié)果如表1所示。由表1可知,理論數(shù)據(jù)和計(jì)算數(shù)據(jù)基本吻合。

        表1 PID控制開(kāi)環(huán)仿真數(shù)據(jù)對(duì)比

        3 基于ModelSim的閉環(huán)仿真

        為了進(jìn)一步驗(yàn)證PID算法的準(zhǔn)確性,采取有限狀態(tài)機(jī)編寫(xiě)了被控對(duì)象的模型,并在Quartus II軟件中得到仿真文件testbench。首先針對(duì)被控對(duì)象模塊單獨(dú)進(jìn)行仿真驗(yàn)證,然后將PID控制模塊與被控對(duì)象模塊聯(lián)合形成閉環(huán)進(jìn)行了仿真驗(yàn)證。

        3.1 被控對(duì)象設(shè)計(jì)

        被控對(duì)象的時(shí)域輸出由式(4)決定,據(jù)此編寫(xiě)了一個(gè)6位的有限狀態(tài)時(shí)實(shí)現(xiàn)相應(yīng)的運(yùn)算,以1 ms為一個(gè)周期進(jìn)行循環(huán)。其中用到了兩個(gè)乘法器(Multiplier)與兩個(gè)加法器(Adder)。工作過(guò)程如下:

        (1)st1,持續(xù)100 μs。將1.951與y_1賦給Multiplier1,將-0.951 2與y_2賦給Multiplier2,分別計(jì)算1.95y(k-1),-0.951 2y(k-2)。

        (2)st2,持續(xù)100 μs。將Multiplier1與Multiplier2的結(jié)果賦給Adder1,計(jì)算1.95y(k-1)-0.951 2y(k-2);同時(shí)將0.000 196 7與u(k-1)賦給Adder1,將0.000 193 5與u(k-2)賦給Adder2,計(jì)算0.000 196 7u(k-1)與0.000 193 5u(k-2)。

        (3)st3,持續(xù)200 μs。將Adder1的結(jié)果保存至中間變量Middle,將Multiplier1與Multiplier2的輸出賦給Adder1,計(jì)算0.000 196 7u(k-1)+0.000 193 5u(k-2)。

        (4)st4,持續(xù)200 μs。將中間變量Middle與Adder1的輸出賦給Adder1,計(jì)算y(k)。

        (5)st5,持續(xù)200 μs。將Adder1的輸出賦給yout,計(jì)算輸出量。

        (6)st6,持續(xù)200 μs。寄存器移位,并從外界讀取最新的控制量u(k)。

        設(shè)計(jì)完成后,進(jìn)行開(kāi)環(huán)仿真。令控制量恒為1,通過(guò)FPGA計(jì)算實(shí)際值與MATLAB計(jì)算的理論值進(jìn)行對(duì)比,結(jié)果如表2所示。由表2可知,理論數(shù)據(jù)和計(jì)算數(shù)據(jù)基本吻合。

        表2 Gs被控對(duì)象開(kāi)環(huán)仿真數(shù)據(jù)對(duì)比

        3.2 系統(tǒng)閉環(huán)仿真

        單獨(dú)設(shè)計(jì)了數(shù)字PID控制器、被控對(duì)象的模型之后,在頂層文件中還需要加入誤差計(jì)算、復(fù)位等簡(jiǎn)單的邏輯,然后將其聯(lián)合起來(lái)進(jìn)行閉環(huán)仿真。如圖5所示,是將其聯(lián)合起來(lái)后生成的RTL數(shù)字邏輯頂層原理視圖。

        圖5 閉環(huán)控制系統(tǒng)RTL視圖

        進(jìn)行閉環(huán)聯(lián)合仿真,關(guān)鍵是時(shí)序上的匹配。即控制器輸出u(k)后,被控模塊才會(huì)主動(dòng)讀取u(k);反之,當(dāng)被控模塊輸出yout,頂層模塊計(jì)算出誤差之后,才會(huì)被控制器模塊主動(dòng)讀取。按照本文的設(shè)計(jì),相關(guān)時(shí)序圖如圖6所示。

        在進(jìn)行閉環(huán)仿真之前,還要在tesebench中加入數(shù)據(jù)轉(zhuǎn)換模塊,將du(k)、u(k)、yout分別與0.1相加,使這三個(gè)變量都為正值,易于在ModelSim中觀測(cè)。同時(shí)ModelSim的仿真是ps級(jí)別,從圖1可知,系統(tǒng)的調(diào)節(jié)時(shí)間ts≈0.4 s,對(duì)于仿真而言時(shí)間過(guò)長(zhǎng),考慮等比例縮短狀態(tài)機(jī)時(shí)間,將一輪運(yùn)算周期由1 ms縮短至1 us。進(jìn)行閉環(huán)仿真,如圖7所示。

        圖6 狀態(tài)機(jī)時(shí)序圖

        圖7 閉環(huán)系統(tǒng)仿真

        可以發(fā)現(xiàn),圖7中的響應(yīng)曲線yout_show與圖1中基本一致。且系統(tǒng)大概在0.42 s進(jìn)入穩(wěn)定,在7.2 s誤差被完全消除,此時(shí)控制量u(k)=-0.004 706。

        4 結(jié)論

        詳細(xì)闡述了數(shù)字PID控制器的設(shè)計(jì)思路、方法及步驟,完成了各個(gè)模塊的開(kāi)環(huán)仿真與最終的閉環(huán)仿真。主要工作包括數(shù)據(jù)格式的確定、PID控制狀態(tài)機(jī)的設(shè)計(jì)、Gs被控對(duì)象狀態(tài)機(jī)的設(shè)計(jì)以及閉環(huán)仿真。

        在PID狀態(tài)機(jī)中,整體框架不變,改變狀態(tài)數(shù)目,并相應(yīng)地增加輔助功能,可以設(shè)計(jì)諸如積分分離的PID、變速積分PID等各種不同的PID控制器。且效果穩(wěn)定,易于實(shí)施,具有良好的工程應(yīng)用價(jià)值。

        猜你喜歡
        設(shè)計(jì)
        二十四節(jié)氣在平面廣告設(shè)計(jì)中的應(yīng)用
        何為設(shè)計(jì)的守護(hù)之道?
        《豐收的喜悅展示設(shè)計(jì)》
        流行色(2020年1期)2020-04-28 11:16:38
        基于PWM的伺服控制系統(tǒng)設(shè)計(jì)
        電子制作(2019年19期)2019-11-23 08:41:36
        基于89C52的32只三色LED搖搖棒設(shè)計(jì)
        電子制作(2019年15期)2019-08-27 01:11:50
        基于ICL8038的波形發(fā)生器仿真設(shè)計(jì)
        電子制作(2019年7期)2019-04-25 13:18:16
        瞞天過(guò)?!律O(shè)計(jì)萌到家
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計(jì)叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        從平面設(shè)計(jì)到“設(shè)計(jì)健康”
        商周刊(2017年26期)2017-04-25 08:13:04
        野花社区视频www官网| 99蜜桃在线观看免费视频| 亚洲视频免费一区二区| 少妇扒开毛茸茸的b自慰| 亚洲av无码男人的天堂在线| 成人午夜视频一区二区无码| 国产av大片久久中文字幕| 国产免费av手机在线观看片| 中文字幕肉感巨大的乳专区| 在线观看欧美精品| 青青草视频原手机在线观看| 少妇太爽了在线观看免费| 人妻中文字幕无码系列| 午夜亚洲www湿好大| 久久精品视频按摩| av天堂免费在线播放| 精品亚洲国产成人| 真人男女做爰无遮挡免费视频 | 日本一区二区在线免费看| 国产午夜福利精品一区二区三区| 少妇太爽了在线观看| 日日噜噜夜夜狠狠久久av| 国产成人综合精品一区二区| 日韩一区国产二区欧美三区| 亚洲人免费| 久久精品一区二区三区不卡牛牛| 亚洲中文字幕精品乱码2021| 国产98在线 | 日韩| 日韩五十路| 亚洲精品中文字幕一二| 最近中文字幕国语免费| 国产精品一区二区 尿失禁| 视频网站在线观看不卡| 中文字幕乱码熟女人妻在线 | 视频福利一区| av在线不卡一区二区三区| 国产自国产自愉自愉免费24区| 人人添人人澡人人澡人人人人 | 亚洲一区二区三区中国| 国产丝袜视频一区二区三区| 日韩av一区二区毛片|