主要内容

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

モデル参照によるデータ管理の紹介

この例では,モデル参照によるデータ管理に関する基本概念を示します。

このトピックの詳細については,モデル参照によるデータ管理の詳細ワークフローを参照してください。

メモ:この例では,より詳細な例と同じモデルを使用します。そのため,このモデルには,この紹介例では説明されていない機能が使用されています。

例の要件

この例の実行中,金宝app仿真软件®は,現在の作業ディレクトリに作成されるコード生成フォルダーにコードを生成します。このディレクトリにファイルを生成したくない場合(あるいは生成できない場合)は,作業ディレクトリを変更してください。

モデル例を変更する予定がある場合は,以下の手順に従います。

1.以下のファイルを,名前を変更せずにMATLAB®インストールディレクトリから他のディレクトリにコピーすることで,この例を元の状態で保存しておきます。

工具箱/模型/ 金宝appsimdemos / simfeatures / modelreference / sldemo_mdlref_datamngt。基金工具箱/模型/ si金宝appmdemos / simfeatures / modelreference / sldemo_mdlref_datamngt_wsdata。m工具箱/模型/ s金宝appimdemos / simfeatures / modelreference / sldemo_mdlref_counter_datamngt。基金工具箱/模型/ si金宝appmdemos / simfeatures / modelreference / sldemo_mdlref_counter_datamngt_types。m工具箱/模型/ s金宝appimdemos / simfeatures / modelreference / sldemo_mdlref_counter_datamngt_wsdata.m

2.現在の作業ディレクトリを,ファイルをコピーしたディレクトリに変更します。

3.例を続けます。

モデル例を開く

open_system(“sldemo_mdlref_datamngt”)

例の内容

この例では,次の3つの模型ブロックを含んだ最上位モデル(sldemo_mdlref_datamngt)を使用します。これらは,Counter1、Counter2 Counter3ブロックです。これらのブロックは,同じモデル(sldemo_mdlref_counter_datamngt)を参照します。

参照モデルは,次のような制限カウンターアルゴリズムを実装します。

  • 最初のトリガー入力が変化したら,カウンターをリセットする

  • 2番目の入力が変化したら,指定した量だけカウンターをインクリメントする

  • 指定した上限および下限の間でカウンターを飽和する

参照モデルは,次の値を含むバス信号を出力します。

  • 数:カウンターの値(8ビット整数)

  • OverflowState:カウンターが上限,下限,または範囲内かを示す列挙値

例の概要

例の手順は,次のとおりです。

1.外部インターフェイスで信号とパラメーターの構造体を使用する参照モデル(sldemo_mdlref_counter_datamngt)を準備します。

2.参照モデルを呼び出す最上位モデル(sldemo_mdlref_datamngt)を準備します。

3.最上位モデルをシミュレートし,結果を調べます。

参照モデル:パラメーターの設定

参照モデルには,モデルのブロックをパラメーター化する2つのモデル引数(CounterParams CounterICs)があります。モデル引数は,参照モデルの各インスタンスに異なるパラメーター値を指定します。このモデルでは,参照モデルに渡される引数の数を低減するために,引数がパラメーター構造体として定義されています。

モデル引数を定義するプロセスは,次のとおりです。

1.参照モデル(sldemo_mdlref_counter_datamngt)を開きます。

2.MATLAB構造体を定義して参照モデルをパラメーター化します。

CounterParams。增量= int8 (1);CounterParams。LowerLimit = int8 (-10);CounterParams。UpperLimit = int8 (10);
CounterICs。数= int8 (0);CounterICs。OverflowState = SlDemoRangeCheck.InRange;

メモ:この例では,カウンターに8ビット整数を使用するため,数値フィールドにも8ビット整数を使用します。

3.MATLAB構造体をモデル引数として使用します。

モデル引数は,参照モデルのモデルワークスペースに変数として定義されています。モデルワークスペースは,いくつかの異なるデータソースから初期化できます。この例では,MATLABスクリプト(sldemo_mdlref_counter_datamngt_wsdata)を使用して,モデル引数のパラメーター構造体を作成します。MATLABスクリプトを使用すると、モデルの外部で簡単にパラメーター構造体を作成、および変更することができます。さらに、インクリメント変更、バージョン管理、およびデータの差分操作も容易になります。

モデルワークスペースのダイアログでデータソースを設定します。

モデルエクスプローラーを使用して,モデルワークスペースの内容を表示して編集できます。

(引数]チェックボックスをオンにして,変数をモデル引数として設定します。

参照モデル:出力バス信号の形状の定義

参照モデルは2つの結果を生成し,バス信号にパッケージ化します。

  • 数:カウンターの値(8ビット整数)

  • OverflowState:カウンターが上限,下限,または範囲内かを示す列挙値

参照モデルのルート出力のバス型を定義するには

1.バスエディターを使用してバスオブジェクト(OutputType)を定義します。

