メインコンテンツ

記号の解釈

シンボル

Simulink® モデルの作成中、モデル内の多様なエンティティの値や定義を入力するときに記号を使用できます。記号で定義できるモデルのエンティティには、ブロック パラメーター、コンフィギュレーション セット パラメーター、データ型、信号、信号のプロパティ、バス アーキテクチャなどがあります。

値や定義を提供する記号は、有効な MATLAB® 識別子でなければなりません。このような識別子の先頭には英字、続けて関数 namelengthmax で指定されている文字数の英数字またはアンダースコアを使用します。記号が有効な MATLAB 識別子かどうかを判別するには、関数 isvarname を使用します。

記号は以下の項目に相当する Simulink モデルで値または定義を提供します。

  • アクセス可能なワークスペースに存在する

  • 記号と一致する名前がある

  • 必要な情報を提供する

記号関連付けプロセス

記号に対応する項目を検索して見つけるプロセスを "記号の関連付け" または "記号を関連付ける" と呼びます。一致した項目により必要な情報を直接提供できますが、それ自体が記号である場合もあります。記号は情報を提供する他の項目に関連付けられなければなりません。

Simulink は、モデルをコンパイルするとき、コールバックまたはマスク初期化の過程で実行する MATLAB コードを除いて、モデル内のすべての記号を関連付けようとします。記号が関連付ける項目は、場合によって変数、オブジェクト、または関数です。

Simulink は、名前が記号と同じ MATLAB 変数や Simulink オブジェクトを求めて、アクセス可能なワークスペースを階層順に検索して記号を関連付けようとします。

どの記号でも検索パスは同じです。検索は、記号を使用するか、記号で名前が付いている信号のソースであるブロックから開始して上向きに進みます。シミュレーションが sim コマンドで発生する場合を除いて、検索順序は以下のとおりです。

  1. マスク ワークスペース、ブロックから上方向に順番に (マスクの基礎を参照)。

  2. ブロックが含まれているモデルのモデル ワークスペース (モデル ワークスペースを参照)。

  3. MATLAB ベース ワークスペース (変数の作成と編集を参照)、またはモデルがデータ ディクショナリにリンクされている場合はディクショナリ (データ ディクショナリとはを参照)。データ ディクショナリで [ディクショナリからベース ワークスペースへのアクセスを有効にする] プロパティが選択されている場合、検索時にディクショナリとベース ワークスペースが単一の名前空間として扱われます。

シミュレーションが sim コマンドで発生する場合、検索順序は以下のとおりです。

  1. マスク ワークスペース、ブロックから上方向に順番に (マスクの基礎を参照)。

  2. Simulink.SimulationInput オブジェクトで setVariable 関数を使用して Workspace 引数を指定して設定された変数。

  3. ブロックが含まれているモデルのモデル ワークスペース (モデル ワークスペースを参照)。

  4. Simulink.SimulationInput オブジェクトで setVariable 関数を使用して設定された変数。

  5. MATLAB ベース ワークスペース (変数の作成と編集を参照)、またはモデルがデータ ディクショナリにリンクされている場合はディクショナリ (データ ディクショナリとはを参照)。データ ディクショナリで [ディクショナリからベース ワークスペースへのアクセスを有効にする] プロパティが選択されている場合、検索時にディクショナリとベース ワークスペースが単一の名前空間として扱われます。

メモ

ベース ワークスペースに保存されているコンフィギュレーション セットをモデルが参照する場合、ベース ワークスペースで検索が開始します。モデルに付加されているコンフィギュレーション セットとは異なり、ベース ワークスペースのコンフィギュレーション セットはモデル ワークスペースにアクセスできません。

[入力] パラメーターおよび [初期状態] パラメーターは、データ ディクショナリからデータを読み込みません。モデルがデータ ディクショナリを使用し、ベース ワークスペースへのモデルのアクセスを無効にした場合でも、[入力] パラメーターおよび [初期状態] パラメーターはベース ワークスペースのデータにアクセスします。

Simulink はこの検索過程で一致する項目を見つけ、検索はその時点で正常に終了し、記号は一致する項目に関連付けられます。結果は、その項目の値が、項目に関連付けられた記号ではなく、文字どおりに表示された場合と同じです。下位で定義されたオブジェクトは、上位で定義されたオブジェクトを隠します。

一致する項目が検索パスにない場合、Simulink は記号を関数として評価しようとします。関数が定義され、適切な値が返された場合、記号は関数が返した値に関連付けられます。そうでない場合、記号は関連付けられないままで、エラーが発生します。関数としての評価は、一致するワークスペース変数が見つからないまま階層構造の検索が終了したときに、最終ステップとして発生します。

記号が含まれているモデルが参照モデルであり、検索がモデル ワークスペースに到達しても、そこで成功しなかった場合、検索は親モデルのワークスペースで記号を関連付けようと "せずに"、ベース ワークスペースまたはデータ ディクショナリに直接ジャンプします。したがって、特定の記号は、記号が含まれているモデルが参照先モデルかどうかに関係なく、同じ項目に関連付けられます。モデル参照の詳細は、モデル参照を参照してください。

