学习使用MATLAB-实现比例、惯性、积分、比例微分、比例积分环节信号仿真

最近在上<<自动控制原理>>,如同听天书,在做完典型电路实物实验后,想用MATLAB做仿真看能不能实现,一方面加深对理论知识的理解,另一方面顺便学习MATLAB软件的使用。
话不多说,这就开始搭建

比例

比例环节传递函数为
  G ( s ) = − z 2 z 1   = − R 2 R 1   \ G(s)=-\frac{z_2}{z_1}\ =-\frac{R2}{R1}\,  G(s)=z1z2 =R1R2
其搭建simulink过程如下
在这里插入图片描述
如图首先点击库浏览器,在搜索栏中搜索step,找到如③所示的阶跃信号源,长按拖动至界面里。
像这样操作依次放置一个(step)阶跃信号源,两个(gain)两个比例放大器一个(scope)示波器
在这里插入图片描述
设置比例放大器的放大增益倍数,我这里设置了一个二倍,和一个一倍,也就是不放大,再用导线将其按图中所示连接。
在这里插入图片描述
点击运行,双击示波器,现象如下图。
在这里插入图片描述
蓝色为,二倍放大增益,黄色为一倍放大增益。

惯性

惯性环节传递函数为
  G ( s ) = − z 2 z 1   = − R 2 / R 1 R 2 C 1 s   \ G(s)=-\frac{z_2}{z_1}\ =-\frac{R_2/R_1}{R_2C_1s}\,  G(s)=z1z2 =R2C1sR2/R1
其搭建simulink过程如下
在这里插入图片描述
步骤与搭建比例电路大致相同,不同的是需要放置一个Transfer Fcn,
在这里插入图片描述
双击这个模块,可以进行调参,系数为降幂排列。
完事点击运行,双击示波器,现象如下图。
在这里插入图片描述

积分

积分环节传递函数为
  G ( s ) = − z 2 z 1   = − 1 R 2 C 1 s   \ G(s)=-\frac{z_2}{z_1}\ =-\frac{1}{R_2C_1s}\,  G(s)=z1z2 =R2C1s1
其搭建simulink过程如下
在惯性的基础上进行修改,对Transfer Fcn这个模块进行操作。
在这里插入图片描述
配置参数像我这样。点击运行,双击示波器观察到现象如下图。
在这里插入图片描述

比例微分

比例微分环节传递函数为
  G ( s ) = − z 2 z 1   = − R 1 C 1 s   \ G(s)=-\frac{z_2}{z_1}\ =-R_1C_1s\,  G(s)=z1z2 =R1C1s
很简单,就是把比例增益和微分模块串联起来。
需要用到一个微分模块,Derivative
在这里插入图片描述
运行现象如下图所示
在这里插入图片描述

比例积分

比例积分环节传递函数为
  G ( s ) = − z 2 z 1   = − R 2 + 1 / C 1 R 1   \ G(s)=-\frac{z_2}{z_1}\ =-\frac{R_2+1/C_1}{R_1}\,  G(s)=z1z2 =R1R2+1/C1
将比例和积分串联
在这里插入图片描述
现象如下图
在这里插入图片描述

利用MATLAB图像功能显示Simulink的数据

这个时候有个问题,Simulink示波器显示的波形,只能看个大概,没法进一步分析数据,比如我想看比例积分这个图,他在1.2秒时,Y轴所对应的数据,没法看,但MATLAB里的显示的图像能够使用鼠标点击曲线,具体显示点的X,Y轴数据。所以在这里,记录下Simulink与MATLAB的联系。

这里以比例积分作为例子,目的是将比例积分在Simulink生成的图像在MATLAB中显示,并导出图片。

在这里插入图片描述
对刚刚比例积分的线路进行适当修改,给示波器添加一个采样通道,方便后续进行对比。
在这里插入图片描述
双击示波器,在弹出的界面,点击视图,点击配置属性
在这里插入图片描述
点击记录,勾选记录数据到工作区,保存格式选择带时间的结构体。变量名称我这里写的是Test_1
完成上述操作,在Simulink界面点击运行即可。
回到MATLAB界面。
在这里插入图片描述
在右侧的工作区,找到名称为out,旁边的值写着1X1 SimulationOutput。双击下去。
在这里插入图片描述
弹出如此界面,找到我们刚刚写的名称为Test_1的变量。
在这里插入图片描述
time记录的是时间。
signals记录的是数值。
这里以signals为例子,往下点。
在这里插入图片描述
显示出这个表格,1字段记录的是响应,2字段记录的是输入信号。为什么我会知道,你点击去就知道了。这里我双击点进1字段。
在这里插入图片描述
红框所框起来的,便是存储响应数据的结构体。等会需要用到。

接着回到编辑器。
在这里插入图片描述
编写这五行程序,

A1=out.Test_1.time;             %将时间数据赋值给A1
B1=out.Test_1.signals(1).values;%将响应数据赋给B1

A2=out.Test_1.time;             %将时间数据赋给A2
B2=out.Test_1.signals(2).values;%将响应数据赋给B2

%在一个图里作两条曲线
%A1为横轴,以B1为纵轴。
%A2为横轴,以B2为纵轴。
plot(A1,B1,A2,B2);

点击运行,结果如下图所示。在这里插入图片描述

MATLAB中,PID控制器(Proportional-Integral-Derivative Controller)是一种常见的控制算法,它由比例(P)、积分(I)和微分(D)三个基本部分组成,用于调整系统的动态响应。以下是基本的步骤来实现这五种控制环节: 1. **比例环节** (P): 这是最基础的部分,仅考虑输入信号与设定值之间的偏差,并按此偏差的比例做出反应。在MATLAB里,你可以直接通过减法运算实现: ```matlab output_PID_P = Kp * (reference - input); ``` 其中 `Kp` 是比例增益。 2. **积分环节** (I): 积分部分会累计先前的偏差,使得系统趋向于最终目标。实现时需要累加偏差而不是当前值: ```matlab if isempty(integral) integral = 0; else integral = integral + (reference - input); end output_PID_I = Ki * integral; ``` `Ki` 是积分增益。 3. **微分环节** (D): 微分项则根据输入变化速率对输出进行修正,通常用于预测未来偏差: ```matlab if isempty(derivative) derivative = 0; else derivative = (input - prev_input) / dt; end output_PID_D = Kd * derivative; prev_input = input; ``` `Kd` 是微分增益,`dt` 表示采样时间间隔。 4. **比例微分** (PD): 结合了比例和微分,可以更快地响应变化: ```matlab output_PD = Kp * (reference - input) + Kd * (input - prev_input); ``` 5. **比例积分** (PI): 同样结合比例积分: ```matlab integral = integral + (reference - input); output_PI = Kp * (reference - input) + Ki * integral; ``` 在实际应用中,你需要调整各个增益 (`Kp`, `Ki`, `Kd`) 以优化控制器性能。同时,为了避免积分饱和或过快的响应,可能还需要设置一些限制条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值