我正在尝试生成
的闭环传递函数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步响应。
我做错了什么?
答案 0 :(得分:2)
这是因为您在开始运行此代码之前使用的变量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阵列来验证这一点,并具体确定可用于驱动该系统的稳定增益范围并选择上限,这是关键增益。我会留下你自己发现的。