金宝app®金宝app支持使用局部解算器在零部件之间进行协同仿真,或使用外部仿真工具。例如,协同仿真可能涉及一个S函数,该函数被实现为Simulink与第三方工具或自定义代码之间的协同仿真网关。协同仿真组件可以是导入Simulink的协同仿真模式下的功能样机单元(FMU)。金宝app
在Si金宝appmulink仿真中,求解器的步长必须是每个周期性的离散块采样时间的整数因数。换句话说,如果一个联合仿真组件定义了它自己的示例时间,那么Simulink必须在这些时间步骤中与该组件通信。金宝app联合仿真可能涉及到一些组件,这些组件的时间步长是在内部确定的,并且是Simulink所不知道的。金宝appSimulink唯一可用的信息是块采样时间,要么通过FMU块的通信步金宝app长参数,要么通过s函数实现中的采样时间定义。块采样时间决定了Simulink必须与协同仿真组件通信的时间步长。金宝app如果求解器步长不是自动的,则通信步长必须是求解器步长的整数倍。
如果协同仿真组件在内部使用局部解算器,则在确定块的通信步长时也应考虑该局部解算器。本地解算器的步长不向Simulink公开,正确设置通信步长需要了解实现。潜在不兼容情况下的协同仿真行为也取决于此内部解算器实现。金宝app
协同仿真信号通常表示由于协同仿真而离散的连续物理量。联合仿真组件(如C MEX S函数和联合仿真FMU块)之间的数据交换可能会因信号延迟而导致数值不准确。使用数值补偿可以改善涉及使用自己的解算器的零部件的模拟的数值行为。Model Advisor包括一个检测联合仿真组件并建议数值补偿的检查。
金宝appSimulink自动对协同仿真组件之间的协同仿真信号执行数值补偿。Simulink在目标块的输入端执行数字补偿。如果信号的源端口和目标端口满足以下条件,则该信号自动符合数字补偿的条件:
信号的源端口必须满足这些要求:
系统函数
输出端口数据类型为双精度
输出端口采样时间具有周期性和离散性
输出端口的复杂性是真实的
ssSetOutputPortIsContinuousQuantity ()
被设置为真正的
的端口
FMU
输出端口数据类型为双精度
FMU处于联合仿真模式
块采样时间具有周期性和离散性
输出端口映射到具有变异性='连续'
在modelDescription.xml
信号的目的端口必须满足以下要求:
系统函数
输入端口数据类型为双精度
输入端口采样时间具有周期性和离散性
输入端口复杂度是真实的
ssSetInputPortIsContinuousQuantity()
被设置为真正的
这个港口
ssSetInputPortDirectFeedThrough()文件
被设置为假
这个港口
FMU
输入端口数据类型为双精度
FMU处于联合仿真模式
块采样时间具有周期性和离散性
输入端口映射到变量变异性='连续'
在modelDescription.xml
有关识别数值补偿的联合仿真信号的示例,请参阅slexCoSimTripleMassSpringExample
模型
当Simu金宝applink检测到可以进行数字补偿的信号时,它会用图标。
以下模型包括可以进行数值补偿的联合仿真信号:
打开模型。
slexCoSimTripleMassSpringExample
更新图表。Simulink检测可进行数字金宝app补偿的信号,并用图标。
调整补偿精度的参数:右键单击图标并选择配置协同仿真信号补偿并调整计算参数:
外推法- 该方法计算使用从先前时间步骤产生的模拟信号值的外推的模拟的当前时间步长的补偿信号值。提供三种类型的外推。
线性
默认情况下,它使用前两个时间步生成的信号值来线性估计用于当前模拟时间步的信号值。
二次
使用前三个时间步的信号值将数据拟合为二次多项式。
立方体的
使用前四个时间步的信号值将数据拟合为三次多项式。
在模拟开始时,当存在超过8个信号值的不足时,自动使用较低顺序的外推方法。高阶推断方法使用更多的过去信号值来预测电流信号值,可以提高预测的准确性。但是,高阶推断方法也可以是数字不稳定的[1].最好的外推方法取决于信号的性质。
信号校正系数-该方法基于过去的模拟结果和过去的估计信号值进一步调整外推信号值。提供了一个校正系数,可供选择0
和1.
,在那里0
表示不对外推信号值进行调整。修正系数的默认设置为1.
.对于给定时间步长的给定外推信号,信号校正系数越大,对给定外推信号的调整量越大。
如果数字补偿无效,请通过左键单击图标。当禁用时,图标出现一个红色斜线。
如果无法进行自动补偿,可以使用手动启用数字补偿CosimSignalCompensationMode
所有物
这个CosimSignalCompensationMode
属性有以下值:
偶像 | 设置 | 行为 |
---|---|---|
|
|
启用自动数值补偿,允许Simulink检测端口是否有符合数值补偿条件的信号。金宝app |
|
|
禁用自动数字补偿。图标以红色斜线显示。 |
|
|
强制端口被认为是数值补偿依从,即使信号不符合数值补偿。此设置允许您添加补偿,而无需声明它是连续的。 |
|
|
禁用迫使端口被视为符合数字补偿。 |
例如,对前一个模型的第一个输入端口禁用数值补偿:
选择要为其选择数值补偿端口的块。例如,获取当前选择块的所有端口句柄,华东桐柏
.
p=获取参数(gcb,“端口句柄”)
此函数用于返回当前选定块的所有端口。例如
p = struct with fields: Inport: [22.0001 20.0001] Outport: [23.0001 25.0001] Enable: [] Trigger: [] State: [] LConn: [] RConn: [] Ifaction: [] Reset: []
禁用第一个端口的数值补偿。
set_param (p.Inport(1),“CoSimSignalCompensationMode”、“Auto_Off”)
关联的端口以红色斜杠显示。
您还可以从命令行设置信号补偿参数。再次,第一步是获取端口句柄:
p=获取参数(块,'porthandles')
属性设置补偿参数CoSimSignalCompensationConfig
参数,格式如下:
设置参数(p.Inport,'cosimsignalcompensationconfig',”{< CompensationParam >: < ParamValue >}”)
在该表中查找补偿参数名称和可能的值:
补偿参数 | 参数名 | 参数值 |
---|---|---|
ExtrapolationMethod |
外推法 | “LinearExtrapolation” ,“二次剥离” 或“CubicExtrapolation” |
CompensationCoefficient |
补偿系数 | 标量介于0 和1. |
例如,设置端口的外推方法:
set_param(p.Inport,'CoSimSignalCompensationConfig','{“extractionmethod”:“linearetrapolation”}'))
设置外推方法和补偿系数:
设置参数(p.Inport,'cosimsignalcompensationconfig','{"ExtrapolationMethod":"QuadraticExtrapolation", "CompensationCoefficient":"0.7"}' ))
[1]龙格,卡尔。"Uber empirische Funktionen and die Interpolation zwischen a distance Ordinaten",时间:für数学和物理学.第46卷,1901年,224-243页。
FMU|系统函数|ssGetInputPortIsContinuousQuantity
|ssgetoutputporticontiContionity
|ssSetInputPortIsContinuousQuantity
|ssSetOutputPortIsContinuousQuantity