主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

金宝appデータディクショナリを使用するモデルの移行

金宝app®データディクショナリは,MATLAB®変数,データオブジェクト,データ型などのモデルデータを永続的に保存します。データディクショナリの基本的な情報は,データディクショナリとはを参照してください。

ディクショナリを使用する単一モデルの移行

以下の例では,単一のスタンドアロンモデルを単一のデータディクショナリにリンクする方法を説明します。

メモ

金宝app仿真软件は,Timeseriesオブジェクトなどのシミュレーションデータをデータディクショナリにインポートしません。

  1. 設計データをベースワークスペースに読み込むf14モデルを開きます。

  2. モデルのコピーを現在のフォルダーに保存します。コピーを開きます。

  3. 金宝app仿真软件エディターの[モデル化)タブにある[設計]の下で,[データディクショナリへのリンク]をクリックします。

  4. [モデルプロパティ]ダイアログボックスで,[新規]をクリックしてデータディクショナリを作成します。

  5. データディクショナリに名前を付けて保存し,[適用]をクリックします。

  6. [データの移行)をクリックします。

  7. 参照された変数のコピーについてのメッセージに対して,[移行]をクリックします。

  8. (オプション)[モデルからベースワークスペースへのアクセスを有効にする]をオフにします。

  9. (好的)をクリックします。

  10. ディクショナリを開くには,金宝app仿真软件エディターで,左下隅にあるモデルデータバッジをクリックしてから,(外部データ]リンクをクリックします。ディクショナリのコンテンツを検査するには,モデルエクスプローラーの[モデルの階層構造)ペインで,(外部データ]ノードの下にあるディクショナリノードを展開します。

ディクショナリを使用するモデル参照階層の移行

この例では,親モデルとその参照モデルすべてを単一のデータディクショナリにリンクする方法を示します。

  1. モデル例sldemo_mdlref_datamngtを開きます。このモデルはモデルsldemo_mdlref_counter_datamngtを参照しています。

  2. モデルのコピーを現在のフォルダーに保存します。

  3. 最上位モデルsldemo_mdlref_datamngtを開きます。

  4. 金宝app仿真软件エディターの[モデル化)タブにある[設計]の下で,[データディクショナリへのリンク]をクリックします。

  5. [モデルプロパティ]ダイアログボックスで,[新規]をクリックしてデータディクショナリを作成します。

  6. データディクショナリに名前を付けて保存し,[適用]をクリックします。

  7. まだディクショナリを使用していない参照モデルのリンクについてのメッセージに対して,[すべてのモデルを変更)をクリックします。

  8. [データの移行)をクリックします。

  9. 参照された変数のコピーについてのメッセージに対して,[移行]をクリックします。

  10. (オプション)[モデルからベースワークスペースへのアクセスを有効にする]をオフにします。

  11. (好的)をクリックします。

データディクショナリに移行する前の考慮事項

モデルをデータディクショナリにリンクした後,ベースワークスペースからディクショナリにデータを移行することができます。データの移行を選択する場合,以下を考慮します。

データ読み込みコールバックのチェック

PreLoadFcnコールバックなどのモデルコールバックを使用して,モデルが読み込まれたときに設計データをファイルからベースワークスペースに読み込むことができます。たとえば,次のコールバックは,垫ファイルmyData.matから設計データを読み込みます。

负载myData

データディクショナリに移行した後,これらのコールバックは継続して設計データをベースワークスペースに読み込みます。モデルはその後,設計データをディクショナリから導出するため,これらのデータ読み込みコールバックを手動で削除するか,コメントアウトします。

依存関係アナライザーを使用して,データ読み込みコールバックを見つけることができます。モデル依存関係の解析を参照してください。

スクリプトのチェック

新しいモデルは既定でベースワークスペースへのアクセスがありますが,データディクショナリにリンクしてもアクセスは失われません。モデルがベースワークスペース,データディクショナリ,またはその両方にアクセスできるという前提で,スクリプトを記述しなければなりません。

スクリプトでハンドル基地を使用して,ベースワークスペースへの明示的な参照を作成する場合は,これらの参照の変更を検討してください。

次の例を考えてみます。ここで,スクリプトはベースワークスペースで変数传感器を検索し,sensor.noiseEnableの値に応じてパラメーター启用を設定します。

if evalin('base','sensor.noiseEnable') enable = '已启用';else enable = '禁用';结束

