Main Content

Variable Transport Delay

可変時間分だけ入力を遅延

  • ライブラリ:
  • Simulink / Continuous

  • Variable Transport Delay block

説明

Variable Transport DelayブロックとVariable Time Delayブロックは、Simulink®ブロックライブラリの2つのブロックのように見えます。ただし,それらは,実際には,異なる設定の[遅延タイプの選択]パラメーターをもつ同じ Simulink ブロックです。このパラメーターを使ってブロック動作のモードを指定します。

可変伝達遅延

このモードでは、現在のタイム ステップでのブロックの出力は、それよりも前のタイム ステップ (現在の時間から伝達遅延を差し引いたタイム ステップ) でのデータの値 (上または左) に等しくなります。

y ( t ) = u ( t t d ( t ) )

Simulink ソフトウェアは、伝達遅延 t d ( t ) を、次の方程式を解くことによって見つけます。

t t d ( t ) t 1 t i ( τ ) d τ = 1

この式は、ブロックの時間遅延 (下または右) 入力によって与えられる瞬間的な時間遅延 t i ( t ) を含みます。

このブロックを使用して、パイプを通る速度が時間と共に変化する流体の流れをモデル化するとします。この場合、ブロックへの時間遅延入力は次のようになります。

t i ( t ) = L v i ( t )

ここで、Lはパイプの長さであり、 v i ( t ) は、流体の速度です。

可変時間遅延

このモードでは、ブロックはデータ入力、時間遅延入力、データ出力をもちます (ブロックの向きに関する端子の順番の詳細は、回転または反転後の端子の位置を参照してください)。現在のタイム ステップの出力は前のタイム ステップのデータ入力の値と等しくなります。このタイム ステップは、時間遅延入力で指定される時間遅延を現在のシミュレーション時間から差し引いたものです。

y ( t ) = u ( t t 0 ) = u ( t τ ( t ) )

シミュレーション中、ブロックは時間と入力値を組み合わせて内部バッファーに格納します。シミュレーションの開始時、ブロック出力は、シミュレーション時間遅延入力を超えるまで、[初期出力]パラメーターの値です。その後、各シミュレーション ステップごとに、ブロックは現在のシミュレーション時間から遅れ時間を差し引いた時間に対応する時間で信号を出力します。

入力の格納時間の間に出力が要求されると、ソルバーが連続ソルバーの場合、ブロックはデータ点の間を線形内挿します。時間遅延がステップ サイズより小さい場合、ブロックは出力点を外挿します。たとえば、ステップ サイズが1で現在の時間がt = 5の固定ステップ シミュレーションを考えます。遅延が0.5の場合、ブロックはt = 4.5でデータ点を生成しなければなりませんが、最後に格納された時間値はt = 4です。この場合、ブロックは4での入力から4.5での入力を外挿し、t = 5での出力として外挿した値を使用します。

前のタイム ステップから前方に外挿すると、現在のタイム ステップから後方に外挿するよりも正確でない結果を生成します。ただし、入力端子が直達をもたないため、このブロックは出力値を計算するために現在の入力を使用できません。

モデルが離散ソルバーを指定する場合、ブロックはタイム ステップ間で内挿しません。代わりに、必要な値の前の最も近い保存された値を返します。

端子

入力

すべて展開する

スカラー、ベクトルまたは行列として指定される入力信号。

データ型:double

時間遅延入力。スカラー、ベクトル、または行列として指定します。ブロックが[可変時間遅延]モードである場合、この値は時間遅延を指定します。その計算の詳細については、可変時間遅延を参照してください。

依存関係

この端子を有効にするには、[遅延タイプの選択][可変時間遅延]に設定します。

データ型:double

瞬間的な時間遅延入力。スカラー、ベクトル、または行列として指定します。ブロックが[可変伝達遅延]モードである場合、この値を使用して伝達遅延を計算します。その計算の詳細については、可変伝達遅延を参照してください。

依存関係

この端子を有効にするには、[遅延タイプの選択][可変伝達遅延]に設定します。

データ型:double

出力

すべて展開する

スカラー、ベクトルまたは行列として指定される出力信号。

データ型:double

パラメーター

すべて展開する

遅延のタイプを[可変時間遅延]または[可変伝達遅延]に指定します。

このパラメーターの既定値は、次のブロックの実装に依存します。Variable Time Delayブロックの場合[可変時間遅延]、およびVariable Transport Delayブロックの場合[可変伝達遅延]

依存関係

  • このパラメーターを[可変時間遅延]に設定すると[0 遅延を扱う]パラメーターが有効になります。

  • このパラメーターを[可変伝達遅延]に設定すると[絶対許容誤差][状態]パラメーターが有効になります。

プログラムでの使用

ブロック パラメーター:VariableDelayType
型:文字ベクトル、string
:'Variable transport delay'|'Variable time delay'

時間遅延入力の最大値を設定します。この値はこのブロックで受け入れられる時間遅延入力の最大値です。この値を超える値は補正されます。この値を負にすることはできません。時間遅延が負になると、ブロックはそれをゼロとして扱い、警告メッセージを表示します。

プログラムでの使用

ブロック パラメーター:MaximumDelay
型:文字ベクトル、string
値:スカラー | ベクトル
既定の設定:'10'

シミュレーション時間が入力された時間遅延をはじめて超える前に、ブロックが生成する出力を指定します。

依存関係

  • このブロックの初期出力をinfまたはNaNにはできません。

  • 実行ごとに調整可能なパラメーターはシミュレーションの実行中は変更できません。ただし、シミュレーションの開始前に変更しても、アクセラレータまたはラピッド アクセラレータではコードの再生成は行われません。

