控制系统分析常用命令

系列文章目录
本系列由五章组成。以下是这些章节的简要总结:

第1章:MATLAB简介。本章面向新手介绍MATLAB。读者将学习MATLAB®的基本概念。

第2章:控制系统分析常用命令。本章研究控制系统工具箱中一些最重要的命令,如tf、zpk、ss、bode、nyquist、rlocus、脉冲、步进、反馈、序列、并行等命令。

第3章:Simulink简介。Simulink是模拟动态系统的最重要工具之一。Simulink是一种图形环境。用户使用大量现成的模块制作系统模型。因此,得益于Simulink强大的模块库,用户可以轻松地模拟复杂的系统,而无需处理编码。本章通过一些示例介绍Simulink。

第4章:MATLAB中的控制器设计。计算机是现代工程科学的重要组成部分。几乎所有的工程设计都是在计算机的帮助下完成的,控制工程也不例外。MATLAB的控制系统工具箱为控制系统的设计提供了丰富的功能。工业上大约90%的控制器是PID(比例积分微分)。本章从pidTuner命令开始,这是一个用于设计PID控制器的强大命令。本章以控制系统设计器应用程序结束。

第5章:系统识别工具箱简介。系统辨识根据动态系统的输入/输出信号建立数学模型。本章研究了一个示例。



定义传递函数

例2.1(定义传递函数):在MATLAB中定义以下传递函数:

H ( s ) = 100 s 2 + 6 s + 100 H(s)=\frac{100}{s^2+6s+100} H(s)=s2+6s+100100

方法1:

>>H=tf([100],[1 6 100]);

方法2:

>>s=tf('s');
>>H=100/(s^2+6*s+100)

例2.2(定义传递函数):在MATLAB中定义以下传递函数:
I ( s ) = s 2 − 6 s s 3 + 6 s + 100 I(s)=\frac{s^2-6s}{s^3+6s+100} I(s)=s3+6s+100s26s

>>I=tf([100 -6 0],[1 0 6 100]);

例2.3(定义零极点形式传递函数):在MATLAB中定义以下传递函数:
J ( s ) = s + 1 ( s + 2 ) ( s + 3 ) ( s + 4 ) J(s)=\frac{s+1}{(s+2)(s+3)(s+4)} J(s)=(s+2)(s+3)(s+4)s+1

>>J=zpk([-1],[-2 -3 -4],1);

zpk命令有三个输入:第一个输入是包含传递函数零点的向量,第二个输入是包含传递函数极点的向量,第三个输入是增益。

例2.4(将zpk模型转换为tf模型):

>> J=zpk([-1],[-2 -3 -4],1)

J =
 
        (s+1)
  -----------------
  (s+2) (s+3) (s+4)
 
Continuous-time zero/pole/gain model.

>> tf(J)

ans =
 
           s + 1
  -----------------------
  s^3 + 9 s^2 + 26 s + 24
 
Continuous-time transfer function.

例2.5(使用ss命令定义状态空间模型):

>> A=[1 0; 5 6];B=[1;1];C=[1 3];D=0;
>> L=ss(A,B,C,D)

L =
 
  A = 
       x1  x2
   x1   1   0
   x2   5   6
 
  B = 
       u1
   x1   1
   x2   1
 
  C = 
       x1  x2
   y1   1   3
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.

借助tf命令,可以获得与状态空间模型相关的传递函数(图2.3)。

>> A=[1 0; 5 6];B=[1;1];C=[1 3];D=0;
>> L=ss(A,B,C,D)

L =
 
  A = 
       x1  x2
   x1   1   0
   x2   5   6
 
  B = 
       u1
   x1   1
   x2   1
 
  C = 
       x1  x2
   y1   1   3
 
  D = 
       u1
   y1   0
 
Continuous-time state-space model.

>> tf(L)

ans =
 
     4 s + 6
  -------------
  s^2 - 7 s + 6
 
Continuous-time transfer function.

例2.6(零极点):
可以分别借助pole和zero命令获得极点和零点的位置:

>> pole(L)

ans =

     6
     1

>> zero(L)

ans =

   -1.5000

借助pzmap命令,可以获得极点和零点位置的图形。pzmap使用x标记极点位置,使用o标记零点位置。例如,您可以借助以下命令绘制L的零极点图。

pzmap(L)

在这里插入图片描述
如果所有极点都位于开放的左半平面(LHP)。可以使用isstable命令了解系统是否稳定。

>> isstable(L)

ans =

  logical

   0

系统的脉冲响应

系统的脉冲响应可以借助impulse命令来绘制。
例2.7(绘制脉冲响应):绘制以下系统的脉冲响应:
H ( s ) = 100 s 2 + 6 s + 100 H(s)=\frac{100}{s^2+6s+100} H(s)=s2+6s+100100

>> H=tf([100],[1 6 100]);
>> impulse(H)
>> grid on

