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

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

Réponse acceptée

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

Connectez-vous pour commenter.

Plus de réponses (2)

TOMOHISA WAKASUGI
TOMOHISA WAKASUGI le 23 Déc 2019
  1 commentaire
Toshinobu Shintai
Toshinobu Shintai le 23 Déc 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);

Connectez-vous pour commenter.


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

Produits

Community Treasure Hunt

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

Start Hunting!