西門子S7-1200 PID調節(jié)
一、 PID功能
1. PID是用于對閉環(huán)過程進行控制。PID控制適用于溫度,壓力,流量等物理量,是工業(yè)現場中應用最為廣泛的一種控制方式,其原理是,對被控對象設定一個給定值,然后將實際值測量出來,并與給定值比較,將其差值送入PID控制器,PID控制器按照一定的運算規(guī)律,計算出結果,即為輸出值,送到執(zhí)行器進行調節(jié),其中的P,I,D指的是比例,積分,微分,是一種閉環(huán)控制算法。通過這些參數,可以使被控對象追隨給定值變化并使系統(tǒng)達到穩(wěn)定,自動消除各種干擾對控制過程的影響。
二、 S7-1200 PID控制器
1. S7-1200 CPU提供了PID控制器回路數量受到CPU的工作內存及支持DB塊數量限制。嚴格上說并沒有限制具體數量,但實際應用推薦客戶不要超過16路PID回路??赏瑫r進行回路控制,用戶可手動調試參數,也可使用自整定功能,提供了兩種自整定方式由PID控制器自動調試參數。另外STEP7 Basic還提供了調試面板,用戶可以直觀的了解控制器及被控對象的狀態(tài)。
2. PID控制器結構
PID控制器功能主要依靠三部分實現,循環(huán)中斷塊,PID指令塊,工藝對象背景數據塊。用戶在調用PID指令塊時需要定義其背景數據塊,而此背景數據塊需要在工藝對象中添加,稱為工藝對象背景數據塊。PID指令塊與其相對應的的工藝對象背景數據塊組合使用,形成完整的PID控制器。PID控制器結構如圖1。

圖1 PID控制器結構
3. 循環(huán)中斷塊可按一定周期產生中斷,執(zhí)行其中的程序。PID指令塊定義了控制器的控制算法,隨著循環(huán)中斷塊產生中斷而周期性執(zhí)行,其背景數據塊用于定義輸入輸出參數,調試參數以及監(jiān)控參數。此背景數據塊并非普通數據塊,需要在目錄樹視圖的工藝對象中才能找到并定義。
三、 S7-1200 PID Compact V2 指令介紹
PID 指令塊的參數分為兩部分,輸入參數與輸出參數。其指令塊的視圖分為擴展視圖與集成視圖,在不同的視圖下所能看見的參數是不一樣的,在集成視圖中可看到的參數為最基本的默認參數,如給定值,反饋值,輸出值等。定義這些參數可實現控制器最基本的控制功能,而在擴展視圖中,可看到更多的相關參數,如手自動切換,模式切換等,使用這些參數可使控制器具有更豐富的功能。如圖2所示

