Main Content

Closed-Loop PID Autotuner

閉ループの実験から推定したプラント周波数応答に基づき PID ゲインをリアルタイムで自動調整

  • ライブラリ:
  • Simulink Control Design

  • Closed-Loop PID Autotuner block

説明

Closed-Loop PID Autotuner ブロックでは、安定したループを提供する初期 PID コントローラーをもつ物理プラントに対して、PID コントローラーをリアルタイムで調整することができます。プラントは、自動調整のプロセス全体を通じて初期 PID コントローラーの閉ループによって制御されます。ブロックは、パラメトリックなプラント モデルなしで指定の帯域幅と位相余裕を実現するように PID コントローラーを調整できます。Simulink® Coder™ のようなコード生成製品がある場合、ハードウェアに調整アルゴリズムを実装するコードを生成して、自動調整プロセスの管理に Simulink を使用するかどうかに関係なくリアルタイムで調整を行うことが可能です。

Simulink でモデル化されたプラントと初期 PID コントローラーがある場合、モデル化されたプラントに対して閉ループ PID 自動調整を実行できます。この方法では、コントローラーの調整をリアルタイムで行う前に、プラント応答をプレビューして PID 自動調整の設定を調節することができます。

モデルに依存しない調整を行うため、Closed-Loop PID Autotuner ブロックは次を行います。

  1. プラントにテスト信号を挿入し、プラントの入出力データを収集して周波数応答をリアルタイムで推定します。テスト信号は、プラント入力に正弦波摂動信号を加えた組み合わせです。

  2. 実験の終了時、ターゲット帯域幅近傍の推定したプラント周波数応答に基づいて PID コントローラー パラメーターを調整します。

  3. 調整したパラメーターで PID Controller ブロックまたはカスタム PID コントローラーを更新し、閉ループの性能をリアルタイムで検証できるようにします。

Open-Loop PID Autotuner ブロックの場合と異なり、実験中はループが閉じたままです。ループを閉じておくことで、推定実験中にプラントの安全な操作を維持できます。

Closed-Loop PID Autotuner ブロックを使用して、次のための PID コントローラーを調整できます。

  • 任意の安定したプラント

  • 1 つ以上の積分器をもつ (極が s = 0 にある) か、虚軸上に複素数の極の組を 1 つ以上もつ、任意の連続時間プラント

  • 1 つ以上の積分器をもつ (極が z = –1 にある) か、単位円 |z| = 1 に複素数の極の組をもつ、任意の離散時間プラント

初期 PID コントローラーがない場合、Open-Loop PID Autotuner ブロックを使用して取得できます。その後、改良や再調整のために閉ループ PID 自動調整に切り替えることができます。

ブロックは Simulink Coder、Embedded Coder®、および Simulink PLC Coder™ でのコード生成をサポートします。HDL Coder™ でのコード生成はサポートしません。

Closed-Loop PID Autotuner ブロックの使い方の詳細については、次を参照してください。

PID 自動調整の一般情報および閉ループと開ループによる方法の比較の詳細については、PID 自動調整を使用する場合を参照してください。

端子

入力

すべて展開する

システムにブロックを挿入して、この端子がソースから制御信号を受け入れるようにします。通常、この端子はシステム内の PID コントローラーから信号を受け入れます。

データ型: single | double

この端子をプラント出力に接続します。

データ型: single | double

自動調整プロセスを開始したり終了するには、start/stop 端子で信号を提供します。信号の値によって次のように処理されます。

  • 負の値またはゼロから正の値に変わると、実験が開始します。

  • 正の値から負の値またはゼロに変わると、実験が終了します。

実験が実行中でない場合、ブロックは信号に変更を加えずに u から u+Δu へと渡します。この状態ではブロックはプラントやコントローラーの動作に影響しません。

