这个例子展示了如何在statflow®图表中使用自定义代码的结构。您可以在C代码中定义结构类型数据,并将其与statflow结构和Simulink®总线信号集成。金宝app通过与自定义代码共享数据,可以增强statflow支持的功能,并利用现有代码。金宝app有关更多信息,请参见在状态流程图中重用自定义代码.
在本例中,状态流图处理来自一个Simulink总线信号的数据,并将结果输出到另一个Simulink总线信号。金宝app总线的输入和输出信号都是由
对象金宝app仿真软件。公共汽车
(金宝app模型)COUNTERBUS
.在图中,Simulink总线信号与s金宝apptatflow结构接口inbus
和outbus
.图表调用一个定制的C函数来写入输出结构outbus
.
1.在你的C代码中,通过创建一个自定义头文件来定义一个结构。头文件包含类型定义
定义自定义结构属性的声明。例如,在这个模型中,头文件counterbus.h
声明三个自定义结构:
...Typedef struct {int input;} SIGNALBUS;
Typedef struct {int upper_saturation_limit;int lower_saturation_limit;} LIMITBUS;
typedef struct {SIGNALBUS输入信号;LIMITBUS限制;} COUNTERBUS;...
2.在总线编辑器中,定义金宝app仿真软件。公共汽车
匹配每个自定义结构的类型定义
声明。在头文件每一个领域金宝app仿真软件。公共汽车
对象,输入包含匹配项的头文件的名称类型定义
声明。
3.配置状态流程图以包含自定义C代码,如为模型指定自定义代码.
4.构建并运行您的模型。
当您调用以结构指针为参数的自定义代码函数时,请按地址传递statflow结构。要将statflow结构或其中一个字段的地址传递给自定义函数,请使用&
操作符和点符号:
&outbus
提供statflow结构的地址outbus
.
&outbus.inputsignal
提供子结构的地址inputsignal
的结构outbus
.
&outbus.inputsignal.input
提供字段的地址输入
子结构的outbus.inputsignal
.
有关更多信息,请参见为状态流结构建立索引和赋值.
例如,本例包含一个定制的C函数counterbusFcn
它以结构指针为参数。自定义头文件counterbus.h
包含以下函数声明:
extern void counterbusFcn(COUNTERBUS *u1, int u2, COUNTERBUS *y1, int *y2);
图表将地址传递给statflow结构counterbus_struct
和outbus
通过使用这个函数调用:
counterbusFcn(&counterbus_struct, u2, &outbus, &y2);
该函数读取图表输入的值u2
以及局部结构counterbus_struct
.它写入图表输出y2
输出结构outbus
.
金宝app仿真软件。公共汽车
(金宝app模型)