文章目录
写在前面
第11讲介绍的连续系统的数字PID仿真是基于 Matlab的 M 语言实现的,对于初学者或者工程应用人员来说,可能不是很清楚是怎样实现的?本文以单P仿真为例详细介绍基于 MATLAB 和 Simulink 的实现过程。
特别说明:本文为我的首评老师机器人梦想家所整理,希望不负所望。
一、基于Simulink的仿真
测试系统的传递函数:
G
(
s
)
=
2
(
3
s
+
1
)
(
2
s
+
1
)
=
2
6
s
2
+
5
s
+
1
G(s)=\frac{2}{(3s+1)(2s+1)}=\frac{2}{6s^2+5s+1}
G(s)=(3s+1)(2s+1)2=6s2+5s+12
1. 新建Simulink模型
(1)双击【MATLAB图标】(测试版本为2021b)
(2)单击【新建】》【Simulink模型】》【空白模型】
2. 保存Simulink模型
3. 建模
(1)调用模型库:单击【库浏览器】
(2)找到单位阶跃信号源:单击【Sources】》【Step】,并将Step图元拖到新建的模型中。
(3)找到 Sum 运算图元:单击【Math Operations】》【Sum】,并将Sum图元拖到模型中。
(4)找到PID控制器图元:单击【Continuous】》【PID Controller】,并将PID Controller图元拖到模型中。
(5)设置PID控制器,因为咱们以单P为例测试,所以将控制器改成P,比例系数,可以根据系统的走势来调节(在调参过程中主要通过这个设置来更改系数值),本例中设置为 5,然后确定。
(6)找到传递函数图元:单击【Continuous】》【Transfer Fcn】,并将Transfer Fcn图元拖到模型中。
(7)修改传递函数:双击【Transfer Fcn】弹出设置对话框,将默认的传递函数改成目标传递函数,将分子改成2,分母改成6、5、1,然后确定。
(8)第7步修改后的传递函数默认显示如下图,并没有完整显示目标传递函数,是因为显示不开的原因,只需要将图元拖拉大一些,就可以正常显示了。
(9)选择示波器图元:【Sinks】》【Scope】,并将Scope图元拖拽到模型中。
(10)所有图元都找到并拖到模型中设置完成之后,下一步就是连线,连线过程及连线完成测试中随时修改配置。比如,我在连线时发现Sum的运算未修改,应该是负反馈,所以做一下修改。
双击Sum图元,将符号列表的 ++ 改成 ± 确认即可。
然后连线。
4. 运行
双击【Scope】,弹出示波器对话框,单击【运行】可以观察信号曲线。如果需要调试参数,就修改PID控制器的参数后再次运行验证直到达到理想曲线。
二、基于MATLAB的仿真
1. 编码
新建一个.m文件,源码如下:
Gs = tf(2,conv([3,1],[2,1])); %Gs是传递函数,conv是可以理解为因式分解(3s+1)(2s+1)
Kp = [0.5,2,5,10]; %取不同的比例系数,类似数组
for m = 1:4
sys = feedback(Kp(m)*Gs,1); %feedback(G,H),(G,H需事先设定)。
%其中G是传递函数,H为反馈函数,表示一个控制系统G,对其进行负反馈H(要求正反馈用-H)。这里前面写上比例环节与系统的串联,后面的1表示负反馈
step(sys); %求阶跃响应,可以用形如step(feedback(G,H))
title( 'P控制仿真' );
legend('P=0.5','P=2','P=5','P=10','Location','northeast' );
xlabel( '时间' );
ylabel( '振幅' );
hold on
end
2. 运行
单击【运行】按钮,弹出运行窗口。
3. 调整曲线格式
(1)前文中的线条比较粗,怎么调节呢?方法如下:
首先将鼠标单击一下【箭头】,让鼠标变成一个箭头模式,然后,选中曲线,右击鼠标选择【Line Width】,选择合适的线的尺寸,比设置为2。然后依次将四根线都设置完成。
(2)通过【编辑】》【复制选项】来调整图像显示效果
4. 导出图窗
单击【编辑】》【复制图窗】,就可以将图窗曲线复制在了粘贴板。
本节完