主要内容

用数值补偿联合仿真集成

这个例子展示了如何减少潜在的联合仿真模拟引入错误使用数值补偿。

联合仿真组件的一个例子

典型的联合仿真组件可以表示为一个动态系统连续状态和本地解决者之间执行集成通信时间点。这些函数导出独立FMU联合仿真cosim_component.fmu从这个模型:

componentMdl =“cosim_component”;open_system (componentMdl);

截图在2021-12-27 19 - 38 - 42. png

这个模型包含一个传递函数和当地固定步与步长求解程序t = 0.02年代。您可以使用生成的FMU作为联合仿真组件的集成模型。

注意,联合仿真组件只能使用输入值在沟通时间点。这个需求引入了一个错误当通信联合仿真步骤是相对较大的组件的动态行为。减少通信步长可以提高仿真结果但增加数据传输开销。改变解决当地解决类型或减少步长可以给更好的整合结果在一个沟通步骤,但不能弥补由于欠采样误差联合仿真。

使用集成模型的数值补偿

联合仿真的集成组件中使用以下模型:

integrationMdl =“cosim_integration”;open_system (integrationMdl);set_param (integrationMdl“SimulationCommand”,“更新”);

这个模型包含两个连接FMU联合仿真组件的分支。这两个组件,联合仿真FMU Cosim组件1FMU Cosim组件2,有自己的地方解决。他们只在离散交换数据通信速率D2,t = 0.2年代。底部的两个连续时间传递函数块分支是铁板一块,non-co-simulation方法相同的系统,它使用全球解算器和仿真结果作为基线。两个non-co-simulation组件交换数据以连续的速度,和全球大小设置为解决步骤t = 0.02年代。在这个例子中,我们关注的数值行为FMU Cosim组件2联合仿真和假设输入信号的离散化是不可避免的。

1. png截图

后更新框图,输入端口的齿轮图标出现在第二个co-sim组件,FMU Cosim组件2。这表明仿真软件有自动确定,这个输入端口需万博1manbetx要数值补偿,因为:

  • 源(和目的地)块声明它们的输出(non-directfeedthrough输入)港口作为连续的数量。

  • 源和目标块联合仿真组件(如s函数或FMU联合仿真)

  • 信号有一个双重数据类型和周期离散的采样率

关掉auto-compensation,左键单击图标。另外,以编程方式关机:

黑色=“cosim_integration / FMU Cosim组件2》;p = get_param(黑色,“PortHandles”)
p =结构体字段:尺寸:43.0005外港:67.0007支持:[]触发:[]状态:[]LConn: [] RConn: [] Ifaction:[]重置:[]事件:[]
set_param (p.Inport“CoSimSignalCompensationMode”,“Auto_Off”)out_off = sim (integrationMdl);

万博1manbetx联合仿真模型并不弥补错误在这个输入端口时,齿轮图标显示为禁用。以下功能图结果没有数值补偿:

图(1);持有;情节(out_off.yout {1} . values,“r”);情节(out_off.yout {2} . values,“黑”);情节(out_off.yout {3} . values,‘g’);情节(out_off.yout {4} . values,“b”);传奇({“cosim响应(无补偿)”,“理想的反应”,“cosim输入”,理想的输入},“位置”,“西北”)

图包含一个坐标轴对象。坐标轴对象包含4楼梯,类型的对象。这些对象代表cosim响应(无补偿),理想的反应,cosim输入,理想的输入。

联合仿真的输入信号(代表一个连续的周期性离散信号队伍数量)从0到积极的价值t = 0.4秒。联合仿真响应显示推迟其输入相比,理想的(non-co-simulation)响应。联合仿真方案引起这种延迟,输入信号不能两个通信时间点之间的不同。例如,当联合仿真组件FMU Cosim组件2在沟通时间点暂停t = 0.4秒,当地的解算器集成以一个积极的输入;然后当地解决集成通信的步骤(0.4,0.6),并返回一个积极输出值在下次沟通时间点t = 0.6秒

启用数字补偿时,模型试图计算出一个更好的为联合仿真组件输入值万博1manbetxFMU Cosim组件2联合仿真的输入值更接近于平均non-co-simulation输入两个通信之间的时间点。例如,而不是使用联合仿真输入值y = 0.165t = 0.4秒,一个更好的平均输入/沟通的步骤[0.4,0.6]是左右y = 0.241的中点y = 0.165 (t = 0.4 s)y = 0.316 (t = 0.6 s)。这就像使用中点黎曼和代替左估计曲线下的面积总和的一个理想的输入信号。

