このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
ライブ エディターにおける測定されたプラント データからの PID コントローラーの調整
この例では、既知の入力信号に対して測定されたプラント応答を基に、ライブ エディター タスクを使用してプラント用の PID コントローラーを調整する方法を説明します。この例では、状態空間モデルの推定タスクを使用して、パラメトリックなプラント モデルを推定するためのコードを生成します。次に、モデル レートの変換タスクを使用して、同定された連続時間モデルを離散化します。最後に、PID コントローラーの調整タスクを使用して、設計要件を満たす閉ループ応答を達成する PID コントローラーを設計します (状態空間モデルの推定を使用するには、System Identification Toolbox™ のライセンスが必要です)。
ライブ エディター タスクを使用すると、計算結果への影響を観察しながら、パラメーターと設定を対話的に反復できます。タスクは、表示された結果を実現する MATLAB® コードを自動的に生成します。このスクリプトのライブ エディター タスクを試行するには、この例を開きます。ライブ エディター タスク全般の詳細については、ライブ スクリプトへの対話型タスクの追加を参照してください。
プラント データの読み込み
測定された入出力データを読み込みます。この例では、データはエンジンからチャープへの入力の応答で構成されます。入力 u
は、0.04 秒ごとにサンプリングされた入力信号を含むベクトルです。出力ベクトル y
には、これに対応する測定された応答が含まれます。
load IdentPlantPIDExample u y t = 0.04*(0:length(u)-1); plot(t,u,t,y) legend('input u','response y')
状態空間モデルの推定
このデータから状態空間モデルを推定するには、Estimate State-Space Model (System Identification Toolbox)ライブ エディター タスクを使用します。ライブ エディターの [タスク] メニューを使用して、スクリプトにタスクを挿入できます。このスクリプトには、状態空間モデルの推定が既に挿入されています。例を開き、タスクを試行します。
推定を実行するには、タスクで、読み込んだ入力信号 u
および出力信号 y
を指定し、サンプル時間を 0.04 秒に設定します (この例には検証データはありません)。また、プラントの次数も指定する必要があります。通常、プラントの次数はシステムに関する知識から推測できます。一般に、適度に良好な推定適合度が得られる、最も小さいプラントの次数を使用します。状態空間モデルの推定タスクで、さまざまなプラントの次数値を試行し、出力プロットに表示される近似結果を観察します。利用可能なオプションおよびパラメーターの詳細については、Estimate State-Space Model (System Identification Toolbox)タスクのリファレンス ページを参照してください。
タスクのパラメーターを変化させると、推定の実行とプロットの作成用に、生成されたコードが自動的に更新されます (生成されたコードを確認するには、タスクの下部にある をクリックします。)
% Create object for time series data estimationData = iddata(y,u,0.04); % Estimate state-space model sys_id = ssest(estimationData,4); % Display results compare(estimationData,sys_id); clear estimationData; title('Estimation data:');
この例では、プラントの次数が 4 のとき、推定適合度は約 72% です。プラントの次数を大きくしてみると、その操作で適合度はあまり向上しないことがわかります。そのため、4 次のプラントを使用します。コードは、状態空間モデルの推定タスクのサマリ行に入力した変数名で、同定された状態空間モデルを生成します。この例では、sys_id
を使用します。タスクの試行が完了後、同定された状態空間モデル sys_id
が MATLAB® ワークスペースに入ります。それを利用して、他の LTI モデル オブジェクトを使用する場合と同様に、さらに設計および解析を行えます。たとえば、同定された状態空間モデル sys_id
の周波数応答を調査します。
bode(sys_id)
grid on
モデルの離散化
このモデルの PID コントローラーを設計する前に、このモデルを離散化するとします。これを行うには、モデル レートの変換タスクを使用します。タスクで、同定されたモデル sys_id
を選択します。サンプル時間を、同定されたモデル応答の共振に対応するのに十分な速度に指定します (たとえば 0.025 秒)。共振の近傍で周波数応答によく一致させるため、別の変換メソッドを選択することもできます。たとえば、[メソッド] を Bilinear (Tustin) approximation
に設定し、またピーク応答の位置 38.4 rad/s のプリワープ周波数を設定してみます。タスクの設定を試行しながら、ボード線図で元のモデルと変換後のモデルを比較し、一致に問題がないか確認します (パラメーターとオプションの詳細については、モデル レートの変換タスクのリファレンス ページを参照してください)。
モデル レートの変換は、タスクのサマリ行に入力した変数名で、離散化モデルを作成するコードを生成します。この例では、sys_d
を使用します。
% Convert model from continuous to discrete time sys_d = c2d(sys_id,0.025); % Visualize the results bodeplot(sys_id,sys_d); legend('Original Model','Converted Model'); grid on;
離散化モデルが共振による過渡応答を捉えていることを確認するため、元の同定されたモデル sys_id
と離散化モデル sys_d
間でステップ応答の最初の数秒を比較します。
step(sys_id,sys_d,3) legend('identified model sys_id','discretized model sys_d')
離散化されたプラント モデルのコントローラーの調整
最後に、PID コントローラーの調整タスクを使用して、離散化されたプラント sys_d
の PI または PID コントローラーを調整するコードを生成します。このタスクは、次の図に示す標準的な単位フィードバック制御構成を仮定して、特定のプラント用の PID コントローラーを設計します。
タスクで、プラントとして sys_d
を選択し、コントローラー タイプや応答時間などの設定をさまざまに試行します。設定を変更するとともに、タスクによって生成された閉ループ応答を観察する出力プロットを選択します。[システム応答の特性] をオンにし、立ち上がり時間やオーバーシュートなどの閉ループ ステップ応答特性の数値を表示させます。
% Convert Response Time to Bandwidth % Bandwidth is equivalent to 2 divided by the Response Time wc = 2/11; % PID tuning algorithm for linear plant model [C,pidInfo] = pidtune(sys_d,'PIDF',wc); % Clear Temporary Variables clear wc % Get desired loop response Response = getPIDLoopResponse(C,sys_d,'closed-loop'); % Plot the result stepplot(Response) title('Step Plot: Reference tracking') grid on
% Display system response characteristics
disp(stepinfo(Response))
RiseTime: 8.3250 TransientTime: 43.2750 SettlingTime: 43.3500 SettlingMin: 0.9008 SettlingMax: 1.0741 Overshoot: 7.4059 Undershoot: 0.5440 Peak: 1.0741 PeakTime: 22.3250
% Clear Temporary Variables clear Response
この例では、閉ループ システムが 50 秒以内に整定することを目標とし、システムは 10% 以内のオーバーシュートを許容できるものとします。[コントローラー タイプ] や [応答時間] などのコントローラーの設定を調整し、目標を達成します。使用可能なパラメーターとオプションの詳細については、PID コントローラーの調整タスクのリファレンス ページを参照してください。
設計のさらなる解析
他のライブ エディター タスクと同様に、PID コントローラーの調整は、タスクのサマリ行に入力した変数名で調整されたコントローラーを作成するコードを生成します。この例では、C
を使用します。調整されたコントローラー C
は、MATLAB ワークスペース内の pid
モデル オブジェクトであり、さらなる解析に使用できます。たとえば、このコントローラーを使用して、プラント sys_d
の出力における外乱に対する閉ループ応答を計算します。応答とその特性を確認します。
CLdist = getPIDLoopResponse(C,sys_d,"output-disturbance"); step(CLdist) grid on
モデル sys_id
、sys_d
、および C
は他の任意の制御設計または解析タスクに使用できます。
参考
ライブ エディター タスク
- 状態空間モデルの推定 (System Identification Toolbox) | モデル レートの変換 | PID コントローラーの調整