Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
04b27af
commit 15037c5
Showing
206 changed files
with
281 additions
and
739 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,137 +1,89 @@ | ||
|
||
# PID AutotunerのPIL検証 | ||
# 初期化 | ||
|
||
```matlab:Code | ||
```matlab | ||
open_system(system_model_name); | ||
controller_name = 'PID_AutoTuning_tester_CodeGen'; | ||
load_system(controller_name); | ||
set_param([system_model_name, '/Controller'], 'ModelName', controller_name); | ||
``` | ||
|
||
|
||
|
||
調整の実行中、プラントモデルのEDLCの電圧が変化しないようにしたい。そのために、EDLCの容量を十分大きな値に設定する。 | ||
|
||
|
||
|
||
```matlab:Code | ||
```matlab | ||
set_slddVal('system_data.sldd', 'EDLC_Capacitance', 100); | ||
``` | ||
|
||
|
||
|
||
モデルをゲイン調整用に設定する。 | ||
|
||
|
||
|
||
```matlab:Code | ||
```matlab | ||
Iout_ref = 20; | ||
open_system([system_model_name, '/Reference/dist_cur_swith']); | ||
``` | ||
|
||
|
||
# モデルを実行して動作確認 | ||
|
||
```matlab:Code | ||
```matlab | ||
sim(system_model_name); | ||
plot_results_in_SDI; | ||
``` | ||
|
||
|
||
# Embedded Coder®コード生成 | ||
|
||
|
||
'PID_AutoTuning_tester_CodeGen.slx'を組み込みマイコン用にCコード生成する。'Ctrl + B'のショートカットを入力すると、コード生成が行われる。静的コード指標を確認すると、グローバル変数のサイズと静的スタックサイズは以下のようになった。 | ||
'PID\_AutoTuning\_tester\_CodeGen.slx'を組み込みマイコン用にCコード生成する。'Ctrl + B'のショートカットを入力すると、コード生成が行われる。静的コード指標を確認すると、グローバル変数のサイズと静的スタックサイズは以下のようになった。 | ||
|
||
|
||
![image_0.png](GainScheduling_PIL_md_media/image_0.png) | ||
|
||
|
||
![image_0.png](GainScheduling_PIL_md_images/image_0.png) | ||
|
||
|
||
|
||
# PIL検証 | ||
|
||
|
||
本節では、例としてSTM32 Nucleo F401REを用いたPIL検証を行う。STM32 Nucleo F401REの性能は以下の通りである。 | ||
|
||
|
||
|
||
- CPU: Coretex-M4F | ||
- Clock: 84MHz | ||
- Flash ROM: 512kB | ||
- SRAM: 96kB | ||
|
||
|
||
- CPU: Coretex\-M4F | ||
- Clock: 84MHz | ||
- Flash ROM: 512kB | ||
- SRAM: 96kB | ||
|
||
PIL検証の手順は使用する環境に依存している。以下の手順を参考に、各自の実装環境で行うこと。 | ||
|
||
|
||
'PID\_AutoTuning\_tester\_CodeGen.slx'のコンフィギュレーションパラメータを修正し、ハードウェア実行、PILブロックを生成できるように設定する。参考までに、'PID\_AutoTuning\_tester\_CodeGen.slx'のConfigurationsに「PIL」を用意している。 | ||
|
||
|
||
'PID_AutoTuning_tester_CodeGen.slx'のコンフィギュレーションパラメータを修正し、ハードウェア実行、PILブロックを生成できるように設定する。参考までに、'PID_AutoTuning_tester_CodeGen.slx'のConfigurationsに「PIL」を用意している。 | ||
|
||
|
||
|
||
![image_1.png](GainScheduling_PIL_md_media/image_1.png) | ||
|
||
![image_1.png](GainScheduling_PIL_md_images/image_1.png) | ||
|
||
'system\_model.slx'内の'Controller'ブロックのシミュレーションモードをPILに変更し、モデルを実行する。 | ||
|
||
|
||
この時、'Closed\-Loop PID Autotuner'ブロックのブロックパラメータで「異なるサンプル時間で調整」にチェックを入れ、「調整サンプル時間(秒)」をPID制御器と異なる時間に設定すれば、推定計算の最後の処理は別のタスクとして実行させることができるようになる。これにより、推定後も制御を安定させることができる。 | ||
|
||
'system_model.slx'内の'Controller'ブロックのシミュレーションモードをPILに変更し、モデルを実行する。 | ||
|
||
![image_2.png](GainScheduling_PIL_md_media/image_2.png) | ||
|
||
|
||
|
||
この時、'Closed-Loop PID Autotuner'ブロックのブロックパラメータで「異なるサンプル時間で調整」にチェックを入れ、「調整サンプル時間(秒)」をPID制御器と異なる時間に設定すれば、推定計算の最後の処理は別のタスクとして実行させることができるようになる。これにより、推定後も制御を安定させることができる。 | ||
|
||
|
||
|
||
|
||
![image_2.png](GainScheduling_PIL_md_images/image_2.png) | ||
|
||
|
||
|
||
|
||
また、実機をリアルタイム制御しながら'Closed-Loop PID Autotuner'を実行する場合は、実験モードを"Sinstream"にすることを推奨する。"重ね合わせ"と比較すると、1ステップ当たりの推定計算時間を大きく削減することができる。 | ||
|
||
|
||
また、実機をリアルタイム制御しながら'Closed\-Loop PID Autotuner'を実行する場合は、実験モードを"Sinstream"にすることを推奨する。"重ね合わせ"と比較すると、1ステップ当たりの推定計算時間を大きく削減することができる。 | ||
|
||
|
||
その代わりに、実験持続時間が"重ね合わせ"よりも多く必要である点に注意すること。 | ||
|
||
|
||
|
||
|
||
![image_3.png](GainScheduling_PIL_md_images/image_3.png) | ||
|
||
|
||
![image_3.png](GainScheduling_PIL_md_media/image_3.png) | ||
|
||
|
||
実行結果は以下のようになる。推定中は、制御のタスク(100μsのタスク)は、約100μsの計算時間を必要としていることがわかる。推定後は、0.2sのタスクが計算を行う。その計算には約30ms必要としている。その計算が終わった後に結果が出力される。 | ||
|
||
|
||
|
||
|
||
![image_4.png](GainScheduling_PIL_md_images/image_4.png) | ||
|
||
|
||
![image_4.png](GainScheduling_PIL_md_media/image_4.png) | ||
|
||
|
||
モデルの変更を戻す。 | ||
|
||
|
||
|
||
```matlab:Code | ||
```matlab | ||
set_slddVal('system_data.sldd', 'EDLC_Capacitance', 0.1); | ||
open_system([system_model_name, '/Reference/dist_cur_swith']); | ||
``` | ||
|
||
|
||
|
||
|
||
Copyright 2020 The MathWorks, Inc. | ||
|
||
|
||
|
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,107 +1,72 @@ | ||
# PID ゲインスケジューリング設計 | ||
|
||
|
||
本サンプルモデルでは、非線形なプラントモデルを制御するPID制御器のゲインスケジューリングを、「Closed-Loop PID Autotuner」ブロックまたは「応答オプティマイザー」アプリを用いて設計する。ツールの使い方と、それぞれの手法のメリット、デメリットを把握することができる。 | ||
|
||
# PID ゲインスケジューリング設計 | ||
|
||
本サンプルモデルでは、非線形なプラントモデルを制御するPID制御器のゲインスケジューリングを、「Closed\-Loop PID Autotuner」ブロックまたは「応答オプティマイザー」アプリを用いて設計する。ツールの使い方と、それぞれの手法のメリット、デメリットを把握することができる。 | ||
|
||
|
||
最初に付属の「PIDゲインスケジューリング設計.pdf」(Webリンクは[こちら](https://github.com/mathworks/pid_autotuing_response_optimization/blob/master/PID%E3%82%B2%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E8%A8%AD%E8%A8%88.pdf))を読むこと。 | ||
|
||
|
||
# 必要なツールボックス | ||
|
||
|
||
本モデルでは、以下のツールボックスを利用する。ただし、インストールしていなくても、モデルを実行せず閲覧するだけであれば可能である。また、例題によっては使わないツールボックスもある。 | ||
|
||
|
||
|
||
- MATLAB® | ||
- Simulink® | ||
- Simscape™ | ||
- Control System Toolbox™ | ||
- Simulink Control Design™ | ||
- Simulink Design Optimization™ | ||
- Optimization Toolbox™ | ||
- Global Optimization Toolbox | ||
- Parallel Computing Toolbox™ | ||
- MATLAB® Coder™, Simulink® Coder™, Embedded Coder® | ||
|
||
- MATLAB® | ||
- Simulink® | ||
- Simscape™ | ||
- Control System Toolbox™ | ||
- Simulink Control Design™ | ||
- Simulink Design Optimization™ | ||
- Optimization Toolbox™ | ||
- Global Optimization Toolbox | ||
- Parallel Computing Toolbox™ | ||
- MATLAB® Coder™, Simulink® Coder™, Embedded Coder® | ||
# 必要なサポートパッケージ | ||
|
||
- MATLAB Support for MinGW-w64 C/C++ Compiler | ||
|
||
|
||
- MATLAB Support for MinGW\-w64 C/C++ Compiler | ||
|
||
※上記はWindows用のコンパイラである。Mac, Linuxでは、それぞれのOSに向けたコンパイラをインストールすること。 | ||
|
||
|
||
|
||
|
||
※Windows用のコンパイラで、mexファイルを生成できるコンパイラであれば、MinGWでなくてもよい。 | ||
|
||
|
||
# 目次 | ||
|
||
|
||
[PIDゲインスケジューリングをAutotunerを用いて設計する](/design_GainScheduling_with_Autotuner_md.md) | ||
|
||
|
||
|
||
|
||
[PIDゲインスケジューリングを応答オプティマイザーを用いて設計する](/design_GainScheduling_with_ResponseEstimator_md.md) | ||
|
||
|
||
|
||
|
||
[PID AutotunerのPIL検証](/GainScheduling_PIL_md.md) | ||
|
||
|
||
# 過去バージョン | ||
|
||
|
||
過去のバージョンのファイル一式は、以下から得ることができる。ただし、過去のモデルには、古い時期に作成したサンプルしか含まれていないことに注意すること。 | ||
|
||
|
||
|
||
|
||
GitHubからクローンしている場合には、以下の該当バージョンに戻すことで、過去バージョンファイルを得ることができる。 | ||
|
||
|
||
R2023b: [v8.0](https://github.com/mathworks/pid_autotuing_response_optimization/archive/refs/tags/v8.0.zip) | ||
|
||
|
||
R2023a: [v7.0](https://github.com/mathworks/pid_autotuing_response_optimization/archive/refs/tags/v7.0.zip) | ||
|
||
|
||
|
||
|
||
R2022b: [v6.0](https://github.com/mathworks/pid_autotuing_response_optimization/archive/refs/tags/v6.0.zip) | ||
|
||
|
||
|
||
|
||
R2022a: [v5.0](https://github.com/mathworks/pid_autotuing_response_optimization/archive/refs/tags/v5.0.zip) | ||
|
||
|
||
|
||
|
||
R2021b: [v4.0](https://github.com/mathworks/pid_autotuing_response_optimization/archive/v4.0.zip) | ||
|
||
|
||
|
||
|
||
R2021a: [v3.0.2](https://github.com/mathworks/pid_autotuing_response_optimization/archive/v3.0.2.zip) | ||
|
||
|
||
|
||
|
||
R2020b: [v2.2](https://github.com/mathworks/pid_autotuing_response_optimization/archive/v2.2.zip) | ||
|
||
|
||
|
||
|
||
R2020a: [v1.1](https://github.com/mathworks/pid_autotuing_response_optimization/archive/v1.1.zip) | ||
|
||
|
||
|
Oops, something went wrong.