Main Content

Discrete-Time Integrator

信号の離散時間積分または累積の実行

  • Discrete-Time Integrator block

ライブラリ:
Simulink / Commonly Used Blocks
Simulink / Discrete
HDL Coder / Discrete
HDL Coder / HDL Floating Point Operations

説明

Discrete-Time Integrator ブロックを Integrator ブロックの代わりに使用して、純粋な離散モデルを作成します。Discrete-Time Integrator ブロックを使用すると、以下のことが可能です。

  • 初期条件をブロック ダイアログ ボックスまたはブロックへの入力で定義する

  • 入力ゲイン (K) の値を定義する

  • ブロックの状態を出力する

  • 積分の上限と下限を定義します。

  • 追加リセット入力を使用した状態のリセット

出力方程式

最初のタイム ステップでは、ブロックの状態は n = 0 であり、[初期条件設定] パラメーターの値に応じて、初期出力 y(0) = IC または初期状態 x(0) = IC のどちらかです。

シミュレーション時間 t(n) のステップ n > 0 では、Simulink® は出力 y(n) を以下のように更新します。

  • 前進オイラー法:

    y(n) = y(n-1) + K*[t(n) - t(n-1)]*u(n-1)
  • 後退オイラー法:

    y(n) = y(n-1) + K*[t(n) - t(n-1)]*u(n)
  • 台形法:

    y(n) = y(n-1) + K*[t(n)-t(n-1)]*[u(n)+u(n-1)]/2

Simulink はブロックの明示的なサンプル時間またはトリガーのサンプル時間に応じて、これらの出力方程式の状態空間表現を自動的に選択します。明示的なサンプル時間を使用する場合、n > 0 のとき、t(n)-t(n-1) はサンプル時間 T に減少します。

積分および累積方法

このブロックは、前進オイラー法、後退オイラー法または台形則を使用して積分または累積を行うことができます。ここで、u は入力、y は出力、x は状態です。Simulink は、与えられたステップ n に対して、y(n)x(n+1) を更新します。積分モードでは、T はブロックのサンプル時間 (トリガー付きサンプル時間の場合は T の差分) です。累積モードでは T = 1 です。ブロックのサンプル時間は出力が計算されるタイミングを決めますが、出力の値は決めません。K はゲイン値です。出力値は上限値または下限値に従って制限されます。

前進オイラー法

前進オイラー法 (既定の設定) は、前進矩形近似または左側近似とも呼ばれます。

1/sT/(z-1) で近似されます。ステップ n でのブロックの出力の式は次のようになります。

x(n+1) = x(n) + K*T*u(n)
y(n)   = x(n)

ブロックは以下のステップで出力を計算します。

Step 0:          y(0)   = IC (clip if necessary)
                 x(1)   = y(0) + K*T*u(0)

Step 1:          y(1)   = x(1)
                 x(2)   = x(1) + K*T*u(1)

Step n:          y(n)   = x(n)
                 x(n+1) = x(n) + K*T*u(n) (clip if necessary)

この手法では、入力端子 1 には直達がありません。

後退オイラー法

後退オイラー法は、後退矩形近似または右側近似とも呼ばれます。

1/sT*z/(z-1) で近似されます。これにより、ステップ n でのブロックの出力の式は、次のようになります。

y(n) = y(n-1) + K*T*u(n).

x(n) = y((n)-1) とします。ブロックは以下のステップで出力を計算します。

  • Triggered Subsystem と Function-call Subsystem のパラメーター [初期条件設定][出力] または [自動] に設定されている場合。

    Step 0:          y(0) = IC (clipped if necessary)
                     x(1) = y(0)
  • Non-Triggered Subsystem のパラメーター [初期条件設定][自動] に設定されている場合。

    Step 0:          x(0)   = IC (clipped if necessary)
                     x(1)   = y(0) = x(0) + K*T*u(0)
    
    Step 1:          y(1)   = x(1) + K*T*u(1)
                     x(2)   = y(1)
    
    Step n:          y(n)   = x(n) + K*T*u(n)
                     x(n+1) = y(n)

