主要内容

生成代码来响应初始化、复位和终止事件

从建模组件响应生成代码初始化、复位,并终止事件执行期间,使用块初始化函数终止函数。有关如何使用这些模块的信息,请参阅使用初始化,初始化、复位和终止功能。您可以使用块在一个层次结构模型。

的例子来生成代码来响应初始化时,重置,或者终止事件包括:

  • 启动和停止一个组件。

  • 计算初始条件。

  • 从非易失性内存保存和恢复状态。

  • 生成重置入口点函数响应外部事件。

每个nonvirtual子系统和引用的模型可以有自己的一套初始化,重置,并终止功能。

代码生成器产生的初始化和终止代码不同复位代码。初始化和终止代码,代码生成器包括组件初始化和终止代码默认入口点函数,模型_initialize模型_terminate。代码生成器产生复位代码只有在你模型重置行为。

生成的代码初始化和终止事件

当你为一个组件,包括生成代码初始化函数终止函数块,代码生成器:

  • 包括初始化事件代码默认初始化代码入口点函数模型_initialize

  • 包括终止与违约终止事件代码代码入口点函数模型_terminate

考虑到模型rtwdemo_irt_base

对于这个模型,代码生成器产生的初始化和终止其他代码入口点函数接口。

空白rtwdemo_irt_base_initialize (void)无效rtwdemo_irt_base_terminate(空白)

这段代码出现在生成的文件rtwdemo_irt_base.c。初始化函数,rtwdemo_irt_base_initialize:

  • 初始化一个错误状态。

  • 分配内存块I / O和状态参数。

  • 设置输出值

  • 设置初始条件的离散集成器。

终止功能,,rtwdemo_irt_base_terminate,不需要代码。

这段代码假设支持非限定的数量和MAT-file金宝app日志是禁用的。

空白rtwdemo_irt_base_initialize (void) {rtmSetErrorStatus (rtwdemo_irt_base_M (NULL));(空白)memset (&rtwdemo_irt_base_DW (void *), 0, sizeof (DW_rtwdemo_irt_base_T));rtwdemo_irt_base_Y。着干活= 0.0;rtwdemo_irt_base_DW。DiscreteIntegrator_DSTATE = 0.0;}无效rtwdemo_irt_base_terminate (void){/ *(不需要终止代码)* /}

添加初始化函数终止函数块模型(见rtwdemo_irt_initterm)。初始化功能块使用国家的作家块设置初始条件的离散集成器。终止功能块包含一个国家的读者块,读取离散集成块的状态。

参数事件类型事件监听器块设置为初始化和终止功能初始化终止,分别。初始化函数使用国家作家块初始化离散积分器的输入值10块。终止函数使用国家读者块读离散集成块的状态。

代码生成器包括它产生的事件代码初始化功能和终止功能块标准的初始化和终止代码入口点函数rtwdemo_irt_initterm_initializertwdemo_irt_initterm_terminate。这段代码假设支持非限定的数量和MAT-file金宝app日志是禁用的。

空白rtwdemo_irt_initterm_initialize (void) {rtmSetErrorStatus (rtwdemo_irt_initterm_M (NULL));(空白)memset (&rtwdemo_irt__initterm_DW (void *), 0, sizeof (DW_rtwdemo_irt__initterm_T));rtwdemo_irt_initterm_Y。着干活= 0.0;rtwdemo_irt_initterm_DW。DiscreteIntegrator_DSTATE = 10.0;}无效rtwdemo_irt__initterm_terminate (void){/ *(不需要终止代码)* /}

重置事件的生成代码

生成代码来响应包括重置事件初始化函数终止函数块在建模组件。为通过设置重置配置块事件类型参数的事件监听器重置。还设置了事件名称参数。默认的名称是重置

代码生成器产生一个复位入口点函数只有如果你重置行为模型。如果一个组件包含多个重置规范,代码生成器生成的代码取决于重置功能分享事件名称。对于一个给定的组件层次结构:

  • 重置功能具有独特的事件名称,代码生成器产生一个单独的入口点函数为每个命名的事件。每个函数的名称的名称对应的事件。

  • 重置功能分享事件名称、代码生成器骨料重置代码到一个入口点函数。重置功能的代码出现在秩序,从最低水平(内心)的组件层次结构,最后根(外层)。函数的名称模型_reset。有关更多信息,请参见事件名称和代码聚合

考虑到模型rtwdemo_irt_reset,其中包括一个重置功能块来自一个初始化函数块。

事件类型事件名称参数事件监听器块设置为重置重置,分别。函数使用国家作家块重置离散积分器的输入值块5。

代码生成器产生复位功能rtwdemo_irt_reset_reset

空白rtwdemo_irt_reset_reset {rtwdemo_irt_reset_DW(无效)。DiscreteIntegrator_DSTATE = 5.0;}

事件名称和代码聚合

使用初始化函数终止函数块定义多个初始化、复位和终止功能组件的层次结构。只定义一个初始化函数和一个终止函数每级层次。您可以定义多个重置功能层次水平。您配置的事件名称的函数在给定水平必须是唯一的。

当生产代码,代码生成器聚合函数的代码,一个给定的事件名称在整个组件层次结构为一个入口点函数。重置功能的代码出现在秩序,从最低水平(内心)的组件层次结构,最后根(外层)。代码生成器使用事件名称来命名函数。

例如,模型rtwdemo_irt_shared包括一个子系统,复制初始化,重置,并终止函数在父模型。

虽然模型包括初始化的多个副本,重置,和终止功能,重置代码生成器产生的一个入口点函数(rtwdemo_irt_shared_reset),一个用于初始化(rtwdemo_irt_shared_initialize),一个用于终止(rtwdemo_irt_shared_terminate)。清单后,在每个入口点函数的代码块配置了一个初始条件(模型_P。_IC订单),代码生成器代码组件,从最低层次结构的根和结束。

。空白rtwdemo_irt_shared_reset {rtwdemo_irt_shared_DW(无效)。SubIntegrator2_DSTATE = 5.0;rtwdemo_irt_shared_DW。Integrator2_DSTATE = 5.0;}。空白rtwdemo_irt_shared_initialize (void) {rtmSetErrorStatus (rtwdemo_irt_shared_M (NULL));(空白)memset (((void *) &rtwdemo_irt_shared_DW), 0, sizeof (DW_rtwdemo_irt_shared_T));rtwdemo_irt_shared_Y。着干活= 0.0;rtwdemo_irt_shared_DW。Integrator1_DSTATE = 0.0; rtwdemo_irt_shared_DW.SubIntegrator2_DSTATE = 2.0; rtwdemo_irt_shared_DW.Integrator2_DSTATE = 10.0; . . . void rtwdemo_irt_shared_terminate(void) { /* (no terminate code required) */ }

如果你重命名的事件配置子系统复位功能reset_02代码生成器产生两个复位入口点函数,rtwdemo_irt_shared_resetrtwdemo_irt_shared_reset_02

空白rtwdemo_irt_shared_reset {rtwdemo_irt_shared_DW(无效)。SubIntegrator2_DSTATE = 5.0;}无效rtwdemo_irt_shared_reset_02 {rtwdemo_irt_shared_DW(无效)。Integrator2_DSTATE = 5.0;}

限制

你不能从利用模型(一根模型生成代码块包含一个模型,使初始化,重置,或者终止函数港口。

相关的话题