主要内容

生成响应初始化,重置和终止事件的代码

要从响应初始化、重置和终止事件的建模组件生成代码,请使用块初始化功能终止功能.有关如何使用这些块的信息,请参阅使用初始化、重置和终止函数.您可以在模型层次结构中的任何位置使用块。

何时生成响应初始化、重置或终止事件的代码的示例包括:

  • 启动和停止组件。

  • 计算初始条件。

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

  • 生成响应外部事件的复位入口点函数。

每个非virtual子系统和引用的模型可以具有自己的初始化,重置和终止功能。

代码生成器生成的初始化和终止代码与重置代码不同。对于初始化和终止代码,代码生成器在默认的入口点函数中包括组件的初始化和终止代码,模型_initialize模型_terminate.只有在建模重置行为时,代码生成器才会生成重置代码。

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

当您为包含初始化功能终止功能块,代码生成器:

  • 在入口点函数中包含初始化事件代码和默认初始化代码模型_initialize

  • 在入口点函数中包含带有默认终止代码的终止事件代码模型_terminate

考虑到模型rtwdemo_irt_base

对于此模型,代码生成器会产生其他代码可以与之连接的初始化和终止入口函数。

Void rtwdemo_irt_base_initialize(Void) / /初始化

此代码出现在生成的文件中RTWDEMO_IRT_BASE.C..初始化函数,rtwdemo_irt_base_initialize

  • 初始化错误状态。

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

  • 设置输出值

  • 设置离散积分器的初始条件。

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

此代码假设禁用了对非有限数字和mat文件日志记金宝app录的支持。

void rtwdemo_irt_base_initialize(void){rtmseterrorstatus(rtwdemo_irt_base_m,(null));(void)Memset((void *)和RTWDEMO_IRT_BASE_DW,0,DIZEOF(DW_RTWDEMO_IRT_BASE_T)));RTWDEMO_IRT_BASE_Y.OUT1 = 0.0;RTWDEMO_IRT_BASE_DW.DISCRETEINTIGRATOR_DSTATE = 0.0;void rtwdemo_irt_base_terminate(void){/ *(不需要终止代码)* /}

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

参数事件类型活动侦听器块的初始化和终止函数初始化终止, 分别。初始化函数使用状态编写器块初始化离散积分器块的输入值为10.终止功能使用状态读取器块读取离散集成器块的状态。

代码生成器包括它为初始化函数生成的事件代码,并在入口点函数中终止标准初始化和终止函数块rtwdemo_irt_initterm_initializertwdemo_irt_initterm_terminate.此代码假设禁用了对非有限数字和mat文件日志记金宝app录的支持。

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

生成重置事件的代码

生成响应重置事件的代码初始化功能终止功能块在建模组件中。通过设置块来为重置配置块事件类型参数的活动侦听器重启.还设置了事件名称范围。默认名称是重启

代码生成器产生重置入口点函数只要如果您模拟重置行为。如果组件包含多个重置规范,则代码生成器生成的代码取决于复位函数是否共享事件名称。对于给定的组件层次结构:

  • 对于具有唯一事件名称的重置函数,代码生成器为每个命名事件产生单独的入口函数。每个函数的名称是相应事件的名称。

  • 对于共享事件名称的重置函数,代码生成器将重置代码汇总为一个入口点函数。重置函数的代码按顺序出现,以组件层次结构的最低级别(最内部)开始,并以root(最外侧)结尾。函数的名称是模型_reset.有关更多信息,请参见事件名称和代码聚合

考虑到模型RTWDEMO_IRT_RESET.,包括从初始化功能块导出的复位功能块。

事件类型事件名称参数活动侦听器块被设置为重启重启, 分别。该函数使用状态编写器块将离散集成器块的输入值重置为5。

代码生成器产生reset函数rtwdemo_irt_reset_reset

void rtwdemo_irt_reset_reset(void){rtwdemo_irt_reset_dw.discreteIntegrator_dstate = 5.0;}

事件名称和代码聚合

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

在生成代码时,代码生成器将整个组件层次结构中具有给定事件名的函数的代码聚合到一个入口点函数中。重置函数的代码按顺序出现,从组件层次结构的最低层(最内层)开始,以根(最外层)结束。代码生成器使用事件名来命名函数。

例如,模型rtwdemo_irt_shared包括复制初始化,重置和终止父模型中的函数的子系统。

尽管模型包含initialize、reset和terminate函数的多个副本,但代码生成器为reset生成一个入口点函数(rtwdemo_irt_shared_reset),一个用于初始化(rtwdemo_irt_shared_initialize),一个用于terminate (RTWDEMO_IRT_SHARED_TERMINATE.).在每个入口点函数中,在列出配置了初始条件(模型_P。堵塞_我知道了),代码生成器对组件的代码进行排序,从层次结构的最低级别开始,以根结束。

。void rtwdemo_irt_shared_reset(void) {rtwdemo_irt_shared_DW。SubIntegrator2_DSTATE = 5.0;rtwdemo_irt_shared_DW。Integrator2_DSTATE = 5.0;}…void rtwdemo_irt_shared_initialize(void) {rtmSetErrorStatus(rtwdemo_irt_shared_M, (NULL));(void) 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

void rtwdemo_irt_shared_reset(void) {rtwdemo_irt_shared_DW。SubIntegrator2_DSTATE = 5.0;} void rtwdemo_irt_shared_reset_02(void) {rtwdemo_irt_shared_DW。Integrator2_DSTATE = 5.0;}

限制

您无法从Harness模型生成代码 - 一个包含模型块的根模型,其公开初始化,重置或终止功能端口。

相关的话题