ドキュメンテーション

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

Discrete-Time Integrator

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

ライブラリ

Discrete

説明

Discrete-Time Integrator ブロックの機能

Discrete-Time Integrator ブロックを Integrator ブロックの代わりに使用すると、純粋な離散システムを作成することができます。Discrete-Time Integrator ブロックを使用すると、以下のことが可能です。

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

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

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

  • 積分の上限と下限を定義する

  • 追加のリセット入力に応じて状態をリセットする

出力方程式

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

シミュレーション時間 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) とします。ブロックは以下のステップで出力を計算します。

    [初期条件設定] パラメーターが [出力] に設定されている場合:

    Step 0:			y(0)  = IC (clipped if necessary)
    			x(1)   = y(0)

    [初期条件設定] パラメーターが [状態 (最も効率的)] に設定されている場合:

    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/s は次のように近似されます。

    T/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)

    [初期条件設定] パラメーターが [出力] に設定されている場合:

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

    [初期条件設定] パラメーターが [状態 (最も効率的)] に設定されている場合:

    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) は等しくないことから、状態と同じではありません。

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

    [初期条件設定] パラメーターが [出力] に設定されている場合:

    Step 0:			y(0) = IC (clipped if necessary)
    			x(1)   = y(0)

    [初期条件設定] パラメーターが [状態 (最も効率的)] に設定されている場合:

    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) + T/2*(u(1) + u(0))
    			x(2)   = y(1)
    
    Step n:			y(n)   = x(n) + T/2*(u(n) + u(n-1))
    			x(n+1) = y(n)

    この手法では、入力端子 1 は直接フィードスルーをもちません。

初期条件の定義

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

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

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

状態端子を使用する場合

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

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

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

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

積分の制限

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

積分出力
[飽和の下限] 以下で入力が負[飽和の下限]
[飽和の下限][飽和の上限]積分
[飽和の上限] 以下で入力が正[飽和の上限]

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

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

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

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

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

状態のリセット

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

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

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

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

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

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

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

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

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

      メモ:    計算量は [サンプル レベル] リセット オプションの方が少ないため、[レベル] リセット オプションよりも効率的です。ただし、[サンプル レベル] リセット オプションは、積分が再開するとき不連続を入力することがあります。

簡易初期化モードを使用するときの動作

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

  • 代数ループ内

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

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

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

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

簡易初期化モードのイネーブルとディセーブルの動作

簡易初期化モードを使用する場合、ブロックのイネーブルとディセーブルの動作は以下のように簡略化されます。

ディセーブル時 td:

 y(td) = y(td-1)

イネーブル時 te:

  • [初期条件設定][出力] に設定されていて、親サブシステムがイネーブル時にリセットされた場合:

    y(te) = IC
  • [初期条件設定][状態 (最も効率的)] に設定されていて、親サブシステムがイネーブル時にリセットされた場合:

    x(te) = IC
  • それ以外の場合 (次の図を参照):

    y(te) = y(td)

Iterator Subsystem

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

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

Triggered Subsystem と Function-Call Subsystem

次のすべての条件に該当する場合、Simulink でモデル シミュレーションがサポートされません。

  • Discrete-Time Integrator ブロックが Triggered Subsystem 内または Function-Call Subsystem 内に置かれている。

  • ブロックの [初期条件設定] パラメーターが [状態 (最も効率的)] に設定されている。

  • 簡易初期化モードが有効になっている。

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 の関数呼び出しジェネレーターのサンプル時間を使用します。

サポートするデータ型

Discrete-Time Integrator ブロックは次のデータ型の実数信号を受け入れます。

  • 浮動小数点

  • 組み込み整数

  • 固定小数点

詳細は、Simulink ドキュメンテーションの「 Simulink でサポートされているデータ型」を参照してください。

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

シミュレーション時、このブロックは次の値を使用します。

  • 状態名が関係付けられる信号オブジェクトの初期値

  • 信号オブジェクトの最大値最小値

