• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于FPGA的PID控制在液浮陀螺回路中的應用

      2018-03-10 05:12:53盧雍卿李劍文吳勇李建勛
      軟件導刊 2018年2期
      關(guān)鍵詞:PID控制

      盧雍卿+李劍文+吳勇+李建勛

      摘 要:PID 控制器的可靠性及實時性,是實現(xiàn)運動控制系統(tǒng)精確定位或跟蹤的重要環(huán)節(jié)。利用PID控制液浮陀螺再平衡回路,在分析PID 控制算法的基礎(chǔ)上,采用FPGA(現(xiàn)場可編程邏輯門陣列)對增量型PID控制器進行設(shè)計及仿真實驗,使陀螺輸出能及時響應角增量的變化。程序采用VHDL語言編寫,使用軟件Libero v9.0完成PID控制器的設(shè)計、編譯和仿真,仿真結(jié)果表明該方法有效可行。

      關(guān)鍵詞:PID控制;可編程邏輯器件;液浮陀螺回路

      DOIDOI:10.11907/rjdk.172232

      中圖分類號:TP319

      文獻標識碼:A 文章編號:1672-7800(2018)002-0140-03

      0 引言

      PID控制器結(jié)構(gòu)清晰,控制參數(shù)可調(diào),響應速度快,能夠廣泛運用于各種控制變量,可在現(xiàn)場根據(jù)實際情況調(diào)節(jié)參數(shù)而得到較好的控制效果,在動態(tài)控制系統(tǒng)應用廣泛。其核心設(shè)計思想是通過分析被控對象的控制需求,建立被控對象動態(tài)特征的數(shù)學模型,采用調(diào)整比例、積分、微分參數(shù)的控制策略達到最佳的控制效果和系統(tǒng)響應。此類動態(tài)控制系統(tǒng)的被控量一般為模擬量,例如速度、角度、水位等。利用目標值和輸入值之間的差值,經(jīng)過離散化后僅有數(shù)字PID控制器經(jīng)過運算處理,將運算結(jié)果由數(shù)模轉(zhuǎn)換變?yōu)槟M量,反饋給被控對象,這就是PID控制中常用的近似逼近原理。隨著現(xiàn)場可編程邏輯門陣列(FPGA)的興起,數(shù)字PID控制器的設(shè)計得到了新的發(fā)展。FPGA集成度高、可靠性高、體積小、功耗低、設(shè)計方法靈活,可進行反復編程、調(diào)試、燒寫,能適應嵌入式系統(tǒng)應用。

      1 液浮陀螺回路設(shè)計

      液浮陀螺利用剛體旋轉(zhuǎn)時具有定軸性的原理,當旋轉(zhuǎn)的轉(zhuǎn)子感到角動量時,會產(chǎn)生一個和角動量成比例的敏感器信號,通過處理敏感器信號后輸出加矩信號,便可得到陀螺的運動角速度。離散化的數(shù)字再平衡回路如圖1所示。

      圖1中AD轉(zhuǎn)換器用于采集模擬信號,并將其離散化變?yōu)閿?shù)字量信號。在FPGA中固化的PID算法用于信號的運算處理,DA轉(zhuǎn)換器將經(jīng)過處理的數(shù)字量信號轉(zhuǎn)化為模擬量信號反饋給力矩器,這樣便構(gòu)成了一個完整的數(shù)字量控制的液浮陀螺再平衡回路。

      2 PID控制器設(shè)計

      PID是工業(yè)控制中應用最廣泛、技術(shù)最成熟的一種控制方法,其基本控制原理如圖2所示。

      PID控制器是一種線性控制器,它根據(jù)給定值r(t)與實際輸出值y(t)構(gòu)成控制偏差:

      將偏差進行比例、積分、微分運算并通過一定規(guī)律的線性組合構(gòu)成控制量u(t),對被控量進行控制,滿足:

      式(2)中,KP為比例放大系數(shù);K1為積分時間常數(shù);KD為微分時間常數(shù)。數(shù)字PID控制算法的實現(xiàn)必須用數(shù)值逼近方法。當采樣周期相當短時,用求和代替積分,用差商代替微商,使PID算法離散化。將PID算法的微分方程離散化、差分、歸并處理后可得:

      根據(jù)遞推原理得到:

      從式(4)可以看出,增量式數(shù)字PID算法,只要儲存最近3個誤差采樣值e(k)、e(k-1)、e(k-2)就足夠了。

      將式(3)減去式(4)可得:

      3 FPGA源程序設(shè)計

      典型的數(shù)字PID控制系統(tǒng)由A/D轉(zhuǎn)換、PID控制算法和D/A轉(zhuǎn)換3個關(guān)鍵環(huán)節(jié)構(gòu)成。為了協(xié)調(diào)3個環(huán)節(jié)之間的工作流程,系統(tǒng)工作控制部件必不可少。這里使用狀態(tài)機來完成不同運算步驟之間的協(xié)調(diào),在高速運算和運動控制方面,有限狀態(tài)機有著獨特的優(yōu)勢。

      有限狀態(tài)機從信號輸出方式上分,有Moore型和Mealy型兩類。前者的輸出狀態(tài)只和當前狀態(tài)有關(guān),而后者的輸出不僅與當前狀態(tài)有關(guān)還與輸入量有關(guān)。Moore型狀態(tài)機的輸出則僅為當前狀態(tài)的函數(shù),這類狀態(tài)機在輸入發(fā)生變化時必須等待時鐘的到來。時鐘使狀態(tài)發(fā)生變化時才導致輸出變化,所以比Mealy機要多等待一個時鐘周期,但是能有效避免毛刺現(xiàn)象。Mealy型狀態(tài)機的輸出是當前狀態(tài)和所有輸入信號的函數(shù),它的輸出是在輸入變化后立即發(fā)生的,不依賴于時鐘的同步。從輸出時序上看,前者屬于同步輸出狀態(tài)機,后者屬于異步輸出狀態(tài)機。本設(shè)計所用的狀態(tài)機為單進程Moore型狀態(tài)機。

      對數(shù)模轉(zhuǎn)化的控制算法如下:

      circulation:process(state)

      begin

      case state is

      when s1=>ado<=”00000”;

      addr<=0000;

      next_state<=s2;

      when s2=>ado<=”11000”;

      addr<=0001;

      next_state<=s3;

      when others=>ado<=”00000”;

      next_state<=s1;

      end process Circulation;

      control:process(clk,dir)

      begin

      if dir=1then state<=s1;

      elsif clk event and clk+1then

      state<=next_state;

      end if;

      end process control;

      這里給出了一段式狀態(tài)機設(shè)計,硬件語言設(shè)計簡潔,便于快速實現(xiàn)功能架構(gòu)。

      PID控制的硬件語言程序如下:

      library ieee;

      use ieee.std_logic_1164.all;

      use ieee.std_logic_arith.all;endprint

      use ieee.std_logic_unsigned.all;

      entity pid_regulator_verl is

      port (clk: in std_logic;

      sample: in std_logic;

      reset: in std_logic;

      rk: in std_logic_vector(7 downto 0);

      yk: in std_logic_vector(7 downto 0);

      kp:in std_logic_vector(3 downto 0);

      ki: in std_logic_vector(3 downto 0);

      kd:in std_logic_vector(3 downto 0);

      out:out std_logic_vector(7 downto 0);

      end pid_regulator_verl

      architecture behavioral of pid_regulator_verl is

      signal error: integer range -65535 to 65535:=0;

      signal prev_error: integer range -65535 to 65535:=0;

      signal integrator: std_logic_vector(17 downto 0):=(others=>0);

      alias integ: std_logic_vector(15 downto 0) is integrator(17 downto 2);

      signal int_integ: integer range -65535 to 65535:=0;

      signal actuator: integer range -65535 to 65535:=0;

      signal p_bidrag: integer range -65535 to 65535:=0;

      signal i_bidrag: integer range -65535 to 65535:=0;

      signal d_bidrag: integer range -65535 to 65535:=0;

      signal saturation:std_logic;

      begin

      int_integ<=conv_integer(integ);

      integration:

      process(sample)

      variable err:integer;

      begin

      if rising_edge(sample) then

      if reset=1 then

      integrator<=(others=>0);

      error<=0;

      else

      err:=(conv_integer(ref)-conv_integer(act));

      if abs(err)>1 then

      if saturation=0 then

      integrator<= integrator+err/2;

      end if;

      if conv_integer(integrator)<0 then

      integrator<=(others=>0);

      enf if;

      prev_error<=error;

      error<=err;

      end if;

      end if;

      end if;

      end process;

      p_bidrag<=conv_integer(kp)*error;

      i_bidrag<=conv_integer(ki)*int_integ;

      d_bidrag<=conv_integer(kd)*(error-prev_error);

      regulator:

      process(p_bidrag, i_bidrag, d_bidrag)

      variable yact:integer;

      begin

      yact:=p_bidrag+i_bidrag,+d_bidrag;

      actuator<=yact;

      saturation<=0;

      if yact<0 then

      yact:=0;

      elsif yact>255 then

      yact:=255;

      saturation<=1;

      end if;

      out<=conv_std_logic_vector(yact,8);

      end process;

      end behavioral;

      4 綜合仿真

      PID控制器系統(tǒng)設(shè)計圍繞算法實現(xiàn),即先由PTD控制器的硬件語言描述得到VHDL的控制算法描述,然后對系統(tǒng)分解為誤差模數(shù)變換、選通控制部件、PID運算部件、控制狀態(tài)機模塊。

      Actel公司專用EDA軟件Libero支持原理圖與VHDL語言混合輸入設(shè)計方式,除PID運算部件采用原理圖輸入設(shè)計方式外,其余3個部件均采用VHDL輸入設(shè)計方式。系統(tǒng)仿真時,將系統(tǒng)的最高工作速率設(shè)定為22.1184MHz。功能仿真波形如圖3所示。endprint

      PID控制原理能夠運用于大量閉環(huán)回路控制系統(tǒng)設(shè)計中,使得力矩器輸出量能及時反映陀螺角速度變化,以高響應速度完成對陀螺傳感器輸出變化量的跟蹤。

      5 結(jié)語

      以FPGA為代表的高速系統(tǒng)已經(jīng)在數(shù)字信號處理領(lǐng)域表現(xiàn)出獨特的優(yōu)勢,尤其是極高的穩(wěn)定性和可靠性,使其在嵌入式系統(tǒng)發(fā)揮越來越大的作用。本文以FPGA為載體,PID控制為手段,實現(xiàn)了液浮陀螺再平衡回路控制。通過仿真驗證,在保持原有響應速度的前提下,解決了原有模擬電路無法避免的、由于器件溫度漂移導致的信號失真問題。

      參考文獻:

      [1] ACTEL INC.FPGA data book[EB/OL]. http://noel.feld.cvut.cz/vyu/apo/actel/s04_01.pdf 1994.

      [2] ALTERA INC.Data book[EB/OL]. http://ebook.pldworld.com/_Semiconductors/Altera/literature/_nv/98nvq1.pdf 1996.

      [3] 康華光.電子技術(shù)基礎(chǔ)(數(shù)字部分)[M].北京:高等教育出版社,2006.

      [4] 姜雪松.VHDL設(shè)計實例與仿真[M].北京:機械工業(yè)出版社,2007.

      [5] 程佩青.數(shù)字信號處理教程[M].北京:清華大學出版社,2007.

      [6] 侯伯亨,顧新.VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計[M].西安:西安電子科技大學出版社,2009.

      [7] 張春生.FPGA數(shù)字信號處理與工程應用實踐[M].北京:中國鐵道出版社,2013.

      [8] 楊毅明.數(shù)字信號處理[M].北京:機械工業(yè)出版社,2008.

      [9] 譚曉.數(shù)字PID控制器的實驗研究[J].武漢紡織工學院學報,1999,12(3):68-72.

      [10] MOHAMED ABDELATI.FPGA-Based PID controller implementation[D].Gaza:University of Gaza,2005.

      [11] 陸重陽,盧東華.FPGA技術(shù)及其發(fā)展趨勢[J].微電子技術(shù),2003,31(1):5-7.

      [12] 張焱,余海龍,羅進川.超高速數(shù)據(jù)采集系統(tǒng)設(shè)計與實現(xiàn)[J].安徽大學學報,2006,30(4):44-47.endprint

      猜你喜歡
      PID控制
      內(nèi)模控制在火電廠主汽溫系統(tǒng)中的應用
      《計算機測控技術(shù)》課程中PID控制部分的教學探討
      常規(guī)PID控制和常規(guī)模糊控制的比較
      一種基于SPWM的逆變電源并聯(lián)運行參數(shù)設(shè)計及控制策略仿真
      鍋爐汽包水位自適應模糊控制與仿真
      關(guān)于多旋翼式飛行器系統(tǒng)的研究
      科技視界(2016年6期)2016-07-12 09:16:47
      新型試驗電源直流降壓斬波系統(tǒng)的PID控制仿真研究
      科技視界(2016年12期)2016-05-25 12:01:14
      基于雙單片機的無刷直流電機調(diào)速系統(tǒng)的設(shè)計
      基于模糊控制理論的PID閉環(huán)控制系統(tǒng)的研究與設(shè)計
      現(xiàn)代電子技術(shù)(2015年15期)2015-08-14 21:19:49
      黄梅县| 江陵县| 横峰县| 内黄县| 青神县| 益阳市| 岑溪市| 夹江县| 丘北县| 夏邑县| 吴川市| 凤阳县| 林口县| 兴和县| 临沧市| 阿拉善左旗| 新丰县| 科技| 泗阳县| 永和县| 莲花县| 泽普县| 天全县| 曲麻莱县| 贺州市| 沾化县| 江山市| 邓州市| 鲁山县| 康定县| 利川市| 安庆市| 海伦市| 韶山市| 东海县| 德州市| 唐山市| 石泉县| 民权县| 怀远县| 西吉县|