Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

ワークスペース変数の作成、編集、管理

パラメーター値や信号のデータ型などの情報を異なるブロックやモデル間で共有するには、ワークスペース変数を使用します。たとえば、ベース ワークスペースに数値 MATLAB® 変数を作成し、この変数を使用して複数の Gain ブロックの [ゲイン] パラメーターの値を同時に設定できます (変数の作成によるブロック パラメーター値の共有と再利用を参照)。Simulink.Bus オブジェクトを作成して明示的にバス信号の構造を定義できます。

ワークスペース変数はベース ワークスペース、モデル ワークスペースまたはデータ ディクショナリに保存できます。変数の保存先を決定するには、Simulink モデルの変数とオブジェクトの保存場所の決定を参照してください。

変数を管理するツール

次の 1 つ以上の手法を使用してワークスペース変数の作成、変更、保存、評価および移行を行います。

  • (コード生成の準備などで) ブロック パラメーター値を共有して Simulink.Parameter オブジェクトおよび Simulink.Signal オブジェクトを作成するために、モデル データ エディターを使用できます。モデル内のすべてのブロック パラメーター、信号線およびブロックの状態を一度に操作できます。また、調整可能なブロック パラメーターを、検索、並べ替えおよびフィルター処理が可能なリスト上で確認できます。

    • 変数を作成するには、データ テーブルでブロック パラメーター値に対応するセル ([値] 列) または信号名や状態名に対応するセル ([名前] 列) の編集を開始します。作成する変数の名前を入力してセルの右側にあるアクション ボタン をクリックします。

      ブロック パラメーターの値が既に単純な数値式に設定されている場合、その式の変数を作成できます。値に対応するセルの右側で をクリックしてから、[変数を作成] を選択します。[新規データの作成] ダイアログ ボックスで、新しい変数の名前と場所を設定し、次に [作成] をクリックします。これにより、セルに新しい変数が表示されます。

    • データ テーブルの列を使用して変数を変更するには、[追加情報の表示/更新] ボタンをクリックします。モデルで使用されている変数およびオブジェクトに対応する行がデータ テーブルに表示されます。

    • 一度に 1 つの変数を操作するには (すべての変数プロパティを一度に調べる場合など)、プロパティ インスペクターを開いて ([モデル化] タブの [設計][プロパティ インスペクター] をクリック)、データ テーブルの関連する行を選択します。選択した変数のプロパティがプロパティ インスペクターによって表示されます。

    詳細については、モデル データ エディターを参照してください。

  • 少数のパラメーター、信号または状態を一度に操作するには、個別のブロック パラメーター ダイアログ ボックスまたはプロパティ インスペクターを使用して、共有するブロック パラメーター値用の変数を作成し、コード生成用にパラメーターと信号オブジェクトを作成して設定します。

    ダイアログ ボックスまたはプロパティ インスペクターで、ブロック パラメーター値、信号名または状態名の隣にあるアクション ボタン をクリックします。

  • 変数またはオブジェクトの任意の型またはクラスを作成および編集する場合、ワークスペース間で変数を移動する場合、ワークスペース内のすべての変数を一度に調べる場合は、モデル エクスプローラーを使用します。変数の名前を変更することも、モデル全体まはた個々のブロックで変数がどのように使用されているかを正確に解析することもできます。モデル エクスプローラーおよびモデル エクスプローラーを使用したワークスペース変数の編集と管理を参照してください。

  • シミュレーション中に変数または変数式として設定したパラメーターの値を確認するには、[ブロック パラメーター] ダイアログ ボックスまたはプロパティ インスペクターを開きます。パラメーター値を入力するテキスト ボックスの左側に変数または式、右側に値が表示されます。表示される値は、[ブロック パラメーター] ダイアログ ボックスまたはプロパティ インスペクターを開いたタイム ステップにおけるシミュレーション中の変数または式の値です。詳細については、View Values of Parameters Set as Variablesを参照してください。

