主要内容

排除系统对象的范围分析

当推导模型,该模型使用一个系统对象的范围,分析失败如果模型包含的变量可以引用多个处理对象。下面的例子显示了如何重新配置代码,以便定点工具可以推出范围的模型。

在这个例子中,第一个模型的范围分析ex_HandleVariableRefersToMultipleObjects产生一个错误,因为有一个变量的代码可以参考不同的系统对象取决于其他条件。该模型ex_HandleVariableRefersToSingleObject重写的第一个模型具有相同的功能,但定点工具能够为模型推导范围。

推导出模型与系统对象的范围

打开第一个模型,ex_HandleVariableRefersToMultipleObjects

open_system (“ex_HandleVariableRefersToMultipleObjects.slx”)

MATLAB函数内的代码块指的是定制的系统对象fAddConstant

函数y = fcn (u, c)% # codegen持续的hSysObjAddTen持续的hSysObjAddNegTen持续的hSysObjForStep如果isempty (hSysObjAddTen) hSysObjAddTen = fAddConstant (10);结束如果isempty (hSysObjAddNegTen) hSysObjAddNegTen = fAddConstant (-10);结束如果c > 0 hSysObjForStep = hSysObjAddTen;其他的hSysObjForStep = hSysObjAddNegTen;结束y =步骤(hSysObjForStep u);

从仿真软件®金宝app应用程序选项卡上,选择定点工具。

在定点工具,选择迭代定点转换工作流。

系统设计(SUD)中,选择ex_HandleVariableRefersToMultipleObjects您要转换的系统。

范围收集模式中,选择派生的范围

单击收集范围按钮。分析失败,因为是一种处理变量的代码可以引用的值根据不同的系统对象c

重写代码,使提取范围分析

你可以重写MATLAB函数内的代码块,定点工具能够获得系统对象的范围。

关闭和定点工具ex_HandleVariableRefersToMultipleObjects模型。打开ex_HandleVariableRefersToSingleObject模型。

open_system (“ex_HandleVariableRefersToSingleObject.slx”)

这个模型包含重写代码:

函数y = fcn (u, c)% # codegen持续的hSysObjAddTen持续的hSysObjAddNegTen如果isempty (hSysObjAddTen) hSysObjAddTen = fAddConstant (10);结束如果isempty (hSysObjAddNegTen) hSysObjAddNegTen = fAddConstant (-10);结束如果c > 0 y =步骤(hSysObjAddTen u);其他的y =步骤(hSysObjAddNegTen u);结束

从仿真软件®金宝app应用程序选项卡上,选择定点工具。

在定点工具,选择迭代定点转换工作流。

系统设计(SUD)中,选择ex_HandleVariableRefersToSingleObject您要转换的系统。

范围收集模式中,选择派生的范围

单击收集范围按钮。这一次,定点工具成功地获取范围在模型中使用的变量。

range-analysis-system-object.png

另请参阅

|