當前位置:首頁 » 操作系統 » pid演算法實驗

pid演算法實驗

發布時間: 2022-04-29 10:27:43

❶ 什麼是「PID演算法

「PID演算法」在過程式控制制中,按偏差的比例(P)、積分(I)和微分(D)進行控制的PID控制器(亦稱PID調節器)是應用最為廣泛的一種自動控制器。

它具有原理簡單,易於實現,適用面廣,控制參數相互獨立,參數的選定比較簡單等優點;而且在理論上可以證明,對於過程式控制制的典型對象──「一階滯後+純滯後」與「二階滯後+純滯後」的控制對象,PID控制器是一種最優控制。

PID調節規律是連續系統動態品質校正的一種有效方法,它的參數整定方式簡便,結構改變靈活(PI、PD、…)。

控制點包含三種比較簡單的PID控制演算法,分別是:增量式演算法,位置式演算法,微分先行。 這三種PID演算法雖然簡單,但各有特點,基本上能滿足一般控制的大多數要求。

PID增量式演算法

離散化公式:

△u(k)= u(k)- u(k-1)

△u(k)=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)]

進一步可以改寫成

△u(k)=Ae(k)-Be(k-1)+Ce(k-2)。

❷ PID演算法控制溫度加熱系統,室溫(為防止分數流失,做成追加100分以上)

剛好前不久搞過PID,部分程序如下,僅供參考

/*==============================================================================
在使用單片機作為控制cpu時,請稍作簡化,具體的PID參數必須由具體對象通過實驗確定。
由於單片機的處理速度和ram資源的限制,一般不採用浮點數運算,而將所有參數全部用整數,
運算到最後再除以一個2的N次方數據(相當於移位),作類似定點數運算,可大大提高運算速度,
根據控制精度的不同要求,當精度要求很高時,注意保留移位引起的「余數」,做好余數補償。
這個程序只是一般常用pid演算法的基本架構,沒有包含輸入輸出處理部分。
==============================================================================*/

#include <string.h>
#include <stdio.h>

/*===============================================================================
PID Function
The PID function is used in mainly
control applications. PID Calc performs one iteration of the PID
algorithm.
While the PID function works, main is just a mmy program showing
a typical usage.

PID功能
在PID功能主要用於控制應用。 PID 計算器執行一個PID的迭代演算法。雖然PID功能的工程,
主要只是一個虛擬程序顯示一個典型的使用。
================================================================================*/
typedef struct PID {
double SetPoint; // 設定目標 Desired Value
double Proportion; // 比例常數 Proportional Const
double Integral; // 積分常數 Integral Const
double Derivative; // 微分常數 Derivative Const
double LastError; // Error[-1]
double PrevError; // Error[-2]
double SumError; // Sums of Errors
} PID;

/*================================ PID計算部分===============================*/
double PIDCalc( PID *pp, double NextPoint )
{
double dError, Error;

Error = pp->SetPoint - NextPoint; // 偏差
pp->SumError += Error; // 積分
dError = pp->LastError - pp->PrevError; // 當前微分
pp->PrevError = pp->LastError;
pp->LastError = Error;
return (pp->Proportion * Error // 比例項
+ pp->Integral * pp->SumError // 積分項
+ pp->Derivative * dError // 微分項
);
}

/*======================= 初始化的PID結構 Initialize PID Structure===========================*/
void PIDInit (PID *pp)
{
memset ( pp,0,sizeof(PID));
}

