万博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中检测到可以具有数值补偿的信号,它标志着与对应的输入端口图标。
下面的模型包括共模拟信号,可以有数值补偿:
打开模型。
slexCoSimTripleMassSpringExample
更新图表。万博1manbetxSimulink中检测到可以具有数值补偿的信号,并且标记与相应的端口图标。
调整补偿精度的参数:右键单击该图标,然后选择配置联合仿真信号补偿并调整计算参数:
外推法-该方法使用从以前的时间步长生成的模拟信号值外推,计算当前时间步长补偿信号值。有三种外推法可供选择。
线性
是默认的,它使用来自先前两个时间步骤来线性地估计在模拟的当前时间步骤中使用的信号值生成的信号的值。
二次
用途信号的前三个时间值的步骤将数据拟合为二次多项式。
立方体
使用信号的前四个时间步骤的值将数据代入到一个三次多项式。
在模拟开始时,当过去信号值数量不足时,自动使用低阶外推法。高阶外推法利用更多的过去信号值来预测当前信号值,可以提高预测的精度。然而,高阶外推法在数值上也不稳定[1]。最好的外推方法取决于信号的性质。
信号校正系数- 该方法进一步调节基于过去的模拟结果和过去的估计信号值的外插信号值。的校正系数供之间的选择0
和1
,其中0
意味着没有到外插信号值,以进行调整。为校正系数的默认设置为1
。对于在给定的时间步长的给定外插信号,该信号校正系数越大,越调整为给定的外插信号作出。
如果数值补偿不利于通过左键单击禁用图标。禁用时,该图标会出现一个红色的斜杠。
如果自动补偿是不可能的,你可以使用手动启用数字补偿CoSimSignalCompensationMode
属性。
该CoSimSignalCompensationMode
属性有下列值:
图标 | 设置 | 行为 |
---|---|---|
|
|
启用自动数值补偿,从而允许的Simulink以检测是否该端口具有用于补偿数字信号符合条件。万博1manbetx |
|
|
禁用自动数字补偿。图标出现带有红色斜杠。 |
|
|
强制端口被认为是数字的补偿标准,即使信号不符合数字补偿。此设置可以让你没有宣布它是不断增加的补偿。 |
|
|
禁用强制将端口视为数字补偿兼容的功能。 |
例如,禁用用于从以前的模型的第一输入端口的数字补偿:
选择您要选择的端口数字补偿块。例如,让所有的港口处理的当前选择的块,GCB
。
P = get_param(GCB, 'PortHandles')
该函数返回的所有端口当前所选块。例如,
P =结构与字段:INPORT:[22.0001 20.0001] OUTPORT:[23.0001 25.0001]启用:[]触发:[]州:[] LConn:[] RConn:[] Ifaction:[]复位:[]
要禁用第一个端口的数字补偿:
set_param(p.Inport(1)中, 'CoSimSignalCompensationMode', 'Auto_Off')
相关的端口会出现一个红色的斜杠。
您还可以从命令行设置信号补偿参数。同样,第一步是获取端口句柄:
P = get_param(块,“PortHandles”)
设置使用的补偿参数CoSimSignalCompensationConfig
参数,格式如下:
set_param(p.Inport,“CoSimSignalCompensationConfig”,'{: )}'
查找此表中的补偿参数名称和可能的值:
补偿参数 | 参数名称 | 参数值 |
---|---|---|
ExtrapolationMethod |
外推法 | 'LinearExtrapolation' ,'QuadraticExtrapolation' , 要么'CubicExtrapolation' |
CompensationCoefficient |
补偿系数 | 标间0 和1 |
例如,设定该端口的外推法:
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。
FMU|S-功能|ssGetInputPortIsContinuousQuantity
|ssGetOutputPortIsContinuousQuantity
|ssSetInputPortIsContinuousQuantity
|ssSetOutputPortIsContinuousQuantity