このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
Discrete PID Controller (2DOF)
離散時間と連続時間の 2 自由度 PID コントローラー
ライブラリ:
Simulink /
Discrete
説明
Discrete PID Controller (2DOF) ブロックは、2 自由度 PID コントローラー (PID、PI、または PD) を実装します。このブロックは、[時間領域] パラメーターを [離散時間]
に設定した PID Controller (2DOF) ブロックと同一です。
このブロックは、基準信号と測定したシステム出力の差に基づいて、出力信号を生成します。このブロックは、指定した設定点の重み (b および c) に従って、比例動作と微分動作の重み付き差分信号を計算します。ブロック出力は、それぞれの差分信号の比例動作、積分動作、微分動作の和で、各動作はゲイン パラメーター P、I、D に応じて重み付けされます。1 次極によって微分動作がフィルター処理されます。
このブロックでは、複数のコントローラー タイプと構造がサポートされます。ブロックの設定可能なオプションは次のとおりです。
コントローラー タイプ (PID、PI、または PD) — [コントローラー] パラメーターを参照してください。
コントローラー形式 (並列または理想) — [形式] パラメーターを参照してください。
時間領域 (離散または連続) — [時間領域] パラメーターを参照してください。
初期条件とリセット トリガー — [ソース] パラメーターおよび [外部リセット] パラメーターを参照してください。
出力飽和の制限および組み込みのアンチワインドアップ メカニズム — [出力を制限する] パラメーターを参照してください。
バンプレス制御転送とマルチループ制御の信号トラッキング — [トラッキングモードを有効にする] パラメーターを参照してください。
これらのオプションを変更すると、さまざまなバリアント サブシステムがアクティブになり、ブロックの内部構造が変わります (Implement Variations in Separate Hierarchy Using Variant Subsystemsを参照)。ブロックの内部構造とバリアント サブシステムを調べるには、ブロックを右クリックし、[マスク] 、 [マスク内を表示] を選択します。
制御の構成
一般的な実装では、PID Controller ブロックはフィードバック ループのフィードフォワード パスで動作します。
エラー信号 (設定点とシステム出力の差分) を受け入れる単入力ブロックについては、Discrete PID Controller を参照してください。
PID ゲインの調整
PID コントローラーの係数および設定点の重みは手動でも自動でも調整が可能です。自動調整には、Simulink® Control Design™ ソフトウェアが必要です。自動調整の詳細については、[調整法の選択] パラメーターを参照してください。
例
設定点トラッキング向けの 2 自由度の PID 制御
この例では、設定点の重みによる 2 自由度 PID 制御を使用して電気モーターの速度を調整する方法を示します。このモデルはPID Controller (2DOF)ブロックを使用します。モデルは 60 から 30 rpm の間の設定点値を変更します。PID コントローラーで使用する単位を rad/s に変換するために、このモデルでは、Signal Conversionブロックを使用します。
端子
入力
Ref — 基準信号
スカラー | ベクトル
プラントが従う基準信号。次のようになります。
基準信号がベクトルの場合、ブロックは信号ごとに独立して機能し、PID 係数をベクトル化して同じ次元のベクトル出力信号を生成します。PID 係数および他の一部のパラメーターは、入力信号と同じ次元のベクトルとして指定できます。これは、入力信号のエントリごとに個別の PID コントローラーを指定することと同等です。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Port_1( y ) — 測定されたシステム出力
スカラー | ベクトル
プラント出力からのコントローラーに対するフィードバック信号。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
ydot — 外部ソースの導関数
スカラー | ベクトル
R2024a 以降
プラント信号 y の導関数をブロックに入力として直接提供します。これは、モデル内に利用可能な微分信号があり、ブロック内での微分の計算をスキップする場合に便利です。
依存関係
この入力端子を有効にするには、微分動作をもつコントローラー タイプを選択し、[外部ソースの導関数を使用] を有効にします。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
P — 比例ゲイン
スカラー | ベクトル
比例ゲイン。外部のソースからブロックに提供されます。外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
依存関係
この端子を有効にするには、[コントローラーのパラメーター] の [ソース] を [外部]
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
I — 積分ゲイン
スカラー | ベクトル
積分ゲイン。外部のソースからブロックに提供されます。外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
ゲインを外部から提供する場合、積分ゲインの時間変化も積分されます。この結果は、PID ゲインがブロック内で実装される方法であるために発生します。詳細については、[コントローラーのパラメーター] の [ソース] パラメーターを参照してください。
依存関係
この端子を有効にするには、[コントローラーのパラメーター] の [ソース] を [外部]
に設定し、[コントローラー] を積分動作をもつコントローラー タイプに設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
I*Ts — サンプル時間を乗算した積分ゲイン
スカラー | ベクトル
離散時間コントローラーでは、コントローラーのサンプル時間を乗算した積分ゲイン。外部のソースからブロックに提供されます。外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
メモ
PID 調整器アプリや Closed-Loop PID Autotuner ブロックなどの PID 調整ツールでは、ゲイン I は調整されますが、I*Ts は調整されません。そのため、この端子に送る前に、調整ツールから取得した積分ゲインの値にサンプル時間を乗算します。
I の代わりに I*Ts を使用すると、ブロックで積分を実行するために必要な計算が少なくなります。これにより、生成コードの実行時間が改善されます。
連続時間コントローラーでは、[I*Ts を使用] を無効にし、代わりに [I] 端子を使用します。
依存関係
この端子を有効にするには、[コントローラーのパラメーター] の [ソース] を [外部]
に設定し、[コントローラー] を積分動作をもつコントローラー タイプに設定し、[I*Ts を使用] を有効にします。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
D — 微分ゲイン
スカラー | ベクトル
微分ゲイン。外部のソースからブロックに提供されます。外部ゲイン入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
ゲインを外部から提供する場合、微分ゲインの時間変化も微分されます。この結果は、PID ゲインがブロック内で実装される方法であるために発生します。詳細については、[コントローラーのパラメーター] の [ソース] パラメーターを参照してください。
依存関係
この端子を有効にするには、[コントローラーのパラメーター] の [ソース] を [外部]
に設定し、[コントローラー] を微分動作をもつコントローラー タイプに設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
N — フィルター係数
スカラー | ベクトル
微分フィルター係数。外部のソースからブロックに提供されます。外部係数入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
依存関係
この端子を有効にするには、[コントローラーのパラメーター] の [ソース] を [外部]
に設定し、[コントローラー] を不完全微分をもつコントローラー タイプに設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
b — 比例の設定点の重み
スカラー | ベクトル
比例の設定点の重み。外部のソースからブロックに提供されます。外部入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
依存関係
この端子を有効にするには、[コントローラーのパラメーター] の [ソース] を [外部]
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
c — 微分の設定点の重み
スカラー | ベクトル
微分の設定点の重み。外部のソースからブロックに提供されます。外部入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID 係数をモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
依存関係
この端子を有効にするには、[コントローラーのパラメーター] の [ソース] を [外部]
に設定し、[コントローラー] を微分動作をもつコントローラー タイプに設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
Reset — 外部リセット トリガー
スカラー
積分器とフィルターを初期条件にリセットするトリガー。リセットをトリガーする信号の種類は、[外部リセット] パラメーターを使用して指定します。そのパラメーターで指定されたトリガー タイプが端子のアイコンで示されます。たとえば、次の図は、[外部リセット] が [立ち上がり]
に設定された連続時間の PID Controller (2DOF) ブロックを示しています。
トリガーが発生すると、ブロックにより、積分器とフィルターが、[Integrator Initial condition] パラメーターと [Filter Initial condition] パラメーターまたは [I0] 端子と [D0] 端子で指定された初期条件にリセットされます。
メモ
Motor Industry Software Reliability Association (MISRA™) ソフトウェア標準規格に準拠するために、モデルで Boolean 信号を使って PID controller ブロックの外部リセット端子を駆動しなければなりません。
依存関係
この端子を有効にするには、[外部リセット] を [なし]
以外のいずれかの値に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
| Boolean
I0 — 積分器の初期条件
スカラー | ベクトル
積分器の初期条件。外部のソースからブロックに提供されます。
依存関係
この端子を有効にするには、[初期条件] の [ソース] を [外部]
に設定し、[コントローラー] を積分動作をもつコントローラー タイプに設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
D0 — フィルターの初期条件
スカラー | ベクトル
微分フィルターの初期条件。外部のソースからブロックに提供されます。
依存関係
この端子を有効にするには、[初期条件] の [ソース] を [外部]
に設定し、[コントローラー] を微分動作をもつコントローラー タイプに設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
up — 出力の飽和の上限
スカラー | ベクトル
ブロックの出力の上限。外部のソースからブロックに提供されます。比例、積分、微分動作の重み付き総和がこの端子で提供される値を上回ると、ブロック出力はこの値に保持されます。
依存関係
この端子を有効にするには、[出力を制限する] を選択して出力の飽和の [ソース] を [外部]
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
lo — 出力の飽和の下限
スカラー | ベクトル
ブロックの出力の下限。外部のソースからブロックに提供されます。比例、積分、微分動作の重み付き総和がこの端子で提供される値を下回ると、ブロック出力はこの値に保持されます。
依存関係
この端子を有効にするには、[出力を制限する] を選択して出力の飽和の [ソース] を [外部]
に設定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
TR — トラッキング信号
スカラー | ベクトル
追跡するコントローラー出力の信号。信号トラッキングがアクティブな場合、トラッキング信号とブロック出力の差が積分器入力に返されます。信号トラッキングは、システムで 2 つのコントローラーを切り替えるバンプレス制御転送を実装する場合に便利です。また、マルチループ制御システムでブロックのワインドアップを防ぐのにも役立ちます。詳細については、[トラッキング モードを有効にする] パラメーターを参照してください。
依存関係
この端子を有効にするには、[トラッキングモードを有効にする] パラメーターを選択します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
TDTI — 離散積分器時間
スカラー
離散積分器時間。スカラーとしてブロックに提供されます。Simulink または外部ハードウェア上のいずれかでブロックが実行されるレートを定義する、離散積分器のサンプル時間の独自の値を使用できます。ブロックが条件付き実行サブシステム内で使用される場合、離散時間積分器時間の値は、外部割り込みの平均サンプリング レートに一致する必要があります。
言い換えると、Ts
を、外部割り込みの平均サンプリング レートに値が一致するように、以下の任意の積分手法について指定できます。離散時間におけるコントローラーの伝達関数の微分項は次のようになります。
α(z) は、このパラメーターで指定した積分手法に応じて異なります。
前進オイラー法
後退オイラー法
台形則
離散時間の積分の詳細については、Discrete-Time Integrator ブロックのリファレンス ページを参照してください。条件付きで実行されるサブシステムの詳細については、条件付き実行サブシステムの概要を参照してください。
依存関係
この端子を有効にするには、[時間領域] を [離散時間]
に設定し、[PID コントローラーが条件付き実行サブシステム内にある] オプションをオンにします。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
出力
Port_1( u ) — コントローラーの出力
スカラー | ベクトル
コントローラーの出力。一般に、設定点の重みと比例、積分、および微分のゲイン パラメーターで重み付けした入力信号、入力信号の積分、および入力信号の微分の総和に基づきます。1 次極によって微分動作がフィルター処理されます。コントローラーの信号に含まれる項は、[コントローラー] パラメーターの選択に応じて異なります。現在の設定に対応するコントローラーの基本の伝達関数は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。飽和制限を指定する [上限] と [下限] の飽和パラメーターなど、ほかにもブロック出力を変更するパラメーターがあります。
コントローラーの出力は、いずれかの入力がベクトル信号であればベクトル信号になります。その場合、ブロックは N 個の独立した PID コントローラーとして機能します。N は入力ベクトルの信号数です。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fixed point
パラメーター
コントローラー — コントローラーのタイプ
PID
(既定値) | PI
| PD
コントローラーに比例項、積分項、微分項のいずれを含めるかを指定します。
PID
比例動作、積分動作、微分動作。
PI
比例動作と積分動作のみ。
PD
比例動作と微分動作のみ。
ヒント
現在の設定に対応するコントローラーの出力は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。
プログラムでの使用
ブロック パラメーター: Controller |
型: string、文字ベクトル |
値: "PID" 、"PI" 、"PD" |
既定の設定: "PID" |
形式 — コントローラーの構造
並列
(既定値) | 理想
コントローラーの構造を並列と理想のどちらにするかを指定します。
並列
比例、積分、微分のゲイン P、I、D が個別に適用されます。たとえば、並列形式の連続時間 2-DOF PID コントローラーの出力 u は次のようになります。
r は基準信号、y は測定されたプラント出力信号、b と c は設定点の重みです。
並列形式の離散時間 2-DOF コントローラーの場合、コントローラー出力は次のようになります。
α(z) と β(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。
理想
比例ゲイン P がすべての動作の総和に作用します。たとえば、理想形式の連続時間 2-DOF PID コントローラーの場合、コントローラー出力は次のようになります。
理想形式の離散時間 2-DOF PID コントローラーの伝達関数は次のようになります。
α(z) と β(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。
ヒント
現在の設定に対応するコントローラーの出力は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。
プログラムでの使用
ブロック パラメーター: Controller |
型: string、文字ベクトル |
値: "Parallel" 、"Ideal" |
既定の設定: "Parallel" |
時間領域 — 離散時間コントローラーまたは連続時間コントローラーを指定
離散時間
(既定値) | 連続時間
[離散時間]
を選択する場合は、ブロックに対して明示的なサンプル時間を指定することをお勧めします。[サンプル時間 (継承は -1)] パラメーターを参照してください。[離散時間]
を選択すると、[積分手法] パラメーターと [フィルター手法] パラメーターも有効になります。
PID Controller ブロックが同期状態制御 (State Control (HDL Coder) ブロックを参照) を使用するモデル内にある場合は、[連続時間]
を選択できません。
メモ
PID Controller (2DOF) ブロックと Discrete PID Controller (2DOF) ブロックは、このパラメーターの既定値以外は同一です。
プログラムでの使用
ブロック パラメーター: TimeDomain |
型: string、文字ベクトル |
値: "Continuous-time" 、"Discrete-time" |
既定の設定: "Discrete-time" |
PID コントローラーが条件付き実行サブシステム内にある — 離散積分器時間端子を有効にする
オフ
(既定値) | オン
離散時間 PID コントローラーに対しては、離散時間積分器端子を有効にして独自の離散時間積分器サンプル時間の値を使用します。適切に積分が行われるようにするには、TDTI
端子を使用して Δt のスカラー値を提供して、正確な離散時間積分が行われるようにします。
依存関係
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定します。
プログラムでの使用
ブロック パラメーター: UseExternalTs |
型: string、文字ベクトル |
値: "on" 、"off" |
既定の設定: "off" |
サンプル時間 (継承は -1) — サンプル間の離散間隔
–1 (既定値) | 正のスカラー
0.1 などの正のスカラー値を入力してサンプル時間を指定します。既定の離散サンプル時間は -1 で、この場合は上流のブロックからサンプル時間が継承されます。ただし、特に上流のブロックのサンプル時間が変わることが予想される場合などは、コントローラーのサンプル時間を明示的に設定することをお勧めします。コントローラー係数 P、I、D、N の作用はサンプル時間に依存します。そのため、一連の係数値が与えられている場合、サンプル時間を変更するとコントローラーの性能が変化します。
詳細については、サンプル時間の指定を参照してください。
連続時間コントローラーを実装するには、[時間領域] を [連続時間]
に設定します。
ヒント
外部指定または可変のサンプル時間でブロックを実行する場合は、このパラメーターを -1 に設定し、ブロックを Triggered Subsystem に配置します。その後、目的のサンプル時間でサブシステムをトリガーします。
依存関係
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定します。
プログラムでの使用
ブロック パラメーター: SampleTime |
タイプ: スカラー |
値: -1 、正のスカラー |
既定の設定: -1 |
積分手法 — 離散時間コントローラーの積分の計算手法
前進オイラー法
(既定値) | 後退オイラー法
| 台形則
離散時間におけるコントローラーの伝達関数の積分項は Ia(z) です。a(z) は、このパラメーターで指定した積分手法に応じて異なります。
前進オイラー法
前進矩形 (左側) 近似。
この手法はコントローラーの帯域幅と比較してナイキスト制限が大きくなる、小さいサンプル時間に最適です。大きいサンプリング時間で
前進オイラー法
手法を使用すると、連続時間で安定しているシステムを離散化しても不安定さが生じることがあります。後退オイラー法
後退矩形 (右側) 近似。
後退オイラー法
手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。台形則
双一次変換。
台形則
手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。使用可能なすべての積分手法の中で、離散システムと対応する連続時間システムの周波数領域プロパティが最も近くなるのは台形則
手法です。ヒント
現在の設定に対応するコントローラーの方程式は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。
離散時間の積分の詳細については、Discrete-Time Integrator ブロックのリファレンス ページを参照してください。
依存関係
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定し、[コントローラー] を積分動作をもつコントローラー タイプに設定します。
プログラムでの使用
ブロック パラメーター: IntegratorMethod |
型: string、文字ベクトル |
値: "Forward Euler" 、"Backward Euler" 、"Trapezoidal" |
既定の設定: "Forward Euler" |
フィルター手法 — 離散時間コントローラーの微分の計算手法
前進オイラー法
(既定値) | 後退オイラー法
| 台形則
離散時間におけるコントローラーの伝達関数の微分項は次のようになります。
α(z) は、このパラメーターで指定したフィルター手法に応じて異なります。
前進オイラー法
前進矩形 (左側) 近似。
この手法はコントローラーの帯域幅と比較してナイキスト制限が大きくなる、小さいサンプル時間に最適です。大きいサンプリング時間で
前進オイラー法
手法を使用すると、連続時間で安定しているシステムを離散化しても不安定さが生じることがあります。後退オイラー法
後退矩形 (右側) 近似。
後退オイラー法
手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。台形則
双一次変換。
台形則
手法の利点は、この手法で安定した連続時間システムを離散化すると、常に安定した離散時間結果が得られることです。使用可能なすべての積分手法の中で、離散システムと対応する連続時間システムの周波数領域プロパティが最も近くなるのは台形則
手法です。ヒント
現在の設定に対応するコントローラーの方程式は、ブロック パラメーターの [補償器の式] セクション内とマスク内に表示されます。
離散時間の積分の詳細については、Discrete-Time Integrator ブロックのリファレンス ページを参照してください。
依存関係
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定し、[不完全微分の使用] を有効にします。
プログラムでの使用
ブロック パラメーター: FilterMethod |
型: string、文字ベクトル |
値: "Forward Euler" 、"Backward Euler" 、"Trapezoidal" |
既定の設定: "Forward Euler" |
メイン
ソース — コントローラー ゲインとフィルター係数のソース
内部 (既定値) | 外部
内部
コントローラー ゲイン、フィルター係数、および設定点の重みを対応するブロック パラメーター [P]、[I]、[D]、[N]、[b]、および [c] を使用して指定します。
外部
PID ゲイン、フィルター係数、および設定点の重みをブロック入力を使用して外部で指定します。ブロックに現在のコントローラー タイプに必要な各パラメーターの追加の入力端子が表示されます。
パラメーターの外部入力を有効にすると、それらの値をブロックの外部で計算し、これらを信号入力としてブロックに提供することができます。
外部入力は、ブロックの PID ゲインに対して異なる PID パラメーター化をマッピングするときなどに便利です。また、外部ゲイン入力を使用すると、ゲイン スケジュール PID 制御を実装することもできます。ゲイン スケジュール制御では、PID ゲインをモデルのロジックまたはその他の計算によって特定し、それらをブロックに接続します。
ゲインを外部から提供する場合、積分ゲイン値と微分ゲイン値の時間変化はそれぞれ積分および微分されます。微分の設定点の重み c も微分されます。この結果は、連続時間と離散時間のどちらにおいても、積分や微分の前に信号にゲインが適用されるために発生します。たとえば、外部入力のある連続時間 PID コントローラーの場合、積分項は次の図に示されているように実装されます。
ブロック内では、入力信号 u は外部から提供される積分ゲイン I によって積分の前に乗算されます。この実装の結果、次のようになります。
したがって、積分ゲインは積分の中に含められます。同様に、ブロックの微分項では微分ゲインによる乗算が微分より先に行われるため、微分ゲイン D および微分の設定点の重み c は微分されることになります。
プログラムでの使用
ブロック パラメーター: ControllerParametersSource |
型: string、文字ベクトル |
値: "internal" 、"external" |
既定の設定: "internal" |
比例項 (P) — 比例ゲイン
1 (既定値) | スカラー | ベクトル
比例ゲインの有限で実数のゲイン値を指定します。[Controller form] に応じて次のようになります。
並列
— 比例動作が積分動作および微分動作に作用しません。たとえば、並列形式の連続時間 2-DOF PID コントローラーの出力 u は次のようになります。r は基準信号、y は測定されたプラント出力信号、b と c は設定点の重みです。
並列形式の離散時間 2-DOF コントローラーの場合、コントローラー出力は次のようになります。
α(z) と β(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。
理想
— 比例ゲインで積分項および微分項が乗算されます。たとえば、理想形式の連続時間 2-DOF PID コントローラーの場合、コントローラー出力は次のようになります。理想形式の離散時間 2-DOF PID コントローラーの伝達関数は次のようになります。
α(z) と β(z) は、それぞれ [積分手法] パラメーターと [フィルター手法] パラメーターで決まります。
調整可能: Yes
依存関係
このパラメーターを有効にするには、コントローラー パラメーターの [ソース] を [内部]
に設定します。
プログラムでの使用
ブロック パラメーター: P |
型: スカラー、ベクトル |
既定の設定: 1 |
積分項 (I) — 積分ゲイン
1 (既定値) | スカラー | ベクトル
積分ゲインの有限で実数のゲイン値を指定します。
調整可能: Yes
依存関係
このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース] を [内部]
に設定し、[コントローラー] を積分動作をもつタイプに設定します。
プログラムでの使用
ブロック パラメーター: I |
型: スカラー、ベクトル |
既定の設定: 1 |
積分項 (I*Ts) — サンプル時間を乗算した積分ゲイン
1 (既定値) | スカラー | ベクトル
離散時間コントローラーでは、サンプル時間を乗算した積分ゲインの有限で実数のゲイン値を指定します。
メモ
PID 調整器アプリや Closed-Loop PID Autotuner ブロックなどの PID 調整ツールでは、ゲイン I は調整されますが、I*Ts は調整されません。そのため、このパラメーターに書き込む前に、調整ツールから取得した積分ゲインの値にサンプル時間を乗算します。
I の代わりに I*Ts を使用すると、ブロックで積分を実行するために必要な計算が少なくなります。これにより、生成コードの実行時間が改善されます。
連続時間コントローラーでは、[I*Ts を使用] を無効にし、代わりに [I] パラメーターを使用します。
調整可能: No
依存関係
このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース] を [内部]
に設定し、[コントローラー] を積分動作をもつタイプに設定し、[I*Ts を使用] パラメーターを有効にします。
プログラムでの使用
ブロック パラメーター: I |
型: スカラー、ベクトル |
既定の設定: 1 |
I*Ts を使用 — サンプル時間を乗算した積分ゲインを使用
off
(既定値) | on
積分動作をもつ離散時間コントローラーでは、ブロックは積分ゲインを入力として受け取り、それに積分の実行の一環として内部的にサンプル時間を乗算します。このパラメーターを有効にした場合は、積分ゲイン (I) の代わりに、サンプル時間を乗算した積分ゲイン (I*Ts) を入力として明示的に指定します。これにより、内部計算の数が少なくなり、生成コードの実行時間を改善する場合に役立ちます。
信号のトラッキングまたはアンチワインドアップ モードの逆解析を有効にしていて、[I*Ts] を有効にした場合は、トラッキング ゲイン パラメーター [Kt] を Kt*Ts
に設定し、逆算係数 [Kb] を Kb*Ts
に設定する必要もあります。
連続時間コントローラーでは、このパラメーターを有効にしても、積分ゲインには影響はありません。
依存関係
このパラメーターを有効にするには、[コントローラー] を積分動作をもつコントローラー タイプに設定します。
プログラムでの使用
ブロック パラメーター: UseKiTs |
型: string、文字ベクトル |
値: "on" 、"off" |
既定の設定: "on" |
微分項 (D) — 微分ゲイン
0 (既定値) | スカラー | ベクトル
微分ゲインの有限で実数のゲイン値を指定します。
調整可能: Yes
依存関係
このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース] を [内部]
に設定し、[コントローラー] を [PID]
または [PD]
に設定します。
プログラムでの使用
ブロック パラメーター: D |
型: スカラー、ベクトル |
既定の設定: 0 |
外部ソースの導関数を使用 — ブロック入力端子で導関数を指定
off
(既定値) | on
R2024a 以降
このオプションは、プラント信号 y の導関数をブロックへの入力 ydot として直接指定する場合に選択します。これは、モデル内に利用可能な微分信号があり、ブロック内での微分の計算をスキップする場合に便利です。
依存関係
このオプションを有効にするには、微分動作をもつコントローラー タイプを選択します。
不完全微分の使用 — 微分項にフィルターを適用
on
(既定値) | off
離散時間の PID コントローラーの場合に限り、このオプションをオフにすると不完全微分が完全離散時間微分器に置き換わります。この場合、コントローラーの出力の微分項は次のようになります。
連続時間の PID コントローラーについては、常に完全微分項になります。
依存関係
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定し、[コントローラー] を微分項をもつタイプに設定します。
プログラムでの使用
ブロック パラメーター: UseFilter |
型: string、文字ベクトル |
値: "on" 、"off" |
既定の設定: "on" |
フィルター係数 (N) — 微分フィルター係数
100 (既定値) | スカラー | ベクトル
フィルター係数の有限で実数のゲイン値を指定します。フィルター係数により、ブロックの微分動作のフィルターの極配置が決まります。フィルター極の配置は [時間領域] パラメーターに依存します。
[時間領域] が
[連続時間]
の場合、極配置はs = -N
になります。[時間領域] が
[離散時間]
の場合、極配置は [フィルター手法] パラメーターに応じて異なります。フィルター手法 フィルター極の配置 前進オイラー法
後退オイラー法
台形則
このブロックでは N = Inf
(理想的な完全微分) をサポートしていません。[時間領域] が [離散時間]
の場合、[不完全微分の使用] をオフにして微分フィルターを削除できます。
調整可能: Yes
依存関係
このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース] を [内部]
に設定し、[コントローラー] を [PID]
または [PD]
に設定します。
プログラムでの使用
ブロック パラメーター: N |
型: スカラー、ベクトル |
既定の設定: 100 |
設定点の重み (b) — 比例の設定点の重み
1 (既定値) | スカラー | ベクトル
コントローラーの比例項の設定点の重み。2-DOF コントローラーの出力の比例項は P(br–y) です。r は基準信号で、y は測定されたプラント出力です。b を 0 に設定すると、基準信号での比例動作が削除されるため、設定点でのステップ変更に対するシステム応答のオーバーシュートが減少します。b および c の相対値を変更すると、外乱の抑制と設定点の追従のバランスが変わります。
調整可能: Yes
依存関係
このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース] を [内部]
に設定します。
プログラムでの使用
ブロック パラメーター: b |
型: スカラー、ベクトル |
既定の設定: 1 |
設定点の重み (c) — 微分の設定点の重み
1 (既定値) | スカラー | ベクトル
コントローラーの微分項の設定点の重み。2-DOF コントローラーの微分項は cr–y に作用します。r は基準信号で、y は測定されたプラント出力です。したがって、c を 0 に設定すると、基準信号での微分動作が削除されるため、設定点でのステップ変更に対する過渡応答が減少します。コントローラーで過渡応答を過度に増やさずに効果的な外乱の抑制と滑らかな設定点の追従の両方を実現するには、c を 0 に設定してください。b および c の相対値を変更すると、外乱の抑制と設定点の追従のバランスが変わります。
調整可能: Yes
依存関係
このパラメーターを有効にするには、[メイン] タブで、コントローラー パラメーターの [ソース] を [内部]
に設定し、[コントローラー] を微分動作をもつタイプに設定します。
プログラムでの使用
ブロック パラメーター: c |
型: スカラー、ベクトル |
既定の設定: 1 |
調整法の選択 — コントローラー係数の自動調整ツール
伝達関数ベース (PID 調整器アプリ)
(既定値) | 周波数応答ベース
Simulink Control Design ソフトウェアがある場合は、PID 係数がブロックの内部である場合に自動で調整できます。これを行うには、このパラメーターを使用して調整ツールを選択し、[調整] をクリックします。
伝達関数ベース (PID 調整器アプリ)
PID 調整器を使用します。関連するシステム応答を調べ、性能を検証して、PID 係数を対話形式で調整できます。PID 調整器では、係数 [P]、[I]、[D]、[N] に加え、設定点の係数 [b] および [c] をすべて調整できます。既定の設定では、PID 調整器は線形化されたプラント モデルで動作します。線形化できないモデルについては、シミュレーションまたは測定による応答データから推測されたプラント モデルに対して、PID 係数を調整することができます。詳細については、2 自由度 PID コントローラーの設計 (Simulink Control Design)を参照してください。
周波数応答ベース
周波数応答ベースの PID 調整器を使用します。シミュレーションから得られた周波数応答の推定データをベースにして、PID コントローラーの係数を調整できます。この調整法は、線形化できないプラントやゼロに線形化されるプラントで特に役立ちます。周波数応答ベースの PID 調整器では、係数 [P]、[I]、[D]、[N] が調整されますが、設定点の係数 [b] および [c] は調整されません。詳細については、プラント周波数応答データからの 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" |
積分器 — 積分器の初期条件
0 (既定値) | スカラー | ベクトル
Simulink では、シミュレーションの開始時や指定のトリガー イベントの発生時に、積分器の初期条件を使用して積分器を初期化します ([外部リセット] を参照)。積分器の初期条件とフィルターの初期条件によって PID controller ブロックの初期出力が決まります。
積分器の初期条件を NaN
または Inf
にすることはできません。
依存関係
このパラメーターを使用するには、[初期化] タブで、[ソース] を [内部]
に設定し、[コントローラー] を積分動作をもつタイプに設定します。
プログラムでの使用
ブロック パラメーター: InitialConditionForIntegrator |
型: スカラー、ベクトル |
既定の設定: 0 |
フィルター — フィルターの初期条件
0 (既定値) | スカラー | ベクトル
Simulink では、シミュレーションの開始時や指定のトリガー イベントの発生時に、フィルターの初期条件を使用して微分フィルターを初期化します ([外部リセット] を参照)。積分器の初期条件とフィルターの初期条件によって PID controller ブロックの初期出力が決まります。
フィルターの初期条件を NaN
または Inf
にすることはできません。
依存関係
このパラメーターを使用するには、[初期化] タブで、[ソース] を [内部]
に設定し、微分フィルターをもつコントローラーを使用します。
プログラムでの使用
ブロック パラメーター: InitialConditionForFilter |
型: スカラー、ベクトル |
既定の設定: 0 |
微分器 — 完全微分の初期条件
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、文字ベクトル |
値: "Auto" 、"Output" |
既定の設定: "Auto" |
外部リセット — 積分器とフィルター値のリセットのトリガー
なし
(既定値) | 立ち上がり
| 立ち下がり
| 両方
| レベル
ブロックで積分器とフィルターを初期条件にリセットするトリガー条件を指定します ([不完全微分の使用] が選択されていない場合、トリガーにより積分器と微分器が初期条件にリセットされます)。[なし]
以外のオプションを選択すると、ブロックで外部リセット信号の [リセット] 端子が有効になります。
なし
積分器とフィルター (または微分器) の出力をシミュレーションの開始時に初期条件に設定し、シミュレーション中はリセットしません。
立ち上がり
リセット信号が立ち上がりエッジをもつ場合に出力をリセットします。
立ち下がり
リセット信号が立ち下がりエッジをもつ場合に出力をリセットします。
両方
リセット信号が立ち上がりまたは立ち下がりをもつ場合に出力をリセットします。
レベル
リセット信号が次のいずれかに該当する場合に出力をリセットします。
現在のタイム ステップで非ゼロである場合
以前のタイム ステップでの非ゼロから現在のタイム ステップでの 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] 入力に接続します。
詳細については、2 自由度 PID コントローラーによるバンプレス制御転送を参照してください。
マルチループ制御
信号トラッキングを使用して、マルチループ制御方法でのブロックのワインドアップを防ぎます。この方法の 1DOF PID コントローラーの例については、マルチループ制御におけるブロック ワインドアップの回避を参照してください。
依存関係
このパラメーターを有効にするには、[コントローラー] を積分動作をもつタイプに設定します。
プログラムでの使用
ブロック パラメーター: TrackingMode |
型: string、文字ベクトル |
値: "off" 、"on" |
既定の設定: "off" |
トラッキング係数 (Kt) — 信号トラッキングのフィードバック ループのゲイン
1 (既定値) | スカラー
[トラッキングモードを有効にする] を選択すると、信号 [TR] とブロック出力の差がゲイン Kt
で積分器入力に返されます。このパラメーターを使用して、そのフィードバック ループのゲインを指定します。
離散時間コントローラーでは、ブロックの [I*Ts を使用] パラメーターを選択した場合は、このパラメーターを値 Kt*Ts
に設定します。ここで、Kt
は目的のゲイン、Ts
はサンプル時間です。
依存関係
このパラメーターを有効にするには、[トラッキングモードを有効にする] を選択します。
プログラムでの使用
ブロック パラメーター: Kt |
タイプ: スカラー |
既定の設定: 1 |
飽和
出力の飽和出力を制限する — 指定の飽和値にブロック出力を制限
オフ
(既定値) | オン
このオプションをアクティブにすると、ブロック出力が制限されるため、コントローラーの後に個別の Saturation ブロックを置く必要がなくなります。また、ブロックに組み込みのアンチワインドアップ メカニズムをアクティブにすることもできます ([アンチワインドアップ手法] パラメーターを参照)。[下限] パラメーターと [上限] パラメーターを使用して出力の飽和の制限を指定します。飽和の下限をブロックの入力端子として外部で指定することもできます。
プログラムでの使用
ブロック パラメーター: LimitOutput |
型: string、文字ベクトル |
値: "off" 、"on" |
既定の設定: "off" |
ソース — 出力の飽和の制限のソース
内部 (既定値) | 外部
このパラメーターを使用して、ブロックの出力の飽和の上限値と下限値を提供する方法を指定します。
内部
[上限] パラメーターと [下限] パラメーターを使用して出力の飽和の制限を指定します。
外部
ブロックの入力端子を使用して、出力の飽和の制限を外部で指定します。追加の入力端子の [up] と [lo] がブロックに表示されます。入力端子を使用すると、Simulink モデルのロジックまたはその他の計算によって特定され、ブロックに渡される出力の飽和の上限と下限を実装できます。
プログラムでの使用
ブロック パラメーター: SatLimitsSource |
型: string、文字ベクトル |
値: "internal" 、"external" |
既定の設定: "internal" |
上限 — ブロック出力の飽和の上限
Inf
(既定値) | スカラー
ブロック出力の上限を指定します。比例、積分、微分動作の重み付き総和がこの値を上回ると、ブロック出力は [飽和の上限] に保持されます。
依存関係
このパラメーターを有効にするには、[出力を制限する] を選択します。
プログラムでの使用
ブロック パラメーター: UpperSaturationLimit |
タイプ: スカラー |
既定の設定: Inf |
下限 — ブロック出力の飽和の下限
-Inf
(既定値) | スカラー
ブロック出力の下限を指定します。比例、積分、微分動作の重み付き総和がこの値を下回ると、ブロック出力は [飽和の下限] に保持されます。
依存関係
このパラメーターを有効にするには、[出力を制限する] を選択します。
プログラムでの使用
ブロック パラメーター: LowerSaturationLimit |
タイプ: スカラー |
既定の設定: -Inf |
線形化時の飽和の設定を無視 — 線形化で出力の制限を無視
オフ
(既定値) | オン
[上限] パラメーターと [下限] パラメーターで指定されたブロック出力の制限を Simulink および Simulink Control Design の線形化コマンドで無視します。出力制限を無視すると、操作点によってブロックが出力制限を超えても、操作点を中心にモデルが線形化されます。
依存関係
このパラメーターを有効にするには、[出力を制限する] パラメーターを選択します。
プログラムでの使用
ブロック パラメーター: LinearizeAsGain |
型: string、文字ベクトル |
値: "off" 、"on" |
既定の設定: "off" |
アンチワインドアップ手法 — 積分器のアンチワインドアップ手法
なし
(既定値) | [back-calculation]
| [clamping]
[出力を制限する] を選択したときにコントローラー コンポーネントの重み付き総和が指定された出力制限を超えると、ブロック出力は指定された制限に保持されます。ただし、積分器出力は増加を続け (積分器ワインドアップ)、ブロック出力とブロック コンポーネントの合計の差が大きくなります。つまり、出力が飽和制限に拘束されていてもブロックの内部信号は拘束を受けない可能性があります。積分器ワインドアップを防ぐメカニズムがない場合、2 つの結果が考えられます。
積分器に対する入力信号の符号が変化しない場合、積分器はオーバーフローするまで積分を続けます。オーバーフロー値は、積分器出力のデータ型の最大値または最小値です。
重み付き総和が出力制限を超えてから積分器に対する入力信号の符号が変化した場合、積分器のワインドアップを解消して重み付き総和をブロック飽和制限範囲内に戻すには長い時間がかかることがあります。
いずれの場合もコントローラーの性能に悪影響があります。アンチワインドアップ メカニズムを使用せずにワインドアップの影響に対抗するためには、コントローラーをデチューンしなければならないことがありますが (コントローラーのゲインを減らすなど)、コントローラーの反応が遅くなることがあります。この問題を避けるには、このパラメーターを使用してアンチワインドアップ メカニズムをアクティブにします。
なし
アンチワインドアップ メカニズムを使用しません。
[back-calculation]
ブロック出力が飽和したときに、飽和した制御信号と飽和していない制御信号の差を積分器に戻すことで積分器のワインドアップを解消します。次の図は、連続時間コントローラーの逆解析フィードバック回路を示しています。コントローラー構成の実際のフィードバック回路を表示するには、ブロックを右クリックし、[マスク] 、 [マスク内を表示] を選択します。
アンチワインドアップ フィードバック回路のゲインは、[逆算係数 (Kb)] パラメーターを使用して指定します。通常は、
Kb = I
またはKb = sqrt(I*D)
(微分動作を含むコントローラーの場合) を設定すれば十分です。逆解析は、デッド タイムが比較的大きいプラントに効果的な場合があります [1]。[clamping]
ブロック コンポーネントの合計が出力制限を上回り、積分器出力とブロック入力の符号が同じ場合に積分を停止します。ブロック コンポーネントの合計が出力制限を上回り、積分器出力とブロック入力の符号が反対の場合に積分を再開します。固定は条件付き積分と呼ばれることがあります。
固定は、デッド タイムが比較的小さいプラントに役立つことがありますが、デッド タイムが大きい場合は過渡応答が低くなる可能性があります [1]。
依存関係
このパラメーターを有効にするには、[出力を制限する] パラメーターを選択します。
プログラムでの使用
ブロック パラメーター: AntiWindupMode |
型: string、文字ベクトル |
値: "none" 、"back-calculation" 、"clamping" |
既定の設定: "none" |
逆算係数 (Kb) — アンチワインドアップ フィードバック ループのゲイン係数
1 (既定値) | スカラー
[back-calculation
] アンチワインドアップ手法では、ブロック出力が飽和したときに積分器のワインドアップが解消されます。これは、飽和した制御信号と飽和していない制御信号の差を積分器に戻すことで行われます。アンチワインドアップ フィードバック回路のゲインは、[逆算係数 (Kb)] パラメーターを使用して指定します。詳細については、[アンチワインドアップ手法] パラメーターを参照してください。
離散時間コントローラーでは、ブロックの [I*Ts を使用] パラメーターを選択した場合は、このパラメーターを値 Kb*Ts
に設定します。ここで、Kb
は目的の係数、Ts
はサンプル時間です。
依存関係
このパラメーターを有効にするには、[出力を制限する] パラメーターを選択し、[アンチワインドアップ手法] パラメーターを [逆解析]
に設定します。
プログラムでの使用
ブロック パラメーター: Kb |
タイプ: スカラー |
既定の設定: 1 |
出力を制限する — 指定の飽和制限に積分器出力を制限
オフ
(既定値) | オン
このパラメーターを有効にすると、積分器出力が指定した範囲内に制限されます。積分器出力が制限値に達すると、積分動作はオフになり、積分飽和現象を回避します。[下限] パラメーターと [上限] パラメーターを使用して飽和の制限を指定します。
依存関係
このパラメーターを有効にするには、[コントローラー] を積分動作をもつコントローラー タイプに設定します。
プログラムでの使用
ブロック パラメーター: LimitIntegratorOutput |
型: string、文字ベクトル |
値: "off" 、"on" |
既定の設定: "off" |
上限 — 積分器の飽和の上限
Inf
(既定値) | スカラー
積分器出力の上限を指定します。積分器出力がこの値を上回る場合、この値で保持されます。
依存関係
このパラメーターを有効にするには、[積分器の飽和] の [出力を制限する] を選択します。
プログラムでの使用
ブロック パラメーター: UpperIntegratorSaturationLimit |
タイプ: スカラー |
既定の設定: Inf |
下限 — 積分器の飽和の下限
-Inf
(既定値) | スカラー
積分器出力の下限を指定します。積分器出力がこの値を下回る場合、この値で保持されます。
依存関係
このパラメーターを有効にするには、[積分器の飽和] の [出力を制限する] を選択します。
プログラムでの使用
ブロック パラメーター: LowerIntegratorSaturationLimit |
タイプ: スカラー |
既定の設定: -Inf |
データ型
このタブのパラメーターは、主に 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
(既定値) | on
オーバーフローで飽和するかラップするかを指定します。
off
— オーバーフローは、データ型によって表現される適切な値にラップされます。たとえば、数 130 は符号付き 8 ビット整数 1 つに収まりきらないので、-126 にラップされます。
on
— オーバーフローは、データ型が表現できる最小値または最大値のいずれかに飽和します。たとえば、符号付き 8 ビット整数に関連付けられたオーバーフローは、-128 または 127 に飽和することができます。
ヒント
モデルでオーバーフローが発生する可能性があり、生成コードに飽和保護を明示的に組み込む必要があるときには、このチェック ボックスをオンにすることを検討してください。
生成コードの効率を最適化する場合には、このチェック ボックスをオフにすることを検討してください。
このチェック ボックスをオフにすると、ブロックが範囲外の信号を処理する方法を指定しすぎないようにする点でも役立ちます。詳細については、信号範囲のエラーのトラブルシューティングを参照してください。
このチェック ボックスをオンにすると、飽和は出力や結果だけでなく、このブロックの内部演算すべてに適用されます。
通常、オーバーフローが可能ではない場合は、コード生成プロセスで検出されます。この場合、コード ジェネレーターでは飽和コードは生成されません。
プログラムでの使用
ブロック パラメーター: SaturateOnIntegerOverflow |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
固定小数点ツールによる変更に対してデータ型の設定をロックする — 固定小数点ツールがデータ型をオーバーライドするのを防止
off
(既定値) | on
このパラメーターを選択して、このブロックについて指定したデータ型を固定小数点ツールがオーバーライドするのを防止します。詳細については、出力データ型設定のロック (Fixed-Point Designer)を参照してください。
プログラムでの使用
ブロック パラメーター: LockScale |
型: 文字ベクトル |
値: 'off' | 'on' |
既定の設定: 'off' |
状態属性
このタブのパラメーターは、主にコード生成で使用します。
[状態名] (例: 'position') — 連続時間のフィルターおよび積分器の状態の名前
''
(既定値) | 文字ベクトル
連続時間 PID コントローラーの積分器またはフィルターに関連する状態に固有名を割り当てます (離散時間 PID コントローラーの状態名の詳細については、[状態名] パラメーターを参照してください)。状態名は、たとえば以下に使用されます。
生成コード内の対応する変数
シミュレーション中に状態をログに記録する際のストレージ名の一部
ブロックを線形化して得られる線形モデル内の対応する状態
有効な状態名は英字またはアンダースコア文字で始まり、英数字またはアンダースコア文字が続きます。
依存関係
このパラメーターを有効にするには、[時間領域] を [連続時間]
に設定します。
プログラムでの使用
パラメーター: IntegratorContinuousStateAttributes 、FilterContinuousStateAttributes |
型: 文字ベクトル |
既定の設定: '' |
状態名 — 離散時間のフィルターおよび積分器の状態の名前
空の string (既定値) | string | 文字ベクトル
離散時間 PID コントローラーの積分器またはフィルターに関連する状態に固有名を割り当てます (連続時間 PID コントローラーの状態名の詳細については、[状態名 ('position' など)] パラメーターを参照してください)。
有効な状態名は英字またはアンダースコア文字で始まり、英数字またはアンダースコア文字が続きます。状態名は、たとえば以下に使用されます。
生成コード内の対応する変数
シミュレーション中に状態をログに記録する際のストレージ名の一部
ブロックを線形化して得られる線形モデル内の対応する状態
コード生成での状態名の使用の詳細については、C Data Code Interface Configuration for Model Interface Elements (Simulink Coder)を参照してください。
依存関係
このパラメーターを有効にするには、[時間領域] を [離散時間]
に設定します。
プログラムでの使用
パラメーター: IntegratorStateIdentifier 、FilterStateIdentifier |
型: string、文字ベクトル |
既定の設定: "" |
状態名を Simulink の信号オブジェクトに関連付ける — 状態名の信号オブジェクトへの関連付けを要求
off
(既定値) | on
このパラメーターは、離散時間の積分器またはフィルターの状態名を Simulink の信号オブジェクトに関連付けるよう要求する場合に選択します。
依存関係
このパラメーターを離散時間の積分器またはフィルターの状態に対して有効にするには、次のようにします。
[時間領域] を
[離散時間]
に設定します。積分器またはフィルターの [状態名] の値を指定します。
モデル コンフィギュレーション パラメーター [信号の関連付け] を
[なし]
以外の値に設定します。
プログラムでの使用
ブロック パラメーター: IntegratorStateMustResolveToSignalObject 、FilterStateMustResolveToSignalObject |
型: string、文字ベクトル |
値: "off" 、"on" |
既定の設定: "off" |
ブロックの特性
データ型 |
|
直達 |
|
多次元信号 |
|
可変サイズの信号 |
|
ゼロクロッシング検出 |
|
詳細
2-DOF PID コントローラーの分解
2-DOF PID コントローラーは、プレフィルターをもつ PID コントローラー、またはフィードフォワード要素をもつ PID コントローラーと解釈できます。
並列形式の 2 自由度 PID コントローラーは、次のブロック線図で等価的にモデル化できます。C は 1 自由度の PID コントローラーで、F は基準信号のプレフィルターです。
Ref は基準信号、y は測定されたシステム出力からのフィードバック、u はコントローラーの出力です。並列形式の連続時間 2-DOF PID コントローラーの F および C の伝達関数は次のようになります。
b と c は設定点の重みです。
理想形式の 2-DOF PID コントローラーの伝達関数は次のようになります。
離散時間の 2-DOF コントローラーにも同様の分解が適用されます。
また、並列の 2 自由度 PID コントローラーは、次のブロック線図でモデル化することもできます。
この実現では、Q は基準信号のフィードフォワード条件として動作します。並列形式の連続時間 2-DOF PID コントローラーの Q の伝達関数は次のようになります。
理想形式の 2-DOF PID コントローラーの伝達関数は次のようになります。
C の伝達関数はフィルターの分解と同じです。
離散時間の 2-DOF コントローラーにも同様の分解が適用されます。
参照
[1] Visioli, A., "Modified Anti-Windup Scheme for PID Controllers," IEE Proceedings - Control Theory and Applications, Vol. 150, Number 1, January 2003
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
連続時間 PID コントローラー ([時間領域] を [連続時間]
に設定):
連続時間ブロックについては、モデルの離散化を使用して、コード生成をサポートする同等な離散時間ブロックにマッピングすることを検討します。[モデルの離散化] にアクセスするには、[アプリ] タブの [制御システム] で [モデルの離散化] をクリックします。
量産コードには推奨されません。
離散時間 PID コントローラー ([時間領域] を [離散時間]
に設定):
Triggered Subsystem の階層の内部に置かれる場合は絶対時間に依存します。
生成されたコードは、ある条件の下で関数
memcpy
または関数memset
(string.h
) に依存します。
PLC コード生成
Simulink® PLC Coder™ を使用して構造化テキスト コードを生成します。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
固定小数点コードの生成は、離散時間 PID コントローラー ([時間領域] を [離散時間]
に設定) でのみサポートされます。
バージョン履歴
R2009b で導入R2024a: 外部ソースからの微分信号の使用
PID Controller ブロックで、プラント信号 y の導関数をブロックに入力として直接提供できるようになりました。これは、モデル内に利用可能な微分信号があり、ブロック内での微分の計算をスキップする場合に便利です。
導関数を提供する入力端子を有効にするには、微分動作をもつコントローラー タイプを選択し、[外部ソースの導関数を使用] パラメーターを有効にします。
R2022b: 積分器およびフィルターの初期条件が飽和制限から外れている場合にエラーを発行
積分器またはフィルターの初期条件の値が出力の飽和の制限から外れている場合に、ブロックでエラーが発行されるようになりました。以前のリリースでは、それらの初期条件の値がそのようになっていてもブロックでエラーは発行されませんでした。
この変更によってモデルに影響が生じる場合は、PID の積分器またはフィルターの初期条件を更新し、それらの値が出力の飽和の制限に収まるようにしてください。
R2021b: ReferenceBlock
パラメーターが異なるパスを返す
R2021b 以降、関数 get_param
は ReferenceBlock
パラメーターに異なる値を返します。ReferenceBlock
パラメーターは、すべての Simulink ブロックに共通するプロパティであり、ブロックがリンクしているライブラリ ブロックのパスを与えます。PID Controller (2DOF) ブロックと Discrete PID Controller (2DOF) ブロックは現在、'slpidlib/PID Controller (2DOF)'
にリンクしています。以前、これらのブロックは 'pid_lib/PID Controller (2DOF)'
にリンクしていました。
この変更は、他の機能やワークフローには影響しません。関数 set_param
では、以前のパスを引き続き使用できます。
R2020b: ReferenceBlock
パラメーターが異なるパスを返す
R2020b 以降、関数 get_param
は ReferenceBlock
パラメーターに異なる値を返します。ReferenceBlock
パラメーターは、すべての Simulink ブロックに共通するプロパティであり、ブロックがリンクしているライブラリ ブロックのパスを与えます。PID Controller (2DOF) ブロックと Discrete PID Controller (2DOF) ブロックは、今は 'pid_lib/PID Controller (2DOF)'
にリンクしています。以前は、ブロックは 'simulink/Continuous/PID Controller (2DOF)'
にリンクしていました。
この変更は、他の機能やワークフローには影響しません。関数 set_param
では、以前のパスを引き続き使用できます。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)