ブロック パラメーターの変数の値またはプロパティの編集

この例では、数値変数によって値が設定されている [ゲイン] パラメーター (Gain ブロック) の値を変更する方法について説明します。ブロック パラメーターではなく、変数を変更します。

  1. モデル f14 を開きます。モデルによってベース ワークスペースに変数が読み込まれます。

  2. モデル内でプロパティ インスペクターを開きます。[モデル化] タブの [設計] で、[プロパティ インスペクター] をクリックします。

  3. モデルで変数 Mw を使用する Gain ブロックを選択します。

  4. プロパティ インスペクターで、[ゲイン] パラメーターの値の横にあるボタン をクリックします。[開く] を選択します。

  5. [Data properties] ダイアログ ボックスで、[値] ボックスに変数の新しい値を入力して [OK] をクリックします。

構造体および配列の変数の対話的な変更

値が構造体または配列である変数を確認および変更するために、近くの ボタンをクリックして変数エディターを起動できます。以下のいずれかの方法を選択します。

  • モデル エクスプローラーの [コンテンツ] ペインで変数を選択します。[ダイアログ] ペイン (右ペイン) にボタンが表示されます。

  • モデル データ エディター ([モデル化] タブで [モデル データ エディター] をクリック) の [パラメーター] タブで、[追加情報の表示/更新] ボタンをクリックします。データ テーブルで変数に対応する行を見つけ、[値] 列で変数の値の編集を開始します。セルの右側にボタンが表示されます。

  • ブロック ダイアログ ボックスまたはプロパティ インスペクターで、変数を使用するブロック パラメーターの値の隣にボタンが表示されます。ボタンをクリックし、メニュー オプションを使用して変数のプロパティ ダイアログ ボックスを開きます。次にプロパティ ダイアログ ボックスで再びボタンをクリックして変数エディターを起動します。この手法は Simulink.Parameter などのパラメーター オブジェクトに対してのみ使用できます。

変数の変更または削除の影響

変数を変更または削除すると、その変数を使用する複数のブロックやモデルが変更によって影響を受ける可能性があります。変数が使用されている場所を特定して影響を評価するには、モデル エクスプローラーを使用します (モデル内の変数の使用状況の解析を参照)。ただし、変数の使用状況を解析できるのは解析時に開いているモデルに対してのみです。解析を実施する前に、変数の使用が疑われるすべてのモデルを開いてください。

モデルとブロックは名前解決を行ったうえで変数を使用します (記号の解釈を参照)。変数の名前を変更し、対応する変更を依存するブロックやモデルに対して行わなかった場合、ブロックやモデルはエラーを生成します。1 つ以上のモデルのコンテキストで変数の名前を変更するには、モデル全体の変数名の変更を参照してください。

ブロックまたはモデルが必要とする変数にアクセスできない場合、診断ビューアーにエラーが生成されます。診断ビューアーのボタンを使用してエラーを修正できる場合があります (たとえば削除された変数を復元する)。診断ビューアーを使用して変数が欠けている状態から回復できる可能性を高めるための方法として、次のような手法があります。

  • 変数をベース ワークスペースではなくデータ ディクショナリに保存します。データ ディクショナリを使用すると、回復のための他のオプションを利用できます。データ ディクショナリの詳細については、データ ディクショナリとはを参照してください。

  • すべてのモデルで、対応する Simulink® キャッシュ ファイルを使用できるように維持します。たとえば、モデルを他のユーザーと共有するときは、キャッシュ ファイルも共有します。ソース管理システムから最新のモデル設計ファイルを取得するときは、継続的インテグレーション システムまたは最新のビルド フォルダーからキャッシュ ファイルを取得します。キャッシュ ファイルには、変数が欠けている状態から回復するために Simulink Coder™ で使用できる情報が保持されます。Simulink キャッシュ ファイルの詳細については、シミュレーションを高速化するための Simulink キャッシュ ファイルの共有を参照してください。

モデル内の変数の使用状況の解析

