我尝试生成闭环系统的传递函数
Gcl = (KpGp) / [1 +(KpGp)] 我想看看当比例增益Kp从5变为15时,阶跃响应将如何变化。
我正在研究P控制器的Kp效应。
A=1.2;
tau=1.4;
td=0.2;
Gp=tf(A,[tau 1],'InputDelay',td);
[y,t]=step(Gp,12);
kp=5;
Gol= series(Kp,Gp);
Gcl= feedback(Gol,1);
[y1,t1]=step(Gcl,12);
kp=10;
Gol= series(Kp,Gp);
Gcl= feedback(Gol,1);
[y2,t2]=step(Gcl,12);
kp=15;
Gol= series(Kp,Gp);
Gcl= feedback(Gol,1);
[y3,t3]=step(Gcl,12);
figure(2);
plot(t1,y1,t2,y2,t3,y3);
grid,title('Step response of plant');然而,我一直得到一个步骤的响应。我希望看到当k= 5,k= 10和k=15时的3个阶跃响应。
这是我目前得到的阶跃响应:

我做错了什么?
发布于 2016-02-19 01:35:00
这是因为在开始运行这段代码之前,您正在使用变量Kp,它可能是在您的MATLAB工作区中设置的一个变量,但是您正在使用kp来改变比例增益。因此,每次尝试更改比例增益时,都不会这样做,因为在创建的每个控制器中都会使用Kp。请注意,另一个变量是小写k。您所要做的就是将任何变量Kp更改为kp,然后重试。
A=1.2;
tau=1.4;
td=0.2;
Gp=tf(A,[tau 1],'InputDelay',td);
[y,t]=step(Gp,12);
kp=5;
Gol= series(kp,Gp); %// Change
Gcl= feedback(Gol,1);
[y1,t1]=step(Gcl,12);
kp=10;
Gol= series(kp,Gp); %// Change
Gcl= feedback(Gol,1);
[y2,t2]=step(Gcl,12);
kp=15;
Gol= series(kp,Gp); %// Change
Gcl= feedback(Gol,1);
[y3,t3]=step(Gcl,12);
figure(2);
plot(t1,y1,t2,y2,t3,y3);
grid,title('Step response of plant');
legend('kp = 5', 'kp = 10', 'kp = 15'); %// Change
ylim([0 2]); %// Change请注意,您选择了一些使控制系统不稳定的比例增益,因此如果您尝试在不做任何修改的情况下绘制此图,则不稳定的响应将压倒稳定的响应,并且您不会在图表上看到它们。因此,我必须强制执行额外的更改,即y轴的界限在0和2之间。我还在绘图中引入了图例,以便您可以看到哪个绘图对应于哪种颜色。
这是我现在得到的图:

次要说明
您可以使用margin命令确定临界增益是什么,或者在使系统不稳定之前可以使用的最大比例增益。这里假设您指定的是开环系统(没有反馈)。因此,该函数计算理论上的最大比例增益,您可以在假设单位反馈的情况下使用系统指定该增益,这就是您正在做的。
您可以通过以下方式完成此操作:
[Gm,Pm,Wcg,Wcp] = margin(Gp);Gm是系统的增益裕度,Wcg是在此关键增益处看到的相关振荡频率。增益裕度也被定义为确定对于我们的目的而言临界增益是什么。Pm和Wcp是增益为0 dB时的相位裕度和频率,但在本问题中您可以忽略它们。
Gm是您要查找的变量,我们得到的结果是:
>> Gm
Gm =
9.7005这意味着如果您指定的增益大于9.7005,您的系统将变得不稳定。这对于你的情节来说是有意义的。我们指定了10和15的收益,我们自然会认为结果是不稳定的。
如果您愿意,您可以通过使用Routh-Hurwitz criterion for stability和构建一个Routh阵列来验证这一点,并专门确定可用于驱动此系统的稳定增益范围,并选择上限,这是关键增益。我会把这个留给你自己去发现。
https://stackoverflow.com/questions/35488374
复制相似问题