リアルタイムの PID 自動調整
スタンドアロン アプリケーションで物理プラントに対してリアルタイムの調整に PID 自動調整アルゴリズムを使用するには、システムに PID 自動調整器ブロックを展開しなければなりません。そのためには展開用の Simulink® モデルを作成します。このモデルは実験パラメーターと調整パラメーターを使って構成できます。または、これらのパラメーターをシステムの他の部分から外部的に提供するように構成することも可能です 独自のシステムに展開されると、自動調整器モデルは、調整プロセスの制御に Simulink を使用せずに、プラントに信号を挿入してプラント応答を受け取ります。PID 自動調整アルゴリズムを展開するには Simulink Coder™ などのコード生成製品が必要です。
あるいは、Simulink を使用して実験を制御しながら、リアルタイムで物理プラントに対して調整することもできます。詳細については、Simulink でのリアルタイムの PID 自動調整の制御を参照してください。
ワークフロー
リアルタイム調整のために PID 自動調整アルゴリズムを展開するワークフローの概要は次のとおりです。
システムに PID 自動調整器ブロックを展開するための Simulink モデルを作成します。
調整実験の開始と終了のタイミングを制御する start/stop の信号を構成します。展開後にこの信号を使って PID 自動調整プロセスをいつでも開始できます。
コントローラーのタイプや調整のターゲット帯域幅などのコントローラー パラメーターを指定します。
周波数応答実験中に挿入される摂動の振幅などの実験パラメーターを構成します。
システムにモデルを展開し、物理プラントに対して自動調整プロセスを開始します。閉ループ性能をリアルタイムで検証することができます。
実際には、リアルタイム調整を行う場合、ターゲット帯域幅や摂動の振幅などのいくつかのパラメーターを実行時に指定することもできます。展開済みアプリケーションのパラメーター指定の詳細については、展開後の自動調整パラメーターへのアクセスを参照してください。
手順 1. PID 自動調整器ブロックによる展開可能な Simulink モデルの作成
リアルタイム調整で PID 自動調整器ブロックを使用するには、展開用の Simulink モデルを作成する必要があります。これを行うにはいくつかの方法があります。
自動調整器のみの展開可能なモジュール
最も基本的な形式では、Closed-Loop PID Autotuner ブロックまたは Open-Loop PID Autotuner ブロックを使用してリアルタイム PID 自動調整を展開するためのモデルは次の図のようになります。この方法の利点は、実行時に異なる PID コントローラーの切り替えと調整を行えることです。
ここでは PID 自動調整器ブロックの入力と出力に接続されているブロックが、システムのリアルタイム データの読み書きを行うハードウェア インターフェイスを表します。たとえば、Read PID controller output
ブロックは、シリアル データを受け取るインターフェイス、UDP パケットを受け取る UDP Receive ブロック、またはワイヤレス ネットワークを介してその他の信号を受け取るインターフェイスにすることができます。同様に、Write plant input
などのデータ書き込みのブロックは、ハードウェアにデータを書き込むためのシリアル、UDP、その他のインターフェイスにすることができます。
自動調整器ブロックの既定の端子は以下のとおりです。
u
— 制御信号を受け取ります。y
— プラント出力を受け取ります。start/stop
— 調整プロセスの開始と終了を行う信号を受け取ります。u+Δu
— プラント入力に渡す信号を出力します。実験が実行中でない場合、u+Δu
は制御信号をu
での入力どおりに出力します。実験の実行中は、ブロックがu+Δu
にテスト信号を挿入します。開ループ調整の場合のみ、実験の実行中にブロックはu
とu+Δu
の間でループを中断します。実験が終了すると、ブロックはu
とu+Δu
間の接続を元に戻します。% conv
— 周波数応答の推定実験の進捗状況を示す数値のインジケーターを出力します。pid gains
— 調整プロセスが停止した時点で調整された PID ゲインを出力します。
この構成では、PID コントローラー自体はシステムの別のモジュール内に存在します。調整が完了したら、独自のロジックを使用して調整した PID ゲインを自動調整ブロックの pid gains
端子から PID コントローラーに書き込みます。
コントローラーのある展開可能なモジュール
あるいは、次の図に示されているように、PID コントローラーと PID 自動調整アルゴリズムの両方を含むモジュールを展開することもできます。この方法の利点は、個別のシステムで特定のコントローラーを返せることです。
この図では PID コントローラーが Simulink PID Controller ブロックとして実装されています。このブロックの PID ゲインは調整可能なので、調整されたゲインを展開されたコントローラーに書き込むようにシステムを構成することができます。あるいは、展開するモデル内で独自のカスタム PID コントローラー サブシステムを使用することもできます。
アプリケーションに適した任意のロジックを実装して、PID コントローラーを調整されたゲインで更新するかどうかとその方法を判定することができます。ここに示すシステムでは、PID update logic
サブシステムがそのようなモジュールを表します。External data
ブロックは、ロジックでコントローラーを更新するかの判定に必要とされるその他の情報を表します。
メモ
Closed-Loop PID Autotuner ブロックを使用する場合、pid gains
の出力を直接 PID コントローラーのゲイン入力に送ると、コード生成を妨げる代数ループが発生することがあります。この問題を回避するため、PID の更新ロジックに代数ループを中断する状態を設けることが可能です。たとえば、次のいずれかの方法を試すことができます。
Unit Delay
ブロックを使用して、コントローラーの出力をコントローラーの入力より 1 タイム ステップ進んだ状態に保つ。Closed-Loop PID Autotuner ブロックを使用した PID コントローラーのリアルタイム調整に示されるように Data Store Memory ブロックを使用する。
開ループ調整のバンプレス切り替え
Open-Loop PID Autotuner を使用するときは、コントローラーに積分器アクションが含まれる場合、調整実験中の積分器のワインドアップを防ぐために信号のトラッキングを実装することを検討してください。信号のトラッキングにより、PID コントローラーが、ループの外にある間も実際のプラント入力をトラッキングし続けることができます。そうでないと、調整プロセスの終わりに制御ループを閉じる時点でシステムにバンプが生じる可能性があります。
PID コントローラーが Simulink PID Controller ブロックである場合、コントローラー ブロックの [トラッキングモードを有効にする] パラメーターを使用してこのバンプを回避できます。次のブロック線図は、トラッキング モードが構成されている Open-Loop PID Autotuner ブロックおよび PID Controller ブロックを含むモジュールを示しています。プラント入力はコントローラー ブロックのトラッキング入力に接続しています。
手順 2. Start/Stop 信号の構成
自動調整プロセスを開始したり停止するには、start/stop
端子で信号を使用します。実験が実行中でない場合、ブロックは信号に変更を加えずに u
から u+Δu
へと渡します。この状態ではブロックはプラントやコントローラーの動作に影響しません。
周波数応答の推定実験は、start/stop
端子の立ち上がり信号で開始され、立ち下がり信号によって終了されます。したがって、展開後、自動調整プロセスを開始するため、start/stop
端子で立ち上がり信号を使用します。適切な時間が経過した後、もしくは % conv
信号が 100 の近くで整定したら、立ち下がり信号を使って実験を終了します。実験が終了すると、アルゴリズムによって調整後の PID ゲインが生成され、pid gains
端子にこれらが返されます。実験時間の保守的な推定値は閉ループ調整の場合が 200/ωc、開ループ調整の場合が 100/ωc です。ここで ωc はターゲット帯域幅です。start/stop 信号の構成方法の詳細については、Closed-Loop PID Autotuner ブロックまたは Open-Loop PID Autotuner ブロックのリファレンス ページを参照してください。
手順 3. PID 調整パラメーターの設定
システム内の PID コントローラーの構成を指定するには、自動調整器ブロックの次のパラメーターを使用します。
タイプ
形式
時間領域
コントローラーのサンプル時間 (秒)
積分手法
フィルター手法
Closed-Loop PID Autotuner については、[コントローラーのサンプル時間 (秒)] と異なる調整用サンプル時間も指定できます。PID ゲインの調整は、計算量の多いアルゴリズムです。このブロックをハードウェアに展開し、高速なサンプル時間でコントローラーを調整する場合、一部のハードウェアでは単一のタイム ステップで PID ゲインの計算が完了しない可能性があります。ハードウェアのスループット要件を軽減するには、[異なるサンプル時間で調整] パラメーターを有効にし、[調整サンプル時間 (秒)] パラメーターを使用してコントローラーのサンプル時間より遅い調整サンプル時間を指定します。
その後、調整用のターゲット帯域幅と位相余裕を、それぞれ [ターゲットの帯域幅 (ラジアン/秒)] パラメーターと [ターゲットの位相余裕 (度)] パラメーターに指定します。
ラジアン/秒で指定されるターゲットの帯域幅は、調整した開ループ応答 CP の 0 dB のゲイン交差周波数のターゲット値です。ここで P はプラントの応答、C はコントローラーの応答です。この交差周波数は制御帯域幅を大まかに設定します。立ち上がり時間 τ 秒に対し、ターゲット帯域幅の推定は 2/τ ラジアン/秒が適切です。
ターゲットの位相余裕は、調整したシステムのロバスト性を設定します。通常は約 45° ~ 60° の範囲内の値を選択します。一般に、位相余裕が高いほどオーバーシュートは改善されますが、応答速度が制限される場合があります。既定値の 60° は、性能とロバスト性のバランスを取り、プラントの特性によってオーバーシュートは 5 ~ 10% になる傾向があります。
ほとんどの調整パラメーターは、展開前に PID 自動調整器ブロックで固定する代わりに、展開後に独自のアプリケーション内で設定することができます。展開後の自動調整パラメーターへのアクセスを参照してください。
これらのパラメーターに使用する値の詳細については、Closed-Loop PID Autotuner ブロックまたは Open-Loop PID Autotuner ブロックのリファレンス ページを参照してください。
手順 4. 実験パラメーターの設定
周波数応答の推定実験は、ターゲット帯域幅 ωc 近傍の周波数で正弦波信号を挿入します。
Open-Loop PID Autotuner ブロックの場合は [1/3, 1, 3, 10]ωc
Closed-Loop PID Autotuner ブロックの場合は [1/10,1/3, 1, 3, 10]ωc
ブロックの [正弦波振幅] パラメーターを使用してこれらの信号の振幅を指定します。
プラントが漸近的に安定な場合、Open-Loop PID Autotuner ブロックはステップ摂動でプラントの DC ゲインを推定することができます。この摂動の振幅は [ステップ振幅] パラメーターで指定します。プラントが単一の積分器をもつ場合、[ステップ信号による DC ゲインの推定] パラメーターをオフにします。
注意
不安定なプラントには閉ループや開ループ PID 自動調整を使用しないでください。
複数の積分器をもつプラントに開ループ PID 自動調整を使用しないでください。複数の積分器をもつプラントには閉ループ PID 自動調整を使用できます。
すべての摂動振幅は以下のとおりでなければなりません。
摂動がプラント アクチュエータのすべての不感帯を克服してノイズ レベルを超える応答を生成できる程度に大きい。
定格操作点近傍のほぼ線形の領域内でプラントを実行し続け、プラントの入力または出力の飽和を回避できる程度に小さい。
実験パラメーターの設定の詳細については、Closed-Loop PID Autotuner ブロックおよび Open-Loop PID Autotuner ブロックのリファレンス ページを参照してください。
手順 5. 調整と検証
自動調整器モジュールをシステムに展開したら、立ち上がり start/stop
信号を使用して自動調整プロセスを開始します。展開したモジュールが物理プラントにリアルタイムでテスト信号を挿入します。適切な時間が経過した後、もしくは % conv
信号が 100% の近くで安定したら、立ち下がり start/stop
信号を使って実験を終了します。実験時間の保守的な推定値は閉ループ調整の場合が 200/ωc、開ループ調整の場合が 100/ωc です。ここで、ωcc はターゲット帯域幅です。実験が終了すると、モジュールは、システムおよびユーザー指定の調整目標での推定周波数応答に基づく新しい PID ゲインを計算します。pid gains
信号を使用して、調整された PID ゲインを調べることができます。
これらのゲインを確認して独自のコントローラーに伝達する際は、PID 自動調整器ブロックにおけるこれらのゲインの意味に注意してください。離散時間の場合、ブロックは次の PID コントローラー伝達関数を仮定します。
(並列形式)、または理想形式の場合、
です。Fi(z) および Fd(z) は、それぞれ [積分手法] と [フィルター手法] の式に指定する値によって異なります。詳細については、Closed-Loop PID Autotuner ブロックまたは Open-Loop PID Autotuner ブロックのリファレンス ページを参照してください。
調整されたゲインを PID コントローラーに伝達した後は、新しいゲインでのシステムの性能を引き続き観察し検証することができます。
展開後の自動調整パラメーターへのアクセス
自動調整器を構成するために設定したパラメーターの一部は調整可能なため、これらには生成コードでアクセスできます。調整可能でないパラメーターについては、展開の前にブロックで構成しなければなりません。
調整可能なパラメーター
PID 自動調整器ブロックの以下のパラメーターは展開後に調整可能です。これらの全パラメーターの詳細については、Closed-Loop PID Autotuner ブロックまたは Open-Loop PID Autotuner ブロックのリファレンス ページを参照してください。
パラメーター | 説明 |
---|---|
ターゲットの帯域幅 (ラジアン/秒) | 開ループ応答のターゲット交差周波数 |
ターゲットの位相余裕 (度) | 開ループ応答のターゲット最小位相余裕 |
正弦波振幅 | 正弦波摂動の振幅 |
ステップ信号による DC ゲインの推定 | プラントへのステップ信号の挿入 |
ステップ振幅 | ステップ摂動の振幅 |
タイプ | PID コントローラーのタイプ (PI、PD、PID など) |
形式 | PID コントローラーの形式 |
積分手法 | 積分項の離散積分式 |
フィルター手法 | 微分フィルター項の離散積分式 |
調整不可のパラメーター
PID 自動調整器ブロックの次のパラメーターは展開後に調整することができません。これらはコード生成の前にブロックで指定しなければならず、その値はアプリケーション内で固定されたままになります。これらの全パラメーターの詳細については、Closed-Loop PID Autotuner ブロックまたは Open-Loop PID Autotuner ブロックのリファレンス ページを参照してください。
パラメーター | 説明 |
---|---|
時間領域 | PID コントローラーの時間領域 |
コントローラーのサンプル時間 (秒) | PID コントローラーのサンプル時間 (展開後のサンプル時間の変更を参照) |
メモリを削減し、タスク オーバーランを回避してください (エクスターナル モードのみ) | 調整アルゴリズムのみを展開 |
データ型 | 浮動小数点精度 |
展開後のサンプル時間の変更
[コントローラーのサンプル時間 (秒)] パラメーターは調整不可です。したがって、ブロックの展開時に生成コードでこれに直接アクセスすることはできません。展開したブロックでコントローラーのサンプル時間を実行時に変更するには、次を行います。
[コントローラーのサンプル時間 (秒)] を –1 に設定します。
自動調整器ブロックを Triggered Subsystem 内に配置します。
目的のサンプル時間でサブシステムをトリガーします。
参考
Closed-Loop PID Autotuner | Open-Loop PID Autotuner