Main Content

Delay

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

  • Delay block

ライブラリ:
Simulink / Commonly Used Blocks
Simulink / Discrete
DSP System Toolbox / Signal Operations
HDL Coder / Commonly Used Blocks
HDL Coder / Discrete

説明

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

  • 可変遅延長

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

  • 状態のストレージ

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

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

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

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

初期ブロック出力

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

次の表に、これらの設定での最初のいくつかのタイム ステップの Delay ブロック出力を示します。ブロックは、離散サンプル時間を [Tsampling,Toffset] として継承します。ここで、Tsampling はサンプリング周期、Toffset は初期時間オフセットを表します。n[遅延の長さ] パラメーターの値、Tstart はモデルのシミュレーションの開始時間を表します。

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

(Tstart)(Tstart + Toffset)

ゼロ

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

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

(Tstart + Toffset + n * Tsampling) の後

入力信号

外部イネーブル信号があるときの動作

[イネーブル端子の表示] チェック ボックスをオンにするとイネーブル端子が有効になります。イネーブル端子が有効になっている場合、ブロックは次の順序で動作します。

  1. イネーブル条件が満たされているかチェックする。

  2. リセット端子が有効になっている場合、リセット条件をチェックする。

  3. Delay ブロックの機能を実行する。

ブロックにはイネーブル端子について次の動作があります。

  • 有効になっている最初のブロックでは、ブロック出力は初期条件値 (x0) です。

  • 連続するイネーブル信号に対して、ブロックは入力信号 u の最後の状態をとります。

  • シミュレーションの開始時点で端子が有効になっていない場合、Delay ブロックは 0 を出力します。

  • シミュレーション中に、端子が有効になっていた後に無効になる場合、ブロックは実行されず、その最後の値を保持します。

可変サイズ サポート

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

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

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

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

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

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

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

バス サポート

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

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

  • 初期条件 x0 端子は非バーチャルのバス信号を受け入れます。

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

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

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

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

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

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

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

string のサポート

Delay ブロックは、次の場合にのみ string データ型を受け取り、出力することができます。

  • ブロックが [初期条件] パラメーター (0) の既定値について構成されている。

  • [遅延の長さ] の値が 1 以下である。

すべて展開する

この例では、Delay ブロックによるサンプルベース処理での可変サイズ信号のサポートについて説明します。Switch ブロックは、Enabled サブシステムへの入力信号が 3 行 3 列または 3 行 2 列の行列かどうかを制御します。

Delay ブロックは、Enabled サブシステムの内部に表示されます。

モデルは、サンプルベースの処理を使用しながら、可変サイズの信号について次のルールに従います。

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

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

ルールは以下のブロックで実装されます。

  • Enable ブロックは、[可変サイズの信号のサイズを伝播] を [Only when enabling] に設定します。

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

この例では、フレームベースの処理において、Delay ブロックがバスをどのようにサポートするかを説明します。

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

モデルは、バスについて次のルールに従います。

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

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

モデルは、次の方法でルールを実装します。

  • [初期条件] をスカラー値 0 に設定する。

  • Delay ブロックへのバス入力を 2 つの次元として設定する。

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

青い線は、イネーブル信号の値が 1 のときに Delay ブロックで 1 タイム ステップ遅れて入力信号値が出力されることを示します。t=5 で、イネーブル信号の 0 への変換と Delay ブロックの実行が停止します。出力は、ブロックが再びイネーブルになるまで最後の値で保持されます。

端子

入力

すべて展開する

パラメーター設定に従って遅れた入力データ信号。

データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | string | Boolean | fixed point | enumerated | bus

遅延の長さ。入力端子からの継承として指定します。[遅延の長さ: ソース] パラメーターを [入力端子] として選択すると有効になります。

データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | fixed point

ブロックの実行をイネーブルまたはディセーブルにするイネーブル信号。この端子を作成するには、[イネーブル端子の表示] パラメーターを選択します。

データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

ブロックの実行を初期条件にリセットする外部信号。この端子を作成するには、[外部リセット] パラメーターを選択します。

データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point

入力端子からの継承として指定した初期条件。[初期条件: ソース] パラメーターを [入力端子] として選択すると有効になります。

データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point | bus

出力

すべて展開する

[遅延の長さ] パラメーターで指定した時間の長さだけ遅れた入力信号である出力信号。複数の条件に基づいて出力信号の初期値を指定します。初期ブロック出力を参照してください。

データ型: half | single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | string | Boolean | fixed point | enumerated | bus

パラメーター