詳細は、Simulink Coder™ のドキュメンテーションの「状態」を参照してください。

データ型アシスタントを表示

[データ型アシスタント] を表示します。

設定

[データ型アシスタント] を使用すると、[出力データ型] パラメーターを設定できます。

詳細は、「ブロックの出力データ型の指定」を参照してください。

積分手法

積分または累積手法を指定します。

設定

既定の設定: [積分: 前進オイラー法]

[積分: 前進オイラー法]

積分手法は前進オイラー法です。

[積分: 後退オイラー法]

積分手法は後退オイラー法です。

[積分: 台形則]

積分手法は台形則です。

[累積: 前進オイラー法]

累積手法は前進オイラー法です。

[累積: 後退オイラー法]

累積手法は後退オイラー法です。

[累積: 台形則]

累積手法は台形則です。

コマンド ライン情報

パラメーター: IntegratorMethod
タイプ: 文字列
値: 'Integration: Forward Euler' | 'Integration: Backward Euler' | 'Integration: Trapezoidal' | 'Accumulation: Forward Euler' | 'Accumulation: Backward Euler' | 'Accumulation: Trapezoidal'
既定の設定: 'Integration: Forward Euler'

ゲイン値

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

設定

既定の設定: 1.0

  • 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]

  • このパラメーターで入力ゲインを指定すると、生成コードに乗算演算が反映されません。ただし、この利点を利用するには、このパラメーターの値が変更されないようにしなければなりません。このパラメーターが [モデル コンフィギュレーション パラメーター] ダイアログ ボックスで調整可能と宣言された場合、Simulink Coder でのコード生成時に警告が生成されます。入力ゲインを調整したい場合は、このパラメーターを 1.0 に設定し、外部 Gain ブロックを使用して入力ゲインを指定します。

コマンド ライン情報

パラメーター: gainval
タイプ: 文字列
値: '1.0'
既定の設定: '1.0'

外部リセット

リセット信号でトリガー イベントが発生したときに、状態を初期条件にリセットします。

設定

既定の設定: [なし]

[なし]

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

[立ち上がり]

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

[立ち下がり]

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

[両方]

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

[レベル]

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

[サンプル レベル]

リセット信号が非ゼロのとき、出力を初期条件にリセットします。

コマンド ライン情報

パラメーター: ExternalReset
タイプ: 文字列
値: 'none' | 'rising' | 'falling' | 'either' | 'level' | 'sampled level'
既定の設定: 'none'

初期条件のソース

状態の初期条件を取得します。

設定

既定の設定: [内部]

[内部]

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

[外部]

外部ブロックから状態の初期条件を取得します。

ヒント

このブロックの初期状態を、inf または NaN にすることはできません。

依存関係

[内部] を選択すると、[初期条件] パラメーターが有効になります。

[外部] を選択すると、[初期条件] パラメーターが無効になります。

コマンド ライン情報

パラメーター: InitialConditionSource
タイプ: 文字列
値: 'internal' | 'external'
既定の設定: 'internal'

初期条件

状態の初期条件を指定します。

設定

既定の設定: 0

最小値: [出力の最小値] パラメーターの値

最大値: [出力の最大値] パラメーターの値

ヒント

このブロックの初期状態を、inf または NaN にすることはできません。

依存関係

[初期条件のソース][内部] に設定すると、このパラメーターが有効になります。

[初期条件のソース][外部] に設定すると、このパラメーターが無効になります。

コマンド ライン情報

パラメーター: InitialCondition
タイプ: スカラーまたはベクトル
値: '0'
既定の設定: '0'

初期条件設定

[初期条件] パラメーターをブロックの状態または出力のどちらに適用するかを指定します。この初期条件はリセット値としても使用されます。このパラメーターは、R2014aよりも前の Simulink の [初期値として初期条件を使用し、次の値をリセット] に相当します。

