ドキュメンテーション

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

PID Controller

連続時間と離散時間の PID コントローラー

  • ライブラリ:
  • Simulink / 連続

説明

PID Controller ブロックは、PID コントローラー (PID、PI、PD、P のみ、I のみ) を実装します。このブロックは、[時間領域] パラメーターを [連続時間] に設定した Discrete PID Controller ブロックと同じです。

ブロックの出力は、入力信号、入力信号の積分、および入力信号の微分の重み付き総和です。重みは比例、積分、および微分のゲイン パラメーターです。1 次極によって微分動作がフィルター処理されます。

このブロックでは、複数のコントローラー タイプと構造がサポートされます。ブロックの設定可能なオプションは次のとおりです。

  • コントローラー タイプ (PID、PI、PD、P のみ、I のみ) — [コントローラー] パラメーターを参照してください。

  • コントローラー形式 (並列または理想) — [形式] パラメーターを参照してください。

  • 時間領域 (連続または離散) — [時間領域] パラメーターを参照してください。

  • 初期条件とリセット トリガー — [ソース] パラメーターおよび [外部リセット] パラメーターを参照してください。

  • 出力飽和の制限および組み込みのアンチワインドアップ メカニズム — [出力を制限する] パラメーターを参照してください。

  • バンプレス制御転送とマルチループ制御の信号トラッキング — [トラッキングモードを有効にする] パラメーターを参照してください。

これらのオプションを変更すると、さまざまなバリアント サブシステムがアクティブになり、ブロックの内部構造が変わります (Variant Subsystemを参照してください)。ブロックの内部構造とバリアント サブシステムを調べるには、ブロックを右クリックし、[マスク][マスク内を表示] を選択します。

制御の構成

一般的な実装では、PID Controller ブロックはフィードバック ループのフィードフォワード パスで動作します。

ブロックの入力は通常、基準信号とシステム出力の差を示す誤差信号です。設定点の重みを許可する 2 入力ブロックについては、PID Controller (2DOF) を参照してください。

PID ゲインの調整

PID コントローラーの係数は手動でも自動でも調整が可能です。自動調整には、Simulink® Control Design™ ソフトウェアが必要です。自動調整の詳細については、[調整法の選択] パラメーターを参照してください。

端子

入力

すべて展開する

基準信号と制御下のシステムの出力の差。次のようになります。

誤差信号がベクトルの場合、ブロックは信号ごとに独立して機能し、PID 係数をベクトル化して同じ次元のベクトル出力信号を生成します。PID 係数および他の一部のパラメーターは、入力信号と同じ次元のベクトルとして指定できます。これは、入力信号のエントリごとに個別の PID コントローラーを指定することと同等です。

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

比例ゲイン。外部のソースからブロックに提供されます。外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。

依存関係

この端子を有効にするには、[コントローラーのパラメーター] の [ソース][外部] に設定します。

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

積分ゲイン。外部のソースからブロックに提供されます。外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。

ゲインを外部から提供する場合、積分ゲインの時間変化も積分されます。この結果は、PID ゲインがブロック内で実装される方法であるために発生します。詳細については、[コントローラーのパラメーター] の [ソース] パラメーターを参照してください。

依存関係

この端子を有効にするには、[コントローラーのパラメーター] の [ソース][外部] に設定し、[コントローラー] を積分動作をもつコントローラー タイプに設定します。

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

微分ゲイン。外部のソースからブロックに提供されます。外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。

ゲインを外部から提供する場合、微分ゲインの時間変化も微分されます。この結果は、PID ゲインがブロック内で実装される方法であるために発生します。詳細については、[コントローラーのパラメーター] の [ソース] パラメーターを参照してください。

依存関係

この端子を有効にするには、[コントローラーのパラメーター] の [ソース][外部] に設定し、[コントローラー] を微分動作をもつコントローラー タイプに設定します。

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

微分フィルター係数。外部のソースからブロックに提供されます。外部係数入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。

依存関係

この端子を有効にするには、[コントローラーのパラメーター] の [ソース][外部] に設定し、[コントローラー] を不完全微分をもつコントローラー タイプに設定します。

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

積分器とフィルターを初期条件にリセットするトリガー。リセットが立ち上がり信号、立ち下がり信号、レベル信号のいずれで発生するかは、[外部リセット] パラメーターの値で決まります。選択されたトリガー タイプは端子のアイコンで示されます。たとえば、次の図は、[外部リセット][立ち上がり] に設定された連続時間 PID ブロックを示しています。

トリガーが発生すると、ブロックにより、積分器とフィルターが、[Integrator Initial condition] パラメーターと [Filter Initial condition] パラメーターまたは [I0] 端子と [D0] 端子で指定された初期条件にリセットされます。

メモ

Motor Industry Software Reliability Association (MISRA®) ソフトウェア標準規格に準拠するために、モデルで Boolean 信号を使って PID controller ブロックの外部リセット端子を駆動しなければなりません。

依存関係

この端子を有効にするには、[外部リセット][なし] 以外のいずれかの値に設定します。

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

積分器の初期条件。外部のソースからブロックに提供されます。

依存関係