圖2 PID 指令塊的集成視圖和擴展視圖
PID Compact 輸入輸出參數介紹
1. PID_Compact V2 的輸入參數包括 PID 的設定值,過程值,手自動切換,故障確認,模式切換和 PID 重啟參數,如表 1 所示。
表1:輸入參數
參數 | 數據類型 | 說明 |
Setpoint | REAL | PID 控制器在自動模式下的設定值 |
Input | REAL | PID 控制器的反饋值(工程量) |
Input_PER | INT | PID 控制器的反饋值(模擬量) |
Disturbance | REAL | 擾動變量或預控制值。 |
ManualEnable | BOOL | 出現 FALSE -> TRUE 上升沿時會激活“手動模式”,與當前 Mode 的數值無關。 當 ManualEnable = TRUE,無法通過 ModeActivate 的上升沿或使用調試對話框來更改工作模式。 出現 TRUE -> FALSE 下降沿時會激活由 Mode 指定的工作模式。 |
ManualValue | REAL | 用作手動模式下的 PID 輸出值,須滿足 Config.OutputLowerLimit < ManualValue < Config.OutputUpperLimit 。 |
ErrorAck | BOOL | FALSE -> TRUE 上升沿時,錯誤確認,清除已經離開的錯誤信息。 |
Reset | BOOL | 重新啟動控制器: FALSE -> TRUE 上升沿, 切換到“未激活”模式,同時復位 ErrorBits 和 Warnings,清除積分作用(保留 PID 參數) 。 只要 Reset = TRUE,PID_Compact 便會保持在“未激活”模式下 (State = 0)。 TRUE -> FALSE 下降沿,PID_Compact 將切換到保存在 Mode 參數中的工作模式。 |
ModeActivate | BOOL | FALSE -> TRUE 上升沿,PID_Compact 將切換到保存在 Mode 參數中的工作模式。 |
注意:如果使用 Reset 復位錯誤會重啟 PID 控制器,建議使用 ErrorAck 來復位錯誤代碼。
2. PID_Compact V2 的輸出參數包括 PID 的輸出值(REAL、模擬量、PWM),標定的過程值,限位報警(設定值、過程值),PID 的當前工作模式,錯誤狀態(tài)及錯誤代碼,如表 2 所示。
表2:輸出參數
參數 | 數據類型 | 說明 |
ScaledInput | REAL | 標定的過程值 |
Output | REAL | PID 的輸出值 (REAL 形式) |
Output_PER | INT | PID 的輸出值(模擬量) |
Output_PWM | BOOL | PID 的輸出值(脈寬調制) |
SetpointLimit_H | BOOL | 如果 SetpointLimit_H = TRUE,則說明達到了設定值的絕對上限 (Setpoint ≥ Config.SetpointUpperLimit)。 |
SetpointLimit_L | BOOL | 如果 SetpointLimit_L = TRUE,則說明已達到設定值的絕對下限 (Setpoint ≤ Config.SetpointLowerLimit)。 |
InputWarning_H | BOOL | 如果 InputWarning_H = TRUE,則說明過程值已達到或超出警告上限。 |
InputWarning_L | BOOL | 如果 InputWarning_L = TRUE,則說明過程值已達到或低于警告下限。 |
State | INT | State 參數顯示了 PID 控制器的當前工作模式。 可使用輸入參數 Mode 和 ModeActivate 處的上升沿更改工作模式: State = 0:未激活 State = 1:預調節(jié) State = 2:精確調節(jié) State = 3:自動模式 State = 4:手動模式 State = 5:帶錯誤監(jiān)視的替代輸出值 |
Error | BOOL | 如果 Error = TRUE,則此周期內至少有一條錯誤消息處于未決狀態(tài)。 |
ErrorBits | DWORD | ErrorBits 參數顯示了處于未決狀態(tài)的錯誤消息。通過 Reset 或 ErrorAck 的上升沿來保持并復位 ErrorBits。 |
注意:
a) 若 PID 控制器未正常工作,請先檢查 PID 的輸出狀態(tài) State 來判斷 PID 的當前工作模式,并檢查錯誤信息。
b) 當錯誤出現時 Error=1,錯誤離開后 Error=0,ErrorBits 會保留錯誤信息??赏ㄟ^編程清除錯誤離開后 ErrorBits 保留的錯誤信息。
3. PID_Compact V2 的輸入輸出參數 Mode 指定了 PID_Compact 將轉換到的工作模式,具有斷電保持特性,由沿激活切換工作模式,如表 3 所示。
表3.輸入輸出參數
參數 | 數據類型 | 說明 |
Mode | INT | 在 Mode 上,指定 PID_Compact 將轉換到的工作模式: State = 0:未激活 State = 1:預調節(jié) State = 2:精確調節(jié) State = 3:自動模式 State = 4:手動模式 工作模式由以下沿激活: ModeActivate 的上升沿 Reset 的下降沿 ManualEnable 的下降沿 如果 RunModeByStartup = TRUE,則冷啟動 CPU |
注意:當 ManualEnable = TRUE,無法通過 ModeActivate 的上升沿或使用調試對話框來更改工作模式。
4. 當PID出現錯誤時,通過捕捉 Error 的上升沿,將 ErrorBits 傳送至全局地址,從而獲得 PID 的錯誤信息,如表 4 所示。
表4.錯誤代碼定義
錯誤代碼 (DW#16#----) | 說明 |
0000 | 沒有任何錯誤 |
0001 | 參數 “Input” 超出了過程值限值的范圍,正常范圍應為 Config.InputLowerLimit < Input < Config.InputUpperLimit 。 |
0002 | 參數 “Input_PER” 的值無效。 請檢查模擬量輸入是否有處于未決狀態(tài)的錯誤。 |
0004 | 精確調節(jié)期間出錯。 過程值無法保持振蕩狀態(tài)。 |
0008 | 預調節(jié)啟動時出錯。 過程值過于接近設定值。 啟動精確調節(jié)。 |
0010 | 調節(jié)期間設定值發(fā)生更改??稍?CancelTuningLevel 變量中設置允許的設定值波動。 |
0020 | 精確調節(jié)期間不允許預調節(jié)。 |
0080 | 預調節(jié)期間出錯。 輸出值限值的組態(tài)不正確,請檢查輸出值的限值是否已正確組態(tài)及其是否匹配控制邏輯。 |
0100 | 精確調節(jié)期間的錯誤導致生成無效參數。 |
0200 | 參數 “Input” 的值無效: 值的數字格式無效。 |
0400 | 輸出值計算失敗。 請檢查 PID 參數。 |
0800 | 采樣時間錯誤: 循環(huán)中斷 OB 的采樣時間內沒有調用 PID_Compact。 |
1000 | 參數 “Setpoint” 的值無效,值的數字格式無效。 |
10000 | ManualValue 參數的值無效,值的數字格式無效。 |
20000 | 變量 SubstituteOutput 的值無效,值的數字格式無效。這時,PID_Compact 使用輸出值下限作為輸出值。 |
40000 | Disturbance 參數的值無效,值的數字格式無效。 |
注意:如果多個錯誤同時處于待決狀態(tài),將通過二進制加法顯示 ErrorBits 的值。 例如,顯示 ErrorBits = 0003h 表示錯誤 0001h 和 0002h 同時處于待決狀態(tài)。
四、 S7-1200 PID Compact V2 組態(tài)步驟
1. 使用 PID 功能,必須先添加循環(huán)中斷,需要在循環(huán)中斷中添加 PID_Compact 指令。在循環(huán)中斷的屬性中,可以修改其循環(huán)時間

圖3 添加循環(huán)中斷后在屬性界面修改其循環(huán)時間
雙擊“添加新塊”----選擇“循環(huán)中斷塊”-----確定循環(huán)中斷時間-----點擊確定生成
因為程序執(zhí)行的掃描周期不相同,一定要在循環(huán)中斷里調用 PID 指令。可右鍵循環(huán)中斷塊,進入屬性更改其循環(huán)中斷時間。
注意:為保證以恒定的采樣時間間隔執(zhí)行 PID 指令,必須在循環(huán) OB 中調用。
在“指令 > 工藝 > PID 控制 > Compact PID(注意版本選擇) > PID_Compact”下,將 PID_Compact 指令添加至循環(huán)中斷。

圖4在循環(huán)中斷中添加 PID_Compact 指令
2. 當添加完 PID_Compact 指令后,在項目樹 > 工藝對象文件夾中,會自動關聯(lián)出 PID_Compact_x[DBx],包含其組態(tài)界面和調試功能。

圖5 PID_Compact 組態(tài)界面
3. 使用 PID 控制器前,需要對其進行組態(tài)設置,分為基本設置、過程值設置、高級設置等部分
1) 基本設置
A. 基本設置--控制器類型
a. 為設定值、過程值和擾動變量選擇物理量和測量單位。
b. 正作用:隨著 PID 控制器的偏差增大,輸出值增大。 反作用:隨著PID控制器的偏差增大,輸出值減小。PID_Compact 反作用時,可以勾選“反轉控制邏輯”;或者用負比例增益。
c. 要在 CPU 重啟后切換到“模式”(Mode) 參數中保存的工作模式,請勾選“在 CPU 重啟后激活模式”。