すべて展開する

メイン

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

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

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

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

プログラムでの使用

ブロック パラメーター: DelayLengthSource
: 文字ベクトル
: 'Dialog' | 'Input port'
既定の設定: 'Dialog'
ブロック パラメーター: DelayLength
: 文字ベクトル
: スカラー
既定の設定: '2'
ブロック パラメーター: DelayLengthUpperLimit
: 文字ベクトル
: スカラー
既定の設定: '100'

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

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

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

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

メモ

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

プログラムでの使用

ブロック パラメーター: InitialConditionSource
: 文字ベクトル
: 'Dialog' | 'Input port'
既定の設定: 'Dialog'
ブロック パラメーター: InitialCondition
: 文字ベクトル
: スカラー
既定の設定: '0.0'

ブロックでサンプルベースかフレームベースのどちらの処理を実行するかを指定します。

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

    メモ

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

    詳細については、サンプルベースおよびフレームベースの概念 (DSP System Toolbox)を参照してください。

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

[入力処理] を使って、ブロックでサンプルベースかフレームベースのどちらの処理を実行するかを指定します。これらの 2 つの処理モードの詳細については、サンプルベースおよびフレームベースの概念 (DSP System Toolbox)を参照してください。

プログラムでの使用

ブロック パラメーター: InputProcessing
: 文字ベクトル
: 'Columns as channels (frame based)' | 'Elements as channels (sample based)'
既定の設定: 'Elements as channels (sample based)'

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

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

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

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

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

プログラムでの使用

ブロック パラメーター: UseCircularBuffer
: 文字ベクトル
: 'off' | 'on'
既定の設定: 'off'

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

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

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

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

依存関係

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

プログラムでの使用

ブロック パラメーター: PreventDirectFeedthrough
: 文字ベクトル
: 'off' | 'on'
既定の設定: 'off'

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

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

選択

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

コード効率の場合

クリア

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

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

依存関係

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

プログラムでの使用

ブロック パラメーター: RemoveDelayLengthCheckInGeneratedCode
: 文字ベクトル
: 'off' | 'on'
既定の設定: 'off'

入力 d が下限未満の場合、または [遅延の長さ: 上限] の場合に、警告またはエラー メッセージを表示するかを指定します。下限は、[直達の防止] の設定によって変化します。

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

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

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

  • None — Simulink ソフトウェアではいかなるアクションも実行されません。

  • Warning — Simulink ソフトウェアで警告が表示され、シミュレーションは続行されます。

  • Error — Simulink ソフトウェアではシミュレーションが終了し、エラーが表示されます。

依存関係

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

プログラムでの使用

ブロック パラメーター: DiagnosticForDelayLength
: 文字ベクトル
値: 'None' | 'Warning' | 'Error'
既定の設定: 'None'

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

プログラムでの使用

ブロック パラメーター: ShowEnablePort
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

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

リセット モード動作
なしリセットなし
立ち上がり立ち上がりエッジでリセットします
立ち下がり立ち下がりエッジでリセットします
両方立ち上がりエッジまたは立ち下がりエッジのいずれかでリセットします
レベル

次のいずれかの場合にリセットします。

  • リセット信号が現在のタイム ステップで非ゼロである場合

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

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

プログラムでの使用

ブロック パラメーター: ExternalReset
: 文字ベクトル
: 'None' | 'Rising' | 'Falling' | 'Either' | 'Level' | 'Level hold'
既定の設定: 'None'

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

プログラムでの使用

ブロック パラメーター: SampleTime
: 文字ベクトル
: 実数スカラー
既定の設定: '-1'

状態属性

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

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

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

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

詳細については、C Data Code Interface Configuration for Model Interface Elements (Simulink Coder)を参照してください。

プログラムでの使用

ブロック パラメーター: StateName
型: 文字ベクトル
値: 一意の名前
既定の設定: ''

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

依存関係

このパラメーターを有効にするには、[状態名] の値を指定します。このパラメーターは、モデル コンフィギュレーション パラメーター [信号の関連付け][なし] 以外の値に設定している場合にのみ表示されます。

プログラムでの使用

ブロック パラメーター: StateMustResolveToSignalObject
型: 文字ベクトル
値: 'off' | 'on'
既定の設定: 'off'

ブロックの特性

データ型

Boolean | bus | double | enumerated | fixed point | half | image | integer | single | string

直達

いいえa

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

いいえ

a このブロックの端子には異なる直達特性があります。

拡張機能

PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。

固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。

バージョン履歴

R2006a より前に導入