ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

信号データのルート Inport へのマッピング

データをインポートした後、マップ モードおよびオプションを選択し、データを選択することで、信号データをルート入力端子にマッピングします。

ルート Inport マッパー ツールの使用に関連するその他のステップの概要については、インポートおよびマッピングのワークフローを参照してください。

マッピング モードの選択

信号データをルートレベルの端子にマッピングするには、[ルート Inport マッパー] ツールストリップの [モデルにマッピング] セクションで次のいずれかのマッピング モードを使用します。[ブロック名][端子の順序] のような、ツールストリップから選択するマッピング モードは、MATLAB® セッションおよびモデル間で維持されます。信号データをルート Inport にマッピングするたびにマッピング モードを選択する必要はありません。

目的マッピング モード

ルート Inport ブロックの名前に基づいて、信号を端子に割り当てます。名前がルート Inport ブロックと一致する信号またはバスの要素が検出されると、そのデータが対応する端子にマッピングされます。

ブロック名

ルート Inport ブロックのブロック パスに基づいて、信号を端子に割り当てます。ブロック パスがルート Inport ブロックと一致する信号が検出されると、そのデータが対応する端子にマッピングされます。

ブロック パス

端子の信号の名前に基づいて、信号を端子に割り当てます。信号名が端子の信号と一致するデータ要素が検出されると、そのデータが対応する端子にマッピングされます。

信号名

インポート データに 1 から始まる端子番号を順番に割り当てます。信号を対応する Inport にマッピングします。

データ数が Inport より多い場合、残りのデータはイネーブル端子、トリガー端子の順にマッピングされます。

データがデータセットの形式でない場合、データ ファイル内の出現順に処理されます。

端子の順序

カスタム ファイルの定義に基づいて、信号を端子に割り当てます。カスタム マッピング モードを作成するには、カスタム マッピング モードの作成と使用を参照してください。

カスタム

マッピングのオプションの設定

マッピング オプションを設定する場合は、[ルート Inport マッパー] ツールストリップの [モデルにマッピング] セクションで [オプション] をクリックします。[モデルの更新][部分指定を許可] のような、ツールストリップから選択するオプションは、MATLAB セッションおよびモデル間で維持されます。信号データをルート Inport にマッピングするたびにオプションを選択する必要はありません。

信号をマッピングするには、データのマッピングを参照してください。

目的オプション

モデルをコンパイルし、ルートレベルの Inport とインポート データのデータ型をレビューします。

モデルの更新。信号データと Inport のパラメーターがルートレベルの端子と比較され、その結果が表示されます。このオプションを選択しない場合、インポート データがルートレベルの Inport にマッピングされますが、モデルのコンパイルは行われません。

スプレッドシートからデータをマッピングする場合は、厳密なデータ型指定を使用します。

スプレッドシートで厳密な型指定を使用。ルート Inport マッパー ツールがスプレッドシートの入力信号を対応するルート Inport のデータ型に自動的に変換できるようにするには、このチェック ボックスをオフにします。ルート Inport マッパー ツールがスプレッドシート データをキャストできるのは次のデータ型のみです。doublesingleint8uint8int16uint16int32uint32。このチェック ボックスをオンにした場合、またはルート Inport がこれらのデータ型のいずれでもなかった場合は、データ型不一致エラーを受け取る可能性があります。

一部のみが定義されたバス データをインポートします。

部分指定を許可。インポートする部分的に指定されたバス データが、ルートレベルの Inport に適切にマッピングされることを確認します。

割り当てられていないルート Inport を特定し、不完全な入力データセットを検出します。

[見つからない信号の通知]。見つからない信号のある入力を表示します。

マッピングするデータの選択

シナリオのサブセットを指定してマッピングするには、[モデルにマッピング] ボタンの上の下矢印をクリックします。シナリオによって、異なるマッピング モードを選択できます。

目的オプション

すべてのシナリオ データセットをマッピングする (既定)。

すべてをマッピング

SCENARIO DATASET セクションで現在選択されているシナリオのデータセットをマッピングする。

選択をマッピング

未接続のデータセットをマッピングする。

未接続のものをマッピング

前にマッピングに失敗したデータセットをマッピングする。

マッピングに失敗

前に警告が発生したデータセットをマッピングする。

マッピングで警告が発生

データのマッピング