この端子を有効にするには、[初期条件] の [ソース][外部] に設定し、[コントローラー] を積分動作をもつコントローラー タイプに設定します。

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

微分フィルターの初期条件。外部のソースからブロックに提供されます。

依存関係

この端子を有効にするには、[初期条件] の [ソース][外部] に設定し、[コントローラー] を微分動作をもつコントローラー タイプに設定します。

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

追跡するコントローラー出力の信号。信号トラッキングがアクティブな場合、トラッキング信号とブロック出力の差が積分器入力に返されます。信号トラッキングは、システムで 2 つのコントローラーを切り替えるバンプレス制御転送を実装する場合に便利です。また、マルチループ制御システムでブロックのワインドアップを防ぐのにも役立ちます。詳細については、[トラッキング モードを有効にする] パラメーターを参照してください。

依存関係

この端子を有効にするには、[トラッキングモードを有効にする] パラメーターを選択します。

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

出力

すべて展開する

コントローラーの出力。一般に、比例、積分、および微分のゲイン パラメーターで重み付けした入力信号、入力信号の積分、および入力信号の微分の総和に基づきます。1 次極によって微分動作がフィルター処理されます。コントローラーの信号に含まれる項は、[コントローラー] パラメーターの選択に応じて異なります。現在の設定に対応するコントローラーの基本の伝達関数は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。飽和制限を指定する [上限][下限] の飽和パラメーターなど、ほかにもブロック出力を変更するパラメーターがあります。

コントローラーの出力は、いずれかの入力がベクトル信号であればベクトル信号になります。その場合、ブロックは N 個の独立した PID コントローラーとして機能します。N は入力ベクトルの信号数です。

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

パラメーター

すべて展開する

コントローラーに比例項、積分項、微分項のいずれを含めるかを指定します。

PID

比例動作、積分動作、微分動作。

PI

比例動作と積分動作のみ。

PD

比例動作と微分動作のみ。

P

比例動作のみ。

[I]

積分動作のみ。

ヒント

現在の設定に対応するコントローラーの伝達関数は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。

プログラムでの使用

ブロック パラメーター: Controller
型: string、文字ベクトル
値: "PID""PI""PD""P""I"
既定の設定: "PID"

コントローラーの構造を並列と理想のどちらにするかを指定します。

並列

コントローラーの出力は、PID でそれぞれ独立して重み付けされた比例動作、積分動作、微分動作の総和になります。たとえば、連続時間の並列形式 PID コントローラーの伝達関数は次のようになります。

Cpar(s)=P+I(1s)+D(Nss+N).

離散時間の並列形式コントローラーの伝達関数は次のようになります。

Cpar(z)=P+Iα(z)+D[N1+Nβ(z)],