この手法では、入力端子 1 には直達があります。

台形則

この手法では、1/sT/2*(z+1)/(z-1) で近似されます。

T が固定の場合 (サンプリング周期に等しい場合)、出力の計算式は次のようになります。

x(n) = y(n-1) + K*T/2*u(n-1)
y(n) = x(n) + K*T/2*u(n)
  • Triggered Subsystem と Function-call Subsystem のパラメーター [初期条件設定][出力] または [自動] に設定されている場合。

    Step 0:          y(0)   = IC (clipped if necessary)
                     x(1)   = y(0) + K*T/2*u(0)
  • Non-Triggered Subsystem のパラメーター [初期条件設定][自動] に設定されている場合。

    Step 0:          x(0)   = IC (clipped if necessary)
                     y(0)   = x(0) + K*T/2*u(0)
                     x(1)   = y(0) + K*T/2*u(0)
    
    Step 1:          y(1)   = x(1) + K*T/2*u(1)
                     x(2)   = y(1) + K*T/2*u(1)
    
    Step n:          y(n)   = x(n) + K*T/2*u(n)
                     x(n+1) = y(n) + K*T/2*u(n)

ここで x(n+1) は次の出力値の最良の推定値です。x(n)y(n) は等しくないことから、状態と同じではありません。

この手法では、入力端子 1 には直達があります。

T が可変の場合

T が可変の場合 (たとえばトリガー時間から得られる場合)、ブロックは次のステップを使用して出力を計算します。

  • Triggered Subsystem と Function-call Subsystem のパラメーター [初期条件設定][出力] または [自動] に設定されている場合。

    Step 0:          y(0)   = IC (clipped if necessary)
                     x(1)   = y(0)
  • Non-Triggered Subsystem のパラメーター [初期条件設定][自動] に設定されている場合。

    Step 0:          x(0)   = IC (clipped if necessary)
                     x(1)   = y(0) = x(0) + K*T/2*u(0)
    
    Step 1:          y(1)   = x(1) + K*T/2*(u(1) + u(0))
                     x(2)   = y(1)
    
    Step n:          y(n)   = x(n) + K*T/2*(u(n) + u(n-1))
                     x(n+1) = y(n)

初期条件の定義

初期条件は、このブロックのダイアログ ボックスでパラメーターとして定義するか、または外部信号から入力できます。

  • ブロック パラメーターとして初期条件を定義するには、[初期条件のソース] パラメーターを [内部] と指定し、値を [初期条件] テキスト ボックスに入力します。

  • 外部ソースから初期条件を与えるには、[初期条件のソース] パラメーターを [外部] に設定します。ブロックに追加の入力端子が表示されます。

状態端子を使用する場合

出力端子ではなく状態端子を使用します。

  • ブロックの出力がリセット端子または初期条件端子を通りブロックにフィードバックされ、代数ループが生じる場合。例については、sldemo_bounce_two_integrators モデルを参照してください。

  • 条件付き実行サブシステムの 1 つから他のサブシステムに状態を渡したい場合。この場合、タイミングの問題が生じることがあります。例については、クラッチ ロックアップ モデルの作成を参照してください。

これらの問題は、出力端子ではなく状態端子を通して状態を渡すことによって解決できます。Simulink は、出力とはわずかに異なる時間に状態を生成し、これらの問題からモデルを保護します。ブロックの状態を出力するには、[端子状態の表示] チェック ボックスをオンにします。状態端子がブロックの上に表示されます。

積分の制限

出力が一定のレベルを超えないようにするには、[出力を制限する] チェック ボックスをオンにして、対応するテキスト ボックスに制限値を入力します。このようにすると、ブロックは制限付きで積分器として機能します。出力が制限値に達すると、積分動作はオフになり、積分飽和現象を回避します。シミュレーション中、制限値を変更できますが、出力が制限されているかどうかは変更できません。次の表は、ブロックによる出力の決定方法を示しています。

積分出力
[飽和の下限] 未満飽和の下限
[飽和の下限][飽和の上限]積分
[飽和の上限] より大きい飽和の上限

