主要内容

协同仿真执行与数值补偿

万博1manbetx®万博1manbetx支持使用局部解算器在零部件之间进行协同仿真,或使用外部仿真工具。例如,协同仿真可能涉及一个S函数,该函数被实现为Simulink与第三方工具或自定义代码之间的协同仿真网关。协同仿真组件可以是导入Simulink的协同仿真模式下的功能样机单元(FMU)。万博1manbetx

执行时间

在Si万博1manbetxmulink仿真中,解算器步长必须是每个周期性离散块采样时间的整数除数。换句话说,如果协同仿真组件定义了自己的采样时间,Simulink必须在这些时间步与组件通信。协同仿真可能涉及时间步长由内部确定且Simulink未知的组件。Simulink唯一可用的信息是块采样时间,通过FMU块的通信步长参数或S函数实现中的采样时间定义。块采样时间确定Simulink必须与协同仿真组件通信的时间步长。如果解算器步长不是自动的,则通信步长必须是解算器步长的整数倍。

如果协同仿真组件在内部使用局部解算器,则在确定块的通信步长时也应考虑该局部解算器。本地解算器的步长不向Simulink公开,正确设置通信步长需要了解实现。潜在不兼容情况下的协同仿真行为也取决于此内部解算器实现。万博1manbetx

数字补偿

协同仿真信号通常表示由于协同仿真而离散的连续物理量。联合仿真组件(如C MEX S函数和联合仿真FMU块)之间的数据交换可能会因信号延迟而导致数值不准确。使用数值补偿可以改善涉及使用自己的解算器的零部件的模拟的数值行为。Model Advisor包括一个检测联合仿真组件并建议数值补偿的检查。

数字补偿先决条件

万博1manbetxSimulink自动对协同仿真组件之间的协同仿真信号执行数值补偿。Simulink在目标块的输入端执行数字补偿。如果信号的源端口和目标端口满足以下条件,则该信号自动符合数字补偿的条件:

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

    • 系统函数

      • 输出端口数据类型为双精度

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

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

      • ssSetOutputPortIsContinuousQuantity()设置为符合事实的港口

    • FMU

      • 输出端口数据类型为双精度

      • FMU处于协同仿真模式

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

      • 输出端口映射到具有“连续的”在里面modelDescription.xml

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

    • 系统函数

      • 输入端口数据类型为双精度

      • 输入端口采样时间是周期性和离散的

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

      • ssSetInputPortIsContinuousQuantity()设置为符合事实的这个港口

      • ssSetInputPortDirectFeedThrough()文件设置为错误的这个港口

    • FMU

      • 输入端口数据类型为双精度

      • FMU处于协同仿真模式

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

      • 输入端口映射到具有“连续的”在里面modelDescription.xml

有关识别用于数值补偿的联合仿真信号的示例,请参阅slexCoSimTripleMassSpringExample模型

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

当Simu万博1manbetxlink检测到可以进行数字补偿的信号时,它会用偶像

以下模型包括可进行数值补偿的联合仿真信号:

  1. 打开模型。

    slexCoSimTripleMassSpringExample

  2. 更新图表。Simulink检测可进行数字万博1manbetx补偿的信号,并用偶像

  3. 调整补偿精度的参数:右键单击图标并选择配置模拟信号补偿并调整计算参数:

    • 外推法-该方法利用前一时间步生成的仿真信号值外推,计算当前仿真时间步的补偿信号值。有三种外推方法可供选择。

      • 线性的默认情况下,它使用前两个时间步生成的信号值来线性估计用于当前模拟时间步的信号值。

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

      • 立方体的使用前四个时间步的信号值将数据拟合为三次多项式。

      在模拟开始时,当过去信号值的数量不足时,自动使用低阶外推方法。高阶外推方法使用更多的过去信号值来预测当前信号值,可以提高预测精度。但是,高阶外推方法也可以数值不稳定[1].最好的外推方法取决于信号的性质。

    • 信号校正系数-该方法基于过去的模拟结果和过去的估计信号值进一步调整外推信号值。提供了一个校正系数,可供选择01.哪里0表示不需要对外推信号值进行调整。校正系数的默认设置为1.. 对于给定时间步长的给定外推信号,信号校正系数越大,对给定外推信号进行的调整越多。

    如果数字补偿无效,请通过左键单击图标。禁用时,图标显示为红色斜杠。

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

如果无法进行自动补偿,可以使用手动启用数字补偿CoSimSignalCompensationMode所有物

这个CoSimSignalCompensationMode属性具有以下值:

偶像 背景 行为

“自动”

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

“自动关闭”

禁用自动数字补偿。图标以红色斜线显示。

“总是”

强制将端口视为数字补偿兼容,即使信号不符合数字补偿的条件。此设置允许您添加补偿,而无需将其声明为连续。

“Always_Off”

禁用强制端口被认为是数值补偿依从。

例如,要禁用前一型号的第一个输入端口的数字补偿,请执行以下操作:

  1. 选择要为其选择数值补偿端口的块。例如,获取当前选定块的所有端口句柄,gcb

    p=获取参数(gcb,“端口句柄”)

    此函数用于返回当前选定块的所有端口。例如

    p=带字段的结构:输入端口:[22.0001 20.0001]输出端口:[23.0001 25.0001]启用:[]触发器:[]状态:[]LConn:[]RConn:[]i操作:[]重置:[]
  2. 要禁用第一个端口的数字补偿,请执行以下操作:

    设置参数(p.Inport(1),“余弦信号补偿模式”,“自动关闭”)

    关联的端口显示为红色斜杠。

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

p=获取参数(块,“PortHandles”)

使用以下命令设置补偿参数:余弦信号补偿配置参数,格式如下:

设置参数(p.Inport,“CoSimSignalCompensationConfig”,“{}”)

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

补偿参数 参数名 参数值
外推法 外推法 “线性变换”,“二次剥离”“立体交叉”
补偿系数 补偿系数 标量介于01.

例如,设置端口的外推方法:

set_param(p.Inport,'CoSimSignalCompensationConfig','{“extractionmethod”:“linearetrapolation”}'))

设置外推方法和补偿系数:

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

参考文献

[1] 卡尔·隆格,“超级经验是一种功能,是一种坐标插值”,数学与物理学1901年第46卷,第224-243页。

另见

|||||

相关的话题