主要内容

将自定义结构集成在状态溢图中

这个例子展示了如何在statflow®图表中使用自定义代码的结构。您可以在C代码中定义结构类型数据,并将其与statflow结构和Simulink®总线信号集成。金宝app通过与自定义代码共享数据,可以增强statflow支持的功能,并利用现有代码。金宝app有关更多信息,请参阅在equenflow图表中重用自定义代码

在该示例中,状态流图从一个Simulink总线信号处理数据,并将结果输出到另一个Simulink总线信号。金宝app输入和输出总线信号都由其定义金宝appsimulink.bus.(金宝appSimulink)目的抵消者。在图表中,Simulink总线信号与金宝app状态流结构接口inbus.out。该图表调用自定义C函数来写入输出结构out

在C代码中定义自定义结构

1.在C代码中,通过创建自定义头文件来定义一个结构。标题文件包含typedef.定义自定义结构属性的声明。例如,在此模型中,标题文件抵消者声明三种自定义结构:

... typedef struct {int输入;} SignalBus;
Typedef struct {int upper_saturation_limit;int lower_saturation_limit;} LIMITBUS;
typedef struct {signalBus InputSignal;限制限制;符号;......

2.在总线编辑器中,定义a金宝appsimulink.bus.匹配每个自定义结构的对象typedef.宣言。在里面标题文件每个人的领域金宝appsimulink.bus.对象,输入包含匹配的头文件的名称typedef.宣言。

3.配置状态溢图表以包括自定义C代码,如下所述为模型指定自定义代码

4.构建并运行模型。

将状态溢结构传递给自定义代码

当您调用将结构指针作为参数的自定义代码函数时,通过地址传递状态流结构。要将状态溢结构或其一个字段的地址传递到自定义函数,请使用操作员和DOT表示法:

  • &ovebus.提供状态流结构的地址out

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

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

有关更多信息,请参阅索引并将值分配给stateflow结构

例如,本例包含一个定制的C函数countrbusfcn.将结构指针作为参数。自定义标题文件抵消者包含此函数声明:

extern void countbusfcn(CounterBus * U1,int U2,CounterBus * Y1,INT * Y2);

该图表将地址传递给extenflation结构counterbus_structout通过使用这个函数调用:

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

该函数读取图表输入的值U2.和当地的结构counterbus_struct。它写入图表输出Y2.和输出结构out

也可以看看

(金宝appSimulink)

相关的话题