首页 > 编程语言 >matlab练习程序(Z-N法整定)

matlab练习程序(Z-N法整定)

时间:2022-11-06 16:22:25浏览次数:34  
标签:plot 切线 max 练习 ts sys matlab 法整定 tao

PID调参时可以先利用Z-N法估算一个大概的量,然后再精确调参。

Z-N法可以形象的用以下图表表示:

其中切线是响应曲线转折点切线,即过曲线斜率最大点的切线。

K是系统开环稳态响应。

L是转折点切线和0值交点对应的时刻。

L + T是转折点切线和稳态响应交点对应的时刻。

表中的alpha = L / T。

matlab代码如下:

clear all;close all;clc;

ts = 0.02;
t = 0:ts:10;

K = 0.5;
sys = tf(1,[2 3 2]);        %plant传递函数
c = step(sys,t);
subplot(3,1,1);
plot(t,c);
hold on;
plot([0 10],[K K],'r-.');
plot([0 10],[0 0],'r-.');

%微分求得斜率最大值及切线
dc = diff(c);
[k,max_x] = max(dc);
max_y = c(max_x);
max_x = (max_x-1)*ts;
k = k/ts;
b = max_y - max_x*k;
plot(max_x,max_y,'o');

x = 0:0.01:3;
y = x*k+b;
plot(x,y);

%根据切线和两条水平线计算T和tao
MaxT = (K-b)/k;
tao = (0-b)/k;
plot(MaxT,K,'ro');
plot(tao,0,'ro');
T = MaxT-tao;

%画出z-n法整定结果
Kp = 1.2*(T/tao);
Ti = 2*tao;
Td = 0.5*tao;
s = tf('s');
G = Kp*(1+1/(Ti*s)+Td*s);
subplot(3,1,2);
step(feedback(G*sys,1));

%利用pidtune整定
C0 = pidstd(1,1,1); 
C = pidtune(sys,C0);
s = tf('s');
G = C.Kp*(1+1/(C.Ti*s)+C.Td*s);
subplot(3,1,3);
step(feedback(G*sys,1));

结果如下:

标签:plot,切线,max,练习,ts,sys,matlab,法整定,tao
From: https://www.cnblogs.com/tiandsp/p/16862590.html

相关文章