确保Outport为Virtual

万博1manbetx®可以添加隐藏信号缓冲器之前外港块在条件子系统中或在外港块在模型的顶层。属性的一致初始化外港块的信号。

在少数情况下,添加带有条件输出信号或部分写信号的信号缓冲区会导致不同的模拟结果。的参数确保输出端口是虚拟的期权在股票上吗外港块删除缓冲区。当您关注条件或部分写信号时,请选择此选项。

条件输出信号

考虑下面的模型。开放模式

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

对于大多数模型的情况,清除确保输出端口是虚拟的上的复选框。外港连接的块已启用子系统C

  • 外港Block遵循非虚拟语义。方法之前,如果需要,将插入一个隐藏缓冲区外港块。

  • 对象的一致初始化外港块的信号。

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

Time 0.5: A不运行。B运行并输出一个正弦波。归并信号是来自B

时间1。一个运行时,C不运行,但缓冲区再次运行并将初始值0复制到外港块。B不跑。合并信号还是的初始值一个,不是来自的最后一个值B

用固定步长模拟该模型,得到如下结果。

对于关心条件写和部分写的情况,选择(勾选)确保输出端口是虚拟的复选框,用于外港block连接到Enabled子系统C。

  • 外港Block遵循虚拟语义。

  • 属性之前不插入隐藏缓冲区外港子系统的块。

  • 如果S万博1manbetximulink确定需要缓冲区,则会显示一个错误。

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

时间0.5秒:A不运行。B运行并输出一个正弦波。归并信号是来自B的正弦波的值。

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

用合并块部分写信号

典型的建模模式是,您希望初始化一个矢量信号,然后根据某些条件或输入定期更新信号的部分元素。对该模式建模的一种方法是使用合并块,它的输入来自两个函数调用子系统块。其中一个子系统是初始化任务,另一个子系统是周期性写任务。

下面的模型演示了这种模式。的Initialize_Process_Subsystem在模拟开始时调用一次,以初始化矢量信号。的Run_Process_Subsystem调用来部分写入向量的元素。的输出赋值块需要一个路径,其中隐藏缓冲区不复制向量。选择确保输出端口是虚拟的上的复选框。外港Block删除一个隐藏的缓冲区。如果S万博1manbetximulink确定需要缓冲区,则会显示一个错误。开放模式

Initialize_Process_SubSystem

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

  • 输出向量7 [7]

Run_Process_Subsystem

  • 输入的索引值为1,但是由于索引模式参数。选择器Blocks被设置为从零开始的,它们从输入向量中选择第2个元素。

  • 属性中的输出标量值选择器的结果4

  • 因为赋值索引模式参数设置为从零开始的输入指标Idx1为1,输出信号需要是一个长度为2的向量。设置后输出的大小参数2,赋值块可以写入第2个元素。

  • 选择确保输出端口是虚拟的复选框删除隐藏缓冲区。

从这个模型生成的代码包括两个函数。Init_Proc而且Run_Proc

/*模型步骤函数*/ void Init_Proc(void) {int32_T s3_iter;/*初始化信号向量元素7.0 */ (s3_iter = 0;S3_iter < 2;s3_iter++) {PartialWriteSingleMerge_DW。赋值[s3_iter] = 7.0;} for (s3_iter = 0;S3_iter < 2;s3_iter++) {PartialWriteSingleMerge_Y。Out4[s3_iter] = partialwritesinglemerge_dww . assignment [s3_iter];}} /*模型步函数*/ void Run_Proc(void){/*写入输出信号向量的元素1 */ PartialWriteSingleMerge_Y. .Out4[1] = 4.0;}