α(z) と β(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。

理想

比例ゲイン P がすべての動作の総和に作用します。たとえば、連続時間の理想形式 PID コントローラーの伝達関数は次のようになります。

Cid(s)=P[1+I(1s)+D(Nss+N)].

離散時間の理想形式コントローラーの伝達関数は次のようになります。

Cid(z)=P[1+Iα(z)+DN1+Nβ(z)],

a(z) と b(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。

ヒント

現在の設定に対応するコントローラーの伝達関数は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。

プログラムでの使用

ブロック パラメーター: Controller
型: string、文字ベクトル
値: "Parallel""Ideal"
既定の設定: "Parallel"

[離散時間] を選択する場合は、ブロックに対して明示的なサンプル時間を指定することをお勧めします。[サンプル時間 (継承は -1)] パラメーターを参照してください。[離散時間] を選択すると、[積分手法] パラメーターと [フィルター手法] パラメーターも有効になります。

PID Controller ブロックが同期状態制御 (State Control ブロックを参照) を使用するモデル内にある場合は、[連続時間] を選択できません。

メモ

PID Controller ブロックと Discrete PID Controller ブロックは、このパラメーターの既定値以外は同一です。

プログラムでの使用

ブロック パラメーター: TimeDomain
型: string、文字ベクトル
値: "Continuous-time""Discrete-time"
既定の設定: "Continuous-time"

0.1 などの正のスカラー値を入力してサンプル時間を指定します。既定の離散サンプル時間は -1 で、この場合は上流のブロックからサンプル時間が継承されます。ただし、特に上流のブロックのサンプル時間が変わることが予想される場合などは、コントローラーのサンプル時間を明示的に設定することをお勧めします。コントローラー係数 P、I、D、N の作用はサンプル時間に依存します。そのため、一連の係数値が与えられている場合、サンプル時間を変更するとコントローラーの性能が変化します。

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

連続時間コントローラーを実装するには、[時間領域][連続時間] に設定します。

ヒント

外部指定または可変のサンプル時間でブロックを実行する場合は、このパラメーターを -1 に設定し、ブロックを Triggered Subsystem に配置します。その後、目的のサンプル時間でサブシステムをトリガーします。

依存関係

このパラメーターを有効にするには、[時間領域][離散時間] に設定します。

プログラムでの使用

ブロック パラメーター: SampleTime
タイプ: スカラー
値: -1、正のスカラー
既定の設定: -1

離散時間におけるコントローラーの伝達関数の積分項は Iα(z) です。α(z) は、このパラメーターで指定した積分手法に応じて異なります。

前進オイラー法

前進矩形 (左側) 近似。

α(z)=Tsz1.

この手法はコントローラーの帯域幅と比較してナイキスト制限が大きくなる、小さいサンプル時間に最適です。大きいサンプリング時間で 前進オイラー法 手法を使用すると、連続時間で安定しているシステムを離散化しても不安定さが生じることがあります。

後退オイラー法

後退矩形 (右側) 近似。

α(z)=Tszz1.

後退オイラー法 手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。

台形則

双一次変換。

α(z)=Ts2z+1z1.

台形則 手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。使用可能なすべての積分手法の中で、離散システムと対応する連続時間システムの周波数領域プロパティが最も近くなるのは 台形則 手法です。

ヒント

現在の設定に対応するコントローラーの方程式は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。

メモ

[後退オイラー法] または [台形則] の手法で、以下のいずれかに該当する場合、ブロックの HDL コードを生成することはできません。

  • [出力を制限する] が選択されており、[アンチワインドアップ手法][なし] 以外に設定されている場合。

  • [トラッキングモードを有効にする] が選択されている場合。

離散時間の積分の詳細については、Discrete-Time Integrator ブロックのリファレンス ページを参照してください。

依存関係

このパラメーターを有効にするには、[時間領域][離散時間] に設定し、[コントローラー] を積分動作をもつコントローラー タイプに設定します。

プログラムでの使用

ブロック パラメーター: IntegratorMethod
型: string、文字ベクトル
値: "Forward Euler""Backward Euler""Trapezoidal"
既定の設定: "Forward Euler"

離散時間におけるコントローラーの伝達関数の微分項は次のようになります。

D[N1+Nα(z)],

α(z) は、このパラメーターで指定したフィルター手法に応じて異なります。

前進オイラー法

前進矩形 (左側) 近似。

α(z)=Tsz1.

この手法はコントローラーの帯域幅と比較してナイキスト制限が大きくなる、小さいサンプル時間に最適です。大きいサンプリング時間で 前進オイラー法 手法を使用すると、連続時間で安定しているシステムを離散化しても不安定さが生じることがあります。

後退オイラー法

後退矩形 (右側) 近似。

α(z)=Tszz1.

後退オイラー法 手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。

台形則

双一次変換。

α(z)=Ts2z+1z1.

台形則 手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。使用可能なすべての積分手法の中で、離散システムと対応する連続時間システムの周波数領域プロパティが最も近くなるのは 台形則 手法です。

ヒント

現在の設定に対応するコントローラーの方程式は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。

離散時間の積分の詳細については、Discrete-Time Integrator ブロックのリファレンス ページを参照してください。

依存関係

このパラメーターを有効にするには、[時間領域][離散時間] に設定し、[コントローラー] を微分動作をもつコントローラー タイプに設定します。

プログラムでの使用

ブロック パラメーター: FilterMethod
型: string、文字ベクトル
値: "Forward Euler""Backward Euler""Trapezoidal"
既定の設定: "Forward Euler"

メイン

パラメーターの外部入力を有効にすると、PID ゲインとフィルター係数をブロックの外部で計算し、これらを信号入力としてブロックに提供することができます。

内部

コントローラー ゲインとフィルター係数をブロック パラメーター [P][I][D][N] を使用して指定します。

外部

PID ゲインとフィルター係数をブロック入力を使用して外部で指定します。ブロックに現在のコントローラー タイプに必要な各パラメーターの追加の入力端子が表示されます。

外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID ゲインをモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。

ゲインを外部から提供する場合、積分ゲイン値と微分ゲイン値の時間変化はそれぞれ積分および微分されます。この結果は、連続時間と離散時間のどちらにおいても、積分や微分の前に信号にゲインが適用されるために発生します。たとえば、外部入力のある連続時間 PID コントローラーの場合、積分項は次の図に示されているように実装されます。

ブロック内では、入力信号 u は外部から提供される積分ゲイン I によって積分の前に乗算されます。この実装の結果、次のようになります。

yi=uIdt.

したがって、積分ゲインは積分の中に含められます。同様に、ブロックの微分項では微分ゲインによる乗算が微分より先に行われるため、微分ゲイン D は微分されることになります。

プログラムでの使用

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

比例ゲインの有限で実数のゲイン値を指定します。[Controller form] に応じて次のようになります。

  • 並列 — 比例動作が積分動作および微分動作に作用しません。たとえば、連続時間の並列 PID コントローラーの伝達関数は次のようになります。

    Cpar(s)=P+I(1s)+D(Nss+N).

    離散時間の並列形式コントローラーの伝達関数は次のようになります。

    Cpar(z)=P+Iα(z)+D[N1+Nβ(z)],

    α(z) と β(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。

  • 理想 — 比例ゲインで積分項および微分項が乗算されます。たとえば、連続時間の理想 PID コントローラーの伝達関数は次のようになります。

    Cid(s)=P[1+I(1s)+D(Nss+N)].

    離散時間の理想形式コントローラーの伝達関数は次のようになります。

    Cid(z)=P[1+Iα(z)+DN1+Nβ(z)],

    α(z) と β(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。

調整可能: Yes

依存関係

このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース][内部] に設定し、[コントローラー][PID][PD][PI]、または [P] に設定します。

プログラムでの使用

ブロック パラメーター: P
型: スカラー、ベクトル
既定の設定: 1

積分ゲインの有限で実数のゲイン値を指定します。

調整可能: Yes

依存関係

このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース][内部] に設定し、[コントローラー] を積分動作をもつタイプに設定します。

プログラムでの使用

ブロック パラメーター: I
型: スカラー、ベクトル
既定の設定: 1

微分ゲインの有限で実数のゲイン値を指定します。

調整可能: Yes

依存関係

このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース][内部] に設定し、[コントローラー][PID] または [PD] に設定します。

プログラムでの使用

ブロック パラメーター: D
型: スカラー、ベクトル
既定の設定: 0

離散時間の PID コントローラーの場合に限り、このオプションをオフにすると不完全微分が完全離散時間微分器に置き換わります。この場合、コントローラーの伝達関数の微分項は次のようになります。

Dz1zTs.

連続時間の PID コントローラーについては、常に完全微分項になります。

依存関係

このパラメーターを有効にするには、[時間領域][離散時間] に設定し、[コントローラー] を微分動作をもつタイプに設定します。

プログラムでの使用

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

フィルター係数の有限で実数のゲイン値を指定します。フィルター係数により、ブロックの微分動作のフィルターの極配置が決まります。フィルター極の配置は [時間領域] パラメーターに依存します。

  • [時間領域][連続時間] の場合、極配置は s = -N になります。

  • [時間領域][離散時間] の場合、極配置は [フィルター手法] パラメーターに応じて異なります。

    フィルター手法フィルター極の配置
    前進オイラー法zpole=1NTs
    後退オイラー法zpole=11+NTs
    台形則zpole=1NTs/21+NTs/2

このブロックでは N = Inf (理想的な完全微分) をサポートしていません。[時間領域][離散時間] の場合、[不完全微分の使用] をオフにして微分フィルターを削除できます。

調整可能: Yes

依存関係

このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース][内部] に設定し、[コントローラー][PID] または [PD] に設定します。