圖6. PID_Compact > 基本設置 > 控制器類型
B. 基本設置--定義 Input/Output 參數
定義 PID 過程值和輸出值的內容,選擇 PID_Compact 輸入、輸出變量的引腳和數據類型。


圖7. PID_Compact > 基本設置 > 定義 Input/Output
2) 過程值設置
A. 過程值設置--過程值限值必須滿足過程值下限<過程值上限。如果過程值超出限值,就會出現錯誤 (ErrorBits = 0001h)。


圖8.設置過程值限值
B. 過程值設置--過程值標定
a. 當且僅當在 Input/Output 中輸入選擇為 “Input_PER” 時,才可組態(tài)過程值標定。
b. 如果過程值與模擬量輸入值成正比,則將使用上下限值對來標定 Input_PER。
c. 必須滿足范圍的下限<上限。


圖9. 進行過程值標定
3) 高級設置
A. 高級設置--過程值監(jiān)視
a. 過程值的監(jiān)視限值范圍需要在過程值限值范圍之內。
b. 過程值超過監(jiān)視限值,會輸出警告。過程值超過過程值限值,PID輸出報錯,切換工作模式。
i. 當過程值超過或者達到警告限制,對應的InputWarning 位=1,PID控制器的工作模式保持不變。
ii. 當過程值超過設定值的限值,Error=1,ErrorBits=0001過程值超限。PID控制器的狀態(tài)會有所變化。


