Main Content

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

Integrator

  • Integrator block

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

説明

Integrator ブロックは、入力信号を時間で積分した値を出力します。

Simulink® は、Integrator ブロックを 1 つの状態を有する動的システムとして扱います。このブロックのダイナミクスは次式で与えられます。

{x˙(t)=u(t)y(t)=x(t)   x(t0)=x0

ここで、

  • u はブロックの入力。

  • y はブロックの出力。

  • x はブロックの状態。

  • x0 は x の初期条件。

これらの式は、連続時間における厳密な関係を定義しますが、Simulink は、数値近似法を用いてこれらの式を有限精度で評価します。Simulink では、それぞれが特定のアプリケーションで利点をもつ複数の異なる数値積分法を使用してブロックの出力を計算することができます。各数値積分法には、アプリケーションに応じた利点があります。[コンフィギュレーション パラメーター] ダイアログ ボックスの [ソルバー] ペイン ([ソルバー] ペインを参照) を使用してアプリケーションに最も適した技法を選択してください。

選択されたソルバーは、(現在の入力値と前のタイム ステップでの状態の値を使用して) 現在のタイム ステップでの Integrator ブロックの出力を計算します。Integrator ブロックはこの計算モデルをサポートするために、次のタイム ステップでのそのブロックの出力を計算するときにソルバーが使用できるように現在のタイム ステップでの当該ブロックの出力を保存します。このブロックはまた、シミュレーションの実行開始時のそのブロックの初期状態を計算するときに使用する初期条件をソルバーに提供します。初期条件の既定値は 0 です。このブロックのパラメーター ダイアログ ボックスでは、初期条件に別の値を指定したり、ブロック上の初期値入力端子を作成したりすることも可能です。

パラメーターのダイアログ ボックスは、以下に使用できます。

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

  • ブロック出力 (状態) を入力の変化に応じて初期値にリセットするための入力を作成します。

  • ブロックの出力値によってブロック リセットをトリガーできるようにオプションの状態出力を作成します。

純粋な離散システムを作成するには、Discrete-Time Integrator ブロックを使用します。

初期条件の定義

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

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

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

    メモ

    積分器がその出力を制限している場合 (積分の制限を参照)、初期条件はその積分器の飽和の制限値内でなければなりません。初期条件がブロック飽和の制限値外にある場合、このブロックはエラー メッセージを表示します。

積分の制限

出力が指定可能なレベルを超えないようにするには、[出力を制限する] チェック ボックスをオンにして、対応するパラメーター フィールドに制限値を入力します。この操作により、ブロックは制限付きの積分器として機能します。出力が制限値に達すると、積分動作はオフになり、積分が設定値を超えるのを回避します。シミュレーション中、制限値を変更できますが、出力が制限されているかどうかは変更できません。ブロックは出力を以下のように決定します。

  • 積分が [飽和の下限] 以下のとき、出力は [飽和の下限] に保たれます。

  • 積分値が [飽和の下限][飽和の上限] の間にあるとき、出力は積分値となります。

  • 積分が [飽和の上限] 以上のとき、出力は [飽和の上限] に保たれます。

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

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

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

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

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

このチェック ボックスをオンにした場合、ブロックは以下の 3 つのゼロクロッシングをもちます。1 つは飽和上限にいつ入るかを検知します。もう 1 つは飽和下限にいつ入るかを検知します。最後の 1 つは飽和をいつ脱出するかを検知します。

メモ

Integrator Limited ブロックの場合、既定の設定では [出力を制限する] が選択され、[飽和の上限]1[飽和の下限]0 に設定されます。

巡回状態のラッピング

いくつかの物理的な現象は、巡回的、周期的または回転的な性質をもちます。このような現象の例として、回転運動を示すオブジェクトまたは機械および発振器などがあります。

これらの現象を Simulink でモデリングするには、周期または巡回信号の変化率を統合して、動作の状態を取得します。

ただし、このアプローチには、シミュレーションの時間範囲が長時間であり、周期または巡回信号を表す状態が大きい値に統合されるという欠点があります。さらに、これらの信号の正弦または余弦の計算には、角度の減少により長時間かかります。信号の値が大きいと、ソルバーのパフォーマンスや精度にマイナスの影響も与えます。

この欠点に対処するアプローチの 1 つは、2π に達したときに角度の状態を 0 に (または数値の対称性の場合は n に達したときに –π に) リセットすることです。このアプローチによって、正弦および余弦の計算の精度が改善され、角度の減少時間が短縮されます。ただし、このアプローチにはゼロクロッシング検出も必要で、ソルバーのリセットが導入されるため、特に大きいモデルでは可変ステップ ソルバーのシミュレーションが低速になります。

ラップ ポイントでのソルバーのリセットを回避するために、Integrator ブロックはラップした状態をサポートします。これはブロックのパラメーターのダイアログ ボックスで [状態のラップ] をオンにして有効にできます。[状態のラップ] を有効にすると、ブロック アイコンが変化し、ブロックがラッピング状態であることを示します。

Simulink では、ラップした状態の上限値および下限値パラメーターによってラッピング状態の範囲を使用できるようになります。ラッピング状態を決定するアルゴリズムは、次の式で示されます。

y={xx[xl,xu)x(xuxl)xxlxuxlotherwise

ここで、

  • xl はラッピングした状態の下限値です。

  • xu はラッピングした状態の上限値です。

  • y は出力です。

ラッピング状態のサポートには、以下の利点があります。

  • モデルが大角度および大きな状態値に近づいたときのシミュレーションの不安定性を回避。

  • シミュレーション中にソルバーのリセット数が削減され、ゼロクロッシング検出の必要性がなくなり、シミュレーション時間が向上。

  • 大角度値が回避され、角度状態の三角関数の計算が高速化。

  • ソルバーの精度とパフォーマンスが向上し、無制限なシミュレーション時間が実現。

状態のリセット

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

  • [立ち上がり] を選択すると、リセット信号が負の値または 0 から正の値に立ち上がるときに、状態をリセットします。

  • [立ち下がり] を選択すると、リセット信号が正の値から 0 または負の値に立ち下がるときに、状態をリセットします。

  • [両方] を選択すると、リセット信号が 0 から非ゼロ値に、非ゼロ値からゼロに、または符号が変化するときに、状態をリセットします。

  • レベル を選択すると、リセット信号が現在のタイム ステップで非ゼロであるとき、または以前のタイム ステップでの非ゼロから現在のタイム ステップでの 0 まで変化するときに、状態をリセットします。

  • [レベルを保持] を選択すると、リセット信号が現在のタイム ステップで非ゼロであるときに、状態をリセットします。

リセット端子は直達をもちます。ブロック出力がこの端子に (直接に、または直達のある一連のブロックを介して) フィードバックする場合、代数ループが生成されます (代数ループの概念を参照)。Integrator ブロックの状態端子を使用すると、代数ループを生成せずにこのブロックの出力をフィードバックできます。

メモ

Motor Industry Software Reliability Association (MISRA®) ソフトウェア標準規格に準拠するために、モデルで Boolean 信号を使って Integrator ブロックの外部リセット端子を駆動する必要があります。

状態端子について

Integrator ブロックのパラメーター ダイアログ ボックスの [状態端子の表示] チェック ボックスをオンにすると、この Integrator ブロックの上に追加の出力端子 (状態端子) が表示されます。

状態端子の出力は、以下のケースを除きこのブロックの標準出力端子の出力と同じです。このブロックが現在のタイム ステップでリセットされた場合、状態端子の出力はそのブロックがまだリセットされていないときのブロックの標準出力値と一致します。状態端子の出力は、そのタイム ステップにおいて、Integer ブロックの出力端子の出力よりも前に出力されます。状態端子を使用すると、次のモデル化のシナリオで代数ループが発生することを避けることができます。

  • 積分器を自己リセットするとき (自己リセット積分器の作成を参照)。

  • ある Enabled Subsystem から別の Enabled Subsystem へ状態を引き渡すとき (Enabled Subsystem 間での状態の受け渡しを参照)。

    メモ

    Simulink はモデルを更新するときに、これら 2 つのシナリオのどちらかで状態端子が適用されていることを確認します。適用されていない場合、エラー メッセージが表示されます。また、アクセラレータ モードで実行する参照モデルにおいて、この端子の出力のログを作成することはできません。この端子に対し、ログが有効な場合、Simulink は、参照されるモデルの実行中に「信号が見つかりません」という警告を発生します。

自己リセット積分器の作成

Integrator ブロックの状態端子を使用すると、出力の値に基づいて自分自身をリセットする積分器を作成するときに代数ループを作成することを回避できます。たとえば、以下のモデルについて考察します。

このモデルは、(1 から減算した) 積分器の出力をその積分器のリセット端子にフィードバックすることにより自己リセット積分器を作成しようとします。しかし、このモデルでは代数ループが生成されます。Integrator ブロックの出力を計算するには、そのブロックのリセット信号の値を Simulink に知らせる必要があり、またその逆についても同様です。これら 2 つの値は互いに依存し合っているため、Simulink はどちらの値も決定することができません。したがって、このモデルのシミュレーションまたは更新を試みた場合は、エラー メッセージが表示されます。

以下のモデルでは、積分器の状態端子を使って代数ループを回避しています。

このバージョンでは、リセット信号の値が状態端子の値に依存します。状態端子の値は、Integrator ブロックの出力端子の値より前の現在のタイム ステップで有効になります。そのため、Simulink はこのブロックの出力を計算する前にそのブロックをリセットする必要があるかどうか判断することが可能になり、その結果として代数ループを回避できます。

Enabled Subsystem 間での状態の受け渡し

状態端子では、2 つの Enabled Subsystem 間で状態を受け渡すときに代数ループを回避できます。たとえば、以下のモデルについて考察します。

Enabled Subsystem である A および B には次のブロックが含まれています。

サブシステム Aサブシステム B

このモデルでは、信号を積分する 2 つの Enabled Subsystem を定数入力信号が駆動します。パルス発生器は、2 つのサブシステム間で実行を交互に入れ替えるイネーブル信号を生成します。各サブシステムのイネーブル端子は、リセットに設定されているので、サブシステムはアクティブになると積分器をリセットします。積分器をリセットすると、積分器はその初期条件端子の値を読み取ります。各サブシステム内の積分器の初期条件端子は、他のサブシステム内の積分器の出力端子に接続されています。

このように接続してあるのは、2 つのサブシステム間で実行が交互に入れ替わるときに入力信号の連続積分を有効にするためです。しかし、この接続は代数ループを生み出します。A の出力を計算するには、Simulink が B の出力を知る必要があり、またその逆についても同様です。これらの出力は互いに依存し合っているため、Simulink は出力値を計算することができません。したがって、このモデルのシミュレーションまたは更新を試みた場合は、エラー メッセージが表示されます。

同じモデルの以下のバージョンでは、状態を受け渡すときに代数ループが作成されるのを回避するために積分器の状態端子を使用します。

Enabled Subsystem である A および B には次のブロックが含まれています。

サブシステム Aサブシステム B

このモデルでは、A の積分器の初期条件が B の積分器の状態端子の値に依存し、またその逆についても同様です。状態端子の値は、シミュレーションのタイム ステップにおいて積分器の出力端子の値より前に更新されます。そのため、Simulink は他の積分器の最終出力値を知らなくてもどちらか一方の積分器の初期条件を計算できます。条件付き実行サブシステム間で状態を引き渡すために状態端子を使用するもう 1 つの例については、クラッチ ロックアップ モデルの作成を参照してください。

ブロックの出力の絶対許容誤差を指定する

既定では、Simulink ソフトウェアは [コンフィギュレーション パラメーター] ダイアログ ボックスで指定した絶対許容誤差値 (可変ステップ ソルバーの許容誤差を参照) を使用して、Integrator ブロックの出力を計算します。この値で十分な誤差制御を得られない場合は、より適切な値を、Integrator ブロックのダイアログ ボックスの [絶対許容誤差] フィールドに指定します。指定した値は、ブロックのすべての出力を計算するために使用されます。

すべてのオプションの選択

すべてのオプションが選択された場合、ブロック アイコンは次のようになります。

端子

Integrator ブロックは double 型の信号を受け入れ、そのデータ端子に出力します。外部リセット端子は double 型または Boolean 型の信号を受け入れます。

入力

すべて展開する

統合する必要のある信号。

データ型: double

外部信号に基づいて指定された初期条件に状態をリセットします。状態のリセットを参照してください。

依存関係

この端子を有効にするには、[外部リセット] パラメーターを有効にします。

データ型: Boolean

外部信号からブロックの状態の初期条件を設定します。

依存関係

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

データ型: double

出力

すべて展開する

統合された状態を出力します。

データ型: double

状態が制限されていることを示します。指定された [飽和の上限] で積分が制限されている場合、信号には 1 の値があります。信号が [飽和の下限] で制限されている場合、信号の値は -1 です。積分値が飽和の制限内にある場合、信号値は 0 です。積分の制限を参照してください。

データ型: double

ブロックの状態を出力します。状態端子についてを参照してください。

依存関係

[状態端子の表示] パラメーターを有効にして、この端子を有効にします。

データ型: double

パラメーター

すべて展開する

外部リセット信号で使用するトリガーのタイプを指定します。

  • [立ち上がり] を選択すると、リセット信号が負または 0 の値から正の値に立ち上がるとき、あるいは負の値から 0 の値に立ち上がるときに状態をリセットします。

  • [立ち下がり] を選択すると、リセット信号が正の値から 0 または負の値に立ち下がるとき、あるいは 0 の値から負の値に立ち下がるときに状態をリセットします。

  • [両方] を選択すると、リセット信号が 0 から非ゼロ値に、非ゼロ値からゼロに、または符号が変化するときに、状態をリセットします。

  • レベル を選択すると、リセット信号が現在のタイム ステップで非ゼロであるとき、または以前のタイム ステップでの非ゼロから現在のタイム ステップでの 0 まで変化するときに、状態をリセットします。

  • [レベルを保持] を選択すると、リセット信号が現在のタイム ステップで非ゼロであるときに、状態をリセットします。

プログラムでの使用

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

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

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

  • 外部[IC] 入力端子経由で外部ブロックから状態の初期条件を取得します。

依存関係

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

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

プログラムでの使用

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

Integrator ブロックの初期状態を設定します。

ヒント

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

依存関係

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

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

プログラムでの使用

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

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

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

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

依存関係

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

プログラムでの使用

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

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

依存関係

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

プログラムでの使用

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

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

依存関係

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

プログラムでの使用

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

[ラップした状態の上限値] パラメーターから [ラップした状態の下限値] パラメーターまでの状態のラッピングを有効にします。状態のラップを有効にすると、ゼロクロッシング検出が必要なくなり、ソルバーのリセットが削減され、ソルバーのパフォーマンスと精度が向上し、回転および巡回状態軌跡のモデリング時のシミュレーションの時間範囲を増やすことができます。

[ラップした状態の上限値]inf[ラップした状態の下限値]-inf に指定すると、ラッピングは実行されません。

依存関係

このパラメーターを選択すると、[ラップした状態の上限値] パラメーターと [ラップした状態の下限値] パラメーターが有効になります。

プログラムでの使用

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

ブロック出力の上限。

依存関係

このパラメーターは [状態のラップ] を選択すると有効になります。

プログラムでの使用

ブロック パラメーター: WrappedStateUpperValue
タイプ: スカラーまたはベクトル
値: '2*pi'
既定の設定: 'pi'

ブロック出力の下限を指定します。

依存関係

このパラメーターは [状態のラップ] を選択すると有効になります。

プログラムでの使用

ブロック パラメーター: WrappedStateLowerValue
タイプ: スカラーまたはベクトル
値: '0'
既定の設定: '-pi'

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

依存関係

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

プログラムでの使用

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

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

依存関係

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

プログラムでの使用

ブロック パラメーター: ShowStatePort
型: 文字ベクトル、string
値: 'off' | 'on'
既定の設定: 'off'
  • auto または –1 を入力した場合、Simulink は [コンフィギュレーション パラメーター] ダイアログ ボックス ([ソルバー] ペインを参照) の絶対許容誤差の値を使用してブロックの状態を計算します。

  • 実数のスカラーを入力した場合、ブロックの状態計算における [コンフィギュレーション パラメーター] ダイアログ ボックスの絶対許容誤差は、この値でオーバーライドされます。

  • 実数のベクトルを入力した場合、ベクトルの次元はブロックの連続状態の次元と一致していなければなりません。[コンフィギュレーション パラメーター] ダイアログ ボックスの絶対許容誤差は、これらの値でオーバーライドされます。

プログラムでの使用

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

Simulink の線形化のコマンドは、ブロックのリセットの設定と出力制限のオプションにかかわらず、このブロックをリセット不可能で、その出力が制限のないものとして取り扱うことができます。

ヒント

このチェック ボックスを使用すると、積分器のリセットまたは飽和の原因となる操作点の周りで線形化することができます。

プログラムでの使用

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

ゼロクロッシング検出を有効にする場合は選択します。詳細については、ゼロクロッシング検出を参照してください。

プログラムでの使用

ブロック パラメーター: ZeroCross
: 文字ベクトル | string
: 'off' | 'on'
既定の設定: 'on'
  • 単一の状態に名前を割り当てる場合は、'velocity' のように一重引用符で囲んで名前を入力します。

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

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

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

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

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

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

プログラムでの使用

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

ブロックの特性

データ型

double

直達

はい

多次元信号

いいえ

可変サイズの信号

いいえ

ゼロクロッシング検出

はい

拡張機能

バージョン履歴

R2006a より前に導入