【matlab】Simulink 微分模块的线性化问题

1 什么问题

之前在一个simulink模型进行模型的线性化Model Linearizer分析时,发现得到传递函数结果和预期总是有差别,排查一番,发现是微分模块“惹的祸”。
image.png

2 问题复现

搭建如下的simulink模式。
image.png
其中,微分模块来自于continuous中的Derivative
image.png
很显然,系统的传递函数为:
G ( s ) = 1 10 s + 1 ∗ s = s 10 s + 1 G(s)=\frac{1}{10s+1}*s=\frac{s}{10s+1} G(s)=10s+11s=10s+1s
但是使用Model Linearizer进行线性化,具体操作步骤如下。
image.png
线性化结束后,会自动弹出一个result对话框,在下拉框中选择Transfer Function

image.png
得到结果如下图,系统有1个输入、1个输出没有问题,但是显示0个states,这个就对了,同时u1-->y1为0,也就是:
y 1 = u 1 ∗ 0 = 0 y1=u1*0=0 y1=u10=0
image.png
显然,这不是我们想要的结果。

3 问题分析

双击微分模块,可以看到在参数选项中,提示有一个参数c,使用s/(c*s+1)模块(可以理解为一个微分计算+低通滤波)替换理想的微分计算,用以降低微分带来的噪声。
这个参数默认为inf,也是默认为理想的微分。
image.png
打开模块的“Help”,翻到最底部,有一个“Topics"提到了“Linearization”。
image.png
打开链接,“谜底”接揭开了。
image.png
大意如下:
image.png
所以,在没有指定明确的参数c时,这个模块就作为增益为0模块,与上述我们的验证结果相同。

4 问题验证

把参数c设定为)0.05,再次进行线性化,得到结果如下。
image.png
G ( s ) = 1 10 s + 1 ∗ s 0.05 s + 1 = 2 s ( 10 s + 1 ) ( 0.1 s + 2 ) = 2 s s 2 + 20.1 s + 2 G(s)=\frac{1}{10s+1}*\frac{s}{0.05s+1}=\frac{2s}{({10s+1})(0.1s+2)}=\frac{2s}{s^2+20.1s+2} G(s)=10s+110.05s+1s=(10s+1)(0.1s+2)2s=s2+20.1s+22s
所以在进行Model Linearizer时,一定要检测Derivative的参数。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值