Simulinkでデータ型の異なるConstantブロックをバス配列とする方法
Show older comments
添付のようなSimulinkモデル(※)を作成しています。
SimulinkモデルはConstantブロックの値をそれぞれBusCreatorでバス配列にしMatlabFunctionの入力としています。
このとき、Constantブロックのデータ型が異なる場合、BusCreatorブロックを用いることは不可能なのでしょうか。
・Webで調べたところ、BusCreatorブロックの出力の型をバスエディタで定義したバス型であれば、
用いることが可能なようなのですが、今後Constantブロックの数(数百)や種類(int32,double,boolen)が多くなるため、
出来るだけ簡単に定義せずにバス配列(構造体)を扱えるようにしたいです。
・バス型とせずにConstantブロック1~5をそのままMatlabFunctionの入力とするとMatlabFunctionの入力が多くなってしまうため、避けたいです。
・BusCreatorブロックでなくとも他のブロックで実現可能であれば他のブロックを使いたいです。
(※)作ろうとしているSimulinkモデルの詳細な説明
Input、Output、Constantブロック(Parameter)からなるようなSimulinkモデルを作成しようとしています。
また、最終的には作成したモデルを.fmuファイル(スタンドアロンFMU)にしようとしています。
このとき、ModelWorkspaceでSimulinkParameterを作成し、Argumentにチェックを入れ、Constantブロックの値を
ModelWorkspaceで作成したSimulinkParameterとすることで.fmuファイルにエクスポートした際にParameterとして認識するようにしています。
このようにしている理由として、
・シミュレーション時間ごとに異なる値をInputから取得
・シミュレーション時間によらず一定値をParameterから取得
した後、Input、Parameterから計算した値をOutputに出力するシステムを考えているからです。
お手数ですが、ご回答宜しくお願い致します。
Accepted Answer
More Answers (1)
stozaki
on 18 Apr 2023
0 votes
constantブロックからバス信号を生成し、MATLAB Functionに入力し、簡単な計算結果を出力するサンプルモデルを作成しました。.matファイルをロードしてから.slxを実行してください
以下のURLに詳しい説明がありますが、バスオブジェクトは作成していますか?
また、以下URLのMATLAB Functionの欄を見て頂くと、「Simulink.Bus オブジェクト データ型によって定義されている場合は入力としてのバーチャル バスをサポートします。出力バスは非バーチャルです。」と記載があります。
バスオブジェクトについては、以下URLを参考にしてください。
Categories
Find more on モデル化 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!