積分が制限に達したことを示す信号を生成するには、[飽和端子の表示] チェック ボックスをオンにします。新しい飽和端子はブロック出力端子の下に表示されます。

飽和は、次の 3 つの値のいずれかをもちます。

  • 1 は、積分が上限に達していることを示します。

  • 0 は、積分が制限されないことを示します。

  • -1 は、積分が下限に達していることを示します。

状態のリセット

このブロックは、そのブロックの状態を外部信号に基づいて指定された初期条件にリセットできます。ブロックに状態をリセットさせるには、[外部リセット] パラメーターのいずれかのオプションを選択します。リセット トリガーのタイプを示すリセット端子が表示されます。

リセット端子は直達をもちます。ブロック出力が直達をもつブロックを通じてこの端子にフィードバックされる場合や、直接フィードバックされる場合、代数ループが発生します。このループを解除するには、ブロックの状態端子の出力をリセット端子に接続します。ブロックの状態にアクセスするには、[端子状態の表示] チェック ボックスをオンにします。

トリガー タイプのリセット

[外部リセット] パラメーターによって、リセットをトリガーするリセット信号の属性を決めることができます。トリガー オプションには以下が含まれます。

  • 立ち上がり – リセット信号が立ち上がりエッジをもつ場合、状態をリセットします。たとえば、次の図は立ち上がりリセット トリガーによる後退オイラー積分の効果を示します。

  • 立ち下がり – リセット信号が立ち下がりエッジをもつ場合、状態をリセットします。たとえば、次の図は立ち下がりリセット トリガーによる後退オイラー積分の効果を示します。

  • 両方 – リセット信号が立ち上がりまたは立ち下がりをもつ場合、状態をリセットします。たとえば、次の図はいずれかのリセット トリガーによる後方オイラー積分の効果を示します。

  • レベル – リセット信号が非ゼロである間、出力を初期条件にリセットしてホールドします。たとえば、次の図はレベル リセット トリガーによる後退オイラー積分の効果を示します。

  • サンプル レベル – リセット信号が非ゼロの場合、出力を初期条件にリセットします。たとえば、次の図はサンプル レベル リセット トリガーによる後退オイラー積分の効果を示します。

    [サンプル レベル] リセット オプションは計算量が少ないため、[レベル] リセット オプションよりも効率的です。

    メモ

    Discrete-Time Integrator ブロックでのトリガーの検出は、いずれも正の値をもつ信号に基づいて行われます。たとえば、-1 から 0 に遷移する信号は立ち上がりエッジと見なされませんが、0 から 1 に遷移する信号は立ち上がりエッジと見なされます。

簡易初期化モードの動作

簡易初期化モードは、[コンフィギュレーション パラメーター] ダイアログで [指定不足の初期化の検出][簡易] に設定すると有効になります。簡易初期化モードを使用すると、Discrete-Time Integrator ブロックはクラシック初期化モードとは異なった動作をします。新しい初期化動作はロバスト性が高く、以下の場合は整合性のある動作をします。

  • 代数ループ内

  • イネーブルとディセーブル時

  • トリガー サンプル時間を使用した結果と明示的なサンプル時間を比較する場合。なお、ブロックは明示的なサンプル時間と同じレートでトリガーがかかります。

簡易初期化モードを使用すると、Continuous-Time Integrator ブロックを Discrete-Time Integrator ブロックに変換しやすくなります。これは初期条件が両方のブロックで同じ意味をもつためです。

従来の初期化モードと簡易初期化モードの詳細は、指定不足の初期化の検出を参照してください。

[初期条件設定] を [出力] に設定した場合のイネーブルとディセーブルの動作

Triggered Subsystem と Function-call Subsystem の [初期条件設定][出力] に設定して簡易初期化モードを使用する場合、ブロックのイネーブルとディセーブルの動作は以下のように簡略化されます。

ディセーブル時 td:

 y(td) = y(td-1)