信号またはバスをインポートした後で、データをマッピングできます。

  1. [ルート Inport マッパー] ツール バーの [モデルにマッピング] をクリックします。

    信号マッピングの結果は [シナリオ データセット] タブに表示されます。

  2. [ファイル] セクションで、マッピング結果を表示するデータセットをクリックします。

    • [マッピングの概要] セクションには、入力データとマッピング ステータスのリストが表示されます。

      メモ

      マッピング結果の理解を参照してください。

    • 入力データのマッピング定義はモデルに適用されます。

モデルを保存して閉じた後で、同じ信号グループの入力データをワークスペースに読み込むと、その信号グループ用に定義されたマッピングがモデルで使用されます。

信号データのルートレベルの入力へのマッピングの例については、ハーネス駆動型のモデルからハーネスのない外部入力の使用への変換を参照してください。

モデルのマッピング定義を保存したら、データの読み込みを自動化できます。詳細については、マッピング データ読み込みの代替ワークフローを参照してください。

マッピング結果の理解

インポートとマッピングのプロセスが完了すると、[マッピングの概要] セクションのステータス領域に結果が表示されます。結果は、マッピングを設定するときに [コンパイル] オプションを選択したかどうかによって変わります。

状態コンパイルコンパイルせずに続行

マッピングされた Data と Inport のプロパティはシミュレーションに適しています。

Data と Inport のデータ型、次元、信号タイプのプロパティには互換性があります。

該当なし

データとルートレベルの端子のデータ型、次元、信号タイプのプロパティの比較では、一致するかどうかを判定できません。マッピングの前にコンパイルしなかった場合、Inport のデータ型を明示的に指定しない限り、すべてのデータ型が一致しているかどうかを評価できません。次のブロック パラメーターが正しく設定されていることを確認してください。

Inport ブロック パラメーターの [データ型][Inherit:auto] に設定されていない。

Inport ブロック パラメーターの [次元][-1] に設定されていない。

Inport ブロック パラメーターの [信号タイプ][自動] にすることはできない。

マッピングされた Data と Inport のプロパティはシミュレーションに適していません。

信号データのデータ型、次元、信号タイプの 1 つ以上がルートレベル Inport と互換性がありません。

マッピングされていないルートレベルの入力端子は、空 ([]) の状態で表示されます。

次の図には、成功したマッピングと失敗したマッピングの両方が含まれています。

ルート Inport マッパー ツールの [シミュレーション用にマーク] をクリックすると、モデルの [コンフィギュレーション パラメーター] ダイアログ ボックスの [データのインポート/エクスポート] ペインにある [入力] チェック ボックスがオンになります。また、値がインポートしたデータ変数に設定されます。変更内容をモデル コンフィギュレーションに適用するには、[データのインポート/エクスポート] ペインで [OK] をクリックします。

コンフィギュレーション参照を使用してコンフィギュレーション セットを参照しているモデルは、シミュレーション用にマークできません。このデータをルート Inport マッパー ツールでモデルをシミュレートするために使用するには、先に、モデル エクスプローラーを使用してコンフィギュレーション セットを有効にします。

次のグラフィックスは、データのマッピングのモデルについて、変更内容のモデル コンフィギュレーションへの適用を示しています。

インポートしたデータを検証するには、以下を行います。

  • 出力をスコープに接続し、モデルをシミュレーションして、データを観察します。

  • 信号のログを作成し、シミュレーション データ インスペクター ツールを使用してデータを観察します。

信号に関連付けられている Inport ブロックを強調表示するには、[マッピングの概要] セクション内の項目を選択します。選択された Inport ブロックは、青で縁取りされています。

比較ツールを使用して、次に行う動作を判断します。比較ツールには、ルートレベルの Inport とその Inport にマッピングしようとしている信号のプロパティが表示されます。マッピングできない不一致があるかどうか、このテーブルで確認できます。不一致がある場合、インポート信号を更新したりルートレベルの Inport を編集することができます。作業が終わったら、データを再度インポートしてマッピングします。

警告やエラーを調査するには、[マッピングの概要] セクションで検査する行項目をクリックします。比較ツールに、選択した変数のフィールド名、入力データ、ルートレベルの Inport の情報が表示されます。

メモ

入力がバスの場合、バス オブジェクトのレベルをクリックすると、バスの個々の要素が表示されます。

比較ツールに警告やエラーが表示された場合でも、要素を調べた結果、データのマッピングには問題がないこともあります。その場合は、[オプション] メニューの [コンパイル] チェック ボックスをオンにしていなければオンにして、[マップ] を再度クリックします。

ヒント

ステータスが緑色になっていない項目をクリックするたびに、比較ツールの新しいインスタンスが表示されます。比較ツールのすべてのインスタンスを 1 つのウィンドウにドッキングするには、[ドックに入れる] ボタン をクリックします。