圖10.設置過程監(jiān)控值設置,與過程值限對比
B. 高級設置-- PWM 限制
輸出參數 Output 中的值被轉換為一個脈沖序列,該序列通過脈寬調制在輸出參數 Output_PWM 中輸出。在 PID 算法采樣時間內計算 Output,在采樣時間 PID_Compact 內輸出 Output_PWM。

圖11.PID_Compact 的 PWM 輸出原理
a. 為最大程度地減小工作頻率并節(jié)省執(zhí)行器,可延長最短開/關時間。
b. 如果要使用 “Output” 或 “Output_PER”,則必須分別為最短開關時間組態(tài)值 0.0。
c. 脈沖或中斷時間永遠不會小于最短開關時間。例如,在當前 PID 算法采樣周期中,如果輸出小于最短接通時間將不輸出脈沖,如果輸出大于(PID 算法采樣時間-最短關閉時間) 則整個周期輸出高電平。
d. 在當前 PID 算法采樣周期中,因小于最短接通時間未能輸出脈沖的,會在下一個 PID 算法采樣周期中累加和補償由此引起的誤差。
最短開/關時間只影響輸出參數 Output_PWM,不用于 CPU 中集成的任何脈沖發(fā)生器。
示例:PID_Compact 采樣時間=100ms;PID 算法采樣時間=1000ms;最短開啟時間=200 ms(即已組態(tài)的最小接通脈沖為 PID_Compact 的 20%),若此時 PID 輸出恒定為 15%。
則在第一個周期內不輸出脈沖,在第二個周期內將第一個周期內未輸出的脈沖累加到第二個周期的脈沖,依次輸出。如下圖所示。

圖12.PWM 最小開/關時間影響示例圖
C. 高級設置--輸出值限值
a. 在“輸出值的限值”窗口中,以百分比形式組態(tài)輸出值的限值。 無論是在手動模式還是自動模式下,都不要超過輸出值的限值。
b. 手動模式下的設定值 ManualValue,必須介于輸出值的下限 (Config.OutputLowerLimit) 與輸出值的上限 ( Config.OutputUpperLimit )之間的值。
c. 如果在手動模式下指定了一個超出限值范圍的輸出值,則 CPU 會將有效值限制為組態(tài)的限值。
d. PID_compact 可以通過組態(tài)界面中輸出值的上限和下限修改限值。最廣范圍為 -100.0 到 100.0,如果采用 Output_PWM 輸出時限制為 0.0 到 100.0 。

圖13.過程監(jiān)控值設置和過程值限對比
D. PID 組態(tài)高級設置_對錯誤的響應
根據錯誤代碼來分析錯誤原因。根據組態(tài)界面所設置的“對錯誤的響應”,不同錯誤的響應狀態(tài)也不一樣,如下表所示:

E. 高級設置--手動輸入 PID 參數
a. 在 PID Compact 組態(tài)界面可以修改 PID 參數,通過此處修改的參數對應工藝對象背景數據塊 > Static > Retain > PID 參數。
b. 通過組態(tài)界面修改參數需要重新下載組態(tài)并重啟 PLC。建議直接對工藝對象背景數據塊進行操作。

圖14.PID組態(tài)高級設置—手動輸入PID參數
1.啟動手動輸入后,可以通過組態(tài)界面修改PID參數。
2.啟動手動輸入----修改參數-----重新下載組態(tài)----CPU:STOP-RUN
3.PID:預調節(jié)和精確調節(jié)期間計算PID參數
PI:預調節(jié)換熱精確調節(jié)期間計算PI參數。