イネーブル時 te:

  • 親サブシステムの制御端子で [イネーブル時の状態]リセット に設定されている場合:

    y(te) = IC.
  • 親サブシステムの制御端子で [イネーブル時の状態]保持 に設定されている場合:

    y(te) = y(td).

    次の図は、この条件を示しています。

反復サブシステム

簡易初期化モードを使用する場合、Discrete-Time Integrator ブロックを反復サブシステム内に置くことはできません。

簡易初期化モードでは、反復サブシステムは経過時間を保持しません。そのため、経過時間を必要とする Discrete-Time Integrator ブロックが反復サブシステムブロック内に置かれた場合、Simulink はエラーを報告します。

Function-Call Subsystem 内の Enabled Subsystem での動作

Discrete-Time Integrator ブロックが含まれる Enabled Subsystem を含む Function-Call Subsystem システムがある場合、次の動作が適用されます。

積分手法関数呼び出しトリガー端子のサンプル時間タイプ Function-Call Subsystem をイネーブルにした後に始めて実行するときの delta T 動作の理由

前進オイラー法

トリガー

t — tstart

Function-Call Subsystem を最初に実行するとき、積分アルゴリズムは tstart を以前のシミュレーション時間として使用します。

後退オイラー法および台形則

トリガー

t — tprevious

Function-Call Subsystem を最初に実行するとき、積分アルゴリズムは tprevious を以前のシミュレーション時間として使用します。

前進オイラー法、後退オイラー法、および台形則

周期的

関数呼び出しジェネレーターのサンプル時間

周期モードでは、Discrete-Time Integrator ブロックは、delta T の関数呼び出しジェネレーターのサンプル時間を使用します。

端子

入力

すべて展開する

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

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

状態の初期条件。有限のスカラー、ベクトルまたは行列として指定します。

依存関係

この端子を有効にするには、[初期条件のソース][外部] に設定します。

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

出力

すべて展開する

入力信号の離散時間積分または累積。スカラー、ベクトルまたは行列として指定します。

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

状態が制限されていることを示す信号。スカラー、ベクトルまたは行列として指定します。信号は、次の 3 つの値のいずれかをもちます。

  • 1 は、上限が適用されていることを示します。

  • 0 は、積分が制限されないことを示します。

  • -1 は、下限が適用されていることを示します。

依存関係

この端子を有効にするには、[飽和端子の表示] チェック ボックスをオンにします。

データ型: single | double | int8

ブロックの状態。スカラー、ベクトルまたは行列として出力します。既定では、ブロックはこの端子をブロック アイコンの上部に追加します。次の場合に状態端子を使用します。

  • ブロックの出力がリセット端子または初期条件端子を通りブロックにフィードバックされ、代数ループが生じる場合。例については、sldemo_bounce_two_integrators モデルを参照してください。

  • 条件付き実行サブシステムの 1 つから他のサブシステムに状態を渡す場合。この場合、タイミングの問題が生じることがあります。例については、sldemo_clutch モデルを参照してください。

詳細については、状態端子を使用する場合を参照してください。

依存関係

この端子を有効にするには、[状態端子の表示] チェック ボックスをオンにします。

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

パラメーター

すべて展開する

メイン

積分または累積手法を指定します。詳細については、出力方程式および積分および累積方法を参照してください。

プログラムでの使用

ブロック パラメーター: IntegratorMethod
型: 文字ベクトル
値: 'Integration: Forward Euler' | 'Integration: Backward Euler' | 'Integration: Trapezoidal' | 'Accumulation: Forward Euler' | 'Accumulation: Backward Euler' | 'Accumulation: Trapezoidal'
既定の設定: 'Integration: Forward Euler'

積分器の入力の乗算に使用するスカラー、ベクトル、または行列を指定します。ゲインの各要素は、正の実数でなければなりません。

  • 1.0 (既定の設定) 以外の値を指定することは、信号を Gain ブロックを積分器の入力に接続することと意味的に等価です。

  • 有効なエントリを以下に示します。

    • double(1.0)

    • single(1.0)

    • [1.1 2.2 3.3 4.4]

    • [1.1 2.2; 3.3 4.4]

ヒント

