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

5 次查看(过去 30 天)
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

采纳的回答

Toshinobu Shintai
Toshinobu Shintai 2023-5-15
编辑:Toshinobu Shintai 2023-5-15
以下リンク先のデモモデルのように、"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');

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 カスタム コンポーネントとカスタム ライブラリの作成 的更多信息

标签

产品


版本

R2022b

Community Treasure Hunt

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

Start Hunting!