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