このパラメーターで入力ゲインを指定すると、生成コードに乗算演算が反映されません。ただし、この利点を利用するには、このパラメーターの値が変更されないようにしなければなりません。入力ゲインを調整したい場合は、このパラメーターを 1.0 に設定し、外部 Gain ブロックを使用して入力ゲインを指定します。

プログラムでの使用

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

状態を初期条件にリセットするトリガー イベントのタイプを選択します。

  • なし — 状態を初期状態にリセットしません。

  • 立ち上がり – リセット信号が立ち上がりエッジをもつ場合、状態をリセットします。

  • 立ち下がり – リセット信号が立ち下がりエッジをもつ場合、状態をリセットします。

  • 両方 – リセット信号が立ち上がりまたは立ち下がりをもつ場合、状態をリセットします。

  • レベル – リセット信号が非ゼロである間、出力を初期条件にリセットしてホールドします。

  • サンプル レベル – リセット信号が非ゼロの場合、出力を初期条件にリセットします。

詳細については、状態のリセットおよびトリガー タイプのリセットを参照してください。

プログラムでの使用

ブロック パラメーター: ExternalReset
型: 文字ベクトル
値: 'none' | 'rising' | 'falling' | 'either' | 'level' | 'sampled level'
既定の設定: 'none'

初期条件のソースを選択します。

  • 内部[初期条件] パラメーターから状態の初期条件を取得します。

  • 外部 — 外部信号から状態の初期条件を取得します。このオプションを選択すると、ブロックに入力端子が表示されます。

プログラムでの使用

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

ブロックの状態の初期条件を指定します。最小値および最大値は、[出力の最小値] および [出力の最大値] ブロック パラメーターで制限されます。

ヒント

Simulink ソフトウェアでは、このブロックの初期状態を、inf または NaN にすることはできません。

依存関係

このパラメーターを有効にするには、[初期条件のソース][内部] に設定します。

プログラムでの使用

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

[初期条件] パラメーターの値をブロックの状態またはブロックの出力のどちらに適用するかを選択します。初期条件もリセット値です。

  • 自動 — ブロックは [初期条件] パラメーターを適用する場所を選択します。

    • ブロックが Non-Triggered Subsystem であり、[積分手法] がいずれかの積分手法に設定されている場合、初期条件を設定します。

      x(0) = IC

      リセット時:

      x(n) = IC

    • ブロックが Triggered Subsystem または Function-Call Subsystem であり、[積分手法] がいずれかの積分手法に設定されている場合、初期条件を [出力] が選択されたかのように設定します。

  • 出力[積分手法] がいずれかの積分手法に設定されている場合、ブロックが Triggered Subsystem または Function-Call Subsystem にある場合はこのオプションを使用します。

    初期条件を設定します。

    y(0) = IC

    リセット時:

    y(n) = IC

  • 互換性 — このオプションは下位互換性を維持するために用意されています。このオプションは Simulink モデル内にある Discrete-Time Integrator ブロックでは選択できませんが、ライブラリ内にある Discrete-Time Integrator ブロックで選択できます。このオプションは R2014a よりも前に作成された Simulink モデルとの互換性を維持するために使用します。

    R2014a よりも前は、[自動][状態のみ (最も効率的)] というオプションでした。[出力][状態と出力] というオプションでした。[互換性] オプションを指定したブロックの動作は次のようになります。

    • [指定不足の初期化の検出][クラシック] に設定されている場合、[初期条件設定] パラメーターは [自動] として動作します。

    • [指定不足の初期化の検出][簡易] に設定されている場合、[初期条件設定] パラメーターは [出力] として動作します。

メモ

このパラメーターは、R2014aよりも前の Simulink の [初期値として初期条件を使用し、次の値をリセット] に相当します。

プログラムでの使用

ブロック パラメーター: InitialConditionSetting
型: 文字ベクトル
値: 'Auto' | 'Output' | 'Compatibility'
既定の設定: 'Auto'

ステップ間の離散時間間隔を入力します。

既定では、ブロックは離散サンプル時間に 1 を使用します。異なるサンプル時間を設定するには、0.1 など別の離散値を入力します。

