Simulink中构造时变传递函数的四种⽅法
1. 原由
传递函数是针对时不变(Linear Time-Invariant,LTI)系统定义的,严格来说,时变传递函数的说法并不⼗分严谨。但 “时变”和“⾮线性”才是实际系统的本质特性,就拿最简单的RC电路来说,电阻会随温度变化,电容也会随使⽤时间发⽣变化,RC参数的变化就会造成传递函数的时变。对于已经建好的传递函数,需要分析参数时变的影响时,或者已经建好的某种控制算法,需要验证对于参数时变的适应能⼒时,应该如何处理呢?
function怎么记忆这时,由线性时不变系统传递函数推⼴得到的时变传递函数是⼀个不错的选择。
2. ⽅法
2.1 ⽅法⼀:通过微分⽅程实现时变传递函数
传递函数由微分⽅程通过拉普拉斯(Laplace)变换得到,已知传递函数形式后,可以反推出微分⽅程,再在中利⽤基本模块搭建模型。
如某时变⼆阶系统,其传递函数为:
其中, k(t) ,a(t),b(t)为时变参数。
传递函数反推出微分⽅程为:
上述微分⽅程在Simulink中容易搭建:
更⽅便的是,Matlab 2017b之后在控制系统⼯具箱(Control system toolbox)中推出了时变传递函数模块(Varying Transfer Function),可供⽤户直接选⽤。
Simulink⾃带的这个时变传递函数模块(Varying Transfer Function)就是使⽤的微分⽅程⽅法实现的。
2.2 ⽅法⼆:通过状态空间实现时变传递函数
传递函数还可以转变为状态空间形式,如上述⼆阶系统可转变为可控标准型状态空间:
通过上述状态空间形式也可在Simulink中⽅便的实现时变传递函数。同样,Matlab 2017b之后在控制系统⼯具箱(Control system toolbox)中推出了时变状态空间模块(Varying State Space),可供⽤户直接选⽤。
2.3 ⽅法三:通过S函数实现时变传递函数
核⼼思路与⽅法⼆相同,即:传递函数转变为状态空间(可选可控标准型和可观标准型),通过传递函数系数重构状态空间矩阵,通过状态空间实现时变传递函数。
在Matlab 2017b版本中推出线性时变系统表达⽅式之前,笔者早年使⽤Level-2 S函数开发时变传递函数模块,可供Matlab 2017b版本以前的⽤户使⽤ ,也可供需要学习Level-2 S函数使⽤⽅法的⽤户参考。
2.4 ⽅法四:通过DCP模块实现时变传递函数
Simulink中的传递函数模块(Transfer Fcn)的分⼦系数(Numerator coefficients)和分母系数(Denominator coefficients)都⽀持在线调整,即在仿真过程中可通过set_param函数来在线调整传递函数的分⼦分母系数,由此实现时变传递函数。
3. 演⽰
⼆阶时变传递函数:
参数时变规律为:
四种⽅法的Simulink模型:
阶跃响应仿真结果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论