← 返回 Simulink 和 Simscape

Simulink 和 Simscape

Simulink 信号使用和运算

这节来讲 Simulink 中的信号使用和运算连接。核心案例是用连续系统实现汽车定速巡航模型,并把控制信号、物理阻力反馈和积分环节串起来。

Simulink 连续系统和巡航控制模型

连续系统公式:u-bv=ma

这里要实现的连续系统公式是汽车动力学中的合力关系:控制器输出的驱动力 u,减去与速度相关的阻力 bv,得到 ma。也就是说,合力决定加速度,加速度经过积分后得到速度。

ubv=mau-bv=ma

例如汽车一开始目标速度为 0,某一时刻驾驶员设置定速巡航为 r=20 m/s,于是目标速度突然从 0 变成 20,这就是一个阶跃信号。

第一个求和模块:计算误差

第一个圆形求和模块上面是“+”,下面是“-”,因此它计算目标车速和实际车速之间的误差。

e=rve=r-v

其中 r 是目标车速,v 是当前实际车速,e 是速度误差。

例如目标速度是 20 m/s,当前速度是 15 m/s,则 e=20-15=5,说明汽车速度还不够,需要继续增加驱动力。

如果当前速度是 22 m/s,则 e=20-22=-2,说明汽车超速,控制器应减小驱动力。这条从速度输出绕回来的线,就是控制系统中的负反馈。

PI(s):巡航控制器

误差进入 PI 控制器,输出 u 表示控制器要求发动机产生的驱动力。PI 控制器包括比例部分 P 和积分部分 I。

u(t)=Kpe(t)+Kie(t)dtu(t)=K_p e(t)+K_i\int e(t)\,dt

比例部分 P

误差越大,立即产生的控制作用越强。例如车速差得很多,就快速加大油门。

积分部分 I

积分部分会累计过去的误差,用来消除稳态误差。汽车匀速行驶时,发动机仍然必须产生驱动力抵消空气阻力。

u=bvu=bv

从控制器输出到速度

PI 控制实现反馈调节:把期望速度和实际速度相减得到误差,经过 PI 控制器缩小差值;出来之后再用加法器实现 u-bv,其中 gain 的倍数为负,用来表示阻力项。

得到 ma 后再除以 m,得到加速度;加速度后面接 Integrator 积分器,就得到 velocity。

Simulink 中的信号链路可以理解为:加速度 → Integrator → 速度。之后速度再连回去形成反馈。

图里的两条反馈线

反馈一:控制反馈

速度 v 回到最左边的误差比较模块,形成 e=r-v。它的作用是让控制器知道实际速度距离目标速度还有多远,这是控制系统人为设计的负反馈。

反馈二:物理阻力反馈

速度 v 还经过 -25 回到汽车合力求和模块,表示速度越高,阻力越大。

bv=25v-bv=-25v

达到稳态

稳定后加速度 a=0,因此 u-bv=0,即 u=bv。此时发动机驱动力刚好抵消阻力,汽车保持匀速。理想情况下,PI 控制能够使实际速度等于目标速度。

v=rv=r

加上 PI 后,整个闭环系统是一个二阶系统。这些信号和模块都可以在第一节提到的库浏览器里面找到并连接。

本节任务:标清信号线并完成连接

我们的规范是把信号线都标清楚对应的输入和输出。本节 task 就是标清楚之后加上正确连接。

Simulink 信号线标注和连接任务

在 Sources 和 Math Operations 中找到对应模块,之后按信号逻辑连接即可。