データディクショナリに移行するときは,次のように,基地への明示的な参照を置き換えます。

如果S金宝appimulink.data.evalinGlobal (myExampleModel,…'sensor.noiseEnable') enable = '已启用';else enable = '禁用';结束
関数金宝appSimulink.data.evalinGlobalは指定したモデルのグローバルスコープ内の式を評価します。ここで,モデルがディクショナリにリンクされていない場合,グローバルスコープはデータディクショナリまたはベースワークスペース内の範囲であると考えられます。

コード生成の調整可能なパラメーターのチェック

  • モデルがデータディクショナリにリンクされていて,モデルがベースワークスペースにアクセスできない場合(ベースワークスペースでの共有データの継続使用を参照),金宝app仿真软件は[モデルパラメーター設定]ダイアログボックスで指定されているストレージクラス情報を無視します。

  • 金宝app仿真软件インターフェイスを使用してデータディクショナリを使用するモデルを移行して,ベースワークスペースデータの移行を選択する場合,仿真软件はモデルのストレージクラス情報も移行します。モデルにベースワークスペース内の変数のストレージクラス情報が含まれる場合,仿真金宝app软件は移行時にこれらの変数を金宝app仿真软件。参数オブジェクトに変換します。次に,金宝app仿真软件はモデルのストレージクラス情報を使用して,これらの金宝app仿真软件。参数オブジェクトのストレージクラスを設定します。

  • このモデルをベースワークスペースに再度移行する場合,仿金宝app真软件はモデルのストレージクラス情報を復元しません。これらの変数のストレージクラスを保持するには,データディクショナリのパラメーターオブジェクトを使用します。モデルのストレージクラス情報を手動でリセットすることもできます。

  • コマンドラインからモデルのDataDictionaryプロパティを設定する場合,関数tunablevars2parameterobjectsを使用して,調整可能な変数を金宝app仿真软件。参数オブジェクトに変換できます。

モデル参照で使用されるデータ

モデル参照を使用して,大規模なシステムから小規模なコンポーネントとサブコンポーネントにモデルを分割する場合,データディクショナリを作成して“設計データ”を分離できます。設計データは,ブロックパラメーターと信号の特性を指定するためにモデルが使用するワークスペース変数のセットです。

モデル参照階層内のモデルは通常,データを共有します。データの所有者,共有される変数の数,共有方法の複雑度は,ディクショナリの使用方法に影響する場合があります。

データ定義の重複は,以下の条件において,モデル参照階層内で存在することができます。

  • 階層内の各モデルが1つの定義のみ参照できる。

  • 階層内ではモデル間で定義は同じでなければならない。

詳細については,金宝app仿真软件モデルの変数とオブジェクトの保存場所の決定を参照してください。

有効な設計データクラス

布尔int32や仿金宝app真软件データディクショナリの(设计数据)セクション内の構造など仿金宝app真软件がサポートするデータ型を使用するMATLAB変数をインポート,格納,または作成できます。また,これらのクラスのオブジェクトやこれらのクラスをサブクラス化するほとんどのクラスのオブジェクトを使用することもできます。

  • 金宝app仿真软件。AliasType

  • 金宝app仿真软件。公共汽车

  • 金宝app仿真软件。NumericType

  • 金宝app仿真软件。参数

  • 金宝app仿真软件。LookupTable

  • 金宝app仿真软件。断点

  • 金宝app仿真软件。信号

  • 金宝app仿真软件。变体

  • 金宝appSimulink.data.dictionary.EnumTypeDefinition

  • embedded.fi

  • embedded.fimath

  • numlti

さらに,金宝app仿真软件データディクショナリの[コンフィギュレーション]セクションで,次のクラスの構成オブジェクトをインポート,格納,作成できます。

無効なその他のデータクラス

以下を除いて,金宝app仿真软件データディクショナリの[その他のデータ]セクションにある多くの組み込みクラスおよびカスタムクラスまたはデータ型のデータオブジェクトのインポート,格納,または作成を行うことができます。

  • 組み込みクラスまたはカスタムクラスから作成されたオブジェクトの配列

  • 以下のいずれかの名前のプロパティをもつカスタムクラス:

    • LastModified

    • LastModifiedBy

    • 数据源

    • 状态

    • 变体

从工作空间ブロックによる移行