通常、0 から 1 に変わると実験を開始し、1 から 0 に変わると実験を終了する信号を使用できます。[start/stop] 信号を構成する際は、次のような点について考慮します。

  • 実験はプラントが目的の平衡操作点にあるときに開始してください。初期コントローラーを使ってプラントを操作点へと駆動します。初期コントローラーがない場合 (開ループ調整のみ)、u に接続されているソース ブロックを使用してプラントを操作点へと駆動することができます。

  • 実験中はプラントへの負荷外乱をすべて回避してください。負荷外乱によってプラント出力が歪み、周波数応答の推定の精度が低下することがあります。

  • 調査するすべての周波数で良好な推定を得るのに十分なデータをアルゴリズムが収集できるまで、実験を実行し続けます。実験を終了するタイミングを判定する方法は 2 つあります。

    • 実験の持続時間を事前に決定します。実験の持続時間の保守的な推定値は、重ね合わせ実験モードでは 200/ωc、sinestream 実験モードでは 550/ωc です。ここで ωc はターゲット帯域幅です。

    • % conv 出力で信号を観察し、信号が 100% の近くで安定した時点で実験を終了します。

  • 実験を終了すると、ブロックは調整された PID ゲインを計算して pid gains 端子で信号を更新します。

実験の開始時間と終了時間を制御するために、アプリケーションに適した任意のロジックを構成することができます。

データ型: single | double

Target bandwidth (rad/sec) パラメーターの値を指定します。詳細については、そのパラメーターを参照してください。

依存関係

この端子を有効にするには、[調整] タブの Target bandwidth (rad/sec) の横にある [外部ソースの使用] を選択します。

データ型: single | double

Target phase margin (degrees) パラメーターの値を指定します。詳細については、そのパラメーターを参照してください。

依存関係

この端子を有効にするには、[調整] タブの Target phase margin (degrees) の横にある [外部ソースの使用] を選択します。

データ型: single | double

Sine Amplitudes パラメーターの値を指定します。詳細については、そのパラメーターを参照してください。

依存関係

この端子を有効にするには、[実験] タブの Sine Amplitudes の横にある [外部ソースの使用] を選択します。

データ型: single | double

出力

すべて展開する

システムにブロックを挿入して、この端子がプラントに入力信号を送るようにします。

  • 実験の実行中 (start/stop が正)、ブロックはこの端子でプラントにテスト信号を挿入する。プラントを保護する飽和やレートの制限がある場合は、信号を u+Δu からプラントに送ります。

  • 実験が実行中でない場合 (start/stop がゼロまたは負)、ブロックは信号を変更せずに u から u+Δu に渡す。

依存関係

この端子を有効にするには、[出力信号の構成][制御動作 + 摂動] を選択します。

データ型: single | double

ブロックはこの端子で摂動信号を生成します。通常、次のブロック線図に示すように、摂動をこの端子から Sum ブロックを介して挿入します。

  • 実験が実行中である (start/stop が正である) 場合、ブロックはこの端子で摂動信号を生成。

  • 実験が実行中でない (start/stop がゼロまたは負である) 場合、この端子での信号はゼロ。この状態では、ブロックはプラントに影響しません。

依存関係

この端子を有効にするには、[出力信号の構成][摂動のみ] を選択します。

データ型: single | double

実験が実行中である (start/stop が正である) 場合、ブロックはプラントにテスト信号を挿入し、y でプラント応答を測定します。これらの信号を使用して、調整のターゲット帯域幅近傍のいくつかの周波数でプラントの周波数応答を推定します。% conv は、プラント周波数応答の推定が完了にどれだけ近づいているかを示します。通常、この値は実験の開始後に急速に約 90% まで上がった後、徐々にこれより高い値に収束します。100% 近くで平坦になったら実験を終了します。

データ型: single | double

この 4 要素のバス信号は、調整された PID ゲイン P、I、D、およびフィルター係数 N を含みます。これらの値は、Form パラメーターで与えられた式の PID、および N パラメーターにそれぞれ対応します。初期値はそれぞれ 0、0、0、100 です。実験が終了するとブロックが値を更新します。このバス信号は、PIDF コントローラーを調整していない場合でも常に 4 つの要素をもちます。

