バス階層の変更
バスの階層を表示するには、関連する線を右クリックし、コンテキスト メニューの [信号階層] をクリックします。Bus Creator ブロック、Bus Assignment ブロック、Bus Selector ブロック、In Bus Element ブロックおよび Out Bus Element ブロックの [ブロック パラメーター] ダイアログ ボックスにバス階層も表示できます。
バス内の要素の階層を変更するために、以下を実行できます。
Bus Selector ブロックを使用してバスを構成要素に分離し、1 つ以上の Bus Creator ブロックを使用して要素を再構築します。
Out Bus Element ブロックについて、バス要素に対応するラベルの 2 番目の部分を編集します。
signal1
という名前のバス要素があり、signal1
をNestedBus
という名前の入れ子のバスに移動させるものとします。バス要素に対応するラベルの一部をsignal1
からNestedBus.signal1
に変更します。Out Bus Element ブロック パラメーター ダイアログ ボックスで、要素をクリックして別の階層レベルにドラッグします。
バス内の要素の次元を変更するには、次の手順を実行します。
Bus Creator ブロック パラメーター ダイアログ ボックスで、1 つの要素または隣接する複数の要素を選択して [上] または [下] ボタンをクリックします。
Out Bus Element ブロック パラメーター ダイアログ ボックスで、既存の階層レベル内にある要素をクリックしてドラッグします。
バス階層を変更する場合、Simulink® では、それにかかわるほとんどの複雑さが自動的に処理されます。たとえば、上流のバス階層の変更によって破損した、Bus Selector および Bus Assignment ブロックのパラメーター ダイアログ ボックスの選択肢は Simulink によって修正されます。既定では、関連する [バス選択を修復] コンフィギュレーション パラメーターは [警告と修復]
に設定されます。モデルを更新すると、修復が行われます。
ヒント
バス内の要素の値を変更するには、Bus Assignment ブロックを使用します。詳細については、バス要素への信号値の代入を参照してください。
バスの循環依存関係の解決
バスを入れ子にすると、バスがそれ自体の要素であるブロックのループが発生する可能性があります。この循環定義は解決できないため、エラーの原因となります。ループをトレースするために、エラー メッセージで示された場所を使用できます。
エラー メッセージで示された場所に関連する線を選択します。
線を右クリックし、[ソースへの信号を強調表示] または [接続先への信号を強調表示] を選択します。詳細については、信号の伝播元と伝播先の強調表示を参照してください。
ループがなくなるまで、線の選択とソースと伝播先の強調表示を続けてください。
モデルを再構成し、バスの循環定義を排除します。
問題は循環計算ではなく循環定義であるため、追加のブロックを挿入することで循環を止めることはできません。たとえば、Unit Delay ブロックを挿入して代数ループを中断する方法で、循環定義を修正することはできません。モデルを再構成し、バスの循環定義を排除しなければなりません。
参考
Bus Creator | Bus Selector | Out Bus Element