Simulink仿真状态空间中状态变量时域响应

起因

今天老师留了一道关于状态空间变量响应的题,于是想用simulink仿真,一开始使用state-space模块,但是发现它只能输出y,没办法显示状态变量的变化情况。然而状态变量之间的关系都可以表示为一阶微分方程组,因此我们考虑在Simulink中搭建微分方程组来求解这个问题。

微分方程组

x 1 ˙ = x 2 x 2 ˙ = − 4 x 1 − 5 x 2 + 1 (1) \dot{x_1}=x_2\\ \dot{x_2}=-4x_1-5x_2+1\tag{1} x1˙=x2x2˙=4x15x2+1(1)

第一种搭建方法

这种方法对每个变量都引入一个积分环节,积分环节之后就是该变量,积分环节之前就是该变量的导数,因此就可以做对应连线。
Simulink仿真状态空间中状态变量时域响应_第1张图片
将我们想观察的信号线选中并标注上如图所示的“wifi”信号,进行仿真,结束后点击这个信号亦或是点击
Simulink仿真状态空间中状态变量时域响应_第2张图片
进入信号界面。
Simulink仿真状态空间中状态变量时域响应_第3张图片
上面两条曲线就是对应状态变量的时域响应曲线。

第二种搭建方法

simulink中很多模块是支持向量输入输出的,我们利用好这一特性可以简化布局和连线,在这里我们使用了Fcn模块,该模块使用u(1)、u(2)来表示输入,如图所示:
Simulink仿真状态空间中状态变量时域响应_第4张图片
两根输入线代表两个状态变量,经过函数块运算输出后经过信号合成变为一个向量输入积分器,积分器输出直接是一个向量,可以直接连接在Fcn的两个输入,不需要使用信号分离器。如图所示,结果和第一种方法一致:
Simulink仿真状态空间中状态变量时域响应_第5张图片

总结

Simulink仿真微分方程组最重要的一个思想就是积分器,积分器输入前信号为一阶导数,输出为信号本身,每一个状态变量如果都有这两个信息就能构建出状态空间表达式,从而完成对状态变量的仿真。

你可能感兴趣的:(控制系统仿真与CAD)