用非线性解决问题
非线性增加了计算的复杂性,降低了模拟的速度。包含关于所拥有状态的非线性的分区与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;结束结束
这个模型中的块都使用默认参数。的数据查看器工具显示方程类型是非线性非线性变量是电流,我
.该图显示了数据查看器结果。
要去除非线性,请替换i*R == v
用等效表达式,i == v/R
.现在方程是线性的我
,适用于HDL代码生成。
要了解有关涉及拥有状态和连接函数的术语的更多信息,请访问理解分区求解器如何工作.
使用Simscape物理信号块而不是动态仿真模块信号屏蔽
为了减少不必要的非线性的可能性,使用Simscape™物理信号操作块而不是转换Simulink®信号。该图显示了一个使用Simulink-PS转换器块来转换常数块转换成物理信号。
该图显示了数据查看器数据的工具。请注意,方程类型是非线性分区1。
取代了Simulink-PS转换器块和常数块PS常数块使得系统是线性的。更新后的配置如图所示。
的数据查看器工具现在显示方程类型是切换线性.更新后的工具输出如图所示。
该模型适用于HDL代码生成,但它仍然使用非线性方程,i*R == v
.分区求解器现在可以把这个非线性方程转换成一个切换的线性系统,因为电阻Input是PS常数块。您可以通过将方程转换为线性来提高性能。确保方程类型是线性来验证你移除了所有的非线性。