-
增量式PID:增量式PID控制器計算的是輸出的變化量,而不是絕對值。這使得控制器更加穩(wěn)定,特別是在系統(tǒng)受到擾動時。增量式PID通過以下公式計算:
-
積分分離:積分分離是指在誤差較大時關(guān)閉積分項,以防止積分飽和。當(dāng)誤差較小或接近零時,再啟用積分項,以消除穩(wěn)態(tài)誤差。這樣可以提高系統(tǒng)的響應(yīng)速度,并減少超調(diào)。
-
過程控制系統(tǒng):在化工、制藥、食品加工等行業(yè)的溫度、壓力、流量控制中,增量式帶積分分離PID可以提供更好的控制性能。
-
機(jī)械系統(tǒng):在伺服電機(jī)、液壓系統(tǒng)等需要精確位置控制的應(yīng)用中,這種PID控制器可以提高系統(tǒng)的響應(yīng)速度和穩(wěn)定性。
-
電力系統(tǒng):在發(fā)電機(jī)調(diào)速、電壓調(diào)節(jié)等電力系統(tǒng)控制中,可以有效減少超調(diào)和振蕩。
-
機(jī)器人控制:在機(jī)器人關(guān)節(jié)控制、軌跡跟蹤等應(yīng)用中,可以提高控制精度和響應(yīng)速度。
(**************************************************************************
FunctionBlockName: PID-FB塊 * Version: 1.0.0 * Author: 王同學(xué)玩工控 * UpdateTime: 2024-11-30 * Comment:
簡單說明:
積分分離:
1、當(dāng)誤差大于閾值的時候關(guān)閉積分項此時只有PD在作用 系統(tǒng)快速動作
2、當(dāng)誤差小于或等于閾值的時候打開積分項開始累計誤差 系統(tǒng)緩慢調(diào)整死區(qū)控制:當(dāng)死區(qū)設(shè)置為 1 時 目標(biāo)值為 36 系統(tǒng)在35-36之間進(jìn)入死區(qū)停止PID的運(yùn)算 且輸出值不變 當(dāng)系統(tǒng)大于36或小于35的時候系統(tǒng)開始進(jìn)行PID運(yùn)算
正動作逆動作:當(dāng)外部輸入引腳為 1 時 系統(tǒng)為正動作 為 0 時 系統(tǒng)為逆動作
Setpoint 目標(biāo)設(shè)定值 Feedback 實(shí)際反饋值 Kp 比例增益 Ti 積分時間ms Td 微分時間ms Max_output 輸出限幅最大值 Min_output 輸出限幅最小值 Dead_Band 死區(qū)控制 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); //比例系數(shù)計算 #I_term := #data_relay[1] * (#Ki * #error); //積分系數(shù)計算 #D_term := #Kd * (#error - 2 * #last_error + #prev_error); //微分系數(shù)計算 #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];? // 逆動作,反轉(zhuǎn)輸出范圍 ? ? ? ? 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;
-
西門子
+關(guān)注
關(guān)注
94文章
3055瀏覽量
116139 -
PID算法
+關(guān)注
關(guān)注
2文章
172瀏覽量
24347
原文標(biāo)題:西門子增量式PID算法帶積分分離
文章出處:【微信號:gkongbbs,微信公眾號:工控論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論