複数のサンプル時間によるエラー

3 visualizzazioni (ultimi 30 giorni)
TOMOHISA WAKASUGI
TOMOHISA WAKASUGI il 19 Dic 2019
Risposto: TOMOHISA WAKASUGI il 23 Dic 2019
SimulinkのFor iteratorサブシステム内にSimscapeモデルを記載し実行すると、
「”サブシステム名”/solver Configuration/EVAL_KEY/OUTPUT_1_1には複数うのサンプル時間があります。
一定(inf)か継承されたサンプル時間(-1)のみiteratorのサブシステムで許可されます」とブロックエラーが出ます。
接続端子はすべて継承(-1)であることを確認しましたが問題は解決しません。
どうすれば、エラーを回避することができるでしょうか?

Risposta accettata

Toshinobu Shintai
Toshinobu Shintai il 20 Dic 2019
Simscapeのブロックそのものが継承(-1)に対応していないため、エラーになります。
そもそもSimscapeの物理計算をForループさせる必要性がないと思うのですが、どういう目的で行っていますでしょうか。
  2 Commenti
TOMOHISA WAKASUGI
TOMOHISA WAKASUGI il 23 Dic 2019
ご回答ありがとうございます。
Mathworks社の事例でthermal conductiveというのがあると思うのですが、
分割要素を連結するところでForループを回すことはできないかと考えたからです。
やはり、事例同様分割個数分を連結しなくてはいけないのでしょうか?
Toshinobu Shintai
Toshinobu Shintai il 23 Dic 2019
おっしゃっている事例が見つけられませんでした。どの事例でしょうか。良ければリンクを貼ってもらえますか。

Accedi per commentare.

Più risposte (2)

TOMOHISA WAKASUGI
TOMOHISA WAKASUGI il 23 Dic 2019
  1 Commento
Toshinobu Shintai
Toshinobu Shintai il 23 Dic 2019
モデリング(ブロックの結線)をループ処理したいということでしたら、Simulinkのapiを駆使しなければなりません。
試しに作ってみました。リンク先のSegments Setの中身を自動で作るスクリプトです。ele_numを変更することで連結個数を変更できます。バージョンはR2019bで作成しました。
ブロックのパラメータのセットやサブシステム化も同様にapiを使えばできると思います。
%% コマンドで任意の連結数のSegmented Rodを作ります
%% パラメータ
ele_num = 5;
model_name = 'temp_model';
Conduction_name = 'Conduction';
Thermal_Mass_name = 'Thermal_Mass';
Convection_name = 'Convection_Cyl';
ConductiveHeatTransfer_address = 'fl_lib/Thermal/Thermal Elements/Conductive Heat Transfer';
Thermal_Mass_address = 'fl_lib/Thermal/Thermal Elements/Thermal Mass';
ConvectiveHeatTransfer_address = 'fl_lib/Thermal/Thermal Elements/Convective Heat Transfer';
Connection_Port_address = 'nesl_utility/Connection Port';
%% 新規モデル
new_system_handle = new_system;
open_system(new_system_handle);
save_system(new_system_handle, model_name);
%%
add_block(ConductiveHeatTransfer_address, [model_name, '/', Conduction_name, '0']);
add_block(Thermal_Mass_address, [model_name, '/', Thermal_Mass_name]);
h_C = get_param([model_name, '/', Conduction_name, '0'], 'PortHandles');
h_T = get_param([model_name, '/', Thermal_Mass_name], 'PortHandles');
add_line(model_name, h_C.RConn, h_T.LConn);
add_block(ConvectiveHeatTransfer_address, [model_name, '/', Convection_name, '0']);
h_C = get_param([model_name, '/', Conduction_name, '0'], 'PortHandles');
h_V = get_param([model_name, '/', Convection_name, '0'], 'PortHandles');
add_line(model_name, h_C.RConn, h_V.LConn);
%%
for i = 1:ele_num
add_block(ConductiveHeatTransfer_address, [model_name, '/', [Conduction_name, num2str(2 * i - 1)]]);
h_C = get_param([model_name, '/', Conduction_name, num2str(2 * i - 2)], 'PortHandles');
h_C1 = get_param([model_name, '/', Conduction_name, num2str(2 * i - 1)], 'PortHandles');
add_line(model_name, h_C.RConn, h_C1.LConn);
add_block(ConductiveHeatTransfer_address, [model_name, '/', [Conduction_name, num2str(2 * i)]]);
h_C2 = get_param([model_name, '/', Conduction_name, num2str(2 * i)], 'PortHandles');
add_line(model_name, h_C1.RConn, h_C2.LConn);
add_block(Thermal_Mass_address, [model_name, '/', Thermal_Mass_name, num2str(i)]);
h_T = get_param([model_name, '/', Thermal_Mass_name, num2str(i)], 'PortHandles');
add_line(model_name, h_C2.RConn, h_T.LConn);
add_block(ConvectiveHeatTransfer_address, [model_name, '/', Convection_name, num2str(i)]);
h_V = get_param([model_name, '/', Convection_name, num2str(i)], 'PortHandles');
add_line(model_name, h_C2.RConn, h_V.LConn);
end
%%
for i = 1:ele_num
h_V = get_param([model_name, '/', Convection_name, num2str(i - 1)], 'PortHandles');
h_V1 = get_param([model_name, '/', Convection_name, num2str(i)], 'PortHandles');
add_line(model_name, h_V.RConn, h_V1.RConn);
end
add_block(ConductiveHeatTransfer_address, [model_name, '/', [Conduction_name, num2str(2 * ele_num + 1)]]);
h_C1 = get_param([model_name, '/', Conduction_name, num2str(2 * ele_num)], 'PortHandles');
h_C2 = get_param([model_name, '/', Conduction_name, num2str(2 * ele_num + 1)], 'PortHandles');
add_line(model_name, h_C1.RConn, h_C2.LConn);
%%
add_block(Connection_Port_address, [model_name, '/', 'A']);
h_N = get_param([model_name, '/', 'A'], 'PortHandles');
h_C = get_param([model_name, '/', Conduction_name, '0'], 'PortHandles');
add_line(model_name, h_N.RConn, h_C.LConn);
add_block(Connection_Port_address, [model_name, '/', 'B']);
h_N = get_param([model_name, '/', 'B'], 'PortHandles');
h_C = get_param([model_name, '/', Conduction_name, num2str(2 * ele_num + 1)], 'PortHandles');
add_line(model_name, h_N.RConn, h_C.RConn);
add_block(Connection_Port_address, [model_name, '/', 'Cyl']);
h_N = get_param([model_name, '/', 'Cyl'], 'PortHandles');
h_C = get_param([model_name, '/', Convection_name, '0'], 'PortHandles');
add_line(model_name, h_N.RConn, h_C.RConn);
%%
Simulink.BlockDiagram.arrangeSystem(model_name);

Accedi per commentare.


TOMOHISA WAKASUGI
TOMOHISA WAKASUGI il 23 Dic 2019
ご対応ありがとうございました。
また、何卒よろしくお願いします。

Prodotti

Community Treasure Hunt

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

Start Hunting!