主要内容

导出 Stateflow 函数以供重用

您可以通过导出函数,将 Stateflow® 图中图级别函数的作用域扩展到 Simulink® 模型中的其他模块。您可以导出:

  • 图形函数

  • MATLAB® 函数

  • Simulink 函数

  • 真值表

当您导出图级别函数时,您可以在其他 Stateflow 图和 Simulink Caller 模块中调用它们。

  • 要导出可以通过使用限定表示法(例如 chartName.functionName)调用的图级别函数,请选择导出图级别函数图属性,如 Chart 中所述。

  • 要导出无需使用限定表示法即可调用的图级别函数,请选择导出图级别函数,然后选择将导出的函数视为全局可见。您无法导出同名的函数。

有关详细信息,请参阅Call a Simulink Function from a Model (Simulink)

跨 Stateflow 图共享函数

此示例说明如何从 Simulink 模型中的其他图调用导出的函数。此模型包含主 Stateflow 图 mainChart 和两个辅助库图 lib1Chartlib2Chart。每个图包含一个图级别图形函数,并且都启用了导出图级别函数将导出的函数视为全局可见图属性。

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

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

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

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

导出图级别函数的规范

不要导出包含不受支持的输入或输出的图级别函数

当输入或输出具有以下任一属性时,您无法导出图级别函数:

  • 字长大于 32 位的定点数据类型

  • 可变大小

不要跨模型引用边界导出函数

您无法从引用模型导出函数并从父模型调用这些函数。

生成代码时合并输出函数和更新函数

如果您为使用导出的图级别函数的模型生成代码,请启用模型配置参数单一输出/更新函数 (Simulink Coder)以确保仿真和代码生成之间的行为一致。

另请参阅

主题