プログラムでの使用

ブロック パラメーター: N
型: スカラー、ベクトル
既定の設定: 100

Simulink Control Design ソフトウェアがある場合は、PID 係数を自動で調整できます。これを行うには、このパラメーターを使用して調整ツールを選択し、[調整] をクリックします。

伝達関数ベース (PID 調整器アプリ)

PID 調整器を使用します。関連するシステム応答を調べ、性能を検証して、PID 係数を対話形式で調整できます。既定の設定では、PID 調整器は線形化されたプラント モデルで動作します。線形化できないモデルについては、シミュレーションまたは測定による応答データから推測されたプラント モデルに対して、PID 係数を調整することができます。詳細については、Simulink でのモデルベースの PID 調整の紹介 (Simulink Control Design)を参照してください。

周波数応答ベース

周波数応答ベースの PID 調整器を使用します。シミュレーションから得られた周波数応答の推定データをベースにして、PID コントローラーの係数を調整できます。この調整法は、線形化できないプラントやゼロに線形化されるプラントで特に役立ちます。詳細については、プラント周波数応答データからの PID コントローラーの設計 (Simulink Control Design)を参照してください。

これらの調整法は、どちらも単一ループ制御構成を前提としたものです。Simulink Control Design ソフトウェアには、より複雑な構成に適した他の調整法も用意されています。PID Controller ブロックを調整するための他の方法の詳細については、制御設計法の選択 (Simulink Control Design)を参照してください。

ゼロクロッシング検出を使用すると、長時間のシミュレーションにつながる過度に小さいタイム ステップ サイズを取ることなく、正確に信号の不連続点を特定できます。PID Controller ブロックで [出力を制限する] を選択したり [外部リセット] をアクティブ化したりする場合、ゼロクロッシング検出をアクティブにすることでシミュレーションの計算時間を短縮できます。このパラメーターを選択するとゼロクロッシング検出がアクティブになります。

  • 初期状態へのリセット時

  • 飽和の上限または下限の状態の入力時

  • 飽和の上限または下限の状態の消去時

ゼロクロッシング検出の詳細については、ゼロクロッシング検出を参照してください。

プログラムでの使用

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

初期化

Simulink では、シミュレーションの開始時や指定のトリガー イベントの発生時に、初期条件を使用して積分器および微分フィルター (または完全微分) の出力を初期化します ([外部リセット] パラメーターを参照)。それらの初期条件によって初期ブロック出力が決まります。このパラメーターを使用して、初期条件の値をブロックに提供する方法を選択します。

内部

[Integrator Initial condition] パラメーターと [Filter Initial condition] パラメーターを使用して初期条件を指定します。[不完全微分の使用] を選択していない場合は、[微分器] パラメーターを使用してフィルターの初期条件の代わりに完全微分器の初期条件を指定します。

