⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pidnew.m

📁 用GPC和PID对汽温进行控制的代码(过程控制的作业)
💻 M
字号:
%PID
close all;
clear all;
%u-T1
num1=-1.4261;
den1=conv([10 1],[30 1]);
Midsys1=tf(num1,den1);
% Kp2=0.7;
%  Kp2=-0.252;
 Kp2=-1.03;
sys1=Kp2*Midsys1/(1+Kp2*Midsys1);
%T1-T2
num2=0.3181;
den2=conv([30 1],[90 1]);
sys2=tf(num2,den2);
%T-T2
num3=0.8022;
den3=conv([90 1],[90 1]);
sys3=tf(num3,den3);
%T-u
sys=sys1*sys2*sys3;
%sample time
Ts=40;
sysd=c2d(sys,Ts,'zoh');
set(sysd,'variable','z^-1');
A=sysd.den{1};   
B=sysd.num{1};
n_a=length(A)-1;
n_b=length(B)-1;
kp=3.0;
ki=kp*Ts/219;
kd=kp*20/Ts;
r=1;
N=100;
%simulation step 
S_Time=300;
y_actual1=0;
u=0;
e=0;
deltau=0;
for i=1:S_Time
    time(i)=i*Ts;
    r(i)=1;
    e(i)=r(i)-y_actual1(max(1,i-1));
    u(i)=u(max(1,i-1))+kp*(e(i)-e(max(1,i-1)))+ki*e(i)+kd*(e(i)-2*e(max(1,i-1))+e(max(1,i-1)));
     y_actual1(i)=B*u(max(1,[i-1:-1:i-1-n_b]))'-A(2:end)*y_actual1(max(1,[i-1:-1:i-n_a]))';
end
hold on 
grid on
plot(time,r,'r--',time,y_actual1,'b');
title('PID control');
xlabel('Time (sec)');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -