ドキュメンテーション

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

Delay

固定または可変サンプル周期により入力信号を遅延する

ライブラリ

Discrete

説明

Delay ブロックは、遅延後にブロックの入力を出力します。このブロックは、[遅延の長さ] パラメーターの値に基づいて遅延時間を決定します。ブロックは次をサポートします。

  • 可変遅延長

  • 入力端子からの初期条件の仕様

  • 状態のストレージ

  • 状態のストレージに、配列バッファーではなくリング バッファーを使用

  • 外部リセット信号による初期条件への状態のリセット

  • 外部のイネーブル信号によるタイム ステップごとのブロックの実行の制御

初期のブロック出力は、[初期条件] パラメーターやシミュレーション開始時間などの要因の数に依存します。詳細は、初期ブロック出力を参照してください。[外部リセット] パラメーターは、ブロック出力がトリガー時に初期条件にリセットされるかどうかを決定します。[イネーブル端子の表示] パラメーターは、ブロックの実行が外部のイネーブル信号でタイム ステップごとに制御されるかどうかを決定します。

初期ブロック出力

シミュレーションの最初のいくつかのタイム ステップでの Delay ブロックの出力は、ブロックのサンプル時間、遅延の長さおよびシミュレーションの開始時間に応じて異なります。このブロックではサンプルの時間間隔を決定するために、離散サンプル時間の指定または継承をサポートしています。詳細は、「サンプル時間の指定」を参照してください。

ブロックが、離散サンプル時間を [Tsampling,Toffset] として継承していると仮定します。ここで、Tsampling はサンプリング周期、Toffset は初期時間オフセットを表します。n はブロックの [遅延の長さ] パラメーターの値、Tstart はモデルのシミュレーションの開始時間を表します。

次の表に、最初のいくつかのタイム ステップの Delay ブロック出力を示します。

シミュレーションの時間範囲ブロック出力

(Tstart)(Tstart + Toffset)

ゼロ

(Tstart + Toffset)(Tstart + Toffset + n * Tsampling)

[初期条件] パラメーター

(Tstart + Toffset + n * Tsampling) の後

[入力信号]

サポートするデータ型

ブロックのパラメーターには次の次元要件があります。

  • [遅延の長さ][外部リセット] はスカラー値でなければなりません。

  • [初期条件] はスカラー値または非スカラー値のいずれかになります。

  • フレームベースの処理の場合、データ入力端子 u の信号の次元は 2 よりも大きくはできません。

ブロックは、以下のデータ型の入力信号をサポートします。

入力信号サポートされているデータ型
データ入力端子 u
  • 浮動小数点

  • 組み込み整数

  • 固定小数点

  • boolean

  • 列挙型

遅延の長さ d
  • 浮動小数点

  • 固定小数点整数

  • 組み込み整数

イネーブル端子
  • 浮動小数点

  • 組み込み整数

  • 固定小数点整数 (ufix1 のみ)

  • boolean

外部リセット端子
  • 浮動小数点

  • 組み込み整数

  • 固定小数点整数 (ufix1 のみ)

  • boolean

初期条件 x0
  • 浮動小数点

  • 組み込み整数

  • 固定小数点

  • boolean

  • 列挙型

u が Boolean の場合、x0 は Boolean でなければなりません。u に列挙型を使用する場合、x0 にも同じ列挙型を使用しなければなりません。それ以外の場合、x0 には、u のデータ型に適合する浮動小数点、組み込み整数、固定小数点のデータ型を使用できます。たとえば、uint32 を使用している場合は、x0 にはint8 を使用できますが、double は使用できません。

出力信号のデータ型は、入力信号 u のデータ型と同じです。

詳細は、「Simulink でサポートされているデータ型」を参照してください。

可変サイズ サポート

Delay ブロックは、可変サイズ信号に対して以下のサポートを提供します。

  • データ入力端子 u は可変サイズ信号を受け入れます。その他の入力端子では可変サイズ信号は受け入れられません。

  • 可変サイズ入力に対し、出力端子はデータ入力端子 u と同じ信号次元をもちます。

可変サイズ信号に適用されるルールは、Delay ブロックの入力処理モードによって決まります。

入力処理モード可変サイズ信号のサポート ルール
チャネルとしての要素 (サンプル ベース)
  • 信号の次元は、ブロック有効時の状態リセット中にのみ変わります。

  • 初期条件は、スカラーでなければなりません。

チャネルとしての列 (フレーム ベース)
  • サポートなし

継承
(サンプルベースの入力信号の場合)
  • 信号の次元は、ブロック有効時の状態リセット中にのみ変わります。

  • 初期条件は、スカラーでなければなりません。

継承
(フレームベースの入力信号の場合)
  • チャネル サイズは、ブロック有効時の状態リセット中にのみ変わります。

  • 初期条件は、スカラーでなければなりません。

  • フレーム サイズは定数でなければなりません。

バス サポート

Delay ブロックは、バス信号に対して以下のサポートを提供します。

  • データ入力端子 u は、バーチャルおよび非バーチャルのバス信号を受け入れます。その他の入力端子ではバス信号は受け入れられません。

  • バス入力に対し、出力端子はデータ入力端子 u と同じバス タイプをもちます。

  • バスは以下の処理を行います。

    • サンプルベースおよびフレームベースの処理

    • 固定遅延および可変遅延の長さ

    • 配列バッファーおよびリング バッファー

Delay ブロックへの入力としてバス信号を使用するには、ダイアログ ボックスで初期条件を指定しなければなりません。つまり、初期条件は入力端子 x0 からは入力できません。バーチャル バスおよび非バーチャル バスのサポートは、指定する初期条件および [状態名] パラメーターが空かどうかによって異なります。

初期条件状態名
空ではない
ゼロバーチャルおよび非バーチャル バス サポート非バーチャル バス サポートのみ
非ゼロのスカラーバーチャルおよび非バーチャル バス サポートバス サポートなし
非スカラーバス サポートなしバス サポートなし
構造体バーチャルおよび非バーチャル バス サポート非バーチャル バス サポートのみ
部分的な構造体バーチャルおよび非バーチャル バス サポート非バーチャル バス サポートのみ

パラメーターとダイアログ ボックス

遅延の長さ

遅延の長さをダイアログ ボックスに直接入力するかどうか (固定遅延)、または入力端子から遅延を継承するかどうか (可変遅延) を指定します。

  • [ソース][ダイアログ] に設定する場合は、[値] の下にある編集フィールドに遅延の長さを入力します。

  • [ソース][入力端子] に設定する場合は、上流信号によって遅延の長さが d 入力端子に与えられることを確認します。[上限] パラメーターを指定することによって最大値を指定することもできます。

スカラーの遅延の長さを、実数の非負の整数で指定します。ダイアログ ボックス (固定遅延) 内に範囲外または整数でない値を指定するとエラーが返されます。入力端子 (可変遅延) からの範囲外の値は範囲内にキャストされます。入力端子 (可変遅延) からの非整数の値は整数に打ち切られます。

このパラメーターはシミュレーションまたはコード生成に対して調整できません。

初期条件

初期条件をダイアログ ボックスに直接入力するか、入力端子から初期条件を継承するかを指定します。

  • [ソース][ダイアログ] に設定する場合は、[値] の下にある編集フィールドに初期条件を入力します。

  • [ソース][入力端子] に設定する場合は、上流信号によって初期条件が x0 入力端子に与えられることを確認します。

Simulink® は、最近傍への丸め演算と飽和を使って、[初期条件] のデータ型を入力信号 u のデータ型にオフラインで変換します。

    メモ:   [状態属性] ペインで [状態名を Simulink の信号オブジェクトに関連付ける] が選択されていると、ブロックは信号オブジェクトの初期値を [初期条件] パラメーターにコピーします。ただし、[初期条件] のソースが [入力端子] になっている場合、ブロックは信号オブジェクトの初期値を無視します。

入力処理

ブロックでサンプルベースかフレームベースのどちらの処理を実行するかを指定します。以下のオプションのいずれかを選択します。

  • チャネルとしての要素 (サンプル ベース) — 入力の各要素を独立したチャネルとして扱います (サンプルベースの処理)。

  • チャネルとしての列 (フレーム ベース) — 入力の各列を独立したチャネルとして扱います (フレームベースの処理)。

      メモ:   フレームベースの処理には、DSP System Toolbox™ のライセンスが必要になります。

      詳細は、DSP System Toolbox ドキュメンテーションの「Sample- and Frame-Based Concepts」を参照してください。

  • 継承 — 入力信号から処理モードを継承し、これに従って入力を遅延します。入力信号がサンプルベースかフレームベースかどうかを判断するには、信号線を確認します。Simulink は、サンプルベースの信号を単線で表し、フレームベースの信号を二重線で表します。

      メモ:   [入力処理] パラメーターの 継承 オプションが選択されており、入力信号がフレームベースの場合は、Simulink は将来のリリースで警告またはエラーを発生します。

[入力処理] を使って、ブロックでサンプルベースかフレームベースのどちらの処理を実行するかを指定します。ブロックは、入力 u にフレームベースの信号を受け入れます。その他すべての入力信号はサンプルベースでなければなりません。

入力信号 u入力処理モードブロックは動作するか
サンプルベースサンプルベースはい
フレームベースいいえ、エラーが発生
サンプルベースフレームベースはい
フレームベースはい
サンプルベース継承はい
フレームベースはい

これらの 2 つの処理モードの詳細は、DSP System Toolbox ドキュメンテーションの「Sample- and Frame-Based Concepts」を参照してください。

リング バッファーを使用

シミュレーションとコード生成での状態を格納するためにリング バッファーの使用を選択します。それ以外の場合は、配列バッファーは状態を格納します。

リング バッファーを使用すると、遅延が長いときの実行速度が向上します。配列バッファーの場合、遅延が長くなるほどコピー操作数が増加します。リング バッファーの場合、遅延の長さの増加に対しコピー操作数は一定になります。

次の条件のいずれかが満たされる場合、リング バッファーは実行速度を向上しないため、状態の格納には常に配列バッファーが使用されます。

  • サンプルベースの信号で、遅延の長さが 1 の場合。

  • フレームベースの信号で、遅延の長さがフレームサイズより小さい場合。

遅延の長さを下限まで増やして直接フィードスルーを防ぐ

遅延の長さをゼロから[入力処理] モードの下限に増加するために選択します。

  • サンプルベースの信号では、最小の遅延の長さを 1 に増加。

  • フレームベースの信号では、最小の遅延の長さをフレーム長に増加。

このチェック ボックスを選択することで、入力端子 u から出力端子への直接フィードスルーを回避できます。ただし、このチェック ボックスを選択しても、初期条件端子 x0 から出力端子への直接フィードスルーを回避することはできません。

このチェック ボックスは、[遅延の長さ: ソース][入力端子] であるときに利用できます。

[生成コードの範囲外の遅延の長さに対する保護を削除する]

範囲外の遅延の長さをチェックするコードを削除するために選択します。

チェック ボックス結果使用時

選択

生成コードには範囲外の遅延の長さをチェックするための条件文が含まれません。

コード効率の場合

クリア

生成コードには範囲外の遅延の長さをチェックするための条件文が含まれます。

セーフティ クリティカルなアプリケーションの場合

このチェック ボックスは、[遅延の長さ: ソース][入力端子] であるときに利用できます。

範囲外の遅延の長さの診断

入力 d が下限未満の場合、または [遅延の長さ: 上限] の場合に、警告またはエラー メッセージを表示するかを指定します。下限は、[遅延の長さを下限まで増やして直接フィードスルーを防ぐ] の設定に依存します。

  • チェック ボックスがオフの場合、下限はゼロになります。

  • チェック ボックスがオンの場合、下限はサンプルベース信号には 1、フレームベース信号にはフレーム長になります。

診断のオプションには以下の項目があります。

  • None — 警告またはエラーは表示されません。

  • Warning - MATLAB® コマンド ウィンドウに警告を表示し、シミュレーションを続けます。

  • Error - シミュレーションを停止し、診断ビューアーにエラーを表示します。

このパラメーターは、[遅延の長さ: ソース][入力端子] であるときに利用できます。

イネーブル端子の表示

このブロックのイネーブル端子の表示を選択します。この端子はブロックの実行を制御できます。ブロックはこの端子への入力が非ゼロのときに有効と見なされ、入力が 0 のときに無効になります。入力の値はブロックの実行と同じタイム ステップでチェックされます。

外部リセット

状態を初期条件にリセットするために使用するトリガー イベントを指定します。

リセット モード動作
なしリセットなし。
立ち上がり立ち上がりエッジでリセットします。
立ち下がり立ち下がりエッジでリセットします。
両方立ち上がりエッジまたは立ち下がりエッジのいずれかでリセットします。
レベル次のいずれかの場合にリセットします。
  • リセット信号が現在のタイム ステップで非ゼロである場合

  • 以前のタイム ステップでの非ゼロから現在のタイム ステップでの 0 までリセット信号の値が変化する場合

レベル保持リセット信号が現在のタイム ステップで非ゼロであるときにリセットします。

リセット信号は、singledoubleboolean または integer 型のスカラーでなければなりません。ufix1 以外の固定小数点データ型はサポートされません。

サンプル時間 (継承は -1)

サンプルの時間間隔を指定します。サンプル時間を継承するには、このパラメーターを -1 に設定します。このブロックは離散サンプル時間をサポートしますが、連続サンプル時間はサポートしません。

状態名

ブロックの状態に固有名を割り当てるにはこのパラメーターを使用します。既定の設定は、' ' です。このフィールドが空白のままの場合、名前は割り当てられません。このパラメーターを使用する場合、以下のことを考慮してください。

  • 有効な識別子は英字またはアンダースコア文字で始まり、英数字またはアンダースコア文字が続きます。

  • 状態名は選択されたブロックに対してのみ適用されます。

このパラメーターを設定し、[適用] ボタンをクリックすると、[状態名を Simulink の信号オブジェクトに関連付ける] が有効になります。

詳細は、Simulink Coder™ ドキュメンテーションの「生成コードでの離散ブロック状態の名前付け」を参照してください。

状態名を Simulink の信号オブジェクトに関連付ける

状態名が Simulink 信号オブジェクトに関連付けられるようにするには、このチェック ボックスをオンにします。このチェック ボックスは、既定の設定ではオフになっています。

[状態名] によって、このパラメーターが有効になります。

このチェック ボックスをオンにすると、[コード生成ストレージ クラス] が無効になります。

信号オブジェクト クラス

ターゲット パッケージが定義する信号オブジェクト クラスを選択してカスタム ストレージ クラスのパッケージを選択します。たとえば、組み込みパッケージ mpt からカスタム ストレージ クラスを適用するには [mpt.Signal] を選択します。Embedded Coder® ソフトウェアで ERT ベースのコード生成ターゲットを使用している場合を除き、カスタム ストレージ クラスは生成されたコードに影響しません。

目的のクラスがリストに表示されない場合は、[クラス リストのカスタマイズ] を選択します。詳細については、「Apply Custom Storage Classes Directly to Signal Lines, Block States, and Outport Blocks」を参照してください。

コード生成ストレージ クラス

コード生成の状態ストレージ クラスを選択します。

既定の設定: Auto

Auto

Auto は、外部コードのインターフェイスを必要としない状態に対して適切なストレージ クラスです。

StorageClass

リストから選択したストレージ クラスまたはカスタム ストレージ クラスを適用します。ストレージ クラスの詳細については、「ストレージ クラスの適用による、コード内での信号と状態の制御」を参照してください。カスタム ストレージ クラスの詳細については、「Control Data Representation by Applying Custom Storage Classes」を参照してください。

[信号オブジェクト クラス] を使用して、Simulink 以外のパッケージからカスタム ストレージ クラスを選択します。

[状態名] によって、このパラメーターが有効になります。

TypeQualifier

    メモ:   TypeQualifier は将来のリリースで削除されます。ストレージ型修飾子をデータに適用するには、カスタム ストレージ クラスとメモリ セクションを使用します。Embedded Coder ソフトウェアで ERT ベースのコード生成ターゲットを使用している場合を除き、カスタム ストレージ クラスとメモリ セクションは生成されたコードに影響しません。

const または volatile などのストレージ型修飾子を指定します。

[コード生成ストレージ クラス][ExportedGlobal][ImportedExtern][ImportedExternPointer] または [SimulinkGlobal] に設定すると、このパラメーターが有効になります。このパラメーターは以前にこの値を設定している場合を除き、非表示です。

サンプルベース処理用可変サイズ信号

このモデルは、サンプルベースの処理において、可変サイズの信号を Delay ブロックがサポートする方法を示します。

Switch ブロックは、Enabled サブシステムへの入力信号が 3 行 3 列または 3 行 2 列の行列かどうかを制御します。Delay ブロックは、Enabled サブシステムの内部に表示されます。

このモデルでは、Delay ブロックがサンプルベースの処理を使用する場合、可変サイズ信号のルールに従います。

ルールモデルがルールに従う仕組み

信号の次元は、ブロック有効時の状態リセット中にのみ変わります。

Enable ブロックは、[可変サイズの信号のサイズを伝播][イネーブルのときのみ] に設定します。

初期条件は、スカラーでなければなりません。

Delay ブロックは [初期条件] をスカラー値 0.0 に設定します。

フレームベース処理用バス信号

このモデルは、フレームベースの処理において、バス信号を Delay ブロックがサポートする方法を示します。

各 Constant ブロックは、Bus Creator ブロックへの入力信号を供給し、このブロックは 2 次元バス信号を出力します。バス信号は Delay ブロックにより 3 サンプリング周期遅延された後、Bus Selector ブロックにより元の 2 つの信号に分離されます。

このモデルでは、Delay ブロックがフレームベースの処理を使用する場合、バス信号のルールに従います。

ルールモデルがルールに従う仕組み

初期条件として、ダイアログ ボックスで値を設定します。

Delay ブロックは [初期条件] をスカラー値 0 に設定します。

フレームベースの処理の場合、データ入力端子 u の信号の次元は 2 よりも大きくはできません。(このルールは、バス信号だけでなく、端子 u のすべての入力に適用されます)。

Delay ブロックへのバス入力には 2 つの次元があります。

Delay ブロックの実行の有効化または無効化

この例では、ブロックのイネーブル端子を使用して Delay ブロックの実行を有効または無効にする方法について説明します。このモデルについて考えます。ランプ入力信号は、イネーブル信号によって実行が制御される Delay ブロックに接続されます。Pulse Generator ブロックはこのイネーブル信号を生成します。

Scope ブロックは、イネーブル信号およびランプ入力とともに Delay ブロックの出力を表示します。モデルのシミュレーションとスコープ出力の表示を行うと、次のグラフが表示されます。

マゼンタのマークは、イネーブル信号が 1 のときに Delay ブロックが 1 タイム ステップだけ遅れて入力信号を出力することを示しています。t=5 秒では、イネーブル信号が 0 になり、Delay ブロックが実行されません。このため、出力は次にイネーブル信号が 1 になるまで一定に保持されます。

特性

データ型

double | single | boolean | 整数 | 固定小数点 | 列挙型 | バス

サンプル時間

サンプル時間パラメーターで指定

直接フィードスルー

[遅延の長さを下限まで増やして直接フィードスルーを防ぐ] をオフにした場合にあり

多次元信号

あり

可変サイズの信号

あり

ゼロクロッシング検出

なし

コード生成

あり

この情報は役に立ちましたか?