外部

初期条件をブロック入力を使用して外部で指定します。追加の入力端子の [Io][Do] がブロックに表示されます。[不完全微分の使用] を選択していない場合は、[Do] でフィルターの初期条件の代わりに完全微分器の初期条件を指定します。

プログラムでの使用

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

Simulink では、シミュレーションの開始時や指定のトリガー イベントの発生時に、積分器の初期条件を使用して積分器を初期化します ([外部リセット] を参照)。積分器の初期条件とフィルターの初期条件によって PID controller ブロックの初期出力が決まります。

積分器の初期条件を NaN または Inf にすることはできません。

依存関係

このパラメーターを使用するには、[初期化] タブで、[ソース][内部] に設定し、[コントローラー] を積分動作をもつタイプに設定します。

プログラムでの使用

ブロック パラメーター: InitialConditionForIntegrator
型: スカラー、ベクトル
既定の設定: 0

Simulink では、シミュレーションの開始時や指定のトリガー イベントの発生時に、フィルターの初期条件を使用して微分フィルターを初期化します ([外部リセット] を参照)。積分器の初期条件とフィルターの初期条件によって PID controller ブロックの初期出力が決まります。

フィルターの初期条件を NaN または Inf にすることはできません。

依存関係

このパラメーターを使用するには、[初期化] タブで、[ソース][内部] に設定し、微分フィルターをもつコントローラーを使用します。

プログラムでの使用

ブロック パラメーター: InitialConditionForFilter
型: スカラー、ベクトル
既定の設定: 0

完全微分を使用している場合、Simulink では、シミュレーションの開始時または指定のトリガー イベントの発生時に、このパラメーターを使用して微分器を初期化します ([外部リセット] を参照)。積分器の初期条件と微分の初期条件によって PID controller ブロックの初期出力が決まります。

微分の初期条件を NaN または Inf にすることはできません。

依存関係

このパラメーターを使用するには、[時間領域][離散時間] に設定し、[不完全微分の使用] チェック ボックスをオフにし、[初期化] タブで [ソース][内部] に設定します。

プログラムでの使用

ブロック パラメーター: DifferentiatorICPrevScaledInput
型: スカラー、ベクトル
既定の設定: 0

このパラメーターを使用して、[Integrator Initial condition] パラメーターと [Filter Initial condition] パラメーターを対応するブロック状態または出力に適用するかどうかを指定します。このパラメーターはコマンド ラインでのみ変更できます。変更するには、set_param を使用してブロックの InitialConditionSetting パラメーターを設定します。

状態 (最も効率的)

すべての状況においてこのオプションを使用しますが、ブロックが Triggered Subsystem または Function-Call Subsystem 内に存在し、簡易初期化モードが有効になっている場合は例外となります。

出力

ブロックが Triggered Subsystem または Function-Call Subsystem にあり、簡易初期化モードが有効になっている場合はこのオプションを使用します。

[初期条件設定] パラメーターの詳細については、Discrete-Time Integrator ブロックを参照してください。

このパラメーターにはプログラムからのみアクセスできます。

プログラムでの使用

ブロック パラメーター: InitialConditionSetting
型: string、文字ベクトル
値: "state""output"
既定の設定: "state"

ブロックで積分器とフィルターを初期条件にリセットするトリガー条件を指定します ([不完全微分の使用] が選択されていない場合、トリガーにより積分器と微分器が初期条件にリセットされます)。[なし] 以外のオプションを選択すると、ブロックで外部リセット信号の [リセット] 端子が有効になります。

なし

積分器とフィルター (または微分器) の出力をシミュレーションの開始時に初期条件に設定し、シミュレーション中はリセットしません。

立ち上がり

リセット信号が立ち上がりエッジをもつ場合に出力をリセットします。

立ち下がり

リセット信号が立ち下がりエッジをもつ場合に出力をリセットします。

両方

リセット信号が立ち上がりまたは立ち下がりをもつ場合に出力をリセットします。

レベル

リセット信号が次のいずれかに該当する場合に出力をリセットします。

  • 現在のタイム ステップで非ゼロである場合

  • 以前のタイム ステップでの非ゼロから現在のタイム ステップでの 0 まで変化した場合

このオプションでは、リセット信号が非ゼロである間は出力が初期条件のままになります。

依存関係

このパラメーターを有効にするには、[コントローラー] を微分動作または積分動作をもつタイプに設定します。

プログラムでの使用

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

[外部リセット] パラメーターで指定されたリセット メカニズムを Simulink および Simulink Control Design の線形化コマンドで無視する場合に選択します。リセット状態を無視すると、操作点によってブロックがリセットされても、操作点を中心にモデルが線形化されます。

プログラムでの使用

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

信号トラッキングを使用すると、ブロック出力が [TR] 端子で指定したトラッキング信号に従うように設定できます。信号トラッキングがアクティブな場合、[Tracking gain (Kt)] パラメーターで指定したゲイン Kt でトラッキング信号とブロック出力の差が積分器入力に返されます。信号トラッキングは、バンプレス制御の転送やマルチループ制御構造でのワインドアップの防止などに応用できます。