比較ツールの詳細は、ファイルやフォルダーの比較とファイルのマージ (MATLAB)を参照してください。

ハーネス駆動型のモデルからハーネスのない外部入力の使用への変換

この例では、Signal Builder ブロックを入力として使用するハーネス モデルを、ルート Inport をもつ、ハーネスのないモデルに変換する方法を示します。この例では、ハーネスのないモデルで使用するために、ハーネス モデルからデータを収集してそのデータを MAT ファイルに保存します。データを保存した後に、ハーネス モデルから Signal Builder ブロックを削除し、ルート Inport を追加してハーネスのないモデルを作成します。その後、MAT ファイル内のデータをモデルのルート Inport にマッピングします。

ハーネス データを MAT ファイルに保存

ハーネスのないモデルに変換する前に、ハーネスのテスト ケースを取得します。

この例では、オートマチック トランスミッション コントローラーのモデル化の例に含まれているモデル「sldemo_autotrans」に変更を加えます。

モデル例を開きます。MATLAB コマンド ウィンドウに「sldemo_autotrans」と入力します。

Signal Builder ブロック グループのエクスポート

Signal Builder ブロック信号グループを定義するデータを、Signal Builder ウィンドウから MAT ファイルにエクスポートできます。Signal Builder 信号データを Simulink.SimulationData.Dataset の形式で、MAT ファイルにエクスポートするには、Signal Builder ウィンドウを開き、[ファイル][データのエクスポート][MAT ファイルへ] を選択します。データを含む MAT ファイルの名前とエクスポートするグループの番号を入力するダイアログが表示されます。この例では、ファイル名が slexAutotransRootInportPassingManeuver.mat で、Passing Maneuver グループに対するグループ番号は 1 です。

Signal Builder ブロックの削除

ManeuversGUI という名前の Signal Builder ブロックを削除し、それを 2 つの入力端子で置き換えます。

  1. ManeuversGUI という名前の Signal Builder ブロックを削除します。

  2. Simulink ライブラリ ブラウザーを開き、"Commonly Used Blocks" を選択します。

  3. 2 つの入力端子を、ライブラリ ブラウザーからモデルにドラッグ アンド ドロップします。

  4. 入力端子を、それまで Signal Builder ブロックに接続されていたラインに接続します。

  5. 入力端子の名前を変更します。Throttle ラインに接続されている入力端子に Throttle という名前を付けます。BrakeTorque ラインに接続されている入力端子に Brake という名前を付けます。

モデルを slexAutotransRootInportsExample1.slx という名前で保存します。または、slexAutotransRootInportsExample.slx サンプルを使用します。

この例における次の手順では、slexAutotransRootInportsExample.slx モデルを使用します。モデルを別の名前で保存した場合、以下の手順のモデル名は保存した名前で読み替えてください。

ハーネスのない入力の設定

モデルがハーネスなしになったので、保存済みの入力を設定します (「ハーネス データを MAT ファイルに保存」を参照)。

[シミュレーション]、[モデル コンフィギュレーション パラメーター]、[データのインポート/エクスポート] ペインから、[入力の接続] ボタンをクリックします。

信号をルート Inport にマッピング

ルート Inport マッパー ツールが開きます。

この例では、このツールを使用して MAT ファイルからモデルの入力を設定し、マッピング アルゴリズムにもとづいてそれらの入力を入力端子にマッピングします。入力データを含む MAT ファイルを選択するには、[ルート Inport マッパー] ツール バーの [MAT ファイルから] ボタンをクリックします。リンク ダイアログが表示されたら、[フォルダーを開く] ボタンをクリックします。ブラウザーにて、保存済みの MAT ファイルを選択します。

マッピング モードの選択

入力データを含む MAT ファイル slexAutotransRootInportPassingManeuver.mat を選択したら、入力データを送信するルート入力端子を決定します。Simulink は、以下の 5 つの基準のいずれかに基づいて、入力データと入力端子を対応させます。

  • 端子の順序 - ファイルに出現する順序で、対応する端子番号にマッピングします。

  • ブロック名 - 変数名を使用して、ブロック名が一致するルート Inport にマッピングします。

  • 信号名 - 変数名を使用して、信号名が一致するルート Inport にマッピングします。

  • ブロック パス - BlockPath パラメーターを使用して、ブロック パスが一致するルート Inport にマッピングします。

  • カスタム - MATLAB 関数を使用してマッピングします。

