Simulink -从初始化回调中更新结构参数



我为一个带有'Mask'的直流电机创建了一个Simulink库块来设置电机参数。机制部分由Simscape在子块中执行。子块还有一个带一个参数的掩码,用于存储(复杂)simscape配置的结构。此参数提升为父掩码。Simscape配置数据结构位于基本工作区中。

现在我试图扩展特定电机模型的库块(例如modelA,modelB,…)。所以我在一个switch/case的'block initialization callback'中实现。每个型号一个箱子。在case语句中,从a *加载特定的数据。Mat文件和块参数更新如下:

cfg = load( 'modelA' );
set_param( blk, 'elec_R', num2str( cfg.elec.R ) );
set_param( blk, 'elec_L', num2str( cfg.elec.L ) );

Simscape参数结构体也是加载配置的一部分。一个简单的方法,如:

set_param( blk, 'mech_sims', 'cfg.sims' );

失败,因为'cfg'不是基本工作区的一部分,因此在模型评估期间丢失。所以我的问题是我如何设置我的子块结构数据,这只在我的回调函数上下文中可用?是否可以从回调函数上下文中强制求值,例如:

Simulink.Evaluate( 'myDCMotorBlk' )

我找到了解决办法。我将simscape结构体存储在块用户数据中:

set_param( blk, 'UserData', cfg.sims );

mech_smi参数设置如下:

set_param( blk, 'mech_smi', [ 'get_param(''' blk ''',''UserData'')' ] );

因此,在计算过程中,所需的数据是从块特定的用户数据参数中加载的。

相关内容

  • 没有找到相关文章

最新更新