ブロックに PID コントローラーが関連付けられている場合、実験の終了後にそのコントローラーをこれらの値で更新できます。そのためには、[ブロック] タブで [PID ブロックの更新] をクリックします。

データ型: single | double

この端子は調整後のコントローラーで得られる推定位相余裕を度数で出力します。ブロックは調整実験が終了した時点でこの値を更新します。推定位相余裕は G(jωc)C(jωc) の角度から計算されます。ここで G は推定されたプラント、C は調整済みコントローラー、ωc は交差周波数 (帯域幅) です。推定位相余裕は Target phase margin (degrees) パラメーターで指定されたターゲット位相余裕と異なる場合があります。これは調整後のシステムで得られるロバスト性と安定性を示すインジケーターです。

  • 通常、推定位相余裕はターゲットの位相余裕に近くなります。一般的にこの値が大きいほど、調整後のシステムはロバスト性が高く、オーバーシュートが少なくなります。

  • 負の位相余裕は、閉ループ システムが不安定である可能性を示しています。

依存関係

この端子を有効にするには、[調整] タブで [調整済みのコントローラーで達成される出力の推定位相余裕] を選択します。

この端子は実験によって推定された周波数応答データを出力します。初期の frd での値は [0, 0, 0, 0, 0] です。実験中、ブロックは周波数 [1/10, 1/3, 1, 3, 10]ωc で信号を挿入します。ここで ωc はターゲットの帯域幅です。実験中の各サンプル時間で、ブロックはこれらの周波数それぞれでの複素周波数応答を含むベクトルで frd を更新します。% conv の代わりに応答の進捗状況を使用して推定の収束を調査することができます。実験が停止されると、ブロックは PID ゲインの計算に使用された最終の推定周波数応答で frd を更新します。

依存関係

この端子を有効にするには、[実験] タブで [帯域幅近傍でのプラントの周波数応答] を選択します。

この端子は、実験開始時にプラント入力 (u+Δu) とプラント出力 (y) を含むベクトルを出力します。これらの値は、ブロックが実験を行う定格操作点における、プラントの入力と出力です。

依存関係

この端子を有効にするには、[実験] タブで [プラントのノミナル入出力] を選択します。

パラメーター

すべて展開する

[調整] タブ

システムの PID コントローラーのタイプを指定します。コントローラーのタイプは、そのコントローラーがもつ動作を示します。PID 自動調整では次のコントローラー タイプが利用可能です。

  • P — 比例のみ

  • I — 積分のみ

  • PI — 比例および積分

  • PD — 比例および微分

  • PDF —微分フィルターを使用した比例および微分

  • PID — 比例、積分、および微分

  • PIDF — 微分フィルターを使用した比例、積分、および微分

PID Controller ブロックやカスタムの PID コントローラーを調整済みのパラメーター値で更新する場合、コントローラーのタイプが一致することを確認してください。

調整可能: Yes

プログラムでの使用

ブロック パラメーター: PIDType
型: 文字ベクトル
値: 'P' | 'I' | 'PI' | 'PD' | 'PDF' | 'PID' | 'PIDF'
既定: 'PI'

コントローラーの形式を指定します。コントローラーの形式は、PID 係数 P、I、D および N の解釈を決定します。

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

    C=P+IFi(z)+D[N1+NFd(z)],

    ここで Fi(z)Fd(z) は、積分器とフィルターの式です (Integrator method および Filter method を参照)。連続時間の並列形式 PIDF コントローラーの伝達関数は次のようになります。

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

    他のコントローラー動作は、P、I、または D をゼロに設定することになります。

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

    C=P[1+IFi(z)+D(N1+NFd(z))].

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

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

    他のコントローラー動作は、D をゼロに設定するか、I を Inf に設定することになります (理想形式ではコントローラーが比例動作をもっていなければなりません)。