または,MATLABコマンドラインでバスオブジェクトを作成することもできます。

OutputType = 金宝appSimulink.Bus;OutputType。元素= Simulin金宝appk.BusElement;OutputType.Elements(1)。Name =“数”;OutputType.Elements(1)。数据类型=“int8”;OutputType.Elements (2) =金宝app Simulink.BusElement;OutputType.Elements(2)。Name =“OverflowState”;OutputType.Elements(2)。数据类型=“枚举:SlDemoRangeCheck”

2.参照モデルのルートの出力端子を設定して,このバスオブジェクト(OutputType)に基づいて非バーチャルのバス信号を出力します。

参照モデル:バス出力の初期値の設定

一般的に,バス信号と状態の開始値は,' 0 'と指定することができます。この場合,バスのすべての要素がゼロ(またはそれぞれのグラウンド値)に初期化されます。ただし,バス信号および状態にゼロ以外の開始値を指定することが望ましい場合があります。この例では,カウンターの初期状態を調整できるため,出力信号の開始値を常に設定しなければなりません。

参照モデルの出力の開始値を指定するには

1.初期化するバス信号と互換性があるパラメーター構造体を作成します。モデル引数の1つ(CounterICs)は出力信号の形状と一致するパラメーター構造体です。この構造体は,次のように定義されています。

CounterICs。数= int8 (0);CounterICs。OverflowState = SlDemoRangeCheck.InRange;

2.ルートの外港のダイアログボックスを開き,(初期出力)フィールドに構造体の名前(CounterICs)を入力します。

メモ:一般的に,バス信号または状態を初期化する場合,パラメーター構造体がバス型と正確に一致する必要はありませんが,そのフィールドがバスオブジェクトの要素のサブセットでなければならず,これらのフィールドの属性がバスオブジェクトの要素と一致しなければなりません。

参照モデル:参照モデルのマスク

通常,参照モデルをマスクしてユーザーインターフェイスをカスタマイズすると便利です。モデルにマスクを作成し,それを模型ブロックから参照できます。モデルをマスクするには,モデルのモデルエクスプローラーの[モデルワークスペース]セクションで[モデルマスクの作成)をクリックします。

マスクしたモデルを模型ブロックから参照すると,模型ブロックにマスクが自動的に生成されます。詳細については,“マスクしたモデルの作成と参照”のトピックを参照してください。

最上位モデル:模型ブロックのパラメーター化

参照モデルは,そのモデル引数の構造体を受け入れるように設定されています。この例では,パラメーター値の異なる参照モデルの各インスタンスを呼び出します。

1.最上位モデル(sldemo_mdlref_datamngt)を開きます。

2.参照モデルで定義されたモデル引数と同じ”形状”のパラメーター構造体を作成します。

Param1。增量= int8 (1);Param1。LowerLimit = int8 (-20);Param1。UpperLimit = int8 (20);
Param2 = Param1;Param2。增量= int8 (2);
IC1。数= int8 (0);IC1。OverflowState = SlDemoRangeCheck.InRange;
IC2 = IC1;IC2。数= int8 (-10);

3.これらのパラメーターを使用するように,マスクした模型ブロックのマスクパラメーターを設定します。

たとえば,最初の模型ブロック(“sldemo_mdlref_datamngt / Counter1”)のパラメーターは次のように設定されています。

  • カウンターパラメーターParam1

  • 初期条件IC1

最上位モデル:参照モデルの呼び出しのスケジューリング

前述のように,参照モデルは,2つのトリガー入力の制限カウンターアルゴリズムを実装します。このアルゴリズムは,トリガー入力の“立ち上がりエッジ”を検出して,次のように動作します。

  • 最初のトリガー入力が変化したら,カウンターをリセットする。

  • 2番目の入力が変化したら,指定した量だけカウンターをインクリメントする。

この例では,刺激サブシステムにより生成される同じトリガー入力で,カウンターアルゴリズムの3つのインスタンスのすべてを駆動します。トリガー入力の周期とサンプル時間は,刺激サブシステムのマスクパラメーターに入力された値によって定義されます。

  • カウンターを4秒ごとにリセットする。

  • カウンターを毎5秒回インクリメントする(周期= 0.2秒)。

  • サンプル時間は0.1秒である。

メモ:リセット周期とインクリメント周期は,サンプル時間の2倍以上でなければなりません。

最上位モデルのシミュレーション

1.参照モデルを保存するか,閉じます。

最上位モデルで参照モデルを使用するには,参照モデルを保存する必要があります。または,参照モデルを閉じ,この例に提供されている元のバージョンのモデルを使用できます。

2.[シミュレーション][実行]を選択して,最上位モデルのシミュレーションを実行します。

sim(“sldemo_mdlref_datamngt”)

メモ:最上位モデルをシミュレートすると,参照モデルのシミュレーションターゲットが自動的に生成されます。

3.范围ブロックに表示されたシミュレーション結果を確認します。