設定

既定の設定: 出力

状態 (最も効率的)

次の初期条件を設定します。

x(0) = IC

リセット時:

x(n) = IC

出力

次の初期条件を設定します。

y(0) = IC

リセット時:

y(n) = IC

互換性

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

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

  • [コンフィギュレーション パラメーター][診断][データ有効性][指定不足の初期化の検出][クラシック] に設定されている場合、[初期条件設定] パラメーターは [状態 (最も効率的)] として動作します。

  • [コンフィギュレーション パラメーター][診断][データ有効性][指定不足の初期化の検出][簡易] に設定されている場合、[初期条件設定] パラメーターは [出力] として動作します。

コマンド ライン情報

パラメーター: InitialConditionSetting
タイプ: 文字列
値: 'State (most efficient)' | 'Output' | 'Compatibilty'
既定の設定: 'Output'

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

サンプル時間のヒット間の離散間隔を入力します。

設定

既定の設定: 1

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

詳細は、オンライン ドキュメンテーションの「 サンプル時間の指定」を参照してください。

ヒント

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

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

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

コマンド ライン情報

パラメーター: SampleTime
タイプ: 文字列
値: '1'
既定の設定: '1'

出力を制限する

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

設定

既定の設定: オフ

オン

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

オフ

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

依存関係

このパラメーターは [飽和の上限] を有効にします。

このパラメーターは [飽和の下限] を有効にします。

コマンド ライン情報

パラメーター: LimitOutput
タイプ: 文字列
値: 'off' | 'on'
既定の設定: 'off'

飽和の上限

積分の上限を指定します。

設定

既定の設定: inf

最小値: [出力の最小値] パラメーターの値

最大値: [出力の最大値] パラメーターの値

依存関係

[出力を制限する] によって、このパラメーターが有効になります。

コマンド ライン情報

パラメーター: UpperSaturationLimit
タイプ: スカラーまたはベクトル
値: 'inf'
既定の設定: 'inf'

飽和の下限

積分の下限を指定します。

設定

既定の設定: -inf

最小値: [出力の最小値] パラメーターの値

最大値: [出力の最大値] パラメーターの値

依存関係

[出力を制限する] によって、このパラメーターが有効になります。

コマンド ライン情報

パラメーター: LowerSaturationLimit
タイプ: スカラーまたはベクトル
値: '-inf'
既定の設定: '-inf'

飽和端子の表示

ブロックに飽和出力端子が追加されます。

設定

既定の設定: オフ

オン

ブロックに飽和出力端子が追加されます。

オフ

ブロックに飽和出力端子が追加されません。

コマンド ライン情報

パラメーター: ShowSaturationPort
タイプ: 文字列
値: 'off' | 'on'
既定の設定: 'off'

状態端子の表示

ブロックにブロックの状態の出力端子を追加します。

設定

既定の設定: オフ

オン

ブロックにブロックの状態の出力端子を追加します。

オフ

ブロックにブロックの状態の出力端子を追加しません。

コマンド ライン情報

パラメーター: ShowStatePort
タイプ: 文字列
値: 'off' | 'on'
既定の設定: 'off'

線形化時に出力制限とリセットの設定を無視

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

設定

既定の設定: オフ

[オン]

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

[オフ]

Simulink の線形化のコマンドは、ブロックのリセットと出力制限のオプションの設定に応じて、リセットや出力制限を適用します。

ヒント

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

コマンド ライン情報

パラメーター: IgnoreLimit
タイプ: 文字列
値: 'off' | 'on'
既定の設定: 'off'

固定小数点ツールによる変更に対して出力データ型の設定をロックする

固定小数点ツールや固定小数点アドバイザーによる変更を避けるために、このブロックの出力データ型の設定をロックします。

設定

既定の設定: オフ

オン

このブロックの出力データ型設定をロックします。

オフ