バンプレス制御の転送

信号トラッキングを使用して、システムで 2 つのコントローラーを切り替えるバンプレス制御転送を行います。PID コントローラーと別のコントローラーの間で制御を切り替えるとします。これを行うには、次の図に示すように、コントローラーの出力を [TR] 入力に接続します。

詳細については、バンプレス制御の転送を参照してください。

マルチループ制御

信号トラッキングを使用して、次のモデルのようなマルチループ制御方法でのブロックのワインドアップを防ぎます。

Inner Loop サブシステムには次の図に示すブロックが含まれています。

内側のループの出力をトラッキングしているため、PID コントローラーの出力が内側のループの飽和出力を超えることはありません。詳細については、マルチループ制御におけるブロック ワインドアップの回避を参照してください。

依存関係

このパラメーターを有効にするには、[コントローラー] を積分動作をもつタイプに設定します。

プログラムでの使用

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

[トラッキングモードを有効にする] を選択すると、信号 [TR] とブロック出力の差がゲイン Kt で積分器入力に返されます。このパラメーターを使用して、そのフィードバック ループのゲインを指定します。

依存関係

このパラメーターを有効にするには、[トラッキングモードを有効にする] を選択します。

プログラムでの使用

ブロック パラメーター: Kt
タイプ: スカラー
既定の設定: 1

出力の飽和

このオプションをアクティブにすると、ブロックに対するブロック出力が内部的に制限されるため、コントローラーの後に個別の Saturation ブロックを置く必要がなくなります。また、ブロックに組み込みのアンチワインドアップ メカニズムをアクティブにすることもできます ([アンチワインドアップ手法] パラメーターを参照)。[飽和の下限] パラメーターと [飽和の上限] パラメーターを使用して飽和の制限を指定します。

プログラムでの使用

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

ブロック出力の上限を指定します。比例、積分、微分動作の重み付き総和がこの値を上回ると、ブロック出力は [飽和の上限] に保持されます。

依存関係

このパラメーターを有効にするには、[出力を制限する] を選択します。

プログラムでの使用

ブロック パラメーター: UpperSaturationLimit
タイプ: スカラー
既定の設定: Inf

ブロック出力の下限を指定します。比例、積分、微分動作の重み付き総和がこの値を下回ると、ブロック出力は [飽和の下限] に保持されます。

依存関係

このパラメーターを有効にするには、[出力を制限する] を選択します。

プログラムでの使用

ブロック パラメーター: LowerSaturationLimit
タイプ: スカラー
既定の設定: -Inf

[上限] パラメーターと [下限] パラメーターで指定されたブロック出力の制限を Simulink および Simulink Control Design の線形化コマンドで無視します。出力制限を無視すると、操作点によってブロックが出力制限を超えても、操作点を中心にモデルが線形化されます。

依存関係

このパラメーターを有効にするには、[出力を制限する] パラメーターを選択します。

プログラムでの使用

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

[出力を制限する] を選択したときにコントローラー コンポーネントの重み付き総和が指定された出力制限を超えると、ブロック出力は指定された制限に保持されます。ただし、積分器出力は増加を続け (積分器ワインドアップ)、ブロック出力とブロック コンポーネントの合計の差が大きくなります。つまり、出力が飽和制限に拘束されていてもブロックの内部信号は拘束を受けない可能性があります。積分器ワインドアップを防ぐメカニズムがない場合、2 つの結果が考えられます。

  • 入力信号の符号が変化しない場合、積分器はオーバーフローするまで積分を続けます。オーバーフロー値は、積分器出力のデータ型の最大値または最小値です。

  • 重み付き総和が出力制限を超えてから入力信号の符号が変化した場合、積分器のワインドアップを解消して重み付き総和をブロック飽和制限範囲内に戻すには長い時間がかかることがあります。

いずれの場合もコントローラーの性能に悪影響があります。アンチワインドアップ メカニズムを使用せずにワインドアップの影響に対抗するためには、コントローラーをデチューンしなければならないことがありますが (コントローラーのゲインを減らすなど)、コントローラーの反応が遅くなることがあります。この問題を避けるには、このパラメーターを使用してアンチワインドアップ メカニズムをアクティブにします。

なし

アンチワインドアップ メカニズムを使用しません。

[back-calculation]

ブロック出力が飽和したときに、飽和した制御信号と飽和していない制御信号の差を積分器に戻すことで積分器のワインドアップを解消します。次の図は、連続時間コントローラーの逆解析フィードバック回路を示しています。コントローラー構成の実際のフィードバック回路を表示するには、ブロックを右クリックし、[マスク][マスク内を表示] を選択します。

アンチワインドアップ フィードバック回路のゲインは、[逆算係数 (Kb)] パラメーターを使用して指定します。通常は、Kb = I または Kb = sqrt(I*D) (微分動作を含むコントローラーの場合) を設定すれば十分です。逆解析は、むだ時間が比較的大きいプラントに効果的な場合があります [1]

[clamping]

ブロック コンポーネントの合計が出力制限を上回り、積分器出力とブロック入力の符号が同じ場合に積分を停止します。ブロック コンポーネントの合計が出力制限を上回り、積分器出力とブロック入力の符号が反対の場合に積分を再開します。固定は条件付き積分と呼ばれることがあります。