/*======================= 主程序 Main Program=======================================*/
double sensor (void) // 虛擬感測器功能 Dummy Sensor Function{ return 100.0;}
void actuator(double rDelta) // 虛擬驅動器功能 Dummy Actuator Function{}
void main(void)
{
PID sPID; // PID控制結構 PID Control Structure
double rOut; // PID響應(輸出) PID Response (Output)
double rIn; // PID反饋(輸入) PID Feedback (Input)
PIDInit ( &sPID ); // 初始化結構 Initialize Structure
sPID.Proportion = 0.5; // 設置PID系數 Set PID Coefficients
sPID.Integral = 0.5;
sPID.Derivative = 0.0;
sPID.SetPoint = 100.0; // 設置PID設定 Set PID Setpoint
for (;;)
{ // 模擬最多的PID處理 Mock Up of PID Processing
rIn = sensor (); // 讀取輸入 Read Input
rOut = PIDCalc ( &sPID,rIn ); // 執行的PID迭代 Perform PID Interation
actuator ( rOut ); // 所需的更改的影響 Effect Needed Changes
}

❸ 數字PID演算法研究及模擬

等著我來~

❹ PID演算法實現該系統控制

增量式PID控製程序:
%Increment PID Controller
clear all
close all
ts=0.005;
sys=tf([0.1,10],[0.0004,0.0454,0.555,1.51,11],'inputdelay',0.2);
dsys=c2d(sys,ts,'z');
[num den]=tfdata(dsys,'v');
for k=1:44
yout(k)=0;
end
u_1=0;u_2=0;u_3=0;u_4=0;
y_1=0.0;y_2=0.0;y_3=0.0;y_4=0.0;
x=[0,0,0];error_1=0,error_2=0;
kp=0.016;ki=0.056;kd=1
for k=45:1000
time(k)=k*ts;
kp=0.55,ki=0,kd=0;
rin(k)=1.0;
(k)=kp*x(1)+kd*x(2)+ki*x(3);
u(k)=u_1+(k);
yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3-den(5)*y_4+num(1)*u_1+num(2)*u_2+num(3)*u_3+num(4)*u_4
error=rin(k)-yout(k);
u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_4=y_3;y_3=y_2;y_2=y_1;y_1=yout(k);
x(1)=error-error_1; %calculating p
x(2)=error-2*error_1+error_2; %calculating d
x(3)=error; %calculating i
error_2=error_1;error_1=error;
end
figure(1);
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)'),ylabel('rin,yout');
title('單位階躍響應曲線')

Z-N法整定:
clear all
close all
ts=0.005;
sys=tf([0.1,10],[0.0004,0.0454,0.555,1.51,11],'inputdelay',0.2);
dsys=c2d(sys,ts,'z');
rlocus(dsys)

❺ 分析常規PID控制演算法與積分分離PID控制演算法在實驗中的控制效果。

積分分離PID演算法具有抗積分飽和作用,當系統出現長時間較大偏差時限制輸出增幅太大,提高控製品質。

❻ 用PID演算法實現溫度控制

第一步:把器件等各種實物連上...
第二步:開環,對PWM的控溫信號加階躍(改變PWM的占空比),由輸入輸出的結果大致得出加熱器的數學模型
第三部:由理論公式整定出PID參數
第四部:根據實際結果調節PID以達到你想要的指標

❼ 什麼是pid演算法,難學嗎,用C語言,plc怎麼實現

一、什麼是PID:

PID即:Proportional(比例)、Integral(積分)、Differential(微分)的縮寫。顧名思義,PID控制演算法是結合比例、積分和微分三種環節於一體的控制演算法,它是連續系統中技術最為成熟、應用最為廣泛的一種控制演算法,該控制演算法出現於20世紀30至40年代,適用於對被控對象模型了解不清楚的場合。 ---網路

二、PID是否難學:

在工業應用中PID及其衍生演算法是應用最廣泛的演算法之一,是當之無愧的萬能演算法,如果能夠熟練掌握PID演算法的設計與實現過程,對於一般的研發人員來講,應該是足夠應對一般研發問題了,而難能可貴的是,在我所接觸的控制演算法當中,PID控制演算法又是最簡單,最能體現反饋思想的控制演算法,可謂經典中的經典。經典的未必是復雜的,經典的東西常常是簡單的,而且是最簡單的,想想牛頓的力學三大定律吧,想想愛因斯坦的質能方程吧,何等的簡單!簡單的不是原始的,簡單的也不是落後的,簡單到了美的程度。 ---【1】