この例の最初の方で、ハーネス信号 Throttle および Brake と同じ名前をもつ変数に入力データを保存し、それらの変数に対応する名前をもつ入力端子を追加しました。入力データおよびモデルの入力端子に関する条件を考慮すると、マッピングの基準として [ブロック名] を選択するのが最適です。この基準を使用すると、Simulink は入力データの変数名と入力端子の名前を対応させようと試みます。このオプションを選択するには、以下のようにします。

  1. [ブロック名] ラジオ ボタンをクリックします。

  2. [オプション] ボタンをクリックし、[モデルの更新] を選択します。これによりマッピングが検証されます。

  3. [マップ] ボタンをクリックします。

Simulink は、データのコンパイル時に以下の基準に基づいて入力端子を評価し、互換性に関する問題がないかどうか判断します。この互換性に関するステータスは、テーブルの色 (緑、オレンジ、赤) で示されます。テーブルにてオレンジ色または赤色で表示されているセルをクリックすると、比較ツールが開いて問題を詳しく検査することができます。

  • データ型 - 倍精度、単精度、列挙、....

  • 実数/複素数 - 実数または複素数

  • 次元 - 信号の次元と端子の次元の比較

モデルへの入力を確定

マッピング互換性の結果を確認します。シナリオ データセット リストのシナリオ データセット [PassingManeuver] をクリックします。[マップ] アクションの結果を適用して、入力端子にマップされたデータを MAT ファイルからベース ワークスペースに読み込むには、[シミュレーション用にマーク] ボタンをクリックします。また、このアクションによって、[モデル コンフィギュレーション パラメーター]、[データのインポート/エクスポート]、[外部入力] エディット ボックスに、コンマ区切りリストで入力が正しく設定されます。

モデルのシミュレーション

変更内容を適用したら、モデルのシミュレーションを実行してその結果を見ることができます。モデルの [再生] ボタンをクリックします。シミュレーションの結果を確認するには、Scope ブロックの PlotResults をダブルクリックします。

マッピング データ読み込みの代替ワークフロー

マッピング定義をモデルに保存したら、データの読み込みとシミュレーションを自動化できます。次のいずれかの方法を検討してください。

コマンド ラインまたはスクリプト

MATLAB コマンド ラインでデータを読み込んでモデルのシミュレーションを実行するには、次のようなコマンドを使用します。

load('signaldata.mat');
simout = sim('model_name');

異なる信号グループのテストおよび読み込みを自動化するには、スクリプトの使用を検討してください。

次のコード例では、時系列データを作成して、各信号グループの読み込み後にモデルのシミュレーションを実行します。具体的には、以下のとおりです。

  • 変数名 In1、In2、In3 で信号グループを作成して、各変数を MAT ファイルに保存します。

  • 各信号グループの読み込み後にモデルのシミュレーションを実行します。

メモ

変数名は、[コンフィギュレーション パラメーター][データのインポート/エクスポート][入力] パラメーターのインポート データ変数と一致しなければなりません。

% Create signal groups
fileName = 'testCase';
for k =1 :3
    
    % Create the timeseries data
    var1 = timeseries(rand(10,1));
    var2 = timeseries(rand(10,1));
    var3 = timeseries(rand(10,1));
    
    %create a dataset
    ds = Simulink.SimulationData.Dataset();
    ds = ds.addElement( var1, 'var1');
    ds = ds.addElement( var2, 'var2');
    ds = ds.addElement( var3, 'var3');
    
    % Save the data 
    save([fileName '_' num2str(k) '.mat' ],'ds');
end
clear all
 
% After mapping and saving the model loop over signal groups and simulate
% Set the filename to append testcase # to
fileName = 'testCase';
% Loop backwards to preallocate
for k=3:-1:1
   % Load the MAT-file.
   load([fileName '_' num2str(k) '.mat']);
   
   % Simulate the model
   simOut{k} = sim('model_name');
end

[PreLoadFcn] ペインの使用

データとマッピングに満足したら、同じ信号グループの MAT ファイルを MATLAB ワークスペースに読み込むようにモデルを構成できます。モデル プロパティ ノードの PreLoadFcn コールバックで関数 load を呼び出します。

  1. MAT ファイルを保存したら、Simulink® エディターで、[ファイル][モデル プロパティ][モデル プロパティ] を選択します。

  2. [モデル プロパティ] ウィンドウで、PreLoadFcn ノードを選択します。

  3. 信号データの MAT ファイルを読み込む関数 load を入力します。たとえば、以下のようにします。

    load d_signal_data.mat;
  4. [OK] をクリックし、モデルを保存します。

関連する例

詳細