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