記号を伴う数値

数値を必要とするブロック パラメーターは、リテラル値、記号、または記号とリテラル値を含める式を入力して指定できます。各記号は、互いの存在を無視して別々に関連付けられます。そのため、式内のさまざまな記号は、異なるワークスペース上の項目や、種類の異なる項目に関連付けられることがあります。

1 つの記号が表示されて関連付けに成功すると、その値がパラメーターの値を提供します。式が表示され、すべての記号が正しく関連付けられると、式の値がパラメーターの値を提供します。記号の関連付けができなかった場合や、不適切なタイプの値に関連付けた場合は、エラーが発生します。

たとえば、Gain ブロックの Gain パラメーターが cos(a*(b+2)) と指定されたとします。記号 cos は MATLAB 余弦関数に関連付けられ、ab は、同じまたは異なるワークスペースの同じまたは異なるタイプの項目から取得できる数値に関連付けなければなりません。記号が数値に関連付けられる場合は、余弦関数が返す値が Gain パラメーターの値になります。

記号を伴うその他の値

それらを使用する記号や式は、ほとんどの場合に数値を提供しますが、数値を提供する手法によって、コンテキストに適したどのような値でも提供できます。

記号の一般的な使用法がもう一つあります。それは、オブジェクトに名前を付けて、ある種の定義を提供することです。たとえば、信号名はその信号のプロパティを定義する信号オブジェクト (Simulink.Signal) に関連付けることができ、Bus Creator ブロックの [出力データ型] パラメーターで、そのバスのプロパティを定義するバス オブジェクト (Simulink.Bus) の名前を指定することができます。記号は、以下のような多くの目的に使用することができます。

  • データ型の定義

  • 入力データのソースの指定

  • ログ記録されたデータの送信先の指定

階層構造の記号関連付けでは、こうした記号のさまざまな使い方は単独か式かにかかわらず、すべて同じです。つまり、記号は可能であれば、それぞれが他と無関係に関連付けられ、結果は記号が表示された場所で使用可能になります。記号間の違いは、記号が関連付けられる項目と、その項目の用途だけです。唯一の必要条件は、すべての記号が、記号の場所に違反なく表示できる項目に関連付けられなければならないことです。

信号の関連付けの制限

階層構造の記号関連付けは、既定の設定では完全な検索パスを通ります。検索パスは、サブシステムの [階層の関連付けを許可] オプションを使用して短縮できます。このオプションは、検索がワークスペース変数に関連付けられずに、そのサブシステムに到達した場合の動作を制御します。[階層の関連付けを許可] の値は次のとおりです。

  • All

    ワークスペース階層の上方に向かって検索を続け、記号を関連付けようとします。これは既定値です。

  • None

    階層の検索を続けません。

  • ExplicitOnly

    記号がブロックのパラメーター値、データ ストアのメモリ (ブロックが存在しない)、または明示的に関連付けを必要とする信号や状態を指定する場合にのみ、階層の上に向かって検索を続けます。暗黙的な関連付けの検索は続けません。詳細については、明示的または暗黙的な記号関連付けを参照してください。

ワークスペースに一致が見つからず、値が ExplicitOnly または [なし] であるため検索が終了する場合、Simulink は記号を関数として評価します。前述のように、評価の結果によって検索は成功または失敗します。

明示的または暗黙的な記号関連付け

モデルと一部のエンティティには、関連付けられたパラメーターがあり、記号関連付けに影響する場合があります。たとえば、モデルに Amplitude という信号が含まれており、アクセス可能なワークスペースに Amplitude という Simulink.Signal オブジェクトがあるとします。Amplitude 信号の [信号名を Simulink の信号オブジェクトに関連付ける] オプションが選択されていると、信号はオブジェクトに関連付けられます。詳細については、Signal Properties を参照してください。

オプションが選択されていないと、[コンフィギュレーション パラメーター][診断][データ有効性][信号の関連付け] の値によって、信号がオブジェクトに関連付けられる場合とそうでない場合があります。このパラメーターは、オブジェクトが存在してもオブジェクトへの関連付けを抑制するか、名前の一致だけに基づいて関連付けるように指定できます。詳細は、モデル コンフィギュレーション パラメーター: データ有効性Signal resolutionを参照してください。

[信号名を Simulink の信号オブジェクトに関連付ける] などのオプションを必要とするために発生する関連付けは、"明示的な記号関連付け" と呼ばれます。名前の一致のみに基づいて発生する明示的な指定のない関連付けは、"暗黙的な記号関連付け" と呼ばれます。

ヒント

暗黙的な関連付けは即座にプロトタイピングする際に便利です。ただし、暗黙的な関連付けを使用すると、パフォーマンスが低下して、モデルの検証が複雑化し、非確定的な影響を与える可能性があるため、プロトタイピングを終了したら、明示的な記号関連付けを使用するようにしてください。

参考

トピック