このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
Integrator
信号を積分
ライブラリ:
Simulink /
Commonly Used Blocks
Simulink /
Continuous
説明
Integrator ブロックは、入力信号を時間で積分した値を出力します。
Simulink® は、Integrator ブロックを 1 つの状態を有する動的システムとして扱います。このブロックのダイナミクスは次式で与えられます。
ここで、
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 では、ラップした状態の上限値および下限値パラメーターによってラッピング状態の範囲を使用できるようになります。ラッピング状態を決定するアルゴリズムは、次の式で示されます。
ここで、
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
型の信号を受け入れます。
入力
出力
パラメーター
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
拡張機能
バージョン履歴
R2006a より前に導入