プログラムでの使用

ブロック パラメーター:InitialOutput
型:文字ベクトル、string
値:スカラー | ベクトル
既定の設定:'0'

格納する入力データ点の数に対応するメモリ割り当ての初期サイズを定義します。入力点は、現在のシミュレーション時間までの入力信号の履歴を定義します。

  • 入力点の数が初期バッファー サイズを超えた場合、ブロックは追加のメモリを割り当てます。

  • シミュレーションの終了後に、バッファーが不十分でさらに多くのメモリの割り当てを行わなければならない場合はメッセージが表示されます。

ヒント

  • メモリの割り当てはシミュレーションを減速させるので、シミュレーション速度が問題になる場合は、このパラメーター値を慎重に選択してください。

  • 時間遅延が長い場合、このブロックは、特にベクトル化した入力に対して大量のメモリを使用する可能性があります。

プログラムでの使用

ブロック パラメーター:MaximumPoints
型:文字ベクトル、string
値:スカラー | ベクトル
既定の設定:'1024'

このチェック ボックスをオンにすると、前のタイム ステップからの入力データを保存するために、固定サイズ バッファーを使用します。このチェック ボックスをオフにすると、ブロックは固定サイズ バッファーを使用しません。

[初期バッファー サイズ]パラメーターは、バッファー サイズを指定します。バッファーがいっぱいの場合、新しいデータによって既にバッファーにあるデータが置き換えられます。Simulink は線形外挿を使ってバッファー内にない出力値を推定します。

メモ

ERT または GRT コード生成は、このチェック ボックスをオンにしない場合でも固定サイズ バッファーを使用します。

ヒント

  • 入力データが線形の場合、このチェック ボックスをオンにするとメモリを節約できます。

  • 入力が非線形の場合は、このチェック ボックスをオンにしないでください。結果が不正確になる可能性があります。

プログラムでの使用

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

このチェック ボックスをオンにすると、このブロックを直達ブロックに変換します。このチェック ボックスをオフにすると、ブロックは直達を使用しません。

依存関係

このパラメーターを有効にするには、[遅延タイプの選択][可変時間遅延]に設定します。

プログラムでの使用

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

このパラメーターをオンにすると、線形化と平衡化を行うとき、ブロックがその入力を出力します。つまり、ブロックを直達モードに設定します。直達を無効にするには、このチェック ボックスをオフにします。

ヒント

  • このチェック ボックスをオンにすると、関数linmod、関数dlinmod、または関数trimの使用時にモデルでの状態配列順序が変わります。この新しい状態配列順序を抽出するには次のようにします。

    1. 次のコマンドを使ってモデルをコンパイルします。modelは Simulink モデルの名前です。

      [sizes, x0, x_str] = model([],[],[],'lincompile');
    2. 次のコマンドを使ってコンパイルを終了します。

      model([],[],[],'term');
  • Simulink モデルの状態の cell 配列である出力引数x_strには、新しい状態配列順序が入ります。状態のベクトルを関数linmod、関数dlinmod、または関数trimに入力として渡すと、状態ベクトルはこの新しい状態配列順序を使用しなければなりません。

プログラムでの使用

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

線形化ルーチンのパデ近似の次数を設定します。

  • 既定値は0です。この場合、動的状態のない単位ゲインが得られます。

  • 次数を正の整数nに設定すると、n個の状態がモデルに追加されますが、伝達遅延のより正確な線形モデルが得られます。

プログラムでの使用

ブロック パラメーター:PadeOrder
型:文字ベクトル、string
値:スカラー
既定の設定:'0'

ブロック状態の計算に使用する絶対許容誤差を指定します。

依存関係

このパラメーターを有効にするには、[遅延タイプの選択][可変伝達遅延]に設定します。

プログラムでの使用

ブロック パラメーター:AbsoluteTolerance
型:文字ベクトル、string
値:'auto'|'-1'| 任意の正の実数のスカラーまたはベクトル
既定の設定:'auto'

各状態に固有名を割り当てます。このフィールドが空白の場合は、名前の割り当ては行われません。

ヒント

  • 単一の状態に名前を割り当てる場合は、'velocity'のように一重引用符で囲んで名前を入力します。

  • 複数の状態に名前を割り当てる場合は、中かっこ内にコンマで区切って入力します。たとえば、{'a', 'b', 'c'}のようにします。各名前は固有でなければなりません。

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

  • 状態の数は状態名の数で割り切れなければなりません。

  • 指定する名前の数は状態の数より少なくできますが、その逆はできません。

    たとえば、4 つの状態を含むシステムで 2 つの名前を指定することは可能です。最初の名前は最初の 2 つの状態に適用され、2 番目の名前は最後の 2 つの状態に適用されます。

  • MATLAB®ワークスペース内の変数を状態名に割り当てる場合は、引用符なしで変数を入力します。変数には文字ベクトル、string、cell 配列、構造体が使用できます。

依存関係

このパラメーターを有効にするには、[遅延タイプの選択][可変伝達遅延]に設定します。

プログラムでの使用

ブロック パラメーター:ContinuousStateAttributes
型:文字ベクトル、string
値:' '| ユーザー定義文字ベクトル、ユーザー定義 string
既定の設定:' '

ブロックの特性

データ型

double

直接フィードスルー

はい

多次元信号

いいえ

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

拡張機能

バージョン履歴

R2007a で導入