三、PID演算法的C語言源碼

PID 控制演算法可以分為位置式 PID和增量式 PID控制演算法

詳細見參考【1】【2】


參考:

【1】PID演算法

【2】簡易PID演算法的快速掃盲(超詳細+過程推導+C語言程序)

❽ PID的計算公式

PID的增量型公式:

PID=Uk+KP*【E(k)-E(k-1)】+KI*E(k)+KD*【E(k)-2E(k-1)+E(k-2)】

PID演算法具體分兩種:一種是位置式的 ,一種是增量式的。

位置式PID的輸出與過去的所有狀態有關,計算時要對e(每一次的控制誤差)進行累加,這個計算量非常大,而明顯沒有必要。而且小車的PID控制器的輸出並不是絕對數值,而是一個△,代表增多少,減多少。換句話說,通過增量PID演算法,每次輸出是PWM要增加多少或者減小多少,而不是PWM的實際值。所以明白增量式PID就行了。


PID控制原理:

本系統通過擺桿(輥)反饋的位置信號實現同步控制。收線控制採用實時計算的實際卷徑值,通過卷徑的變化修正PID前饋量,可以使整個系統准確、穩定運行。

PID系統特點:

1、主驅動電機速度可以通過電位器來控制,把S350設置為SVC開環矢量控制,將模擬輸出端子FM設定為運行頻率,從而給定收卷用變頻器的主速度。

2、收卷用S350變頻器的主速度來自放卷(主驅動)的模擬輸出埠。擺桿電位器模擬量

信號通過CI通道作為PID的反饋量。S350的頻率源採用主頻率Ⅵ和輔助頻率源PID疊加的方式。通過調整運行過程PID參數,可以獲得穩定的收放卷效果。

3、本系統啟用邏輯控制和卷徑計算功能,能使系統在任意卷徑下平穩啟動,同時兩組PID參數可確保生產全程擺桿控制效果穩定。

❾ 如何判斷PID演算法的好壞

比如你的控制器件是蒸汽閥,溫控器出來的信號給蒸汽閥,開啟相應的閥度。想看干擾效果,就調整閥開度和給定信號不一致,如給定信號類別為4-20MA型,信號值為10ma,閥門實際為全關,那麼在這樣的干擾下,看PID運行是否能運行到給定值變為20ma。
做以上的研究並無多大意義,PID本身就是為抗中間環節干擾而設計,想看PID參數設置是否優化,最好的辦法是將控制目標換成易達到設定值的那種,看PID的曲線是否為標注的大小波。
另外你的第二個提問,另外在控溫過程中整定速度快慢、是否沖溫、受干擾後升溫穩定速度、是否存在過沖等等,看曲線就知道了,過沖是不可避免的,但是過沖多少,以及過沖之後是否能穩定,才是你要關心解決的。你可以將你的控制動作設備告訴我,我給個參考PID參數

熱點內容
垃圾緩存的英文 發布:2024-10-05 01:13:34 瀏覽:947
md5加密c實現 發布:2024-10-05 01:13:31 瀏覽:299
updatesql兩個表 發布:2024-10-05 01:13:30 瀏覽:4
趙南起韓國訪問 發布:2024-10-05 01:04:00 瀏覽:985
基於pid演算法 發布:2024-10-05 00:41:22 瀏覽:925
有什麼手機配置低的還好玩 發布:2024-10-05 00:40:23 瀏覽:669
redis資料庫查詢 發布:2024-10-05 00:27:43 瀏覽:946
如何消除安卓的彈窗 發布:2024-10-05 00:26:59 瀏覽:427
wget下載文件夾 發布:2024-10-05 00:26:22 瀏覽:44
mysql調用存儲過程out 發布:2024-10-05 00:03:30 瀏覽:231