n 理解PID
比例-積分-微分控制規(guī)律是工業(yè)上最常用的控制規(guī)律。人們一般根據(jù)比例-積分-微分的英文縮寫,將其簡稱為PID控制。即使在更為先進的控制規(guī)律廣泛應用的今天,各種形式的PID控制仍然在所有控制回路中占85%以上。
在PID 控制中,積分控制的特點是:只要還有余差(即殘余的控制偏差)存在,積分控制就按部就班地逐漸增加控制作用,直到余差消失。所以積分的效果比較緩慢,除特殊情況外,作為基本控制作用,緩不救急。
微分控制的特點是:盡管實際測量值還比設定值低,但其快速上揚的沖勢需要及早加以抑制,否則,等到實際值超過設定值再作反應就晚了,這就是微分控制施展身手的地方了。作為基本控制使用,微分控制只看趨勢,不看具體數(shù)值所在,所以最理想的情況也就是把實際值穩(wěn)定下來,但穩(wěn)定在什么地方就要看你的運氣了,所以微分控制也不能作為基本控制作用。
比例控制沒有這些問題,比例控制的反應快,穩(wěn)定性好,是最基本的控制作用,積分、微分控制是對比例控制起增強作用的,極少單獨使用。在實際使用中比例和積分一般一起使用,比例承擔主要的控制作用,積分幫助消除余差。微分只有在被控對象反應遲緩,需要在開始有所反應時,及早補償,才予以采用。只用比例和微分的情況很少見。
A5系列PLC支持浮點數(shù)運算,可以在A5上方便地實現(xiàn)PID功能。
n 程序工作原理
? PID方程式
Mn = MPn + Min + MDn
輸出 = 比例項 + 積分項 + 微分項
其中: Mn 第n采樣時刻的計算值
MPn 第n采樣時刻的比例項值
MIn 第n采樣時刻的積分項值
MDn 第n采樣時刻的微分項值
? PID方程的比例項
比例項MP是增益(Kc)和偏差(e)的乘積,其中Kc決定輸出對偏差的靈敏度,偏差(e)是給定值(SP)與過程變量(PV)之差,求比例項的算式是:
MPn = Kc * ( SPn - PVn )
其中: MPn 第n采樣時刻的比例項值
Kc 增益
SPn 第n采樣時刻的給定值
PVn 第n采樣時刻的過程變量值
? PID方程的積分項
積分項值MI與偏差和成正比,求積分項的算式是:
MIn = Kc * Ts / Ti * (SPn - PVn ) + MX
其中: MIn 第n采樣時刻的積分項值
Kc 增益
Ts 采樣時間間隔
Ti 積分時間
SPn 第n采樣時刻的給定值
PVn 第n采樣時刻的過程變量值
MX 第n-1采樣時刻的積分值(積分項前值,也稱積分和或偏置)
? PID方程的微分項
微分項值MD與偏差的變化成正比,求解微分項的算式是:
MDn = Kc * Td / Ts * ((SPn-PVn) - ( SPn-1 - PVn-1))
為了避免給定值變化的微分作用而引起的跳變,假定給定值不變(SPn=SPn-1),這樣,可以用過程變量的變化替代偏差的變化,計算算式可改進為:
MDn = Kc * Td / Ts * (PVn-1 - PVn)
其中: MDn 第n采樣時刻的微分項值
Kc 增益
Ts 采樣時間間隔
Td 微分時間
SPn 第n采樣時刻的給定值
SPn-1 第n-1采樣時刻的給定值
PVn 第n采樣時刻的過程變量值
PVn-1 第n-1采樣時刻的過程變量值
第一次采樣設定PVn-1= PVn
n 程序實例
下面,我們舉一個例子,用A5-CPU224XP來實現(xiàn)一個PID調節(jié)。假設輸入的信號為AIW2,輸出為AQW2,給定值為16000。首先,分步來計算各個變量。
l 地址分配
地址 |
變量名 |
格式 |
類型 |
范圍 |
說明 |
VD1000 |
PVn |
實數(shù) |
輸入 |
0.0--1.0 |
過程變量 |
VD1004 |
SPn |
實數(shù) |
輸入 |
0.0--1.0 |
設定值 |
VD1008 |
Mn |
實數(shù) |
輸入/輸出 |
0.0--1.0 |
輸出值 |
VD1012 |
Kc |
實數(shù) |
輸入 |
可正可負 |
增益常數(shù) |
VD1016 |
Ts |
實數(shù) |
輸入 |
必須為正 |
采樣時間,單位為秒 |
VD1020 |
Ti |
實數(shù) |
輸入 |
必須為正 |
積分時間,單位為分鐘 |
VD1024 |
Td |
實數(shù) |
輸入 |
必須為正 |
微分時間,單位為分鐘 |
VD1028 |
MX |
實數(shù) |
輸入/輸出 |
0.0--1.0 |
積分項前項 |
VD1032 |
PV(n-1) |
實數(shù) |
輸入/輸出 |
0.0--1.0 |
前一次采樣過程變量值 |
VD1036 |
MPn |
實數(shù) |
輸入/輸出 |
0.0--1.0 |
比例項 |
VD1040 |
MIn |
實數(shù) |
輸入/輸出 |
0.0--1.0 |
積分項 |
VD1044 |
MDn |
實數(shù) |
輸入/輸出 |
0.0--1.0 |
微分項 |
VW1048 |
|
|
|
|
Round(Ts*10),定時器用時間長度 |
VD1060 |
|
實數(shù) |
|
|
臨時變量 |
VD1064 |
|
實數(shù) |
|
|
臨時變量 |
VD1068 |
|
實數(shù) |
|
|
臨時變量 |
l 用戶預先指定值
用戶需要預先指定如下變量(均為實數(shù)):
VD1008 |
Mn |
VD1012 |
Kc |
VD1016 |
Ts |
VD1020 |
Ti |
VD1024 |
Td |
VD1028 |
MX |
l 將AIW2進行標準化得到PVn
LD SM0.0
ITD AIW2 , VD1060
DTR VD1060 , VD1064
/R VD1064 , 32767.0 , VD1000
l 注意到第一次采樣設定PVn-1= PVn
LD SM0.0
MOVR VD1000 , VD1032
l 將給定值進行標準化得到SPn(若給定值不變,僅計算一次即可),也可以通過文本等設定給定值,但一定要設定為標準化的給定值(0.0—1.0之間)
LD SM0.0
/R 16000 , 32767 , VD1004
l 計算MPn
MPn = Kc * ( SPn - PVn )
LD SM0.0
-R VD1004 , VD1000 , VD1060
*R VD1060 , VD1012 , VD1036
l 計算MIn
MIn = Kc * Ts / Ti * (SPn - PVn ) + MX
LD SM0.0
*R VD1036 , VD1016 , VD1060
/R VD1060 , VD1020 , VD1064
/R VD1064 , 60.0 , VD1068
+ R VD1068 , VD1028 , VD1040
l 將MIn保存為下一次的MX
LD SM0.0
MOVR VD1040 , VD1028
l 計算MDn
MDn = Kc * Td / Ts * (PVn-1 - PVn)
LD SM0.0
-R VD1032 , VD1000 , VD1060
*R VD1060 , VD1024 , VD1064
*R VD1064 , VD1012 , VD1068
*R VD1068 , 60.0 , VD1060
/R VD1060 , VD1016 , VD1044
l 計算Mn
Mn = MPn + MIn + MDn
LD SM0.0
+R VD1036 , VD1040 , VD1060
+R VD1060 , VD1044 , VD1008
l 輸出值(將標準化的Mn轉換為AQ值輸出)
LD SM0.0
*R VD1008 , 32000.0 , VD1060
ROUND VD1060 , VD1064
DTI VD1064 , AQW2
(轉載)