找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5440|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

MATLAB Pid仿真實驗

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:111475 發(fā)表于 2016-3-30 23:27 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
      
一實驗要求:
學(xué)習PID控制器的基本原理,掌握PID參數(shù)的物理調(diào)節(jié)規(guī)律,通過仿真驗證PID調(diào)節(jié)過程。選擇例題中的任意兩個實驗進行仿真研究,改變參數(shù)后觀察系統(tǒng)的動態(tài)性能和穩(wěn)態(tài)性能的變化,確認是否和理論分析一致。
二實驗內(nèi)容
實驗一:選擇chap-9.m作為pid調(diào)節(jié)。
1代碼:
%PID Controller with changing integration rate
clear all;
close all;
%Big time delay Plant
ts=20;
sys=tf([1],[60,1],'inputdelay',80);
dsys=c2d(sys,ts,'zoh');
[num,den]=tfdata(dsys,'v');

u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;
y_1=0;y_2=0;y_3=0;
error_1=0;error_2=0;
ei=0;

for k=1:1:200
time(k)=k*ts;
rin(k)=1.0;  %Step Signal
%Linear model
yout(k)=-den(2)*y_1+num(2)*u_5;
error(k)=rin(k)-yout(k);
kp=0.45;kd=12;ki=0.0048;
A=0.4;B=0.6;
%T type integration
ei=ei+(error(k)+error_1)/2*ts;
M=1;
if M==1     %Changing integration rate
if abs(error(k))<=B
   f(k)=1;
elseif abs(error(k))>B&abs(error(k))<=A+B
   f(k)=(A-abs(error(k))+B)/A;
else
   f(k)=0;
end
elseif M==2  %Not changing integration rate
    f(k)=1;
end
u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*f(k)*ei;
if u(k)>=10
   u(k)=10;
end
if u(k)<=-10
   u(k)=-10;
end
%Return of PID parameters
u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);   
y_3=y_2;y_2=y_1;y_1=yout(k);  
error_2=error_1;
error_1=error(k);
end
figure(1);
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)');ylabel('rin,yout');
figure(2);
plot(time,f,'r');
xlabel('time(s)');ylabel('Integration rate f');
2實驗結(jié)果
在沒有更改代碼的情況下,實驗的效果如圖一所示。
圖一
改變kp
(1)增大kp,理論上可以看到pid調(diào)節(jié)的更快更陡。實際效果如圖2。Kp=3.
圖2
實際上產(chǎn)生了自激震蕩,說明kp不能調(diào)的過大,否則系統(tǒng)會不穩(wěn)定。
(2)減小kp,理論上系統(tǒng)調(diào)節(jié)緩慢,會產(chǎn)生超調(diào)量,調(diào)節(jié)曲線不平滑,有毛刺。Kp=0.1
                              圖3
實際上也證明比例系數(shù)太小,系統(tǒng)變化時調(diào)節(jié)相對緩慢。
改變kd
(1)增大kd,理論上系統(tǒng)穩(wěn)定時波動很大,精度不高,且有很多毛刺與抖動。Kd=30.
                     圖4
實際上系統(tǒng)開始調(diào)節(jié)時會有些尖峰,調(diào)節(jié)曲線不平滑。
(2)減小kd,理論上系統(tǒng)調(diào)節(jié)穩(wěn)定時變化緩慢,會有些超調(diào)量。Kd=3.
                      圖5
實際上也可以看出減小kd對系統(tǒng)影響不大,只是在系統(tǒng)剛進入穩(wěn)定狀態(tài)時有一個小小的超調(diào)量。
改變ki
(1)增大ki,積分變大,系統(tǒng)系統(tǒng)變得不穩(wěn)定,抖動波動很厲害。
                         圖6
實際上可以其變化幅度大,超調(diào)量很高,系統(tǒng)很不穩(wěn)定。
(2)減小ki,系統(tǒng)調(diào)節(jié)變慢,系統(tǒng)可能無法調(diào)節(jié)。
                           圖7