固定小数点ツールや固定小数点アドバイザーがこのブロックの出力データ型の設定を変更できます。

コマンド ライン情報

パラメーター: 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 ドキュメンテーション「丸め」を参照してください。

整数オーバーフローで飽和

オーバーフローで飽和するかどうかを指定します。

設定

既定の設定: オフ

オン

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

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

オフ

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

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

ヒント

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

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

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

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

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

コマンド ライン情報

パラメーター: SaturateOnIntegerOverflow
タイプ: 文字列
値: 'off' | 'on'
既定の設定: 'off'

状態名

各状態に固有名を割り当てるにはこのパラメーターを使用します。

設定

既定の設定: ' '

  • 空白のままの場合、状態名は割り当てられません。

ヒント

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

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

依存関係

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

詳細は、Simulink Coder ドキュメンテーションの「状態」を参照してください。

コマンド ライン情報

パラメーター: StateIdentifier
タイプ: 文字列
値: ' '
既定の設定: ' '

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

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

設定

既定の設定: オフ

[オン]

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

[オフ]

状態名を Simulink の信号オブジェクトに関連付けません。

依存関係

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

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

コマンド ライン情報

パラメーター: StateMustResolveToSignalObject
タイプ: 文字列
値: 'off' | 'on'
既定の設定: 'off'

パッケージ

適用するカスタム ストレージ クラスを定義するパッケージを選択します。

設定

既定の設定: ---None---

---なし---

内部ストレージ クラスの属性を設定します。

mpt

組み込みの mpt パッケージを適用します。

Simulink

組み込みの Simulink パッケージを適用します。

依存関係

自分自身のパッケージを定義している場合は、[更新] をクリックします。この操作によりパッケージ リストへの検索パスにすべてのユーザー定義パッケージを追加します。

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

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

設定

既定の設定: [Auto]

[Auto]

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

[ExportedGlobal]

状態はグローバル変数に格納されます。

[ImportedExtern]

model_private.h は、状態を外部変数として宣言します。

[ImportedExternPointer]

model_private.h は、状態を外部ポインターとして宣言します。

依存関係

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

このパラメーターを [ExportedGlobal][ImportedExtern]、または [ImportedExternPointer] に設定すると、[コード生成ストレージ型修飾子] が有効になります。

コマンド ライン情報

コマンド ライン情報

パラメーター: StateStorageClass
タイプ: 文字列
値: 'Auto' | 'ExportedGlobal' | 'ImportedExtern' | 'ImportedExternPointer'
既定の設定: 'Auto'

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

状態に対してカスタム ストレージ クラスを選択します。

設定

既定の設定: [自動]

[自動]

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

[SimulinkGlobal]

model_P は、ワークスペース内の対応する値に状態を初期化します。

[ExportedGlobal]

状態はグローバル変数に格納されます。

[ImportedExtern]

model_private.h は、状態を外部変数として宣言します。

[ImportedExternPointer]

model_private.h は、状態を外部ポインターとして宣言します。

既定の設定

編集不可能なプレースホルダ ストレージ クラスが作成されています。

BitField

struct 宣言は Boolean データを組み込むように作成されています。

Volatile

Volatile 型修飾子は状態宣言に使用されます。

ExportToFile

グローバル変数宣言を含むヘッダー (.h) ファイルは、ユーザー指定の名前で生成されます。

ImportFromFile

グローバル変数宣言を含む事前定義されたヘッダー (.h) ファイルが含まれています。

FileScope

状態宣言の前に静的な修飾子が生成され、状態を現在のファイルだけに表示できるようにします。

Struct

struct 宣言は、パラメーターまたは信号オブジェクト データをカプセル化するために作成されます。

StructVolatile

Volatile 型修飾子は struct 宣言に使用されます。

GetSet

メモリの読み取りと書き込みを行う特殊な関数呼び出しをサポートします。

依存関係

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

有効なストレージ クラスのリストは [パッケージ] の選択によって異なります。

