我是靠谱客的博主 超帅小熊猫,最近开发中收集的这篇文章主要介绍【matlab】Simulink 微分模块的线性化问题1 什么问题2 问题复现3 问题分析4 问题验证,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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的参数。

最后

以上就是超帅小熊猫为你收集整理的【matlab】Simulink 微分模块的线性化问题1 什么问题2 问题复现3 问题分析4 问题验证的全部内容,希望文章能够帮你解决【matlab】Simulink 微分模块的线性化问题1 什么问题2 问题复现3 问题分析4 问题验证所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部