モデルの変数の使用状況を解析するには、モデル エクスプローラーを使用します。次のようにして実行できます。

  • モデル内のどこで変数が使用されているかを特定する。

  • 特定の変数がモデル内で使用されているかどうかを判断する。

  • モデルで使用されていないワークスペースの変数を特定する。

詳細については、モデル エクスプローラーを使用したワークスペース変数の編集と管理を参照してください。

モデル全体の変数名の変更

この例では、モデル データ エディターで変数の名前を変更する方法を示します。

  1. モデル f14 を開きます。モデルによってベース ワークスペースに変数が読み込まれます。

  2. モデルの [モデル化] タブで [モデル データ エディター] をクリックします。モデル データ エディターで、[パラメーター] タブを確認します。

  3. モデルで、Mw というラベルの Gain ブロックをクリックします。

    このブロックが変数 Mw を使用していることがモデル データ エディターの [Value] 列に示されます。この変数の名前を変更する必要があると仮定します。

  4. モデル データ エディターで [追加情報の表示/更新] ボタンをクリックします。

    これにより、モデルによって使用されているワークスペース変数に対応する行がデータ テーブルに表示されます。

  5. [スコープの変更] ボタンを有効にします。

    これにより、サブシステム内のデータ項目に関する情報がデータ テーブルに表示されます。

  6. [コンテンツのフィルター] ボックスに Mw と入力します。

    変数に対応する行と、変数を使用するブロックに対応する行がデータ テーブルに表示されます。

  7. Mw を表す行で、右クリックし、[すべての名前の変更] を選択します。

  8. [システムを選択] ダイアログ ボックスで、モデル f14 の名前をクリックし、変数 Mw の名前を変更するためのコンテキストとして選択します。

  9. f14 はどのモデルも参照しないため、[参照モデルでの検索] チェック ボックスをオフにして、[OK] をクリックします。

    [参照モデルでの検索] をオンにすると、モデル参照階層で使用されている、すべての場所のターゲット変数の名前を変更できます。ただし、階層全体でターゲット変数の名前を変更すると、時間がかかる可能性があります。

    [ブロック線図を更新して最近の変更を含める] チェック ボックスは、不要なモデル ブロック線図の更新を避けて時間を節約するために、既定ではオフにされています。ブロック線図の更新を強制してモデルに対する最新の変更を取り込む場合は、このチェック ボックスをオンにします。

  10. [すべての名前の変更] ダイアログ ボックスで、[新しい名前] ボックスに変数の新しい名前を入力し、[OK] をクリックします。

  11. [追加情報の表示/更新] を再びクリックします。名前変更操作によって変数の名前と一部のブロック パラメーターの値が変更されたため、モデル データ エディターの情報をより正確にするために、[追加情報の表示/更新] をクリックしなければなりません。

プログラムによる変数の操作

コマンド プロンプトで myVar = 15; などのコマンドを入力すると、ベース ワークスペースの変数の作成および変更を行うことができます。プログラムで変数の作成、変更、およびモデル ワークスペースなどの別のワークスペースへの保存を行うには、ターゲット ワークスペースに応じたプログラム インターフェイスを使用します。次の表は、プログラムによる変数の管理に使用できるインターフェイスと手法を示しています。

ターゲット ワークスペース手法またはインターフェイス
ベース ワークスペースコマンド プロンプトでコマンドを入力します。
モデル ワークスペースSimulink.ModelWorkspace を参照してください。
データ ディクショナリプログラムによるディクショナリへのデータの格納を参照してください。

モデルで使用される変数または使用されない変数をプログラムで一覧表示するには、Simulink.findVars を参照してください。

ブロック パラメーター値をスイープする目的でプログラムにより変数にアクセスするには、プログラム ワークスペース インターフェイス経由で変数を変更する代わりに、Simulink.SimulationInput オブジェクトの使用を検討します。ブロック パラメーター値の最適化、推定およびスイープを参照してください。

関連するトピック