1. PID算法
在工業(yè)生產(chǎn)過程控制中,模擬信號PID(由比例、積分、微分構(gòu)成的閉合回路)調(diào)節(jié)是常見的一種控制方法。運(yùn)行PID控制指令,S7-200西門子plc將根據(jù)參數(shù)表中的輸入測量值、控制設(shè)定值及PID參數(shù),進(jìn)行PID運(yùn)算,求得輸出控制值。參數(shù)表中有9個(gè)參數(shù),全部為32位的實(shí)數(shù),共占用36個(gè)字節(jié)。PID控制回路的參數(shù)表如表6-15所示。
表6-15 PID控制回路的參數(shù)表
地址偏移量 | 參數(shù) | 數(shù)據(jù)格式 | 參數(shù)類型 | 說明 |
0 | 過程變量當(dāng)前值PVn | 雙字 nbsp;,實(shí)數(shù) | 輸入 | 必須在0.0至1.0范圍內(nèi)。 |
4 | 給定值SPn | 雙字 ,實(shí)數(shù) | 輸入 | 必須在0.0至1.0范圍內(nèi) |
8 | 輸出值Mn | 雙字 ,實(shí)數(shù) | 輸入/輸出 | 在0.0至1.0范圍內(nèi) |
12 | 增益Kc | 雙字 ,實(shí)數(shù) | 輸入 | 比例常量,可為正數(shù)或負(fù)數(shù) |
16 | 采樣時(shí)間Ts | 雙字 ,實(shí)數(shù) | 輸入 | 以秒為單位,必須為正數(shù) |
20 | 積分時(shí)間Ti | 雙字 ,實(shí)數(shù) | 輸入 | 以分鐘為單位,必須為正數(shù)。 |
24 | 微分時(shí)間Td | 雙字 ,實(shí)數(shù) | 輸入 | 以分鐘為單位,必須為正數(shù)。 |
28 | 上一次的積分值Mx | 雙字 ,實(shí)數(shù) | 輸入/輸出 | 0.0和1.0之間(根據(jù)PID運(yùn)算結(jié)果更新) |
32 | 上一次過程變量PVn-1 | 雙字 ,實(shí)數(shù) | 輸入/輸出 | 最近一次PID運(yùn)算值 |
Mn=Kc*(SPn-PVn)+Kc*(Ts/Ti)*(SPn-PVn)+Mx+Kc*(Td/Ts)*(PVn-1-PVn)
其中各參數(shù)的含義已在表6-15中描述。
比例項(xiàng)Kc*(SPn-PVn):能及時(shí)地產(chǎn)生與偏差(SPn-PVn)成正比的調(diào)節(jié)作用,比例系數(shù)Kc越大,比例調(diào)節(jié)作用越強(qiáng),系統(tǒng)的穩(wěn)態(tài)精度越高,但Kc過大會(huì)使系統(tǒng)的輸出量振蕩加劇,穩(wěn)定性降低。
積分項(xiàng)Kc*(Ts/Ti)*(SPn-PVn)+Mx:與偏差有關(guān),只要偏差不為0,PID控制的輸出就會(huì)因積分作用而不斷變化,直到偏差消失,系統(tǒng)處于穩(wěn)定狀態(tài),所以積分的作用是消除穩(wěn)態(tài)誤差,提高控制精度,但積分的動(dòng)作緩慢,給系統(tǒng)的動(dòng)態(tài)穩(wěn)定帶來不良影響,很少單獨(dú)使用。從式中可以看出:積分時(shí)間常數(shù)增大,積分作用減弱,消除穩(wěn)態(tài)誤差的速度減慢。
微分項(xiàng)Kc*(Td/Ts)*(PVn-1-PVn):根據(jù)誤差變化的速度(既誤差的微分)進(jìn)行調(diào)節(jié)具有超前和預(yù)測的特點(diǎn)。微分時(shí)間常數(shù)Td增大時(shí),超調(diào)量減少,動(dòng)態(tài)性能得到改善,如Td過大,系統(tǒng)輸出量在接近穩(wěn)態(tài)時(shí)可能上升緩慢。
2. PID控制回路選項(xiàng)
在很多控制系統(tǒng)中,有時(shí)只采用一種或兩種控制回路。例如,可能只要求比例控制回路或比例和積分控制回路。通過設(shè)置常量參數(shù)值選擇所需的控制回路。
(1)如果不需要積分回路(即在PID計(jì)算中無“I”),則應(yīng)將積分時(shí)間Ti設(shè)為無限大。由于積分項(xiàng)Mx的初始值,雖然沒有積分運(yùn)算,積分項(xiàng)的數(shù)值也可能不為零。
(2)如果不需要微分運(yùn)算(即在PID計(jì)算中無“D”),則應(yīng)將微分時(shí)間Td設(shè)定為0.0。
(3)如果不需要比例運(yùn)算(即在PID計(jì)算中無“P”),但需要I或ID控制,則應(yīng)將增益值Kc指定為0.0。因?yàn)镵c是計(jì)算積分和微分項(xiàng)公式中的系數(shù),將循環(huán)增益設(shè)為0.0會(huì)導(dǎo)致在積分和微分項(xiàng)計(jì)算中使用的循環(huán)增益值為1.0。
3. 回路輸入量的轉(zhuǎn)換和標(biāo)準(zhǔn)化
每個(gè)回路的給定值和過程變量都是實(shí)際數(shù)值,其大小、范圍和工程單位可能不同。在PLC進(jìn)行PID控制之前,必須將其轉(zhuǎn)換成標(biāo)準(zhǔn)化浮點(diǎn)表示法。步驟如下:
(1)將實(shí)際從16位整數(shù)轉(zhuǎn)換成32位浮點(diǎn)數(shù)或?qū)崝?shù)。下列指令說明如何將整數(shù)數(shù)值轉(zhuǎn)換成實(shí)數(shù)。
XORD AC0,AC0 //將AC0清0 www.zhimadaxue.com
ITD AIW0, AC0 //將輸入數(shù)值轉(zhuǎn)換成雙字
DTR AC0, AC0 //將32位整數(shù)轉(zhuǎn)換成實(shí)數(shù)
(2)將實(shí)數(shù)轉(zhuǎn)換成0.0至1.0之間的標(biāo)準(zhǔn)化數(shù)值。用下式:
實(shí)際數(shù)值的標(biāo)準(zhǔn)化數(shù)值=實(shí)際數(shù)值的非標(biāo)準(zhǔn)化數(shù)值或原始實(shí)數(shù)/取值范圍 +偏移量
其中:取值范圍=最大可能數(shù)值-最小可能數(shù)值=32 000(單極數(shù)值)或64 000(雙極數(shù)值)
偏移量:對單極數(shù)值取0.0,對雙極數(shù)值取0.5
單極(0~32000),雙極(-32000~32000)
如將上述AC0中的雙極數(shù)值(間距為64,000)標(biāo)準(zhǔn)化:
/R 64000.0, AC0 //使累加器中的數(shù)值標(biāo)準(zhǔn)化
+R 0.5, AC0 //加偏移量0.5
MOVR AC0, VD100 //將標(biāo)準(zhǔn)化數(shù)值寫入PID回路參數(shù)表中。
4. PID回路輸出轉(zhuǎn)換為成比例的整數(shù)
程序執(zhí)行后,PID回路輸出0.0和1.0之間的標(biāo)準(zhǔn)化實(shí)數(shù)數(shù)值,必須被轉(zhuǎn)換成16位成比例整數(shù)數(shù)值,才能驅(qū)動(dòng)模擬輸出。
PID回路輸出成比例實(shí)數(shù)數(shù)值=(PID回路輸出標(biāo)準(zhǔn)化實(shí)數(shù)值-偏移量)*取值范圍
程序如下:
MOVR VD108, AC0 //將PID回路輸出送入AC0。
-R 0.5, AC0 //雙極數(shù)值減偏移量0.5
*R 64000.0, AC0 //AC0的值*取值范圍,變?yōu)槌杀壤龑?shí)數(shù)數(shù)值
ROUND AC0,AC0 //將實(shí)數(shù)四舍五入取整,變?yōu)?2位整數(shù)
DTI AC0, AC0 //32位整數(shù)轉(zhuǎn)換成16位整數(shù)
MOVW AC0, AQW0 //16位整數(shù)寫入AQW0
5. PID指令
PID指令:使能有效時(shí),根據(jù)回路參數(shù)表(TBL)中的輸入測量值、控制設(shè)定值及PID參數(shù)進(jìn)行PID計(jì)算。格式如表6-16所示。
說明:
(1)程序中可使用八條PID指令,分別編號0-7,不能重復(fù)使用。
(2)使ENO = 0的錯(cuò)誤條件:0006(間接地址),SM1.1(溢出,參數(shù)表起始地址或指令中指定的PID回路指令號碼操作數(shù)超出范圍)。
(3)PID指令不對參數(shù)表輸入值進(jìn)行范圍檢查。必須保證過程變量和給定值積分項(xiàng)前值和過程變量前值在0.0和1.0之間。
表6-16 PID指令格式
LAD | STL | 說明 |
![]() |
PID TBL,LOOP | TBL:參數(shù)表起始地址VB, 數(shù)據(jù)類型:字節(jié) LOOP:回路號,常量(0-7), 數(shù)據(jù)類型:字節(jié) |