PLC閉環(huán)控制系如何實現(xiàn)PID控制器

發(fā)布時間:2024-03-03
1 引言
在工業(yè)生產(chǎn)中,常需要用閉環(huán)控制方式來實現(xiàn)溫度、壓力、流量等連續(xù)變化的模擬量控制。無論使用模擬控制器的模擬控制系統(tǒng),還是使用計算機(包括plc)的數(shù)字控制系統(tǒng),pid控制都得到了廣泛的應(yīng)用。
pid控制器是比例-積分-微分控制的簡稱,具有
(1) 不需要精確的控制系統(tǒng)數(shù)學模型;
(2) 有較強的靈活性和適應(yīng)性;
(3) 結(jié)構(gòu)典型、程序設(shè)計簡單,工程上易于實現(xiàn),參數(shù)調(diào)整方便等優(yōu)點。積分控制可以消除系統(tǒng)的靜差,微分控制可以改善系統(tǒng)的動態(tài)相應(yīng)速度,比例、積分、微分三者有效地結(jié)合可以滿足不同的控制要求。
2 plc實現(xiàn)pid的控制方式
2.1 pid過程控制模塊
這種模塊的pid控制程序是plc生產(chǎn)廠家設(shè)計的,并存放在模塊中,用戶使用時序要設(shè)置一些參數(shù),使用起來非常方便,一個模塊可以控制幾路甚至幾十路閉環(huán)回路。
2.2 pid功能指令
現(xiàn)在很多plc都有供pid控制用的功能指令,如s7-200的pid指令。它們實際上是用于pid控制的子程序,與模擬量輸入/輸出模塊一起使用,可以得到類似于使用pid過程控制模塊的效果。
2.3 用自編的程序?qū)崿F(xiàn)pid閉環(huán)控制
有的plc沒有pid過程控制模塊和pid控制用的功能指令,有時雖然可以使用pid控制指令,但是希望采用某種改進的pid控制算法。在上述情況下都需要用戶自己編制pid控制程序。
3 plc-pid控制器的實現(xiàn)
本文以西門子s7-200plc為例,說明pid控制的原理及plc的pid功能指令的使用及控制功能的實現(xiàn)。
3.1 pid控制器的數(shù)字化
plc的pid控制器的設(shè)計是以連續(xù)系統(tǒng)的pid控制規(guī)律為基礎(chǔ),將其數(shù)字化寫成離散形式的pid控制方程,再跟據(jù)離散方程進行控制程序設(shè)計。
在連續(xù)系統(tǒng)中,典型的pid閉環(huán)控制系統(tǒng)如圖1所示。圖1中sp(t)是給定值,pv(t)是反饋量,c(t)是系統(tǒng)的輸出量,pid控制的輸入輸出關(guān)系式為:
式中:
m(t)—控制器的輸出量,m0為輸出的初始值;
e(t)=sp(t)-pv(t)-誤差信號;
kc比例系數(shù);
ti-積分時間常數(shù);
td-微分時間常數(shù)。
圖1 連續(xù)閉環(huán)控制系統(tǒng)方框圖
式(1)的右邊前3項分別是比例、積分、微分部分,它們分別與誤差,誤差的積分和微分成正比。如果取其中的一項或兩項,可以組成p、pd或pi控制器。
假設(shè)采樣周期為ts,系統(tǒng)開始運行的時刻為t=0,用矩形積分來近似精確積分,用差分近似精確微分,將公式1離散化,第n次采樣時控制器的輸出為: (2)
式中:
en-1-第n-1次采樣時的誤差值;
ki-積分系數(shù);
kd-微分系數(shù)。
基于plc的閉環(huán)控制系統(tǒng)如圖2所示。圖中的虛線部分在plc內(nèi)。其中spn、pvn、en、mn分別為模擬量在sp(t)、pv(t)、e(t)、m(t)在第n次采樣時的數(shù)字量。
圖2 plc閉環(huán)控制系統(tǒng)方框圖
在許多控制系統(tǒng)內(nèi),可能只需要p、i、d中的一種或兩種控制類型。如可能只要求比例控制或比例與積分控制,通過設(shè)置參數(shù)可對回路進行控制類型進行選擇。
3.2 輸入輸出變量的轉(zhuǎn)換
pid控制有兩個輸入量:給定值(sp)和過程變量(pv)。多數(shù)工藝要求給定值是固定的值,如加熱爐溫度的給定值。過程變量是經(jīng)a/d轉(zhuǎn)換和計算后得到的被控量的實測值,如加熱爐溫度的測量值。給定值與過程變量都是與被控對象有關(guān)的值,對于不同的系統(tǒng),它們的大小、范圍與工程單位有很大的區(qū)別。應(yīng)用plc的pid指令對這些量進行運算之前,必須將其轉(zhuǎn)換成標準化的浮點數(shù)(實數(shù))。
同樣,對于pid指令的輸出,在將其送給d/a轉(zhuǎn)化器之前,也需進行轉(zhuǎn)換。
3.3 回路輸入的轉(zhuǎn)換
轉(zhuǎn)換的第一步是將給定值或a/d轉(zhuǎn)換后得到的整數(shù)值由16位整數(shù)轉(zhuǎn)換成浮點數(shù),可用下面的程序?qū)崿F(xiàn)這種轉(zhuǎn)換:
xord ac0, aco
//清除累加器
movw aiwo, ac0
//將待轉(zhuǎn)化的模擬量存入累加器
ldw>= ac0, 0
//如果模擬量數(shù)值為正
jmp 0
//直接轉(zhuǎn)換成實數(shù)
ord 16#ffff0000, aco
//將ac0內(nèi)的數(shù)值進行符號擴展,擴展為32位負數(shù)
lbl 0
dtr ac0, ac0
//將32位整數(shù)轉(zhuǎn)換成實數(shù)
轉(zhuǎn)換的下一步是將實數(shù)進一步轉(zhuǎn)換成0.0~1.0之間的標準化實數(shù),可用下面的式(3)對給定值及過程變量進行標準化:
rnorm=(rraw/span)+offset (3)
式中:
rnorm-標準化實數(shù)值;
rraw-標準化前的值;
offset-偏移量,對單極性變量為0.0,對雙極性變量為0.5;
span-取值范圍,等于變量的最大值減去最小值,單極性變量的典型值為32000,雙極性變量的典型值為64000。
下面的程序?qū)⑸鲜鲛D(zhuǎn)換后得到的ac0中的雙極性實數(shù)(其span=64000)轉(zhuǎn)換成0.0~1.0之間的實數(shù):
/r 64000.0, ac0
//累加器中的實數(shù)標準化
+r 0.5, ac0
//加上偏移值,使其在0.0~1.0之間
movr aco, vd100
//加標準化后的值存入回路表內(nèi)
3.4 回路輸出的轉(zhuǎn)換
回路輸出即pid控制器輸出,它是標準化的0.0~1.0之間的實數(shù)。將回路輸出送給d/a轉(zhuǎn)換器之前,必須轉(zhuǎn)換成16位二進制整數(shù)。這一過程是將pv與sp轉(zhuǎn)換成標準化數(shù)值的逆過程。用下面的公式將回路輸出轉(zhuǎn)換成實數(shù):
rscal=(mn-offset)×span (4)
式中,rscal是回路輸出對應(yīng)的實數(shù)值,mn是回路輸出標準化的實數(shù)值。
下面的程序用來將回路輸出轉(zhuǎn)換為對應(yīng)的實數(shù):
movr vd108, ac0
//將回路輸出送入累加器
-r 0.5, ac0
//僅雙極性數(shù)才有此語句
*r 64000.0, ac0
//單極性變量乘以32000.0
用下面的指令將代表回路輸出的實數(shù)轉(zhuǎn)換成16位整數(shù):
round ac0, ac0
//將實數(shù)轉(zhuǎn)換為32位整數(shù)
movw ac0, aqw0
//將16位整數(shù)寫入模擬輸出(d/a)寄存器
3.5 pid指令及回路表
s7-200的pid指令如圖3所示:
圖3 pid指令
指令中tbl是回路表的起始地址,loop是回路的編號。編譯時如果指令指定的回路表起始地址或回路號超出范圍,cpu將生成編譯錯誤(范圍錯誤)儀器編譯失敗。pid指令對回路表中的某些輸入值不進行范圍檢查,應(yīng)保證過程變量、給定值等不超限?;芈繁韰⒁姼奖怼?br> 附表 pid指令的回路表
如果pid指令中的算術(shù)運算發(fā)生錯誤,特殊存儲器smi.1(溢出或非法數(shù)值)被置1,并將終止pid指令的執(zhí)行。要想消除錯誤,在下次執(zhí)行pid運算之前,應(yīng)改變引起運算錯誤的輸入值,而不是更新輸出值。 4 pid指令編程舉例
某一水箱里的水以變化速度流出,一臺變頻器驅(qū)動的水泵給水箱打水,以保持水箱的水位維持在滿水位的75%。過程變量由浮在水面上的水位測量儀提供,pid控制器的輸出值作為變頻器的速度給定值。過程變量與回路輸出均為單極性模擬量,取值范圍為0.0~1.0。
本例采用pi控制器,給定值為0.75,選取控制器參數(shù)的初始值為:kc=0.25,ts=0.1s,ti=30min。編程如下:
//主程序(obi)
ld sm0.1 //首次掃描時
call 0 //調(diào)用初始化子程序
//子程序
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 //關(guān)閉微分作用
movb 100, smb34
//設(shè)置定時中斷0的時間間隔為100ms
atch 0, 10
//設(shè)定定時中斷以執(zhí)行pid指令
eni
//允許中斷,子程序0結(jié)束
//中斷程序0
ld sm0.0
ltd aiw0, ac0
//單極性模擬量經(jīng)a/d轉(zhuǎn)換后存入累加器
dtr ac0, ac0
//32位整數(shù)轉(zhuǎn)換為實數(shù)
/r 32000.0, ac0
//標準化累加器中的實數(shù)
movr ac0, vd100 //存入回路表
ld 10.0
//在自動方式下,執(zhí)行pid指令
pid vb100, 0
//回路表的起始地址為vb100,回路號為0
ld sm0.0
movb vd108, ac0
//pid控制器的輸出值送入累加器
*r 32000.0 ac0
//將累加器中的數(shù)值標準化
round ac0, ac0
//實數(shù)轉(zhuǎn)換為32位整數(shù)
dti ac0, aqw0
//將16位整數(shù)寫入到模擬量輸出(d/a)寄存器
5 結(jié)束語
plc實現(xiàn)pid控制的方法多種,直接應(yīng)用pid指令來實現(xiàn)基于plc的pid控制,是一種易于實現(xiàn)且經(jīng)濟實用的方法。
上一個:電腦硬盤有壞道能修復嗎視頻教程,硬盤壞道怎么修復詳細圖解
下一個:胎菊和菊花的區(qū)別

變壓器繞組變形測試儀的注意事項有哪些?
淺析防火門監(jiān)控系統(tǒng)的設(shè)計與安裝方法
讓男朋友哭的浪漫驚喜 第一次給男友過生日怎么過
火電廠渦街流量計測量方法及誤差分析
AC0402FR-07665KL,國巨車規(guī)電阻0402 665KΩ ±1% 1/16W
牡丹煤污病
VHDL原件聲明及例化語句
五臺山在哪里 五臺山兩日游攻略
巴西木栽培要點有哪些?
菩提茶
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos