1 引言
在工業生產中,常需要用閉環控制方式來實現溫度、壓力、流量等連續變化的模擬量控制。無論使用模擬控制器的模擬控制系統,還是使用計算機(包括PLC)的數字控制系統,PID控制都得到了廣泛的應用。
PID控制器是比例-積分-微分控制的簡稱,具有
(1) 不需要精確的控制系統數學模型;
(2) 有較強的靈活性和適應性;
(3) 結構典型、程序設計簡單,工程上易于">

      技術頻道

      PLC閉環控制系統中PID控制器的實現

      1 引言
      在工業生產中,常需要用閉環控制方式來實現溫度、壓力、流量等連續變化的模擬量控制。無論使用模擬控制器的模擬控制系統,還是使用計算機(包括PLC)的數字控制系統,PID控制都得到了廣泛的應用。
      PID控制器是比例-積分-微分控制的簡稱,具有
      (1) 不需要精確的控制系統數學模型;
      (2) 有較強的靈活性和適應性;
      (3) 結構典型、程序設計簡單,工程上易于實現,參數調整方便等優點。積分控制可以消除系統的靜差,微分控制可以改善系統的動態相應速度,比例、積分、微分三者有效地結合可以滿足不同的控制要求。
      2 PLC實現PID的控制方式
      2.1 PID過程控制模塊
      這種模塊的PID控制程序是PLC生產廠家設計的,并存放在模塊中,用戶使用時序要設置一些參數,使用起來非常方便,一個模塊可以控制幾路甚至幾十路閉環回路。
      2.2 PID功能指令
      現在很多PLC都有供PID控制用的功能指令,如S7-200的PID指令。它們實際上是用于PID控制的子程序,與模擬量輸入/輸出模塊一起使用,可以得到類似于使用PID過程控制模塊的效果。
      2.3 用自編的程序實現PID閉環控制
      有的PLC沒有PID過程控制模塊和PID控制用的功能指令,有時雖然可以使用PID控制指令,但是希望采用某種改進的PID控制算法。在上述情況下都需要用戶自己編制PID控制程序。
      3 PLC-PID控制器的實現
      本文以西門子S7-200PLC為例,說明PID控制的原理及PLC的PID功能指令的使用及控制功能的實現。
      3.1 PID控制器的數字化
      PLC的PID控制器的設計是以連續系統的PID控制規律為基礎,將其數字化寫成離散形式的PID控制方程,再跟據離散方程進行控制程序設計。
      在連續系統中,典型的PID閉環控制系統如圖1所示。圖1中sp(t)是給定值,pv(t)是反饋量,c(t)是系統的輸出量,PID控制的輸入輸出關系式為:

      式中:
      M(t)—控制器的輸出量,M0為輸出的初始值;
      e(t)=sp(t)-pv(t)-誤差信號;
      KC比例系數;
      TI-積分時間常數;
      TD-微分時間常數。

      圖1 連續閉環控制系統方框圖


      式(1)的右邊前3項分別是比例、積分、微分部分,它們分別與誤差,誤差的積分和微分成正比。如果取其中的一項或兩項,可以組成P、PD或PI控制器。
      假設采樣周期為TS,系統開始運行的時刻為t=0,用矩形積分來近似精確積分,用差分近似精確微分,將公式1離散化,第n次采樣時控制器的輸出為: (2)

      式中:
      en-1-第n-1次采樣時的誤差值;
      KI-積分系數;
      KD-微分系數。
      基于PLC的閉環控制系統如圖2所示。圖中的虛線部分在PLC內。其中spn、pvn、en、Mn分別為模擬量在sp(t)、pv(t)、e(t)、M(t)在第n次采樣時的數字量。

      圖2 PLC閉環控制系統方框圖

      在許多控制系統內,可能只需要P、I、D中的一種或兩種控制類型。如可能只要求比例控制或比例與積分控制,通過設置參數可對回路進行控制類型進行選擇。
      3.2 輸入輸出變量的轉換
      PID控制有兩個輸入量:給定值(sp)和過程變量(pv)。多數工藝要求給定值是固定的值,如加熱爐溫度的給定值。過程變量是經A/D轉換和計算后得到的被控量的實測值,如加熱爐溫度的測量值。給定值與過程變量都是與被控對象有關的值,對于不同的系統,它們的大小、范圍與工程單位有很大的區別。應用PLC的PID指令對這些量進行運算之前,必須將其轉換成標準化的浮點數(實數)。
      同樣,對于PID指令的輸出,在將其送給D/A轉化器之前,也需進行轉換。
      3.3 回路輸入的轉換
      轉換的第一步是將給定值或A/D轉換后得到的整數值由16位整數轉換成浮點數,可用下面的程序實現這種轉換:
      XORD AC0, ACO
      //清除累加器
      MOVW AIWO, AC0
      //將待轉化的模擬量存入累加器
      LDW>= AC0, 0
      //如果模擬量數值為正
      JMP 0
      //直接轉換成實數
      ORD 16#FFFF0000, ACO
      //將AC0內的數值進行符號擴展,擴展為32位負數
      LBL 0
      DTR AC0, AC0
      //將32位整數轉換成實數
      轉換的下一步是將實數進一步轉換成0.0~1.0之間的標準化實數,可用下面的式(3)對給定值及過程變量進行標準化:
      RNorm=(RRaw/Span)+Offset (3)
      式中:
      RNorm-標準化實數值;
      RRaw-標準化前的值;
      Offset-偏移量,對單極性變量為0.0,對雙極性變量為0.5;
      Span-取值范圍,等于變量的最大值減去最小值,單極性變量的典型值為32000,雙極性變量的典型值為64000。
      下面的程序將上述轉換后得到的AC0中的雙極性實數(其Span=64000)轉換成0.0~1.0之間的實數:
      /R 64000.0, AC0
      //累加器中的實數標準化
      +R 0.5, AC0
      //加上偏移值,使其在0.0~1.0之間
      MOVR ACO, VD100
      //加標準化后的值存入回路表內
      3.4 回路輸出的轉換
      回路輸出即PID控制器輸出,它是標準化的0.0~1.0之間的實數。將回路輸出送給D/A轉換器之前,必須轉換成16位二進制整數。這一過程是將pv與sp轉換成標準化數值的逆過程。用下面的公式將回路輸出轉換成實數:
      RScal=(Mn-Offset)×Span (4)
      式中,RScal是回路輸出對應的實數值,Mn是回路輸出標準化的實數值。
      下面的程序用來將回路輸出轉換為對應的實數:
      MOVR VD108, AC0
      //將回路輸出送入累加器
      -R 0.5, AC0
      //僅雙極性數才有此語句
      *R 64000.0, AC0
      //單極性變量乘以32000.0
      用下面的指令將代表回路輸出的實數轉換成16位整數:
      ROUND AC0, AC0
      //將實數轉換為32位整數
      MOVW AC0, AQW0
      //將16位整數寫入模擬輸出(D/A)寄存器
      3.5 PID指令及回路表
      S7-200的PID指令如圖3所示:

      圖3 PID指令

      指令中TBL是回路表的起始地址,LOOP是回路的編號。編譯時如果指令指定的回路表起始地址或回路號超出范圍,CPU將生成編譯錯誤(范圍錯誤)儀器編譯失敗。PID指令對回路表中的某些輸入值不進行范圍檢查,應保證過程變量、給定值等不超限。回路表參見附表。

      附表 PID指令的回路表


      如果PID指令中的算術運算發生錯誤,特殊存儲器SMI.1(溢出或非法數值)被置1,并將終止PID指令的執行。要想消除錯誤,在下次執行PID運算之前,應改變引起運算錯誤的輸入值,而不是更新輸出值。
      4 PID指令編程舉例
      某一水箱里的水以變化速度流出,一臺變頻器驅動的水泵給水箱打水,以保持水箱的水位維持在滿水位的75%。過程變量由浮在水面上的水位測量儀提供,PID控制器的輸出值作為變頻器的速度給定值。過程變量與回路輸出均為單極性模擬量,取值范圍為0.0~1.0。
      本例采用PI控制器,給定值為0.75,選取控制器參數的初始值為:KC=0.25,TS=0.1s,TI=30min。編程如下:
      //主程序(OBI)
      LD SM0.1 //首次掃描時
      CALL 0 //調用初始化子程序
      //子程序
      LD SM0.0
      MOVR 0.75, VD104 //裝入給定值75%
      MOVR 0.25, VD112 //裝入回路增益0.25
      MOVR 0.10, VD116 //裝入采樣時間0.1s
      MOVR 30.0 VD120 //裝入積分時間30min
      MOVR 0.0, VD124 //關閉微分作用
      MOVB 100, SMB34
      //設置定時中斷0的時間間隔為100ms
      ATCH 0, 10
      //設定定時中斷以執行PID指令
      ENI
      //允許中斷,子程序0結束
      //中斷程序0
      LD SM0.0
      LTD AIW0, AC0
      //單極性模擬量經A/D轉換后存入累加器
      DTR AC0, AC0
      //32位整數轉換為實數
      /R 32000.0, AC0
      //標準化累加器中的實數
      MOVR AC0, VD100 //存入回路表
      LD 10.0
      //在自動方式下,執行PID指令
      PID VB100, 0
      //回路表的起始地址為VB100,回路號為0
      LD SM0.0
      MOVB VD108, AC0
      //PID控制器的輸出值送入累加器
      *R 32000.0 AC0
      //將累加器中的數值標準化
      ROUND AC0, AC0
      //實數轉換為32位整數
      DTI AC0, AQW0
      //將16位整數寫入到模擬量輸出(D/A)寄存器
      5 結束語
      PLC實現PID控制的方法多種,直接應用PID指令來實現基于PLC的PID控制,是一種易于實現且經濟實用的方法。

      文章版權歸西部工控xbgk所有,未經許可不得轉載。

      主站蜘蛛池模板: 精品人妻码一区二区三区| 精品国产一区二区三区AV| 精品国产免费一区二区| 97久久精品午夜一区二区| 国产精品成人免费一区二区 | 无码av免费一区二区三区| 国产一区精品视频| 日韩av片无码一区二区不卡电影| 亚洲av不卡一区二区三区| 亚洲熟女一区二区三区| 无码日韩人妻AV一区免费l| 日韩伦理一区二区| 国产精品久久久久一区二区三区| 亚洲色一区二区三区四区| 在线播放国产一区二区三区 | 亚洲av永久无码一区二区三区 | 激情无码亚洲一区二区三区| 亚洲午夜一区二区电影院| 日韩精品无码一区二区中文字幕| 国产精品视频第一区二区三区| 中文字幕一区二区三区视频在线| 国产免费伦精品一区二区三区| 亚洲国产精品一区二区九九| 亚洲片一区二区三区| 国产情侣一区二区三区| 国产一区二区三区高清在线观看 | 日韩精品一区二区三区中文 | 国产内射在线激情一区| 亚洲一区二区女搞男| 无码国产伦一区二区三区视频| 久久se精品一区二区国产| 99精品国产高清一区二区| 无码国产精品一区二区免费式影视 | 99无码人妻一区二区三区免费| 久久久久女教师免费一区| 免费av一区二区三区| 久久国产精品无码一区二区三区| 中文字幕视频一区| 香蕉久久ac一区二区三区| 国产91精品一区二区麻豆亚洲| 99国产精品一区二区|