这个例子展示了如何在statflow®图表中使用自定义代码的结构。您可以在C代码中定义结构类型数据,并将其与statflow结构和Simulink®总线信号集成。金宝app通过与自定义代码共享数据,可以增强statflow支持的功能,并利用现有代码。金宝app有关更多信息,请参阅在equenflow图表中重用自定义代码。
在该示例中,状态流图从一个Simulink总线信号处理数据,并将结果输出到另一个Simulink总线信号。金宝app输入和输出总线信号都由其定义
目的金宝appsimulink.bus.
(金宝appSimulink)抵消者
。在图表中,Simulink总线信号与金宝app状态流结构接口inbus.
和out
。该图表调用自定义C函数来写入输出结构out
。
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_struct
和out
通过使用这个函数调用:
counterbusfcn(&counterbus_struct,u2,&outbus,&y2);
该函数读取图表输入的值U2.
和当地的结构counterbus_struct
。它写入图表输出Y2.
和输出结构out
。
金宝appsimulink.bus.
(金宝appSimulink)