主要内容

用非线性解决问题

非线性增加了计算的复杂性,降低了模拟的速度。包含关于所拥有状态的非线性的分区与HDL Coder™不兼容。要在使用分区求解器的网络中使用HDL Coder,必须解析这些分区。要检查模型是否包含与所拥有状态相关的非线性,请打开数据查看器工具并更新结果。下分区数向下拉,打开每个分区。如果一个分区包含与该分区中的状态有关的非线性方程,则相邻的单元格方程类型非线性

去除分量方程中的非线性

验证你的方程不包含非线性的项涉及自己的状态。例如,输入状态变量状态变量创建不必要的非线性。在这种情况下,模型处理输入的系数状态变量

这段代码定义了组件nonlinearEquation,该方法使用非线性方程来定义可变电阻。

组件nonlinearEquation节点p = foundation.electric .electric;% R:左电气的;% C:对结束输入R = {1,“欧姆”};%的阻力结束变量v = {0,“V”};%电压I = {0,“一个”};%当前结束分支I: p.i -> ni;结束方程v == p.v - n.v;i*R == v;结束结束
您可以使用此块成功地模拟电阻器,但无法从模型生成HDL代码,因为它是非线性的。

将Simulink信号转换为物理信号输入到自定义电阻块的模型。

这个模型中的块都使用默认参数。的数据查看器工具显示方程类型非线性非线性变量是电流,.该图显示了数据查看器结果。

“统计数据查看器”窗口显示当前的非线性变量i。

要去除非线性,请替换i*R == v用等效表达式,i == v/R.现在方程是线性的,适用于HDL代码生成。

要了解有关涉及拥有状态和连接函数的术语的更多信息,请访问理解分区求解器如何工作

使用Simscape物理信号块而不是动态仿真模块信号屏蔽

为了减少不必要的非线性的可能性,使用Simscape™物理信号操作块而不是转换Simulink®信号。该图显示了一个使用Simulink-PS转换器块来转换常数块转换成物理信号。

将Simulink信号转换为物理信号输入到自定义电阻块的模型。

该图显示了数据查看器数据的工具。请注意,方程类型非线性分区1。

“统计数据查看器”工具数据显示模型的非线性分区。

取代了Simulink-PS转换器块和常数PS常数块使得系统是线性的。更新后的配置如图所示。

修正版模型使用PS Constant块代替Simulink Constant块和Simulink-PS Converter块。

数据查看器工具现在显示方程类型切换线性.更新后的工具输出如图所示。

统计数据查看器工具输出显示模型现在是一个切换的线性系统。

该模型适用于HDL代码生成,但它仍然使用非线性方程,i*R == v.分区求解器现在可以把这个非线性方程转换成一个切换的线性系统,因为电阻Input是PS常数块。您可以通过将方程转换为线性来提高性能。确保方程类型线性来验证你移除了所有的非线性。

另请参阅

|

Baidu
map