PID Controller ブロックやカスタムの PID コントローラーを調整済みのパラメーター値で更新する場合、コントローラーの形式が一致することを確認してください。

調整可能: Yes

プログラムでの使用

ブロック パラメーター: PIDForm
型: 文字ベクトル
値: 'Parallel' | 'Ideal'
既定: 'Parallel'

PID コントローラーが離散時間と連続時間のどちらのコントローラーであるかを指定します。

  • 離散時間の場合、[コントローラーのサンプル時間 (秒)] パラメーターを使って PID コントローラーのサンプル時間を指定しなければなりません。

  • 連続時間の場合、[実験のサンプル時間 (秒)] パラメーターを使って PID 自動調整実験のサンプル時間も指定しなければなりません。

プログラムでの使用

ブロック パラメーター: TimeDomain
型: 文字ベクトル
値: 'discrete-time' | 'continuous-time'
既定: 'discrete-time'

PID コントローラーのサンプル時間を秒単位で指定します。この値は、ブロックによって実行される実験のサンプル時間も設定します。

PID 調整を行うために、ブロックはターゲット帯域幅の最大 10 倍までの周波数応答情報を測定します。この周波数が必ずナイキスト周波数より小さくなるようにするには、ターゲット帯域幅 ωcωcTs ≤ 0.3, を満たさなければなりません。ここで、Ts ωc[コントローラーのサンプル時間 (秒)] パラメーターに指定するコントローラーのサンプル時間です。

PID Controller ブロックやカスタムの PID コントローラーを調整済みのパラメーター値で更新する場合、コントローラーのサンプル時間が一致することを確認してください。

ヒント

展開されたブロックを、異なるサンプル時間を使ってアプリケーション内で実行する場合、このパラメーターを –1 に設定し、ブロックを Triggered Subsystem 内に配置します。その後、目的のサンプル時間でサブシステムをトリガーします。展開後にサンプル時間を変更する予定がない場合には、固定された有限のサンプル時間を指定してください。

依存関係

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

プログラムでの使用

ブロック パラメーター: DiscreteTs
型: スカラー
値: 正のスカラー | –1
既定: 0.1

このパラメーターを有効にして、調整している PID コントローラーのサンプル レート、およびブロックにより実行された周波数応答の推定実験とは異なるサンプル レートで調整を実行します。PID ゲインの調整は、計算量の多いアルゴリズムです。このブロックをハードウェアに展開し、高速なサンプル時間でコントローラーを調整する場合、一部のハードウェアでは単一のタイム ステップで PID ゲインの計算が完了しない可能性があります。ハードウェアのスループット要件を軽減するには、[調整サンプル時間 (秒)] パラメーターを使用して、コントローラーのサンプル時間より遅い調整サンプル時間を指定します。

依存関係

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

プログラムでの使用

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

調整アルゴリズムのサンプル時間を秒単位で指定します。

処理能力に制限のあるハードウェアにブロックを展開し、高速なサンプル時間でコントローラーを調整する場合、調整している PID コントローラーよりも遅いレートで調整アルゴリズムが実行されるように、サンプル時間を指定します。

依存関係

このパラメーターを有効にするには、[時間領域][discrete-time] に設定し、[異なるサンプル時間で調整] を選択します。

プログラムでの使用

ブロック パラメーター: TuningTs
型: スカラー
値: 正のスカラー
既定: 0.2

連続時間のコントローラーを調整する場合でも、ブロックにより実行される実験のサンプル時間を指定しなければなりません。一般に、物理プラントに対する PID 自動調整のために連続時間コントローラーを調整することはお勧めしません。プラントの Simulink モデルに対して連続時間で調整を行う場合は、0.02/ωc などの高速の実験サンプル時間を使用します。

依存関係

このパラメーターは [時間領域]continuous-time の場合に有効になります。

プログラムでの使用

ブロック パラメーター: ContinuousTs
型: 正のスカラー
既定: 0.02

コントローラーの積分項の離散積分式を指定します。離散時間の場合、ブロックで仮定される PID コントローラーの伝達関数は、

