MATLABから、S​imscapeのBa​ttery (Table-Bas​ed)内のパラメータ​を変更して、シミュレ​ーション実行する方法​について

2 views (last 30 days)
MATLABのワークスペースから、SimscapeのBattery (Table-Based)内のパラメータを変更して、シミュレーション実行を繰り返し行い、シミュレーションで得たデータは都度保存するようにしたいです。
上記動作を自動で実行するにはどのようにすべきかアドバイス頂けないでしょうか。
下記の要領でシミュレーションを実行しています。
■データの自動保存
コールバック関数のstpFcnを使って、出力されたデータを都度、自動で保存するプログラムを書いています。
■シミュレーションの実行
MATLABからset_param関数を使用して、下記のようなプログラムを実行したのですが、パラメータは変更されているようですが、
自動保存されたデータを見ると、各ファイルとも同じデータ内容となっています。
for loop_i=1:2
Signal_Ah=Signal(loop_i,1)
Signal_R0=Signal(loop_i,2)
Signal_A=Signal(loop_i,3)
set_param('ファイル名'/Constant_Signal_A','Value', num2str(Signal_A));
set_param('ファイル名'/Battery_Module/Battery_Cell1/Battery (Table-Based)','R0_mat', mat2str(R0*Signal_R0));
set_param('ファイル名'/Battery_Module/Battery_Cell1/Battery (Table-Based)','AH', num2str(1.22*Signal_Ah));
sim('ファイル名');
end

Accepted Answer

Toshinobu Shintai
Toshinobu Shintai on 15 May 2023
Edited: Toshinobu Shintai on 15 May 2023
以下リンク先のデモモデルのように、"Simulink.SimulationInput"オブジェクトにシミュレーションの設定を格納し、parsimコマンドで実行すると、各パラメーターパターンごとにシミュレーション結果を保存できます。
デモモデルの「PIDゲインスケジューリングをAutotunerを用いて設計する」をご参照ください。以下、該当箇所を抜粋しました。
==========================================================================================
電流の値が以下の値にあるときを調べる。
Iout_op = [
-20; -16; -12; -8; -4; -2; -1;
1; 2; 4; 8; 12; 16; 20];
Iout_opのパターン数分、シミュレーション設定変数を作成する。
for i = 1:numel(Iout_op)
simin(i) = Simulink.SimulationInput(system_model_name);
% 必要に応じてアクセラレータ、ラピッドアクセラレータモードを使用する。
% 使用する場合は、以下のどちらかをコメントアウトする。
% simin(i) = simin(i).setModelParameter('SimulationMode', 'accelerator');
% simin(i) = simin(i).setModelParameter('SimulationMode', 'rapid-accelerator');
simin(i) = simin(i).setVariable('Iout_ref',Iout_op(i));
end
パターン数分のシミュレーションをまとめて実行する。Parallel Computing Toolbox™がインストールされているとき、parsimは自動的に並列ワーカーを立ち上げて並列実行を行う。
save_system(system_model_name, [], 'OverwriteIfChangedOnDisk', true);
simout = parsim(simin, 'ShowProgress', 'on');

More Answers (0)

Categories

Find more on Simscape Multibody in Help Center and File Exchange

Tags

Products


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!