ダイアグラム
ダイアグラムは、ブロック、リンク、注釈、およびモデル内のその他のコンポーネントのアセンブリです。




ダイアグラムの作成
ダイアグラムの作成プロセスには、モデリングウィンドウでブロックを追加、リンク、および組み立てる作業があります。ダイアグラム内のブロックには、ライブラリパレットからの事前定義済みブロックまたはユーザー定義ブロックを含めることができます。
ダイアグラムへのライブラリブロックの追加
パレットブラウザからダイアグラムにライブラリブロックを追加します。
-
パレットブラウザを開くには、F6キーを押すか、 を選択します。
パレットブラウザに、インストール済みのライブラリのパレットが表示されます。 -
ライブラリを選択してから、パレットを選択します。
パレットブラウザに、選択したパレットで使用可能なブロックが表示されます。
- ダイアグラムに追加するブロックを選択し、そのブロックをモデリングウィンドウにドラッグ&ドロップします。
ダイアグラムへのユーザー定義ブロックの追加
インストールされているライブラリに関連付けられていないユーザー定義のブロックまたはカスタマイズブロックを、ダイアグラムに追加またはインポートします。これらのブロックは.scbファイルとして保存されます。
- を選択します。
-
表示されるファイルブラウザから、ダイアグラムに含める.scbファイルを選択します。
指定したファイルがダイアグラム内のブロックとして表示されます。
ダイアグラムへのブロックのコピー
ダイアグラム内からブロックをコピーして、それを現在のモデルまたは開かれている任意のモデルに貼り付けることができます。
- ダイアグラムで、コピーするブロックを選択し、右クリックして、コンテキストメニューからコピーを選択します。
- 現在のモデルまたは開かれている任意のモデルのダイアグラムを選択し、右クリックして、コンテキストメニューから貼り付けを選択します。
ダイアグラム内のブロックの複製
複製オプションにより、複数のブロックを容易にダイアグラムに追加できます。
- ダイアグラムから複製するブロックを選択し、右クリックします。
-
コンテキストメニューから、コピー&ペーストを選択します。
ブロックの複製がダイアグラムに表示されます。
ダイアグラム内のブロックのリンク
ブロックのポート同士を結ぶリンクでブロックを接続します。
- ダイアグラムで、接続する2つのブロックを特定します。
-
最初のブロックの出力ポートをクリックしてから、2つ目のブロックの入力ポートをクリックします。
ブロック間にリンクが表示され、ブロックが接続されます。リンクには、リンクセグメントをまっすぐに保ち、ブロックの接続時にポートの選択を容易にするスナップ機能が含まれています。
注: 特定のブロックでは、ブロックがリンクを受け入れる前に、External Activationポートをオンにする必要があります。

リンクへブロックをドロップする
他のブロック間の既存のリンクにブロックをドロップしてブロックを接続します。
- ダイアグラムで、接続する2つのブロックを特定します。
- パレットブラウザから、ポートのあるブロックを選択します
-
ブロックをクリックしてリンクの上にドラッグし、リンクが黄色くハイライトされるのを確認します。
注: ブロックの片側に複数のポートがある場合は、リンクを接続したいポートに合わせてください。ブロックをリンクにドロップすると、リンクは必要に応じて形を変え、ポートをシームレスに接続します。
ダイアグラムパラメーター
ダイアグラムパラメーターは、ブロックパラメーターの定義に使用できる変数です。
ダイアグラムパラメーターの概要
ほとんどのブロックには、ユーザーが値を定義できるパラメーターが含まれています。ブロックパラメーターの値は、OMLの式であってもかまいません。式は単純な数値(12など)にすることも、数値と文字列を含む式(sin(cos(3)-1)など)や、OML変数を含む式(exp(a^2)など)にすることもできます。この最後の例では変数aがダイアグラムパラメーターです。
ダイアグラムパラメーターは、ダイアグラムに関連付けられたOML変数です。ダイアグラム内のブロックのブロックパラメーター値の定義に使用できます。これらの変数とその値がOML作業領域を構成します。
ダイアグラム(ここでは、”D”とします)のパラメーターは、ダイアグラムDのコンテキスト、Dが含まれるダイアグラムのコンテキスト、およびモデルの初期化スクリプトによって定義されます。例えば、D0, D1, … DnによってDの親ダイアグラムを表し、Dnが最も近い親、D0が最も遠い親であるとします。この場合、ソフトウェアのスコーピング規則は次のようになります。Dのコンテキストで、ある変数が定義されている場合、そのダイアグラムパラメーターの値は、対応する変数のその定義によって与えられます。その変数に対するが定義がそこにはない場合、最も近い親ダイアグラムの定義によってそのパラメーターの値が設定されます。
こうした定義がまったく存在しない場合は、モデルの初期化スクリプト内の定義によってそのパラメーターの値が設定されます。さらに具体的に言うと、ダイアグラムDの作業領域はダイアグラムDパラメーターの集合であり、以下のように取得されます:
- モデルの初期化スクリプトが評価され、作業領域が作成されます。そこでの要素がモデルパラメーターと呼ばれます。
- この作業領域でD0のコンテキストが評価され、ダイアグラムD0の作業領域が作成されます。
- D1のコンテキストがダイアグラムD0の作業領域で評価され、ダイアグラムD1の作業領域が作成されます。以下同様に続きます。
- 最終的に、ダイアグラムDの作業領域は、その親であるダイアグラムDnの作業領域のコンテキストを評価することで取得されます。 注: ダイアグラムとブロックパラメーターの評価は実行時に行われます。このため、初期化スクリプトまたはダイアグラムコンテキストに、データを読み込むか外部のスクリプトを実行して新しい変数を定義する手順が含まれる場合、シミュレーションの実行から別の実行の間に外部ファイルが変更された場合、これらの変数の値が変わる可能性があります。ブロックパラメーター値に対応する式が、ダイアグラムパラメーター以外の変数を参照すると、実行時にエラーが発生します。
ダイアグラムパラメーターはマスク操作において重要な役割を果たします。マスクされたスーパーブロックには、そのスーパーブロック以外で定義された変数を参照するようにパラメーターが定義されているブロックは含まれません。すべての必須の変数は、スーパーブロック内部で定義されるか、マスクされたスーパーブロックのパラメーターである必要があります。自動マスク操作では、スーパーブロック内部で使用されているが、スーパーブロック以外で定義されたすべての変数を検索し、その変数をスーパーブロックパラメーターとして用いることで、この条件を適用します。OMLでモデルを(最適化などの目的で)バッチモードでシミュレーションする場合、モデルパラメーターを定義または再定義するために、OML作業領域を設定することができます(作業領域内の変数は初期化スクリプトの評価によって作成されます)。つまり、設定された作業領域は、初期化スクリプトの評価によって(競合する場合は既存の変数を上書きする)作成された作業領域に含まれます。
この作成された作業領域がモデルパラメーターを構成し、それがモデルの残りの部分で使用されます。このメカニズムによって、ダイアグラムパラメーターの変更が可能になり、.scmモデルファイルを変更します。