在本篇中,将使用Matlab中控制系统设计和分析工具箱(Control System Toolbox)进行控制系统的设计。
了解APP
打开控制系统设计器(Control System Designer)。这个APP是专门用于控制系统设计和校正,可以为反馈控制系统模型设计SISO控制器。它采用交互式的Bode图编辑器、Nichols图编辑
器、根轨迹编辑器等,可以调节各环节的零极点和增益,采用时域或者频域方法分析控制系统的阶
跃响应和零极点图,实现多个控制器的分析比较等。
打开APP之后的界面如下所示。
这个APP默认使用的模型如下所示(可以通过点击上方的Edit Architecture打开)
在默认情况下,四个环节的传递函数取值均为1。控制系统设计器的作用是根据整个系统的性能指标要求,当被控对象(G)给定后,正确设计传感器(H)、补偿器(F)或者控制器(C)以及预滤波器(F)环节的数学模型。
设计示例
具体要求
这里假设有一个单位负反馈系统,已知被控对象(G)的传递函数如下:
要求设计一个控制器(C),使得整个控制系统满足已下要求:
- 单位阶跃响应的稳态误差
为0;
- 单位阶跃响应达到80%稳态值的上升时间
小于1s ;
- 调节时间
小于2s ;
- 超调量
不超过20 %;
- 开环增益交界频率(截止频率)
在5rad/ s左右。
可见,前四个要求是时域指标要求,第五个要求是频域指标要求。
开始步骤
在Matlab的命令行中,先写入被控对象的传递函数。
sys=tf([1],[1 1]);
随后打开控制系统设计器APP,进入Edit Architecture,在G的最右边点击导入按钮,选择刚才写入的sys变量,即被控对象的传递函数,点击Import。随后点击Edit Architecture的OK。回到主界面。
导入之后,就可以在主界面看到系统的图像:伯德图、根轨迹图和阶跃响应图。
添加设计指标
可见原始的系统完全不符合要求,不论是时域指标还是频域指标。
添加时域指标
在右下角的阶跃响应图,右击鼠标,点击进入Design Requirements下的New。弹出了New Design Requirements的界面。
可以按照要求设置这些的参数。下图为设置完成后的界面。随后OK关闭。
此时的主界面,阶跃响应图像将会发生变化,可见将刚才设计的指标全部画在了图上。
添加频域指标
在左边的伯德图,鼠标右击,点击进入Design Requirements下的New。弹出了New Design Requirements的界面。
可以按照要求设置这些的参数。Edge Start为边界的起点,设置频率为5,而Edge End为边界的终点,默认设置频率为10。这样就设置了截止频率的限制区间。
设计控制器
消除稳态误差
根据自动控制理论学过的知识,想要消除稳态误差,可以采用积分器。目前的系统为0型系统,如果将系统设置为I型系统,将消除阶跃响应的稳态误差。
在右上角的根轨迹图像上,右击鼠标,点击进入Add Pole or Zero(添加零点或者极点)下的Integrator,随后,控制器中被添加进入一个积分环节。此时的根轨迹图和阶跃响应图如下所示。
虽然此时的阶跃响应已有所好转,稳态的输出值已经到达了1,稳态误差已经降为0,其他方面但仍然不满足要求的指标,例如上升时间和调节时间。
添加零点
根据自动控制理论的知识。极点会影响系统的稳定性,也就是系统的稳态响应。而零点会影响系统的暂态响应,也就是影响上升时间和调节时间这些指标。在这个系统中,只要实数零点小于-1,系统的单位阶跃响应就一定是振荡变化的波形。实数零点越远离纵轴,振荡速度越快,但超调量也会增大。基于上述考虑,这里引入的实数零点近似为-2。
在右上角的根轨迹图像上,右击鼠标,点击进入Add Pole or Zero(添加零点或者极点)下的Real Zero,然后在实轴上左击鼠标放置零点。如果根轨迹坐标最小只到-1,可以随便先放置,然后再拖动到需要的点。
拖动得到的点位置并不精确,如果想获得精确的位置,可以在左侧栏里的Controllers And Fixed Blocks,选择C(控制器),双击点开Compensator Editor,在Real Zero的Location中,编辑横坐标值,输入-2。
在这个界面,还可以看到控制器的传递函数。可见此时控制器(C)包含一个积分环节,一个比例微分环节,而且稳态增益为1。
观察此时的波德图和阶跃响应图,可见仍然不符合要求,需要进一步的调整。
调整稳态增益
根据自动控制理论的知识,稳态增益上升时,响应的速度会增加,但是稳态增益增加到一定值之后,系统就会不稳定。
调节稳态增益值,可以在波德图中进行操作。在幅度频率伯德图中,用鼠标向上拖动幅频特性曲线,也就是增加了稳态的增益,同时也可以让截止频率后移,以达到目标。
如果想要精确的调节稳态增益,可以在刚才提到的Compensator Editor界面中更改。
这里将稳态增益更改为10。所得的控制器(C)的传递函数如下图所示。
此时的伯德图如下所示。
可见截止频率为5.26rad/s,相角裕量为79.9度。
此时的阶跃响应图如下所示。
可见系统的超调量、上升时间和稳定时间均符合要求。
系统的验证
经过上面的设计,可得到控制器(C)的传递函数为:
设计过程中没有使用到传感器(H)、补偿器(F),所以他们都被当做了1.再有被控对象(G)的传递函数,就可以对系统进行时域和频域的分析。这里使用线性系统分析仪进行分析。
首先在Matlab的命令行中写入系统的开环传递函数。然后再创建单位负反馈的闭环传递函数。
s1=tf([1],[1 1])*tf([5 10],[1 0]);
s2=feedback(s1,1);
随后打开线性系统分析仪。导入闭环传递函数s2,使用的是Step Response图像模式。
然后在图像界面右击鼠标,选择进入Characteristics,这里面包含了多个时域的指标,选择后就可以在图像上显示出来。
可见都符合要求。
然后重新打开线性系统分析仪,导入的是s1开环传递函数,并且右击选择图像为bode伯德图、(因为伯德图需要使用开环传递函数绘制,所以不是导入s2而是s1)。同样可以右击进入Characteristics,选择All Stability Margins,然后会出现截止频率和相角裕量。
可见符合要求。