固定は、むだ時間が比較的小さいプラントに役立つことがありますが、むだ時間が大きい場合は過渡応答が低くなる可能性があります [1]

依存関係

このパラメーターを有効にするには、[出力を制限する] パラメーターを選択します。

プログラムでの使用

ブロック パラメーター: AntiWindupMode
型: string、文字ベクトル
値: "none""back-calculation""clamping"
既定の設定: "none"

[back-calculation] アンチワインドアップ手法では、ブロック出力が飽和したときに積分器のワインドアップが解消されます。これは、飽和した制御信号と飽和していない制御信号の差を積分器に戻すことで行われます。アンチワインドアップ フィードバック回路のゲインは、[逆算係数 (Kb)] パラメーターを使用して指定します。詳細については、[アンチワインドアップ手法] パラメーターを参照してください。

依存関係

このパラメーターを有効にするには、[出力を制限する] パラメーターを選択し、[アンチワインドアップ手法] パラメーターを [逆解析] に設定します。

プログラムでの使用

ブロック パラメーター: Kb
タイプ: スカラー
既定の設定: 1

データ型

このタブのパラメーターは、主に Fixed-Point Designer™ を使用した固定小数点コードの生成で使用します。ブロックに関連する数値量のコード生成時の格納方法や処理方法を定義します。

固定小数点コードの生成用にデータ型を設定する必要がある場合は、[固定小数点ツールを開く] をクリックし、そのツールを使用してタブの残りのパラメーターを設定します。固定小数点ツールの使用の詳細については、固定小数点ツールを使用したデータ オブジェクトのオートスケーリング (Fixed-Point Designer)を参照してください。

固定小数点ツールの使用後、このタブのパラメーターを使用して、固定小数点データ型の設定を必要に応じて調整できます。ブロックに関連するそれぞれの量について以下を指定できます。

  • 浮動小数点または固定小数点のデータ型。データ型をブロックの上流の値から継承するかどうかも含みます。

  • 量の最小値と最大値。これにより、固定小数点表現における量のスケーリング方法が決まります。

適切な値を選択するためのサポートとして、 をクリックすると対応する量のデータ型アシスタントが開きます。詳細については、データ型アシスタントを利用したデータ型の指定を参照してください。

[データ型] タブにリストされる具体的な量は、PID Controller ブロックの構成に応じて異なります。一般に、次のタイプの量についてのデータ型を設定できます。

  • 乗算出力 — ブロックのマスクの下で実行された乗算の結果を格納します。たとえば、[P の乗算出力] には、ブロック入力を比例ゲイン [P] で乗算する Gain ブロックの出力が格納されます。

  • パラメーター — [P][I][D] など、数値ブロック パラメーターの値を格納します。

  • ブロック出力 — PID Controller ブロックのマスクの下にあるブロックの出力を格納します。たとえば、Integrator というブロックの出力のデータ型を指定するには [積分器の出力] を使用します。このブロックは、Integrator Subsystem 内のマスクの下にあり、コントローラーの動作の積分項を計算します。

  • アキュムレータ — Sum ブロックに関連する値を格納します。たとえば、[SumI2 Accumulator] は、Sum ブロック SumI2 に関連するアキュムレータのデータ型を設定します。このブロックは、Anti-Windup Subsystem の Back Calculation Subsystem 内のマスクの下にあります。

一般に、リストされたパラメーターに関連するブロックは、PID Controller ブロックのマスク内を参照してサブシステムを調べると見つかります。モデル エクスプローラーを使用して、SumI2 などのリストされたパラメーターの名前をマスクの下で検索することもできます (モデル エクスプローラーを使用した検索と編集を参照してください)。

入力データ型と内部データ型の照合

既定の設定では、ブロック内のデータ型はすべて [継承: 内部ルールによる継承] に設定されます。この設定の場合、Simulink は、組み込みターゲット ハードウェアのプロパティを考慮しつつ、数値の精度、パフォーマンス、生成コードのサイズのバランスが取れるように、データ型を選択します。

状況によっては、ブロック内のデータ型の間で非互換性が発生することがあります。たとえば、連続時間では、マスクの下の Integrator ブロックは [double] 型の信号しか受け入れません。ブロックの入力信号の型が [double] に変換できない [uint16] などの型の場合、コードの生成時に型の継承に関する内部ルールによってエラーが生成されます。

このようなエラーを回避するために、[データ型] の設定を使用して強制的にデータ型変換を行うことができます。たとえば、[P の乗算出力][I の乗算出力]、および [D の乗算出力] を明示的に [double] に設定すると、連続時間の積分器に到達する信号が必ず [double] 型になります。

一般に、コード生成アプリケーション用にブロックを連続時間で使用することは推奨されません。ただし、一部の値をブロック内の下流の信号の制約と互換性がないデータ型に明示的に設定した場合、離散時間でも同様のデータ型エラーが発生することがあります。その場合は、[データ型] の設定を使用して、すべてのデータ型を内部的に互換性があるものにします。

