用连续状态创建自己的块(MATLAB s -函数)
在上一篇文章中,我展示了一个MATLAB离散状态S函数
本周,我们继续朝着相同的方向,实现了一个具有连续状态的S函数。
连续状态
在Simulink中什么是连续和离散状态?万博1manbetx
看看Kaustubha Govind关于连续状态:
但是,对于连续状态,Simulink要求块在导数()方法中提供状万博1manbetx态的导数(dx/dt),并使用其ODE解算器计算dx/dt的积分以获得“x”。然后可以在Outputs()函数中访问此“x”。例如,要实现积分器块。。。
让我们在这里停下来,看看如何一步一步地实现Integrator块。
安装程序
在s函数中,连续的状态声明在设置方法:
连续状态不能像离散状态一样被隐藏。原因有很多,例如,Simulink解算器使用它们来计算可变时间步长解算器所采取的步骤。万博1manbetx
有关DirectFeedthrough标志的详细信息,请参阅上一篇关于离散状态的文章。
初始化条件
与离散状态一样,您需要初始化连续状态:
输出
在输出方法,则可以读取连续状态的值并将其分配给输出端口:
衍生工具
这里是最重要的部分。当你有连续状态时,你不应该写block.ContStates.Data,初始化除外。相反,您可以指定状态的导数并将其写入block.Derivatives.Data. 对于积分器块,输入是输出的导数:
下次调用output方法时,解算器将集成中指定的值block.Derivatives.Data并将结果存储在block.ContStates.Data.
结论
关于连续状态,需要了解的重要一点是,块向解算器提供状态的导数。解算器负责积分,并将积分结果返回给块。
对于这样的示例,请看演示模型msfcndemo_limintm.mdl
现在轮到你了
通过留下一个评论这里.
评论
如需留言,请点击在这里登录到您的MathWorks帐户或创建新帐户。