集成定制结构Stateflow的图表

您可以在C代码中定义自定义结构,你可以用你的Stateflow的整合®图表中的Simulin万博1manbetxk®模型仿真和代码生成。例如,模型sf_bus_demo使用自定义C函数写入到输出结构outbus。通过与自定义代码共享数据,你可以增加用Stateflow支持的能力,并利用你的既有代码的优势。万博1manbetx欲了解更多信息,请参阅重用自定义代码的Stateflow图访问总线信号通过Stateflow的结构

定义自定义结构的C代码

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

    ... typedef结构{INT输入;} SIGNALBUS;typedef结构{INT upper_saturation_limit;INT lower_saturation_limit;} LIMITBUS;typedef结构{SIGNALBUS inputsignal;LIMITBUS极限;} COUNTERBUS;...
  2. 在总线编辑器,定义万博1manbetxSimulink.Bus对象,每个自定义结构相匹配的typedef宣言。在里面头文件每场万博1manbetxSimulink.Bus对象,输入包含匹配的头文件的名称的typedef宣言。

  3. 配置你的C动作语言图表,包括自定义的C代码。

  4. 构建和运行模型。

通过Stateflow的结构自定义代码

当你写的是采取结构指针作为参数的自定义代码功能,通过地址传递Stateflow的结构。传递一个状态流结构或它的字段中的一个自定义函数的地址,使用运营商和点符号:

  • &outbus提供了状态流结构的地址outbus

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

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

欲了解更多信息,请参阅指数子结构和字段

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

的extern空隙counterbusFcn(COUNTERBUS * U1,U2 INT,COUNTERBUS * Y1,INT * Y2);

图表传递地址给状态流结构counterbus_structoutbus通过使用这个函数调用:

counterbusFcn(&counterbus_struct,U2,&outbus,&Y2);

该函数读取图表输入的值U2和局部结构counterbus_struct。其写入图表输出Y2和输出结构outbus

也可以看看

相关的例子

更多关于