このパラメーターを [ExportedGlobal][ImportedExtern]、または [ImportedExternPointer] に設定すると、[コード生成ストレージ型修飾子] が有効になります。

参考

Simulink Coder ドキュメンテーションの「状態のストレージ クラス」

コード生成ストレージ型修飾子

Simulink Coder ストレージ型修飾子を指定します。

設定

既定の設定: ' '

空白のままの場合、修飾子は割り当てられません。

依存関係

[コード生成ストレージ クラス][ExportedGlobal][ImportedExtern]、または [ImportedExternPointer] に設定すると、このパラメーターが有効になります。

コマンド ライン情報

パラメーター: RTWStateStorageTypeQualifier
タイプ: 文字列
値: ' '
既定の設定: ' '

出力の最小値

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

設定

既定の設定: [] (指定なし)

有限で実数の double のスカラー値としてこの値を指定します。

    メモ:    このブロックのデータ型としてバス オブジェクトを指定した場合、ブロックのバス データの最小値を設定しないでください。Simulink によりこの設定は無視されます。代わりに、データ型として指定したバス オブジェクトのバス要素の最小値を設定してください。バス要素の最小値パラメーターの詳細は、Simulink.BusElement を参照してください。

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

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

コマンド ライン情報

パラメーター: OutMin
タイプ: 文字列
値: '[ ]'
既定の設定: '[ ]'

出力の最大値

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

設定

既定の設定: [] (指定なし)

有限で実数の double のスカラー値としてこの値を指定します。

    メモ:    このブロックのデータ型としてバス オブジェクトを指定した場合、ブロックのバス データの最大値を設定しないでください。Simulink によりこの設定は無視されます。代わりに、データ型として指定したバス オブジェクトのバス要素の最大値を設定します。バス要素の最大値パラメーターの詳細は、Simulink.BusElement を参照してください。

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

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

コマンド ライン情報

パラメーター: OutMax
タイプ: 文字列
値: '[ ]'
既定の設定: '[ ]'

出力データ型

出力データ型を指定します。

設定

既定の設定: [継承: 内部ルールによる継承

継承: 内部ルールによる継承

Simulink は、組み込みターゲット ハードウェアのプロパティを考慮しつつ、数値の精度、パフォーマンス、生成コードのサイズのバランスが取れるように、データ型を選択します。組み込みターゲット ハードウェアの設定を変更すると、内部ルールにより選択されるデータ型が変更される可能性があります。コードの効率と数値の精度が、ソフトウェアにより同時に最適化されるとは限りません。内部ルールが、数値精度またはパフォーマンスに対する要求を満たさない場合は、以下のいずれかを行ってください。

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

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

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

継承: 逆伝播による継承]

駆動ブロックのデータ型を使用します。

[double]

出力データ型は double です。

[single]

出力データ型は single です。

[int8]

出力データ型は int8 です。

[uint8]

出力データ型は uint8 です。

[int16]

出力データ型は int16 です。

[uint16]

出力データ型は uint16 です。

[int32]

出力データ型は int32 です。

[uint32]

出力データ型は uint32 です。

[fixdt(1,16,0)]

出力データ型は固定小数点 fixdt(1,16,0) です。

[fixdt(1,16,2^0,0)]

出力データ型は固定小数点 fixdt(1,16,2^0,0) です。

[<data type expression>]

データ型オブジェクトを使用します。たとえば、Simulink.NumericType などです。

コマンド ライン情報

パラメーター: OutDataTypeStr
タイプ: 文字列
値: 'Inherit: Inherit via internal rule' | 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'
既定の設定: 'Inherit: Inherit via internal rule'

参考

詳細は、「ブロックの出力データ型の指定」を参照してください。

モード

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

設定

既定の設定: [継承]

[継承]