C=P+IFi(z)+D[N1+NFd(z)],

(並列形式)、または理想形式の場合、

C=P[1+IFi(z)+D(N1+NFd(z))].

コントローラーのサンプル時間 Ts について、Integrator method パラメーターは式 Fi を次のように指定します。

積分手法Fi
前進型オイラー

Tsz1

後退型オイラー

Tszz1

台形則

Ts2z+1z1

各方法の相対的な利点の詳細については、Discrete PID Controller ブロックのリファレンス ページを参照してください。

PID Controller ブロックやカスタムの PID コントローラーを調整済みのパラメーター値で更新する場合、積分手法が一致することを確認してください。

調整可能: Yes

依存関係

このパラメーターは、[時間領域]discrete-time で、コントローラーに積分動作が含まれる場合に有効になります。

プログラムでの使用

ブロック パラメーター: IntegratorFormula
型: 文字ベクトル
値: 'Forward Euler' | 'Backward Euler' | 'Trapezoidal'
既定: 'Forward Euler'

コントローラーの微分フィルター項の離散積分式を指定します。離散時間の場合、ブロックで仮定される PID コントローラーの伝達関数は、

C=P+IFi(z)+D[N1+NFd(z)],

(並列形式)、または理想形式の場合、

C=P[1+IFi(z)+D(N1+NFd(z))].

コントローラーのサンプル時間 Ts について、Filter method パラメーターは式 Fd を次のように指定します。

フィルター手法Fd
前進型オイラー

Tsz1

後退型オイラー

Tszz1

台形則

Ts2z+1z1

各方法の相対的な利点の詳細については、Discrete PID Controller ブロックのリファレンス ページを参照してください。

PID Controller ブロックやカスタムの PID コントローラーを調整済みのパラメーター値で更新する場合、フィルター手法が一致することを確認してください。

調整可能: Yes

依存関係

このパラメーターは、[時間領域]discrete-time で、コントローラーに微分フィルター項が含まれる場合に有効になります。

プログラムでの使用

ブロック パラメーター: FilterFormula
型: 文字ベクトル
値: 'Forward Euler' | 'Backward Euler' | 'Trapezoidal'
既定: 'Forward Euler'

ラジアン/秒で指定されるターゲットの帯域幅は、調整した開ループ応答 CP の 0 dB のゲイン交差周波数のターゲット値です。ここで P はプラントの応答、C はコントローラーの応答です。この交差周波数は制御帯域幅を大まかに設定します。立ち上がり時間 τ 秒に対し、ターゲット帯域幅の推定は 2/τ ラジアン/秒が適切です。

PID 調整を行うために、自動調整器ブロックはターゲット帯域幅の最大 10 倍までの周波数応答情報を測定します。この周波数が必ずナイキスト周波数より小さくなるようにするには、ターゲット帯域幅 ωcωcTs ≤ 0.3, を満たさなければなりません。ここで、Ts[コントローラーのサンプル時間 (秒)] パラメーターに指定するコントローラーのサンプル時間です。この条件のため、調整に課すことのできる最速の立ち上がり時間は約 6.67Ts です。この立ち上がり時間では設計目標が満たされない場合、Ts を減らすことを検討してください。

閉ループ調整で最良の結果を得るには、初期 PID コントローラーの帯域幅の約 10 倍以内にあるターゲット帯域幅を使用します。帯域幅がさらに大きく変化する場合のコントローラーを調整するには、それより小さい変化を使用して段階的に調整します。

入力端子を介してターゲット帯域幅を提供するには、[外部ソースの使用] を選択します。

プログラムでの使用

ブロック パラメーター: Bandwidth
型: 正のスカラー
既定: 1

交差周波数での調整した開ループ応答に対するターゲットの最小位相余裕を指定します。ターゲットの位相余裕は調整したシステムの目的のロバスト性を反映しています。通常は約 45° ~ 60° の範囲内の値を選択します。一般に、位相余裕が高いほどオーバーシュートは改善されますが、応答速度が制限される場合があります。既定値の 60° は、性能とロバスト性のバランスを取り、プラントの特性によってオーバーシュートは 5 ~ 10% になる傾向があります。

