整合自定义结构Stateflow图表
您可以定义自定义结构的C代码,你可以与你的Stateflow集成®图的仿真软件金宝app®模型仿真和代码生成。例如,模型sf_bus_demo
使用一个自定义的C函数写入输出结构outbus
。通过共享数据和自定义代码,您可以增加Stateflow支持的功能和利用你现有的代码。金宝app有关更多信息,请参见重用定制代码Stateflow图表和通过Stateflow访问总线信号结构。
定义自定义结构的C代码
在你的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;…
在公共汽车编辑器中,定义一个
金宝appSimulink.Bus
对象匹配每个自定义结构类型定义
声明。在头文件每一个领域金宝appSimulink.Bus
对象,输入头文件包含的名称匹配类型定义
声明。配置您的C语言行动图,包括定制的C代码。
为模拟包括自定义代码,看看访问自定义C代码Nonlibrary图表。
为代码生成包括自定义代码,看看集成外部代码通过使用模型配置参数(金宝app仿真软件编码器)。
构建并运行您的模型。
通过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_struct
和outbus
通过使用这个函数调用:
counterbusFcn (&counterbus_struct, u2, &outbus y2);
读取表的值输入的函数u2
和当地的结构counterbus_struct
。它写入表的输出y2
和输出结构outbus
。