データ型の規則の継承。[継承] を選択すると、右側にある 2 番目のメニュー/テキスト ボックスが有効になります。次の選択肢からいずれかを選択します。

  • [内部ルールによる継承] (既定の設定)

  • 逆伝播による継承

組み込み

組み込みのデータ型。[組み込み] を選択すると、右側にある 2 番目のメニュー/テキスト ボックスが有効になります。次の選択肢からいずれかを選択します。

  • double (既定の設定)

  • single

  • int8

  • uint8

  • int16

  • uint16

  • int32

  • uint32

固定小数点

固定小数点データ型。

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

依存関係

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

コマンド ライン情報

パラメーター: OutDataTypeStr
タイプ: 文字列
値: 'Inherit: Inherit via internal rule' | 'Inherit: Inherit via back propagation' | 'double' | 'single' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'fixdt(1,16,0)' | 'fixdt(1,16,2^0,0)'
既定の設定: 'Inherit: Inherit via internal rule'

参考

「データ型アシスタントを利用したデータ型の指定」を参照してください。

データ型のオーバーライド

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

設定

既定の設定: [継承]

[継承]

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

[オフ]

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

ヒント

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

依存関係

このパラメーターは、[モード][組み込み] または [固定小数点] の場合にのみ表示されます。

符号付き/なし

固定小数点データを符号付きにするか、符号なしにするかを指定します。

設定

既定の設定: 符号付き

符号付き

符号付き固定小数点データを指定します。

符号なし

符号なし固定小数点データを指定します。

依存関係

[モード][固定小数点] を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

語長

量子化された整数をもつ語のビット サイズを指定します。

設定

既定の設定: 16

最小値: 0

最大値: 32

依存関係

[モード][固定小数点] を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

スケーリング

オーバーフローを避け、量子化誤差を最小限に抑えるための固定小数点データのスケーリング方法を指定します。

設定

既定の設定: 最高精度

2 進小数点

2 進小数点の位置を指定します。

勾配とバイアス

勾配とバイアスを入力します。

最高精度

最高精度値を指定します。

依存関係

[モード][固定小数点] を選択すると、このパラメーターが有効になります。

[2 進小数点] を選択すると、以下が有効になります。

  • 小数部の長さ

  • 最高精度のスケーリングを計算

[勾配とバイアス] を選択すると、以下が有効になります。

  • 勾配

  • バイアス

  • 最高精度のスケーリングを計算

参考

詳細は、「固定小数点データ型の指定」を参照してください。

小数部の長さ

固定小数点データ型の小数部の長さを指定します。

設定

既定の設定: 0

2 進小数点は正または負の整数になります。

依存関係

[スケーリング][2 進小数点] を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

勾配

固定小数点データ型の勾配を指定します。

設定

既定の設定: 2^0

任意の正の実数を指定します。

依存関係

[スケーリング][勾配とバイアス] を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

バイアス

固定小数点データ型のバイアスを指定します。

設定

既定の設定: 0

任意の実数を指定します。

依存関係

[スケーリング][勾配とバイアス] を選択すると、このパラメーターが有効になります。

参考

詳細は、「固定小数点データ型の指定」を参照してください。

sldemo_fuelsyssldemo_fuelsys モデルでは、fuel_rate_control/airflow_calc サブシステムの Discrete-Time Integrator ブロックを使用します。このブロックは、Forward Euler 積分手法を使用します。

Switch ブロックによって Discrete-Time Integrator ブロックにゼロ以外の値が送られると、積分が実行されます。それ以外の場合、積分は実行されません。

詳細は、「モデルの説明モデルの説明」を参照してください。

特性

直接フィードスルー

リセットと外部初期条件ソース端子について、あり。入力は、前進オイラー法と累積前進オイラー法を除いた積分法に対して、直接フィードスルーをもちます。

サンプル時間

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

スカラー拡張

あり、パラメーターによる

状態数

駆動ブロックとパラメーターから継承

離散化

あり

多次元化

なし

ゼロクロッシング検出

なし

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