信号線の管理
モデルの構築が進むにつれて、モデルのブロックを整理するのに機能的にも視覚的にもモデル コンポーネントが役立つようになります。モデル内で信号線を同様に整理するために、信号をグループ化してバスを作成するなど、さまざまな戦略を適用することができます。
信号線の煩雑さを軽減する方法を示すために、この例では複数のセンサーとアクチュエータを使用してプラントを実装します。このプラントには 2 つの同一のマス-バネ-ダンパー系があります。ビームが 2 つの質量を接続します。
センサーは質量の変位を読み取ります。コントローラーはビーム中央の高さ を調整し、アクチュエータが質量に加えるべき力を計算することで、ビームを水平にします。コントローラーはビーム終端間の高さの相違 を使用して、ビームを水平にします。
BasicModelingSignals
という名前のモデルは、プラントとその環境、オペレーター、およびコントローラーを表します。
mdl0 = "BasicModelingSignals";
open_system(mdl0);
シミュレーション後に信号を表示するために、モデルでは 2 つの Scope ブロックが使用されます。1 つ目の Scope ブロックには、目標のビームと実際のビームの水平度が示されます。もう 1 つの Scope ブロックには、中心におけるビームの目標位置と実際の位置、および両端での実際のビームの位置が示されます。
sim(mdl0);
ログ記録用の信号のマーク
信号線の数を減らすには、ビューアーを信号線に直接接続するか、信号線のデータ ログを有効にします。Sink ブロックを使用せずにシミュレーション データを可視化する方法を選択することで、余分な信号線を回避できます。
BasicModelingLogging
という名前のモデルは Scope ブロックと関連する信号線を削除してから、それらの信号のデータ ログを有効にします。
mdl1 = "BasicModelingLogging";
open_system(mdl1);
Operator
サブシステムでは、x_goal
および delta_goal
というラベルが付いた信号が、各信号の上に表示されたアイコンで示されるようにログ記録用にマークされています。
Controller
サブシステムでは、x
および delta
というラベルが付いた信号がログ記録用にマークされています。
Plant
サブシステムでは、x1
および x2
というラベルが付いた信号がログ記録用にマークされています。
シミュレーション データ インスペクターを使用すると、シミュレーション後にログに記録された信号データを表示できます。
sim(mdl1);
信号をバスにグループ化
信号線の数をさらに減らすために、Bus Creator ブロックまたは Out Bus Element ブロックを使用して、信号線をグループ化してバスを作成することができます。バスにグループ化されたときにすべての信号線で ID が保持され、下流でバスから分離することができます。
バスを作成することで、BasicModelingBuses
という名前のモデルはさらに読みやすいシステム表現を提供します。バスのライン スタイルを確認するには、モデルをコンパイルします。
mdl2 = "BasicModelingBuses"; open_system(mdl2); set_param(mdl2,SimulationCommand="Update");
このモデルでは、バス内の各信号について個別にデータをログ記録する代わりに、sensor
および goal
という名前のバスに関連付けられている信号線のデータ ログを有効にします。
信号がバスにグループ化された後も、シミュレーション結果は同じままです。
sim(mdl2);