ベースワークスペース内の変数を参照する从工作空间ブロックがモデルに含まれている場合,そのモデルをデータディクショナリに移行できます。ただし,ブロックが参照する変数の性質に応じて,移行プロセスは異なるアクションを実行します。

  • 変数の値がtimeseriesオブジェクトではない場合,移行プロセスは変数をデータディクショナリの(设计数据)セクションにインポートします。ブロックは引き続き変数を参照できます。

  • 変数の値がtimeseriesオブジェクト(データディクショナリでは格納できない),またはtimeseriesオブジェクトと同一のフィールドをもつ構造体の場合,移行プロセスは変数をインポートしません。その場合,ブロック線図を更新またはモデルをシミュレートしようとすると,从工作空间ブロックは変数を特定できず,エラーを発行します。このような場合は,関数evalinを使用してベースワークスペース変数を参照するようにブロックを構成できます。詳細については,从工作空间を参照してください。

データディクショナリの制限

  • 金宝app仿真软件は,非アクティブなバリアントモデルのみが使用する変数をデータディクショナリに自動的に移行できません。

  • クラスオブジェクトおよびtimeseriesオブジェクトなどの特定の種類の設計データをデータディクショナリの(设计数据)セクションにインポートできません。

  • 金宝app仿真软件では,データディクショナリにリンクされたモデルで暗黙的な信号の関連付けは使用できません。データディクショナリを使用するには,モデルコンフィギュレーションパラメーターの(信号の関連付け](明示的のみ]または[なし]に設定します。

  • モデル参照階層がデータディクショナリに既にリンクされている場合,その階層の一部である参照モデルを保護できます。ただし,保護されたモデルが含まれるモデル参照階層を移行する場合は,シミュレーションが失敗します。

    つまり,モデルを保護する前に,データディクショナリを使用するモデルを移行します。

  • データディクショナリに保存される仿真金宝app软件変数またはデータ型を含む式の評価はサポートされない可能性があります。

ベースワークスペースでの共有データの継続使用

共有データを継続してベースワークスペースに格納して,以下を行うことにより,モデル固有のデータをディクショナリに格納します。

  • モデルに対してベースワークスペースへのアクセスを有効にする。

  • データディクショナリからベースワークスペースへのアクセスを有効にする。

モデルに対してベースワークスペースへのアクセスを有効にするには,[モデルプロパティ]ダイアログボックスの(外部データ]タブで[ベースワークスペースへのアクセスを有効にする]をオンにします。新規のモデルでは,このチェックボックスは既定でオンになっています。モデルがデータディクショナリにリンクされていない場合,このオプションをオンにしなければなりません。

データディクショナリからベースワークスペースへのアクセスを許可することもできます。既存のディクショナリの場合は,モデルエクスプローラーで[ディクショナリからベースワークスペースへのアクセスを有効にする]をオンにします。

データディクショナリからベースワークスペースのアクセスを許可する場合,次の制限および影響が考えられます。

  • 一般的に,ディクショナリを介してベースワークスペースデータを操作することはできません。

    • ディクショナリのコンテンツをモデルエクスプローラーで検査する場合,ベースワークスペースデータは表示できません。ベースワークスペースデータを操作するには,[モデルの階層構造)ペインで,(基础工作)ノードを選択します。

    • データディクショナリのプログラムインターフェイスを使用して(プログラムによるディクショナリへのデータの格納を参照)ベースワークスペースデータを操作するために,金宝appSimulink.data.dictionary.Sectionオブジェクトでは以下の関数のみ使用できます。

      • assignin

      • 存在

      • evalin

      代わりに金宝appSimulink.data.assigninGlobalなどの関数を使用することを検討してください。データディクショナリの使用への移行を参照してください。

  • ディクショナリエントリへの変更を表示したり元に戻したりする機能といった変更追跡機能(ディクショナリのエントリの変更表示と変更取り消しを参照)はベースワークスペースデータには適用されません。

  • ディクショナリからデータをエクスポートする場合(ディクショナリデータのインポートとエクスポートを参照),金宝app仿真软件はベースワークスペースデータを無視します。

  • 金宝app仿真软件は,ベースワークスペースおよびディクショナリを単一のワークスペースとして扱います。ただし2つの変数(1つはベースワークスペース内でもう1つはディクショナリ内)に同じ名前を定義することはできます。この場合,変数は同一でなければならず,ディクショナリの変数が使用されます。

共有データをもつ複雑なモデルの階層構造の移行

例については,データディクショナリを使用したモデル参照階層用のデータ分割を参照してください。

参考

|

関連するトピック