协同仿真执行和数值补偿

万博1manbetx®万博1manbetx支持组件之间的协同仿真与当地求解器或外部涉及仿真工具。例如,协同仿真可以包括为Simulink和第三方工具或自定义代码之间的协同仿真网关实现的S-功能。万博1manbetx甲协同仿真组件可以在导入到Simulink的协同仿真模式是一个功能性样机单元(FMU)。万博1manbetx

执行时机

在Si万博1manbetxmulink仿真,解算器的步骤的大小必须是每个周期性的,离散的块采样时间的整数除数。换句话说,如果一个协同仿真组件定义其自己的采样时间,Simulink中必须用在那些时间步长的组件通信。万博1manbetx协同仿真可以参与其工作时间步长内部确定,并且不知道Simulink的组件。万博1manbetx可用的Simulink的唯一信息是块采样时间,或者通过一个FMU块,万博1manbetx或者在S-函数实现采样时间定义的通信步长参数。块采样时间确定时间步骤的Simulink必须与协同仿真组件通信。万博1manbetx如果求解器步长大小不是自动的,所述通信步骤大小必须求解器步长大小的整数倍。

如果协同仿真部件在内部使用的本地解算器,则该本地解算器也应确定所述块的通信步骤大小时予以考虑。当地求解器的步长不暴露在Simulink和实施的知识是要正确设置通信步长。万博1manbetx协同仿真的潜在的不兼容的情况下,该行为还取决于该内部求解器的实现。

数值补偿

协同仿真信号通常代表了由于协同仿真离散连续物理量。协同仿真部件,诸如C MEX S函数和协同仿真FMU块之间的数据交换可以由信号延迟引进数值不准确性。使用数字补偿,提高了使用自己的求解仿真涉及的组件数值行为。模型顾问包括检查其检测协同仿真组件和建议的数值补偿。

数值赔偿的先决条件

万博1manbetxSimulink中自动执行用于协同仿真组件之间的协同仿真信号数值的补偿。万博1manbetxSimulink中执行在目标块的输入数值的补偿。的信号被自动资格数值补偿如果它的源端口和目的端口满足这些条件:

  • 对于信号源端口必须满足以下要求:

    • S-功能

      • 输出端口的数据类型是双

      • 输出端口采样时间是周期性的,离散的

      • 输出端口的复杂性是真实的

      • ssSetOutputPortIsContinuousQuantity()设定为真正针对口

    • FMU

      • 输出端口的数据类型是双

      • FMU是协同仿真模式

      • 块采样时间是周期性的,离散的

      • 输出端口映射到具有可变变异=“连续”modelDescription.xml

  • 对于信号的目的端口必须满足以下要求:

    • S-功能

      • 输入端口的数据类型是双

      • 输入端口样本时间是周期性的,离散的

      • 输入端口的复杂性是真实的

      • ssSetInputPortIsContinuousQuantity()设定为真正此端口

      • ssSetInputPortDirectFeedThrough()设定为此端口

    • FMU

      • 输入端口的数据类型是双

      • FMU是协同仿真模式

      • 块采样时间是周期性的,离散的

      • 输入端口映射到具有可变变异=“连续”modelDescription.xml

用于识别数字补偿协同仿真信号的例子,请参见slexCoSimTripleMassSpringExample模型。

管理数值补偿选项使用对话框

当Simu万博1manbetxlink中检测到可以具有数值补偿的信号,它标志着与对应的输入端口图标。

下面的模型包括共模拟信号,可以有数值补偿:

  1. 打开模型。

    slexCoSimTripleMassSpringExample

  2. 更新图表。万博1manbetxSimulink中检测到可以具有数值补偿的信号,并且标记与相应的端口图标。

  3. 调整补偿精度的参数:右键单击该图标,然后选择配置联合仿真信号补偿并调整计算参数:

    • 外推法- 该方法计算用于使用来自先前时间步上生成的仿真信号值的外推模拟的当前时间步的补偿信号值。三种类型推断的供选择。

      • 线性是默认的,它使用来自先前两个时间步骤来线性地估计在模拟的当前时间步骤中使用的信号值生成的信号的值。

      • 二次用途信号的前三个时间值的步骤将数据拟合为二次多项式。

      • 立方体使用信号的前四个时间步骤的值将数据代入到一个三次多项式。

      在模拟开始时,当存在过去的信号值的数量不够,较低阶外推法被自动使用。高阶外推方法使用多个过去的信号值来预测当前的信号值,并且可以提高预测的准确性。然而,高阶外推法也可以是数值不稳定[1]。最好的外推法取决于信号的性质。

    • 信号校正系数- 该方法进一步调节基于过去的模拟结果和过去的估计信号值的外插信号值。的校正系数供之间的选择01,其中0意味着没有到外插信号值,以进行调整。为校正系数的默认设置为1。对于在给定的时间步长的给定外插信号,该信号校正系数越大,越调整为给定的外插信号作出。

    如果数值补偿不利于通过左键单击禁用图标。禁用时,该图标会出现一个红色的斜杠。

从管理命令行数值补偿选项

如果自动补偿是不可能的,你可以使用手动启用数字补偿CoSimSignalCompensationMode属性。

CoSimSignalCompensationMode属性有下列值:

图标 设置 行为

'汽车'

启用自动数值补偿,从而允许的Simulink以检测是否该端口具有用于补偿数字信号符合条件。万博1manbetx

'自动关闭'

禁用自动数字补偿。图标出现带有红色斜杠。

'总是'

强制端口被认为是数字的补偿标准,即使信号不符合数字补偿。此设置可以让你没有宣布它是不断增加的补偿。

'总是关闭'

禁止强迫端口被认为是数字的补偿标准。

例如,禁用用于从以前的模型的第一输入端口的数字补偿:

  1. 选择您要选择的端口数字补偿块。例如,让所有的港口处理的当前选择的块,GCB

    P = get_param(GCB, 'PortHandles')

    该函数返回的所有端口当前所选块。例如,

    P =结构与字段:INPORT:[22.0001 20.0001] OUTPORT:[23.0001 25.0001]启用:[]触发:[]州:[] LConn:[] RConn:[] Ifaction:[]复位:[]
  2. 要禁用第一个端口的数字补偿:

    set_param(p.Inport(1)中, 'CoSimSignalCompensationMode', 'Auto_Off')

    相关的端口会出现一个红色的斜杠。

您也可以通过命令行设置信号补偿参数。第一步,再次,是获取端口句柄:

P = get_param(块,'PortHandles'

设置使用的补偿参数CoSimSignalCompensationConfig参数,格式如下:

set_param(p.Inport,'CoSimSignalCompensationConfig''{}'

查找此表中的补偿参数名称和可能的值:

补偿参数 参数名称 参数值
ExtrapolationMethod 外推法 'LinearExtrapolation''QuadraticExtrapolation', 要么'CubicExtrapolation'
CompensationCoefficient 补偿系数 标间01

例如,设定该端口的外推法:

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

将外推法和补偿系数都:

set_param(p.Inport, 'CoSimSignalCompensationConfig', '{ “ExtrapolationMethod”: “QuadraticExtrapolation”, “CompensationCoefficient”: “0.7”}'))

参考

[1]的Runge,卡尔。“乌伯empirische Funktionen UND插值zwischen aquidistanten Ordinaten死”,(杂志)献给Mathematik UND玛格。卷。46,1901,第224-243。

也可以看看

|||||

相关话题