入力端子を介してターゲット位相余裕を提供するには、[外部ソースの使用] を選択します。

調整可能: Yes

プログラムでの使用

ブロック パラメーター: TargetPM
型: スカラー
値: 0 ~ 90
既定: 60
[実験] タブ

各周波数での摂動を順番に適用 ([Sinestream]) するか、同時に適用 ([重ね合わせ]) するかを指定します。

  • Sinestream — このモードでは、ブロックは摂動を各周波数で別々に適用します。推定に用いる sinestream 信号の詳細については、sinestream 入力信号を参照してください。

  • 重ね合わせ — このモードでは、指定された周波数がすべて一度に摂動信号に含められます。周波数のベクトル ω = [ω1, … , ωN]、振幅 A = [A1, … , AN] での周波数応答の推定の場合、摂動信号は次のようになります。

    Δu=iAisin(ωit).

[Sinestream] モードの方が正確で、摂動の合計サイズが [正弦波振幅] パラメーターで指定されている値を超えることはないため、割り込みも少なくなります。ただし、sinestream 摂動は順番に処理されることから、周波数点を追加するごとに推奨される実験時間は長くなります (詳細については、[start/stop] 入力端子を参照)。したがって、推定実験は通常 [重ね合わせ] モードの方がはるかに高速で、満足できる結果が得られます。

sinestream 信号では、重ね合わせ入力信号と比較して実行時間が短縮されますが、周波数応答の推定に要する時間が長くなります。sinestream 信号を使用した周波数応答の推定は、処理能力に制限があり、実行時間を短縮する必要がある場合に有用です。

プログラムでの使用

ブロック パラメーター: ExperimentMode
型: 文字ベクトル
値: 'Superposition' | 'Sinestream'
既定: 'Superposition'

プラントが安定か積分かを指定します。プラントに 1 つ以上の積分器がある場合は [積分] を選択します。

プログラムでの使用

ブロック パラメーター: PlantType
型: 文字ベクトル
値: 'Stable' | 'Integrating'
既定: 'Stable'

プラントが正か負かを指定します。定格操作点でのプラント入力における正の変化によって、プラント出力に正の変化が生じる場合、[正] を指定します。そうでない場合は、負を指定します。安定したプラントの場合、プラントの符号はプラントの DC ゲインの符号です。

プログラムでの使用

ブロック パラメーター: PlantSign
型: 文字ベクトル
値: 'Positive' | 'Negative'
既定: 'Positive'

実験中、ブロックは周波数 [1/10, 1/3, 1, 3, 10]ωc でプラントに正弦波信号を挿入します。ここで ωc は調整のターゲット帯域幅です。[正弦波振幅] を使用して、これらの挿入される各信号の振幅を指定します。以下のように指定します。

  • 各周波数で同じ振幅を挿入するにはスカラー値を指定します。

  • [1/10, 1/3, 1, 3, 10]ωc のそれぞれに異なる振幅を指定するには長さ 5 のベクトルを指定します。

一般的なターゲット帯域幅をもつ一般的なプラントでは、実験周波数におけるプラント応答の大きさはあまり変化しません。このような場合、スカラー値を使ってすべての周波数で同じ大きさの摂動を与えることができます。ただし、応答が周波数範囲にわたり急激に減衰することがわかっている場合には、低周波数の入力の振幅を小さくし、高周波数の入力の振幅を大きくすることを検討してください。推定実験では、すべてのプラント応答が同等の大きさだと数値的にはよくなります。

摂動振幅は以下のとおりでなければなりません。

  • 摂動がプラント アクチュエータのすべての不感帯を克服してノイズ レベルを超える応答を生成できる程度に大きい

  • 定格操作点近傍のほぼ線形の領域内でプラントを実行し続け、プラントの入力または出力の飽和を回避できる程度に小さい

