Main Content

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

Delay

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

  • ライブラリ:
  • Simulink / Commonly Used Blocks

    Simulink / Discrete

    HDL Coder / Commonly Used Blocks

    HDL Coder / Discrete

  • Delay block

説明

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 以下である。

端子

入力

すべて展開する

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

データ型: 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 | uint64 | 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)を参照してください。

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

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

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

これらの 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 Code Generation Configuration for Model Interface Elements (Simulink Coder)を参照してください。

プログラムでの使用

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

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

依存関係

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

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

プログラムでの使用

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

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

Simulink パッケージ以外のストレージ クラス パッケージを使用するには、そのパッケージをモデルの Embedded Coder ディクショナリに読み込まなければなりません。Load Storage Class Packages into Embedded Coder Dictionary (Embedded Coder)を参照してください。

ストレージ クラスを使用したモデルの設定の詳細については、モデル インターフェイス要素の C コード生成の構成 (Embedded Coder)を参照してください。カスタム ストレージ クラスの詳細については、Organize Data into Structures in Generated Code (Embedded Coder)を参照してください。

プログラムでの使用

ブロック パラメーター: StateSignalObject
型: 文字ベクトル
値: 'Simulink.Signal' | '<StorageClass.PackageName>'
既定の設定: 'Simulink.Signal'

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

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

依存関係

このパラメーターを有効にするには、[状態名] の値を指定します。

プログラムでの使用

ブロック パラメーター: StateStorageClass
型: 文字ベクトル
値: 'Auto' | 'Model default' | 'ExportedGlobal' | 'ImportedExtern' | 'ImportedExternPointer' | 'Custom' | ...
既定の設定: 'Auto'

ブロックの特性

データ型

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

直接フィードスルー

はい

多次元信号

はい

可変サイズの信号

はい

ゼロクロッシング検出

いいえ

拡張機能

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

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

R2006a より前に導入