西門子增量式帶積分分離PID控制器是一種改進的PID控制算法,它結合了增量式PID和積分分離的優點。這種控制器在處理某些特定類型的控制問題時特別有效,尤其是在需要快速響應且避免積分飽和的情況下。下面我將解釋其作用、應用場合以及如何使用SCL(Structured Control Language)在FB(Function Block)中封裝這樣的PID控制器。
一、作用
-
增量式PID:增量式PID控制器計算的是輸出的變化量,而不是絕對值。這使得控制器更加穩定,特別是在系統受到擾動時。增量式PID通過以下公式計算:
-
積分分離:積分分離是指在誤差較大時關閉積分項,以防止積分飽和。當誤差較小或接近零時,再啟用積分項,以消除穩態誤差。這樣可以提高系統的響應速度,并減少超調。
FunctionBlockName: PID-FB塊 * Version: 1.0.0 * Author: 王同學玩工控 * UpdateTime: 2024-11-30 * Comment:
簡單說明:
積分分離:
1、當誤差大于閾值的時候關閉積分項此時只有PD在作用 系統快速動作
2、當誤差小于或等于閾值的時候打開積分項開始累計誤差 系統緩慢調整死區控制:當死區設置為 1 時 目標值為 36 系統在35-36之間進入死區停止PID的運算 且輸出值不變 當系統大于36或小于35的時候系統開始進行PID運算
正動作逆動作:當外部輸入引腳為 1 時 系統為正動作 為 0 時 系統為逆動作
Setpoint 目標設定值 Feedback 實際反饋值 Kp 比例增益 Ti 積分時間ms Td 微分時間ms Max_output 輸出限幅最大值 Min_output 輸出限幅最小值 Dead_Band 死區控制 Control_Mode 正動作逆動作(0/1) Mode 輸出模式選擇(0/1) integral_separate 閥值 PWM_output pwm輸出 Analog_output 模擬量輸出
***************************************************************************)
#error := #Setpoint -#Feedback; //計算誤差 IF #error > ( 0 - #Dead_Band )AND #error < #Dead_Band THEN ? ?? ? ? #data_relay[2] := 1; ? ? #last_error := #error;? ? ?//上次誤差更新 ? ? #prev_error := #last_error;? ? //上上次誤差更新 ? ?? ELSE #data_relay[2] := 0; END_IF;
IF #data_relay[2] = 0 THEN IF ABS(#error) <= #integral_separate THEN ? ? ? ?? ? ? ? ? #data_relay[1] := 1; ? ? END_IF; ? ?? ? ? IF ABS(#error) > #integral_separate THEN #data_relay[1] := 0; END_IF; #P_term := #Kp * (#error - #last_error); //比例系數計算 #I_term := #data_relay[1] * (#Ki * #error); //積分系數計算 #D_term := #Kd * (#error - 2 * #last_error + #prev_error); //微分系數計算 #delta_output := #P_term + #I_term + #D_term; //增量式PID輸出值 #rdata_realy[0] += #delta_output; //最終輸出值
#Max_data_relay := 100.0; //限幅處理最大值 #Min_data_relay := 0.0; //限幅處理最小值 IF #Control_Mode THEN// 正動作 IF #rdata_realy[0] > #Max_data_relay THEN #rdata_realy[0] := #Max_data_relay; END_IF; IF #rdata_realy[0] < #Min_data_relay THEN ? ? ? ? ? ?? ? ? ? ? ? ? #rdata_realy[0] := #Min_data_relay; ? ? ? ? ? ?? ? ? ? ? END_IF; ? ? ? ?? ? ? ELSE? // 逆動作 ? ? ? ?? ? ? ? ? #rdata_realy[0] := 0- #rdata_realy[0];? // 逆動作,反轉輸出范圍 ? ? ? ? IF #rdata_realy[0] > #Max_data_relay THEN #rdata_realy[0] := #Max_data_relay; END_IF; IF #rdata_realy[0] < #Min_data_relay THEN ? ? ? ? ? ?? ? ? ? ? ? ? #rdata_realy[0] := #Min_data_relay; ? ? ? ? ? ?? ? ? ? ? END_IF; ? ? END_IF; ? ? ?? ? ? #Analog_output? := ( #rdata_realy[0]? -#Min_data_relay ) / ( #Max_data_relay - #Min_data_relay)? * (#Max_output-#Min_output)+#Min_output; ? ?? END_IF;
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
西門子
+關注
關注
98文章
3113瀏覽量
117490 -
PID算法
+關注
關注
2文章
172瀏覽量
24710
原文標題:西門子增量式PID算法帶積分分離
文章出處:【微信號:gkongbbs,微信公眾號:工控論壇】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
跪求用labview編寫的各種控制算法的子VI,比如前反饋pid,積分分離和模糊控制等。
跪求用labview編寫的各種控制算法的子VI,比如前反饋pid,積分分離和模糊控制等。
發表于 01-22 22:50
PID控制器開發筆記之二:積分分離PID控制器的實現
的描述,來實現基于積分分離的PID算法實現,同樣是包括位置型和增量型兩種實現方式。首先我們來看一下算法的實現過程,具體的流程圖如下: 有上圖
發表于 04-28 23:33
在STM32如何去實現增量式PID算法
盡快進入狀態。特地分享一些自己如何實現的過程。首先說說增量式PID的公式,這個關系到MCU算法公式的書寫,實際上兩個公式的寫法是同一個公式變換來得,不同的是系數的差異。資料上比較多的是
發表于 09-13 06:54
如何實現增量式PID
雖然PID不是什么牛逼的東西,但是真心希望以后剛剛接觸這塊的人能盡快進入狀態。特地分享一些自己如何實現的過程。首先說說增量式PID的公式,這個關系到MCU
發表于 09-13 08:19
基于積分分離PID控制的交流伺服系統
1 引言
本文針對PID控制的特點,設計了一種積分分離的控制方法,即當系統誤差較大時,取消積分環節,避免由于積分累積引起系統較大的超調;當系統誤差較小時
發表于 08-29 11:57
?994次閱讀

積分分離PID算法在橫機控制器中的應用
針對電腦橫機,設計了一個基于積分分離PID算法的變頻調速控制器,給出了該控制器的總體硬件結構框圖,其中詳細介紹了轉速控制模塊和轉速檢測模塊,提出了其算法的設計思想及其
發表于 06-16 19:36
?45次下載

西門子PLC S7-200 SMART PID控制功能分享
S7-200 SMART采用了新型的設計方法,信號板可以擴展通訊接口,數字量接口,模擬量接口,并且能合理的分配空間。西門子PLC S7-200 SMART具有PID控制功能,為用戶在自動化驅動控制系統
評論