文档

确保输出端口是虚拟的

万博1manbetxSimulink可以添加一个隐藏的信号缓冲器外埠块在条件子系统中或在外埠块在模型的根级。此缓冲区确保输出块信号的一致初始化。

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

有条件的输出信号

考虑下面的模型。

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

对于大多数模型,清除(取消选中)确保outport是虚拟的屏幕上的复选框外埠块连接到启用子系统C

  • outport块遵循非虚拟语义。的前面插入一个隐藏的缓冲区,如果需要的话外埠块。

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

0:一个跑,C不运行,但因为缓冲区处于一个,它运行并将零的初始值复制到外埠块。B不运行。归并信号的输出为零一个

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

时间1。一个C不运行,但是缓冲区再次运行并将初始值0复制到Outport块。B不运行。归并信号还是初始值一个,而不是最后的值B

使用固定步长模拟模型,会产生以下结果。

对于涉及条件写入和部分写入的情况,请选择(选中)确保outport是虚拟的复选框中的外埠块连接到启用子系统C。

  • 外埠块遵循虚拟语义。

  • 的前面没有插入隐藏的缓冲区外埠子系统的块。

  • 如果仿万博1manbetx真软件®确定需要一个缓冲区,则显示一个错误。

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

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

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

部分写入信号与合并块

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

下面的模型演示了这个模式。在模拟开始时调用initialize_process_子系统一次,以初始化矢量信号。调用run_process_子系统部分地写入vector的元素。的输出赋值块需要一个隐藏缓冲区不会复制vector的路径。选择确保outport是虚拟的屏幕上的复选框外埠块删除一个隐藏的缓冲区。如果S万博1manbetximulink确定需要缓冲区,就会显示一个错误。

的Initialize_Process_SubSystem

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

  • 输出向量[7 7]

的Run_Process_Subsystem

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

  • 属性的输出标量值选择器积木4

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

  • 选择确保outport是虚拟的复选框删除隐藏的缓冲区。

从这个模型生成的代码包括两个函数。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;}为(s3_iter=0;s3_iter<2;s3_iter++){PartialWriteSingleMerge.Out4[s3_iter]=partialwritesingle writer.merge[dwiter]}/*模型步骤函数*/void Run_Proc(void){/*写入输出信号向量的元素1*/PartialWriteSingleMerge_Y.Out4[1]=4.0;}
这个话题有用吗?