ドキュメンテーション

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

Integrator、Integrator Limited

信号を積分

ライブラリ

Continuous

説明

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

Integrator Limited ブロックは、Integrator ブロックと基本的には同じですが、ブロックの出力が飽和の上限値と下限値で制限される点が異なります。詳細は、積分の制限を参照してください。

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

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

ここで、

  • u はブロックの入力。

  • y はブロックの出力。

  • x はブロックの状態。

  • x0 は x の初期条件。

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

選択されたソルバーは、(現在の入力値と前のタイム ステップでの状態の値を使用して) 現在のタイム ステップでの 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(xuxl)xxlxuxlx[xl,xu)otherwise

ここで、

  • 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 つの例については、sldemo_clutch モデルを参照してください。

    メモ:   Simulink では、3 つ以上の Enabled Subsystem がモデル状態を引き渡すことは許可されません。モデルが 3 つ以上の Enabled Subsystem の間で状態が引き渡されるのを検知した場合、Simulink はエラーを表示します。

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

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

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

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

サポートするデータ型

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

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

外部リセット

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

設定

既定の設定: なし

なし

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

立ち上がり

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

立ち下がり

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

両方

リセット信号が 0 から非ゼロに、あるいは符号が変化するときに、状態をリセットします。

レベル

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

[レベル保持]

リセット信号が現在のタイム ステップで非ゼロであるときに、状態をリセットします。

コマンド ライン情報

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

初期条件のソース

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

設定

既定の設定: 内部

内部

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

外部

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

ヒント

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

依存関係

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

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

コマンド ライン情報

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

初期条件

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

設定

既定の設定: 0

ヒント

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

依存関係

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

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

コマンド ライン情報

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

出力を制限する

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

設定

既定の設定: オフ

オン

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

オフ

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

依存関係

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

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

コマンド ライン情報

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

飽和の上限

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

設定

既定の設定: inf

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

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

依存関係

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

コマンド ライン情報

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

飽和の下限

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

設定

既定の設定: -inf

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

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

依存関係

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

コマンド ライン情報

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

状態のラップ

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

設定

既定の設定: off

オン

[ラップした状態の上限値] パラメーターから [ラップした状態の下限値] パラメーターまでの状態のラップを有効にします。

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

オフ

状態のラップは有効になりません。

依存関係

このパラメーターによって、[ラップした状態の上限値] が有効になります。

このパラメーターによって、[ラップした状態の下限値] が有効になります。

コマンド ライン情報

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

ラップした状態の上限値

ラップ状態の上限値を指定します。

設定

既定の設定: 'pi'

依存関係

このパラメーターは [状態のラップ] で有効になります。

コマンド ライン情報

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

ラップした状態の下限値

ラップ状態の下限値を指定します。

設定

既定の設定: -pi

依存関係

このパラメーターは [状態のラップ] で有効になります。

コマンド ライン情報

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

飽和端子の表示

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

設定

既定の設定: オフ

オン

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

オフ

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

コマンド ライン情報

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

状態端子の表示

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

設定

既定の設定: オフ

オン

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

オフ

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

コマンド ライン情報

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

絶対許容誤差

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

設定

既定の設定: auto

  • auto、–1、正の実数のスカラーまたはベクトルを入力できます。

  • auto または –1 を入力した場合、Simulink は [コンフィギュレーション パラメーター] ダイアログ ボックス (「[ソルバー] ペイン」を参照) の絶対許容誤差の値を使用してブロックの状態を計算します。

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

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

コマンド ライン情報

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

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

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

設定

既定の設定: オフ

オン

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

オフ

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

ヒント

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

コマンド ライン情報

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

ゼロクロッシング検出を有効にする

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

設定

既定の設定: オン

オン

ゼロクロッシング検出を使って、以下のイベントのいずれかでタイム ステップを取得します。リセット、飽和の上限の状態の入力または消去、飽和の下限の状態の入力または消去

オフ

ゼロクロッシング検出を使って、以下のイベントのいずれかでタイム ステップを取得しません。リセット、飽和の上限の状態の入力または消去、飽和の下限の状態の入力または消去

このチェック ボックス、[出力を制限する]、およびゼロクロッシング検知をモデル全体に対して選択した場合、Integrator ブロックは説明したようにゼロクロッシングを使用します。

コマンド ライン情報

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

状態名 (例: 'position')

各状態に固有名を割り当てます。

設定

既定の設定: ' '

このフィールドが空白の場合は、名前の割り当ては行われません。

ヒント

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

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

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

  • 状態の数は状態名の数で割り切れる必要があります。

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

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

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

コマンド ライン情報

パラメーター: ContinuousStateAttributes
タイプ: 文字列
値: ' ' | ユーザー定義
既定の設定: ' '

次の例のモデルは、Integrator ブロックの使用方法を示します。

  • sldemo_hardstop

  • sldemo_suspn

  • sldemo_wheelspeed_absbrake

特性

データ型

double

サンプル時間

連続

直接フィードスルー

あり、リセットまたは外部初期状態条件ソース端子による

多次元信号

なし

可変サイズの信号

なし

ゼロクロッシング検出

あり、有効で [出力を制限する] チェック ボックスを選択した場合、リセット検出用に 1 つ、飽和の上限および下限の検出用にそれぞれ 1 つ、飽和離脱時に 1 つになります。

コード生成

あり

R2006a より前に導入

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