排除系统对象的范围分析
当推导模型,该模型使用一个系统对象的范围,分析失败如果模型包含的变量可以引用多个处理对象。下面的例子显示了如何重新配置代码,以便定点工具可以推出范围的模型。
在这个例子中,第一个模型的范围分析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
您要转换的系统。
下范围收集模式中,选择派生的范围。
单击收集范围按钮。这一次,定点工具成功地获取范围在模型中使用的变量。