然而,在沟通时间点t = 0.4秒的价值,y = 0.316 (t = 0.6 s)仍然是不可用的。得到的估计y价值t = 0.6秒模型万博1manbetx推断基于早期信号数据作为一个多项式时间点(如。t = 0.2秒,t = 0.4秒)。你可以选择一个不同的外推法联合仿真数值补偿当右键单击图标对话框。另外,使用功能:

set_param (p.Inport“CoSimSignalCompensationConfig”,”{ExtrapolationMethod”:“LinearExtrapolation“}”)

下面的情节比较启用或禁用补偿的结果:

set_param (p.Inport“CoSimSignalCompensationMode”,“汽车”)out_linear = sim (integrationMdl);图(2);持有;情节(out_off.yout {1} . values,“r”)情节(out_linear.yout {1} . values,“米”)情节(out_off.yout {2} . values,“黑”)({传奇“cosim响应(无补偿)”,‘cosim响应(线性外推)’,“理想的反应”},“位置”,“西北”)

图包含一个坐标轴对象。坐标轴对象包含3楼梯,类型的对象。这些对象代表cosim响应(无补偿),cosim响应(线性外推),理想的响应。

联合仿真数值补偿,响应沟通时间点更接近理想non-co-simulation输出。联合仿真数值误差(延迟)引入的降低。

下面的图显示了不同的外推方法的影响:

set_param (p.Inport“CoSimSignalCompensationConfig”,”{ExtrapolationMethod”:“QuadraticExtrapolation“}”)out_quadratic = sim (integrationMdl);set_param (p.Inport“CoSimSignalCompensationConfig”,”{ExtrapolationMethod”:“CubicExtrapolation“}”)out_cubic = sim (integrationMdl);图(3);持有;情节(out_linear.yout {1} . values,“r”)情节(out_quadratic.yout {1} . values,‘g’)情节(out_cubic.yout {1} . values,“b”)情节(out_off.yout {2} . values,“黑”)({传奇‘cosim响应(线性外推)’,“cosim响应(二次推断)”,“cosim响应(立方推断)”,“理想的反应”},“位置”,“西北”)

图包含一个坐标轴对象。坐标轴对象包含4楼梯,类型的对象。这些对象代表cosim响应(线性外推),cosim反应(二次推断),cosim响应(立方推断),理想的响应。

外推的输出值引入了一个估计误差,例如,当比较外推y价值t = 0.6秒(估计t = 0.4秒),真正的y价值t = 0.6秒(记录在t = 0.6秒)。万博1manbetx仿真软件可以弥补这个错误在接下来的沟通当你指定一个非零的步骤信号校正系数联合仿真数值补偿对话框。另外,使用这些功能:

set_param (p.Inport“CoSimSignalCompensationConfig”,”{ExtrapolationMethod”:“LinearExtrapolation”、“CompensationCoefficient”:“1”}”)

这个系数是有效的[0,1],在那里0意味着估计误差将被忽略1估计误差是完全补偿在以下沟通方式的步骤。设置这个值1可能有用信号代表联合仿真,或成正比,通量的守恒量(如电流、质量或体积流量)。

下面的图显示了不同的信号值的影响修正系数:

set_param (p.Inport“CoSimSignalCompensationConfig”,”{ExtrapolationMethod”:“LinearExtrapolation”、“CompensationCoefficient”:“0”}”)out_linear_0 = sim (integrationMdl);set_param (p.Inport“CoSimSignalCompensationConfig”,”{ExtrapolationMethod”:“LinearExtrapolation”、“CompensationCoefficient”:“0.5”}”)out_linear_0_5 = sim (integrationMdl);set_param (p.Inport“CoSimSignalCompensationConfig”,”{ExtrapolationMethod”:“LinearExtrapolation”、“CompensationCoefficient”:“1”}”)out_linear_1 = sim (integrationMdl);图(4);持有;情节(out_linear_0.yout {1} . values,“r”)情节(out_linear_0_5.yout {1} . values,‘g’)情节(out_linear_1.yout {1} . values,“b”)情节(out_off.yout {2} . values,“黑”)({传奇“cosim响应(系数:0)”,“cosim响应(系数:0.5)”,“cosim响应(系数:1)”,“理想的反应”},“位置”,“西北”)

图包含一个坐标轴对象。坐标轴对象包含4楼梯,类型的对象。这些对象代表cosim响应(系数:0),cosim响应(系数:0.5),cosim响应(系数:1),理想的响应。

close_system (componentMdl 0);close_system (integrationMdl 0);