系統(tǒng)無法達到設(shè)定的穩(wěn)態(tài)值,無法調(diào)節(jié)。
實驗二:選擇char2_1.m作為實驗
1代碼:
%Series System Control
clear all;
close all;
ts=2;
sys1=tf(1,[10,1]);
dsys1=c2d(sys1,ts,'z');
[num1,den1]=tfdata(dsys1,'v');
sys2=tf(1,[10,1]);
dsys2=c2d(sys2,ts,'z');
[num2,den2]=tfdata(dsys2,'v');
dph=1/zpk('z',ts);
Gc2=dph/(dsys2*(1-dph));
[nump,denp]=tfdata(Gc2,'v');
u1_1=0.0;u2_1=0.0;
y1_1=0;y2_1=0;
e2_1=0;ei=0;
for k=1:1:2000
time(k)=k*ts;
r1(k)=1;                           
%Linear model
y1(k)=-den1(2)*y1_1+num1(2)*y2_1;  %Main plant
y2(k)=-den2(2)*y2_1+num2(2)*u2_1;  %Assistant plant
error(k)=r1(k)-y1(k);
ei=ei+error(k);
u1(k)=1.2*error(k)+0.02*ei;   %Main Controller
e2(k)=u1(k)-y2(k);            %Assistant Controller
u2(k)=-denp(2)*u2_1+nump(1)*e2(k)+nump(2)*e2_1;
d2(k)=0.01*rands(1);
u2(k)=u2(k)+d2(k);
%----------Return of PID parameters------------
u1_1=u1(k);
u2_1=u2(k);
e2_1=e2(k);
y1_1=y1(k);
y2_1=y2(k);
end
figure(1);     %Assistant Control
plot(time,u1,'b',time,y2,'r');
xlabel('time(s)');ylabel('u1,y2');
figure(2);     %Main Control
plot(time,r1,'b',time,y1,'r');
xlabel('time(s)');ylabel('r1,y1');
figure(3);
plot(time,d2,'r');
xlabel('time(s)');ylabel('disturbance');
2實驗效果
在沒有更改遠代碼的情況下,實驗的結(jié)果如下所示
                       圖8
第3個圖是隨機數(shù)的隨時間的分布。
同理,改變kp,ki的值,系統(tǒng)會發(fā)生改變。
改變kp
(1)增大kp,系統(tǒng)變化會更快,會有超調(diào)量。Kp=3.
                            圖9
實際沒有發(fā)現(xiàn)系統(tǒng)有超調(diào)量,但在系統(tǒng)開始調(diào)節(jié)得時候會會產(chǎn)生尖峰脈沖,系統(tǒng)調(diào)節(jié)很快。
(2)減小kp,系統(tǒng)調(diào)節(jié)緩慢,但系統(tǒng)穩(wěn)定。
                    圖10
結(jié)果可以看出系統(tǒng)調(diào)節(jié)很穩(wěn)定,但調(diào)節(jié)時間有點長。
該變kd
(1)增大ki,系統(tǒng)很快達到穩(wěn)定,調(diào)節(jié)速度快.ki=0.2
                      圖11
結(jié)果顯示系統(tǒng)在轉(zhuǎn)換開始時系統(tǒng)產(chǎn)生了尖峰脈沖,然后很快地達到穩(wěn)定。
(2)減小ki,系統(tǒng)會很慢的達到穩(wěn)定.ki=0.005。
                      如圖12
結(jié)果顯示系統(tǒng)經(jīng)過相當漫長的時間達到了穩(wěn)定狀態(tài)。
三實驗感想
通過此在MATLAB上運用pid,對pidd的實際作用有了基本了解。對于kp,要選取的合適,不能過大,否則會產(chǎn)生震蕩,過小可能會產(chǎn)生超常量,調(diào)節(jié)緩慢。對于kd,太大了產(chǎn)生毛刺抖動,太小了會有些超常量。對于ki,太大了調(diào)節(jié)很快,但會產(chǎn)生過沖,尖峰脈沖,太小了調(diào)節(jié)很慢,可能無法調(diào)試達到穩(wěn)定狀態(tài)。
總結(jié)這三點,在調(diào)試pid時,kp應(yīng)從小到大調(diào)試,kd從小到大調(diào)試,ki從小到大調(diào)試。每次只調(diào)一個參數(shù),直到最滿意的時候,再調(diào)下個參數(shù)。

   


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表