詳細については、サンプル時間の指定を参照してください。

ヒント

  • サンプル時間として 0 を指定しないようにしてください。0 値を指定すると、Discrete-Time Integrator ブロックでサポートされていない連続したサンプル時間が指定されます。

  • サンプル時間 inf または NaN は、離散値ではないので指定しないでください。

  • -1 を指定して上流のブロックからサンプル時間を継承する場合は、上流ブロックで離散サンプル時間が使用されていることを確認してください。たとえば、Discrete-Time Integrator ブロックは、サンプル時間 0 を継承できません。

プログラムでの使用

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

ブロックの出力が [飽和の下限] パラメーターと [飽和の上限] パラメーターの間の値に制限されます。

  • このチェック ボックスをオンにすると、ブロックの出力が [飽和の下限] パラメーターと [飽和の上限] パラメーターの間の値に制限されます。

  • このチェック ボックスをオフにするとブロックの出力値は制限されません。

依存関係

このパラメーターを選択すると、[飽和の下限] パラメーターと [飽和の上限] パラメーターが有効になります。

プログラムでの使用

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

積分の上限をスカラー、ベクトル、または行列として指定します。[出力の最小値] パラメーター値と [出力の最大値] パラメーター値の間の値を指定しなければなりません。

依存関係

このパラメーターを有効にするには、[出力を制限する] チェック ボックスをオンにします。

プログラムでの使用

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

積分の下限をスカラー、ベクトル、または行列として指定します。[出力の最小値] パラメーター値と [出力の最大値] パラメーター値の間の値を指定しなければなりません。

依存関係

このパラメーターを有効にするには、[出力を制限する] チェック ボックスをオンにします。

プログラムでの使用

ブロック パラメーター: LowerSaturationLimit
型: 文字ベクトル、string
値: スカラー | ベクトル | 行列
既定の設定: '-inf'

このチェック ボックスをオンにして、ブロックに飽和出力端子を追加します。このチェック ボックスをオフにすると、ブロックは飽和出力端子をもちません。

依存関係

このパラメーターを選択すると、飽和出力端子が有効になります。

プログラムでの使用

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

このチェック ボックスをオンにして、ブロックに状態出力端子を追加します。このチェック ボックスをオフにすると、ブロックは状態出力端子をもちません。

依存関係

このパラメーターを選択すると、状態出力端子が有効になります。

プログラムでの使用

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

このチェック ボックスをオンにすると、Simulink の線形化のコマンドが、ブロックのリセットと出力制限のオプションの設定にかかわらず、ブロックのリセットを無効にし、出力制限を無視します。

ヒント

リセットと制限を無視すると、操作点のまわりでモデルを線形化できます。この操作点で積分がリセットまたは飽和する場合があります。

プログラムでの使用

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

Signal Attributes

Simulink がチェックする出力範囲の下限値。

Simulink は、最小値を使って以下を行います。

メモ

