主要内容

确保外口是虚拟的

金宝app®可以在外港有条件子系统或之前的块外港在模型的顶部块。此缓冲区确保了一致的初始化外港块信号。

在少数情况下,添加具有条件输出信号或部分写入信号的信号缓冲区可能会导致不同的模拟结果。参数确保外口是虚拟的是一个选择外港块以卸下缓冲区。当您关注条件或部分写信号时,选择此选项。

条件输出信号

考虑以下模型。要打开模型,请参阅ex_conditional_write

合并Block将其输入结合到一个单个信号中,该信号在任何时候的值等于其驱动器块的最新计算输出。

对于大多数型号的情况,清除确保外口是虚拟的复选框外港连接到启用子系统c

  • 外港块遵循非虚拟语义。如果需要,请在需要之前插入隐藏的缓冲区外港堵塞。

  • 缓冲区提供了一致的初始化外港块信号。

时间0:一个运行,C不运行,而是因为缓冲区在一个,它运行并将零的初始值复制到外港堵塞。B不运行。合并信号的输出为零一个

时间0.5:A不运行。B运行并输出正弦波。合并信号是来自b

时间1。一个运行,C不运行,但缓冲区再次运行并复制在零的初始值到外港堵塞。B不运行。合并信号再次是一个,不是来自b

用固定步骤模拟模型,产生以下结果。

对于您关注条件和部分写入的情况,请选择(检查)确保外口是虚拟的复选框外港连接到启用子系统C。

  • 外港块遵循虚拟语义。

  • 隐藏的缓冲区未插入外港子系统块。

  • 如果S金宝appimulink确定需要缓冲区,则会显示错误。

时间0:一个运行,C不运行。B不运行。合并信号是信号的初始值。

时间0.5秒:A不运行。B运行并输出正弦波。合并信号是B的正弦波值。

时间1:一个运行,C不运行。B不运行。合并信号是最近计算出的输出,是B的正弦波。

与合并块的部分写信号

典型的建模模式是您要在其中初始化向量信号,然后根据某些条件或输入定期更新信号的部分元素。建模这种模式的一种方法是使用合并其输入来自两个的块功能通话子系统块。一个子系统是初始化任务,而另一个子系统是定期写任务。

下面的模型展示了这种模式。这initialize_process_subsystem在仿真开始时一次称为初始化向量信号。这run_process_subsystem被称为部分写入向量的元素。但是,来自任务块需要一条路径,隐藏的缓冲区不制作矢量的副本。选择确保外口是虚拟的复选框外港块卸下隐藏的缓冲区。如果S金宝appimulink确定需要缓冲区,则显示错误。要打开模型,请参阅ex_partial_write_single_merge

initialize_process_subsystem

  • 初始化2个元素向量的每个元素,值为7

  • 输出矢量[7 7]

run_process_subsystem

  • 输入索引值为1,但由于索引模式the的参数选择器块设置为基于零,他们从输入向量中选择第二个元素。

  • 选择器块的结果4

  • 因为任务堵塞索引模式参数设置为基于零输入索引IDX1是1,输出信号必须是具有长度2的向量。设置后输出大小参数为2,分配块能够写入第二个元素。

  • 选择确保外口是虚拟的复选框卸下隐藏的缓冲区。

该模型生成的代码包括两个功能。init_procrun_proc

/ *模型步骤函数 */ void init_proc(void){int32_t s3_iter;/ *使用7.0 */ for(s3_iter = 0; s3_iter <2; s3_iter ++)初始化信号向量元素{partialWritesingLemerge_dw.assignment [s3_iter] = 7.0;} for(s3_iter = 0; s3_iter <2; s3_iter ++){partialWritesingLemerge_y.out4 [s3_iter] = partialWritesingLemerge_dw.assignment [s3_iter];}} / *模型步骤函数 * / void run_proc(void){ / *写入输出信号向量的元素1的元素 * / partialwritesinglemerge_y.out4 [1] = 4.0;}