固定小数点が使用可能なパラメーター

固定小数点演算の丸めモードを指定します。詳細については、丸め (Fixed-Point Designer)を参照してください。

ブロック パラメーターは常に最近傍の表現可能な値に丸められます。ブロックパラメーターの丸めを直接制御するには、MATLAB® の丸め関数を使用する式をマスク フィールドに入力します。

プログラムでの使用

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

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

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

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

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

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

ヒント

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

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

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

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

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

プログラムでの使用

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

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

プログラムでの使用

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

状態属性

このタブのパラメーターは、主にコード生成で使用します。

連続時間 PID コントローラーの積分器またはフィルターに関連する状態に固有名を割り当てます (離散時間 PID コントローラーの状態名の詳細については、[状態名] パラメーターを参照してください)。状態名は、たとえば以下に使用されます。

  • 生成コード内の対応する変数

  • シミュレーション中に状態をログに記録する際のストレージ名の一部

  • ブロックを線形化して得られる線形モデル内の対応する状態

有効な状態名は英字またはアンダースコア文字で始まり、英数字またはアンダースコア文字が続きます。

依存関係

このパラメーターを有効にするには、[時間領域][連続時間] に設定します。

プログラムでの使用

パラメーター: IntegratorContinuousStateAttributesFilterContinuousStateAttributes
型: 文字ベクトル
既定の設定: ''

離散時間 PID コントローラーの積分器またはフィルターに関連する状態に固有名を割り当てます (連続時間 PID コントローラーの状態名の詳細については、[状態名 ('position' など)] パラメーターを参照してください)。

有効な状態名は英字またはアンダースコア文字で始まり、英数字またはアンダースコア文字が続きます。状態名は、たとえば以下に使用されます。

  • 生成コード内の対応する変数

  • シミュレーション中に状態をログに記録する際のストレージ名の一部

  • ブロックを線形化して得られる線形モデル内の対応する状態

コード生成での状態名の使用の詳細については、個別の信号、状態、およびパラメーター データ要素へのストレージ クラスの適用 (Simulink Coder)を参照してください。

依存関係

このパラメーターを有効にするには、[時間領域][離散時間] に設定します。

プログラムでの使用

パラメーター: IntegratorStateIdentifierFilterStateIdentifier
型: string、文字ベクトル
既定の設定: ""

このパラメーターは、離散時間の積分器またはフィルターの状態名を Simulink の信号オブジェクトに関連付けるよう要求する場合に選択します。

依存関係

このパラメーターを離散時間の積分器またはフィルターの状態に対して有効にするには、次のようにします。

  1. [時間領域][離散時間] に設定します。

  2. 積分器またはフィルターの [状態名] の値を指定します。

  3. モデル コンフィギュレーション パラメーター [信号の関連付け][なし] 以外の値に設定します。

このチェック ボックスをオンにすると、対応する積分器またはフィルターの状態に対して [コード生成ストレージ クラス] が無効になります。

プログラムでの使用

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

コード生成の状態ストレージ クラスを選択します。外部コードへのインターフェイスを設定する必要がない場合は Auto を選択します。

詳細については、個別の信号、状態、およびパラメーター データ要素へのストレージ クラスの適用 (Simulink Coder)およびApply Custom Storage Classes to Individual Signal, State, and Parameter Data Elements (Embedded Coder)を参照してください。

依存関係

このパラメーターを離散時間の積分器またはフィルターの状態に対して有効にするには、次のようにします。

  1. [時間領域][離散時間] に設定します。

  2. 積分器またはフィルターの [状態名] の値を指定します。

  3. モデル コンフィギュレーション パラメーター [信号の関連付け][なし] 以外の値に設定します。

プログラムでの使用

ブロック パラメーター: IntegratorRTWStateStorageClassFilterRTWStateStorageClass
型: string、文字ベクトル
値: "Auto""ExportedGlobal""ImportedExtern" | "ImportedExternPointer"
既定の設定: "Auto"

const または volatile などのストレージ型修飾子を指定します。

メモ

このパラメーターは将来のリリースで削除されます。ストレージ型修飾子をデータに適用するには、カスタム ストレージ クラスとメモリ セクションを使用します。Embedded Coder® で ERT ベースのコード生成ターゲットを使用している場合を除き、カスタム ストレージ クラスとメモリ セクションは生成されたコードに影響しません。

依存関係

このパラメーターを有効にするには、[コード生成ストレージ クラス][自動] 以外のいずれかの値に設定します。

プログラムでの使用

ブロック パラメーター: IntegratorRTWStateStorageTypeQualifierFilterRTWStateStorageTypeQualifier
型: string、文字ベクトル
値: """const""volatile"
既定の設定: ""

モデルの例

ブロックの特性

データ型

double | single | base integer | fixed point

直接フィードスルー

なし

多次元信号

なし

可変サイズの信号

なし

ゼロクロッシング検出

なし

参照

[1] Visioli, A., "Modified Anti-Windup Scheme for PID Controllers," IEE Proceedings - Control Theory and Applications, Vol. 150, Number 1, January 2003

拡張機能

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

R2009b で導入