[実験モード][重ね合わせ] の場合、正弦波信号は重ね合わせられます。したがって、摂動は最小でもすべての振幅の和に等しい大きさをもちます。取り得る最大摂動がプラント アクチュエータの範囲内に必ず収まるようにします。アクチュエータが飽和状態になると、推定周波数応答に誤りが発生することがあります。

入力端子を介して正弦波振幅を提供するには、[外部ソースの使用] を選択します。

調整可能: Yes

プログラムでの使用

ブロック パラメーター: AmpSine
型: スカラー、長さ 5 のベクトル
既定: 1
[ブロック] タブ

ブロックには、リアルタイムの周波数応答推定を実行するモジュールと、結果の推定応答を使って PID ゲインを調整するモジュールの、2 つのモジュールが含まれています。既定では、ブロックを含む Simulink モデルをエクスターナル シミュレーション モードで実行すると両方のモジュールが展開されます。推定モジュールのみを展開することにより、ターゲット ハードウェアのメモリを節約できます (Simulink でのリアルタイムの PID 自動調整の制御を参照)。この場合、調整アルゴリズムはターゲット ハードウェアではなく Simulink ホスト コンピューター上で実行されます。このオプションを選択すると、展開されたアルゴリズムはオプションをオフにした場合の約 3 分の 1 のメモリを消費します。

PID ゲインの計算には周波数応答の推定よりもさらに多くの計算負荷がかかります。コントローラーのサンプル時間が高速の場合、ハードウェアによっては 1 度の実行サイクルでゲインの計算が終了しない場合もあります。したがって、計算能力の限られるハードウェアを使用する場合、このオプションをオンにすると高速なサンプル時間で PID コントローラーを調整することができます。

また、このオプションを有効にすると、調整実験が終了した時点と新しい PID ゲインが [pid gains] 出力端子に到達した時点の間で、複数のサンプリング周期の遅延が発生する可能性があります。ゲインをコントローラーにプッシュする前に、[start/stop] 信号を更新のトリガーとして使用するのではなく、最初に [pid gains] 出力端子で変更を確認します。

エクスターナル シミュレーション モードを使用せずにブロックを展開して PID 調整を実行する予定の場合、このオプションは選択しないでください。

注意

このオプションを使用する場合、数値ブロック パラメーターが生成コード内でインライン化されるのではなく、調整可能になるようにモデルを構成しなければなりません。調整可能なパラメーターを指定するには、以下を行います。

  • モデル エディター: [コンフィギュレーション パラメーター][コード生成][最適化] で、[既定のパラメーター動作][調整可能] に設定します。

  • コマンド ライン: set_param(mdl,'DefaultParameterBehavior','Tunable') を使用します。

プログラムでの使用

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

Simulink PLC Coder を使用して自動調整器ブロック用のコードを生成する場合、このパラメーターをオンにします。それ以外のすべての MathWorks® コード生成製品でコードを生成する場合、パラメーターをオフにします。

このパラメーターの選択は、Simulink PLC Coder との互換性を確保するための内部ブロックの構成のみに影響します。パラメーターは、生成されたコードに機能的な影響を与えません。

既定では、ブロックは制御信号を入力として受け取り、制御信号に実験の摂動を加えて端子 u+Δu に出力します。その後、次のブロック線図に示すように、この信号をプラント入力に送ります。

この既定の構成では、ブロックをコントローラーとプラントの間に挿入することが必要です。制御信号に摂動信号を自分で追加する場合は [摂動のみ] を選択します。この構成では、端子 Δu において、ブロックの出力に摂動信号のみが含まれます。次のブロック線図のように、たとえば Sum ブロックを使用して、この摂動信号をプラントに挿入します。

この構成では、モデルを中断せずに、オプションで Closed-Loop PID Autotuner ブロックをコメント アウトすることができます。

シミュレーション環境またはハードウェア要件に基づいて浮動小数点精度を指定します。