在这里插入图片描述
您可以要求MATLAB显示峰值响应和稳定时间。要执行此操作,请右键单击图片。单击Characteristics并选择所需选项。例如,我们选择峰值响应,单击Peak Response后,MATLAB会用一个点显示图形的峰值。单击显示的点后,MATLAB会添加一个标签,并用标签显示该点的坐标。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以使用Data Cursor图标将光标添加到图形中。首先单击Data Cursor图标,然后单击图形上的一个点。使用光标,可以轻松读取所需点的坐标。可以将光标滑动到所需的点。如果将Selection Style 设置为Mouse Position ,则可以更轻松地滑动光标。要查看Selection Style,请在图形上单击鼠标右键。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以画出特定时间间隔内的脉冲响应。例如,要绘制[.2,1.8]时间间隔内的脉冲响应:

>> H=tf([100],[1 6 100]);
>> impulse(H,[.2:.01:1.8])
>> grid on

在这里插入图片描述

系统的阶跃响应

借助Step命令可以绘制系统的阶跃响应。
例2.8(绘制阶跃响应):绘制以下系统的阶跃响应:
H ( s ) = 100 s 2 + 6 s + 100 H(s)=\frac{100}{s^2+6s+100} H(s)=s2+6s+100100

>> H=tf([100],[1 6 100]);
>> step(H)
>> grid on

在这里插入图片描述
可以画出特定时间间隔内的阶跃响应。例如,要绘制[.2,1.8]时间间隔内的脉冲响应:

>> H=tf([100],[1 6 100]);
>> step(H,[.2:.01:1.8])
>> grid on

在这里插入图片描述
您可以要求MATLAB测量响应的重要特征,并显示它们。为此,右键单击阶跃响应图,然后单击characteristics。从显示的菜单中选择所需选项。例如,我们从显示的菜单中选择Rise Time 。上升时间是指响应从稳态响应的10–90%上升所需的时间。
在这里插入图片描述
您可以使用stepinfo命令查看阶跃响应特性。

>> stepinfo(H)

ans = 

  包含以下字段的 struct:

        RiseTime: 0.1324
    SettlingTime: 1.1230
     SettlingMin: 0.8614
     SettlingMax: 1.3714
       Overshoot: 37.1410
      Undershoot: 0
            Peak: 1.3714
        PeakTime: 0.3224

绘制系统的频率响应

例2.9(绘制频率响应):您可以借助bode命令绘制系统的频率响应。例如,可以借助以下命令绘制示例2.1中系统的波特图:

>> bode(H),grid on

在这里插入图片描述

如果要绘制特定间隔内系统的频率响应,必须定义所需的间隔。可以使用bode(sys, w),其中w是所需频率范围的向量。例如,如果您想绘制例2.1中[100Rad/s, 1000Rad/s]间隔的系统频率响应,可以使用以下代码。

>> w=logspace(log10(100),log10(1000));
>> bode(H,w)
>> grid on

在这里插入图片描述
您可以通过右键单击绘制的图形并选择Characteristics来测量其重要特征。
在这里插入图片描述

绘制系统的奈奎斯特图

例2.10(绘制奈奎斯特图):你可以借助Nyquist命令绘制系统的Nyquist图。例如,可以借助以下命令绘制示例2.1中系统的奈奎斯特图。

>> nyquist(H)

在这里插入图片描述

通过右键单击绘图并选择characteristics,可以看到绘制绘图的特征。
在这里插入图片描述
您可以通过右键单击图形并在出现的列表中单击Grid,将网格添加到绘制的图形中。向图形中添加网格的另一种方法是在MATLAB命令提示符中键入>>grid on
在这里插入图片描述

根轨迹图

例2.11(绘制奈奎斯特图):可以借助rlocus命令绘制动态系统的根轨迹图。例如,可以借助以下命令绘制H的根轨迹:

>> rlocus(H), grid on

在这里插入图片描述

单击Data Cursor 图标,将光标添加到绘图中。
在这里插入图片描述
还有另一个绘制根轨迹图的命令:rltool。借助rltool,您可以同时看到所有极点的运动。键入以下命令:

>> rltool(H), grid on

将出现下图所示的窗口。在左侧的Root Locus Editor for Loop Transfer中,极点以粉红色示出。
在这里插入图片描述
将闭环极点移动到所需位置。要执行此操作,请用鼠标左键单击粉色点,然后将点移动到所需位置,而无需松开鼠标左键。您可以同时看到所有点的移动。所需增益和其他有用信息显示在窗口底部。
在这里插入图片描述

将系统连接在一起

考虑如图所示的方框图。
在这里插入图片描述

可借助以下命令计算闭环传递函数:

>> C=tf([1.13 0.45],[1 0]);
>> P=tf([1],[1 3 3 1]);
>> CL=feedback(C*P,1)

您可以使用>>step(feedback(C*P,1)) 命令查看闭环系统的阶跃响应。
在这里插入图片描述

考虑如图所示的方框图。
在这里插入图片描述
在这种情况下,闭环传递函数的计算如下:

>>C=tf([1.13 0.45],[1 0]);
>>P=tf([1],[1 3 3 1]);
>>CL=feedback(P,C)

考虑图所示的方框图(在这个方框图中反馈是正的)。

在这里插入图片描述
在这种情况下,闭环传递函数的计算如下:

>>C=tf([1.13 0.45],[1 0]);
>>P=tf([1],[1 3 3 1]);
>>CL=feedback(P,C,+1)

下图所示的连接传递函数可借助于series命令,即>> series(C,P)
在这里插入图片描述

下图所示的连接传递函数可借助parallel命令获得,即>>parallel(C,P)
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值