[出力の最小値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: OutMin
: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

Simulink がチェックする出力範囲の上限値。

Simulink は、最大値を使って以下を行います。

メモ

[出力の最大値] により、実際の出力信号が飽和する (またはクリップされる) ことはありません。代わりに、Saturation ブロックを使用してください。

プログラムでの使用

ブロック パラメーター: OutMax
: 文字ベクトル
: '[ ]'| スカラー
既定の設定: '[ ]'

出力のデータ型を選択します。型は継承されるか、直接指定されるか、Simulink.NumericType などのデータ型オブジェクトとして表現されます。詳細については、信号のデータ型の制御を参照してください。

継承オプションを選択すると、ブロックは次のように動作します。

  • 継承: 内部ルールによる継承 — Simulink は、組み込みターゲット ハードウェアのプロパティを考慮しつつ、数値の精度、パフォーマンス、および生成コードのサイズのバランスが取れるように、データ型を選択します。組み込みターゲット ハードウェアの設定を変更すると、内部ルールにより選択されるデータ型が変更される可能性があります。たとえば、ブロックが int8 型の入力に int16 のゲインを乗算し、ターゲット ハードウェア タイプとして [ASIC/FPGA] が指定されている場合、出力データ型は sfix24 です。ターゲット ハードウェアとして [Unspecified (assume 32-bit Generic)] (汎用 32 ビット マイクロプロセッサ) が指定された場合、出力データ型は int32 です。ターゲット マイクロプロセッサによって指定される語長では出力範囲に対応できない場合、Simulink は診断ビューアーにエラーを表示します。

    コードの効率と数値の精度が、ソフトウェアにより同時に最適化されるとは限りません。内部ルールが、数値精度またはパフォーマンスに対する要求を満たさない場合は、以下のいずれかを行ってください。

    • 出力データ型を明示的に指定する。

    • 単に [継承: 入力と同じ] を選択します。

    • fixdt(1,32,16) のように既定のデータ型を明示的に指定し、固定小数点ツールを使用してモデルにデータ型を推奨する。詳細については、fxptdlg (Fixed-Point Designer) を参照してください。

    • 独自の継承ルールを指定するには、[継承: 逆伝播による継承] を使用し、Data Type Propagation ブロックを使用します。このブロックの使い方の例については、Signal Attributes ライブラリの Data Type Propagation Examples ブロックを参照してください。

  • 継承: 逆伝播による継承 — 駆動ブロックのデータ型を使用します。

プログラムでの使用

ブロック パラメーター: OutDataTypeStr
: 文字ベクトル
: 'Inherit: Inherit via internal rule | 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'fixdt(1,16)' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)' | '<data type expression>'
既定の設定: 'Inherit: Inherit via internal rule'

固定小数点ツールが、ブロックに指定した [出力] データ型をオーバーライドしないようにするには、このパラメーターを選択します。詳細については、[出力データ型の設定をロックする] の使用 (Fixed-Point Designer)を参照してください。

プログラムでの使用

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

次のいずれかの丸めモードを選択します。

正方向

正の無限大方向に正負の値を丸めます。MATLAB® 関数 ceil と等価です。

最も近い偶数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、最も近い偶数の整数に丸めます。Fixed-Point Designer™ 関数 convergent と等価です。

負方向

負の無限大方向に正負の値を丸めます。MATLAB 関数 floor と等価です。

最も近い正の整数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、正の無限大方向に丸めます。Fixed-Point Designer 関数 nearest と等価です。

最も近い整数方向

最も近い表現可能な値に数値を丸めます。同順位が発生した場合は、正の数値を正の無限大方向、負の数値を負の無限大方向に丸めます。Fixed-Point Designer 関数 round と等価です。

最も簡潔

下限値への丸めとゼロへの丸めのいずれかを自動的に選択し、できるだけ効率の高い丸めコードを生成します。

ゼロ方向

ゼロ方向に数値を丸めます。MATLAB 関数 fix と等価です。

プログラムでの使用

ブロック パラメーター: RndMeth
: 文字ベクトル
: 'Ceiling' | 'Convergent' | 'Floor' | 'Nearest' | 'Round' | 'Simplest' | 'Zero'
既定の設定: 'Floor'

参考

詳細については、丸め (Fixed-Point Designer)を参照してください。

オーバーフローで飽和するかラップするかを指定します。

  • off — オーバーフローは、データ型によって表現される適切な値にラップされます。

    たとえば、数 130 は符号付き 8 ビット整数 1 つに収まりきらないので、-126 にラップされます。

  • on — オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。

    たとえば、符号付き 8 ビット整数に関連付けられたオーバーフローは、-128 または 127 に飽和することができます。

ヒント

  • モデルでオーバーフローが発生する可能性があり、生成コードに飽和保護を明示的に組み込む必要があるときには、このチェック ボックスをオンにすることを検討してください。

  • 生成コードの効率を最適化する場合には、このチェック ボックスをオフにすることを検討してください。

    このチェック ボックスをオフにすると、ブロックが範囲外の信号を処理する方法を指定しすぎないようにする点でも役立ちます。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。

  • このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。

  • 通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。

プログラムでの使用

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

指定するデータのカテゴリを選択します。

  • 継承 — データ型の規則の継承。Inherit を選択すると、右側から 2 番目のメニュー/テキスト ボックスが有効になり、そこで継承モードを選択できます。

  • 組み込み — 組み込みデータ型を指定します。Built in を選択すると、右側から 2 番目のメニュー/テキスト ボックスが有効になり、そこで組み込みデータ型を選択できます。

  • 固定小数点 — 固定小数点データ型。[固定小数点] を選択すると、固定小数点データ型を指定するために使用できる追加のパラメーターが有効になります。

  • — 評価結果がデータ型となる式。[] を選択すると、右側から 2 番目のメニュー/テキスト ボックスが有効になります。そこに式を入力することができます。

詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

依存関係

このパラメーターを有効にするには、[データ型アシスタントを表示] ボタンをクリックします。

この信号のデータ型オーバーライド モードを選択します。

  • [継承] を選択すると、Simulink はコンテキストからデータ型オーバーライド設定を継承します。コンテキストとはブロックのことで、信号を使用している Simulink の Simulink.Signal オブジェクトまたは Stateflow® チャートです。

  • [オフ] を選択すると、Simulink はコンテキストのデータ型オーバーライド設定を無視し、信号に対して指定された固定小数点データ型を使用します。

詳細については、Simulink ドキュメンテーションのデータ型アシスタントを利用したデータ型の指定を参照してください。

依存関係

このパラメーターを有効にするには、[モード][組み込み] または [固定小数点] に設定します。

ヒント

個々のデータ型に対してデータ型オーバーライドをオフにする機能により、データ型オーバーライドを適用する際に、モデル内のデータ型をさらに効果的に制御できます。たとえば、このオプションを使用すると、データ型オーバーライド設定にかかわらず、データ型が下流ブロックの要件を満たすことを確認できます。

固定小数点データを符号付きにするか、符号なしにするかを指定します。符号付きデータでは正の値と負の値を表現できますが、符号なしデータでは正の値のみを表現できます。詳細については、固定小数点データ型の指定を参照してください。

依存関係

このパラメーターを有効にするには、[モード][固定小数点] に設定します。

量子化された整数をもつ語のビット サイズを指定します。詳細については、固定小数点データ型の指定を参照してください。

依存関係

このパラメーターを有効にするには、[モード][固定小数点] に設定します。

オーバーフローを避け、量子化誤差を最小限に抑えるための固定小数点データのスケーリング方法を指定します。詳細については、固定小数点データ型の指定を参照してください。

依存関係

このパラメーターを有効にするには、[モード][固定小数点] に設定します。

固定小数点データ型の小数部の長さを正または負の整数として指定します。詳細については、固定小数点データ型の指定を参照してください。

依存関係

このパラメーターを有効にするには、[スケーリング][2 進小数点] に設定します。

固定小数点データ型の勾配を指定します。詳細については、固定小数点データ型の指定を参照してください。

依存関係

このパラメーターを有効にするには、[スケーリング][勾配とバイアス] に設定します。

固定小数点データ型のバイアスを任意の実数として指定します。詳細については、固定小数点データ型の指定を参照してください。

依存関係

このパラメーターを有効にするには、[スケーリング][勾配とバイアス] に設定します。

状態属性

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

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

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

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

依存関係

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

プログラムでの使用

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

状態名を信号オブジェクトに関連付ける必要があるかどうかを指定します。選択した場合、信号オブジェクトの名前に一致しない状態名を指定すると実行時にエラーが生成されます。

このパラメーターを選択すると、[コード生成ストレージ クラス] パラメーターが無効になります。

依存関係

[状態名] パラメーターに値を指定し、[信号の関連付け] モデル コンフィギュレーション パラメーターを [なし] 以外の値に設定した場合に有効になります。

プログラムでの使用

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

ブロックの特性

データ型

double | fixed point | integer | single

直達

はい

多次元信号

いいえ

可変サイズの信号

いいえ

ゼロクロッシング検出

いいえ

拡張機能

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

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

バージョン履歴

R2006a より前に導入