プログラムでの使用

ブロック パラメーター: BlockDataType
型: 文字ベクトル
値: 'double' | 'single'
既定: 'double'

状況によっては、自動調整器ブロックは、調整されたゲインを標準またはカスタムの PID Controller ブロックに書き込むことができます。ターゲットの PID コントローラーが自動調整器ブロックの u 端子に接続されたブロックであることを示すには、このオプションをオンにします。u に接続されていない PID コントローラーを指定するには、このオプションをオフにします。

自動調整器ブロックからの調整されたゲインをモデル内の任意の場所にある PID コントローラーに書き込むには、ターゲット ブロックが次のいずれかでなければなりません。

  • PID Controller または Discrete PID Controller ブロック。

  • PID 係数が PIDN という名前のマスク パラメーターであるか、コントローラーに存在するこれらのパラメーターの任意のサブセットであるマスク サブシステム。たとえば、カスタム PI コントローラーを使用する場合、必要なのは PI のマスク パラメーターのみです。

状況によっては、自動調整器ブロックは、調整されたゲインを標準またはカスタムの PID Controller ブロックに書き込むことができます。このパラメーターを使用して、ターゲット PID コントローラーのパスを指定します。

自動調整器ブロックからの調整されたゲインをモデル内の任意の場所にある PID コントローラーに書き込むには、ターゲット ブロックが次のいずれかでなければなりません。

  • PID Controller または Discrete PID Controller ブロック。

  • PID 係数が PIDN という名前のマスク パラメーターであるか、コントローラーに存在するこれらのパラメーターの任意のサブセットであるマスク サブシステム。

依存関係

このパラメーターは、[[PID ブロックの更新] をクリックすると、"u" 端子に接続された PID ブロックに調整済みゲインが書き込まれます] がオンの場合に有効になります。

ブロックは調整されたゲインをターゲットの PID ブロックに自動的にプッシュしません。PID Controller ブロックが Specify PID block path パラメーターの説明にある基準を満たしている場合、調整後にこのボタンをクリックして、調整されたゲインをブロックに転送します。

エクスターナル モードでの実行時も含め、シミュレーションの実行中に PID ブロックを更新できます。これは調整された PID ゲインを直ちに検証する場合に役立ちます。シミュレーション中にいつでもパラメーターを変更し、実験を再開して、新しい調整済みゲインを PID ブロックにプッシュすることができます。その後、モデルの実行を継続してプラントの動作を観察できます。

このボタンをクリックすると、ブロックによって実験と調整の結果を含む構造体が MATLAB® ワークスペースに作成されます。この構造体 OnlinePIDTuningResult には、次のフィールドがあります。

  • PIDN — 調整後の PID ゲイン。構造体にはこれらのフィールドのうち、調整対象のコントローラーのタイプに必要なものが含まれます。たとえば、PI コントローラーを調整している場合、構造体には PI が含まれますが、DN は含まれません。

  • TargetBandwidth — ブロックの [ターゲットの帯域幅 (ラジアン/秒)] パラメーターで指定した値。

  • TargetPhaseMargin —ブロックの [ターゲットの位相余裕 (度)] パラメーターで指定した値。

  • EstimatedPhaseMargin — 調整後のシステムで得られる推定位相余裕。

  • Controller — 調整後の PID コントローラー。並列型の場合は pid モデル オブジェクト、理想型の場合は pidstd モデル オブジェクトとして返されます。

  • Plant — 推定されたプラント。frd モデル オブジェクトとして返されます。この frd には実験周波数 [1/10, 1/3, 1, 3, 10]ωc で得られた応答データが含まれます。

  • PlantNominal — 実験開始時の定格操作点でのプラントの入力と出力。u (入力) フィールドと y (出力) フィールドをもつ構造体として指定します。

エクスターナル モードでの実行時も含め、シミュレーションの実行中に MATLAB ワークスペースにエクスポートできます。

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

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

バージョン履歴

R2018a で導入