导出 Stateflow 函数以供重用
您可以通过导出函数,将 Stateflow® 图中图级别函数的作用域扩展到 Simulink® 模型中的其他模块。您可以导出:
图形函数
MATLAB® 函数
Simulink 函数
真值表
当您导出图级别函数时,您可以在其他 Stateflow 图和 Simulink Caller 模块中调用它们。
要导出可以通过使用限定表示法(例如
)调用的图级别函数,请选择导出图级别函数图属性,如 Chart 中所述。chartName.functionName要导出无需使用限定表示法即可调用的图级别函数,请选择导出图级别函数,然后选择将导出的函数视为全局可见。您无法导出同名的函数。
有关详细信息,请参阅Call a Simulink Function from a Model (Simulink)。
跨 Stateflow 图共享函数
此示例说明如何从 Simulink 模型中的其他图调用导出的函数。此模型包含主 Stateflow 图 mainChart 和两个辅助库图 lib1Chart 和 lib2Chart。每个图包含一个图级别图形函数,并且都启用了导出图级别函数和将导出的函数视为全局可见图属性。

主图包含两个数据对象 x 和 y,初始值分别为 0 和 1。当您仿真模型时,此图中的默认转移使用这些值作为参量调用函数 lib1_func。

函数 lib1_func 在库图 lib1Chart 中定义。函数读取其输入参量并将它们传递给函数 lib2_func。

函数 lib2_func 在库图 lib2Chart 中定义。函数读取其输入参量并将它们传递给函数 main_func。

函数 main_func 在主图中定义。函数将其输入参量相加并返回结果。主图将此结果存储为输出数据 x。函数调用序列在仿真的每个时间步中重复。Scope 模块显示 x 的值在仿真期间递增。

导出图级别函数的规范
不要导出包含不受支持的输入或输出的图级别函数
当输入或输出具有以下任一属性时,您无法导出图级别函数:
字长大于 32 位的定点数据类型
可变大小
不要跨模型引用边界导出函数
您无法从引用模型导出函数并从父模型调用这些函数。
生成代码时合并输出函数和更新函数
如果您为使用导出的图级别函数的模型生成代码,请启用模型配置参数单一输出/更新函数 (Simulink Coder)以确保仿真和代码生成之间的行为一致。