文档

整合自定义结构Stateflow图表

您可以定义自定义结构的C代码,你可以与你的Stateflow集成®图的仿真软件金宝app®模型仿真和代码生成。例如,模型sf_bus_demo使用一个自定义的C函数写入输出结构outbus。通过共享数据和自定义代码,您可以增加Stateflow支持的功能和利用你现有的代码。金宝app有关更多信息,请参见重用定制代码Stateflow图表通过Stateflow访问总线信号结构

定义自定义结构的C代码

  1. 在你的C代码,通过创建一个自定义头文件定义一个结构。头文件包含类型定义声明匹配的属性金宝appSimulink.Bus对象定义了Stateflow结构。例如,在模型sfbus_demo的头文件counterbus.h说三个自定义结构:

    …typedef struct {int输入;}SIGNALBUS;typedef struct {int upper_saturation_limit;int lower_saturation_limit;}LIMITBUS;typedef struct {SIGNALBUS inputsignal;LIMITBUS限制;}COUNTERBUS;…
  2. 在公共汽车编辑器中,定义一个金宝appSimulink.Bus对象匹配每个自定义结构类型定义声明。在头文件每一个领域金宝appSimulink.Bus对象,输入头文件包含的名称匹配类型定义声明。

  3. 配置您的C语言行动图,包括定制的C代码。

  4. 构建并运行您的模型。

通过Stateflow结构自定义代码

当你编写自定义代码的函数结构的指针作为参数,通过Stateflow结构的地址。通过地址Stateflow结构或它的一个字段的自定义函数,使用&运营商和点符号:

  • &outbus提供的地址Stateflow结构outbus

  • &outbus.inputsignal提供了子结构的地址inputsignal的结构outbus

  • &outbus.inputsignal.input提供的地址字段输入子结构的outbus.inputsignal

有关更多信息,请参见指数子结构和字段

例如,模型sfbus_demo包含一个定制的C函数counterbusFcn这需要结构指针作为参数。自定义头文件包含这个函数声明:

走读生空白counterbusFcn (int COUNTERBUS * u1, u2, COUNTERBUS * y1, y2 int *);

图表将地址传递到Stateflow结构counterbus_structoutbus通过使用这个函数调用:

counterbusFcn (&counterbus_struct, u2, &outbus y2);

读取表的值输入的函数u2和当地的结构counterbus_struct。它写入表的输出y2和输出结构outbus

另请参阅

相关的例子

更多关于