Skip to content

Commit

Permalink
Update to R2024a.
Browse files Browse the repository at this point in the history
  • Loading branch information
Toshinobu-Shintai committed Mar 25, 2024
1 parent 04b27af commit 15037c5
Show file tree
Hide file tree
Showing 206 changed files with 281 additions and 739 deletions.
88 changes: 20 additions & 68 deletions PID_GainScheduling/design/GainScheduling_PIL_md.md
@@ -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.



Binary file modified PID_GainScheduling/design/PID_GainScheduling_index.mlx
Binary file not shown.
63 changes: 14 additions & 49 deletions PID_GainScheduling/design/PID_GainScheduling_index_md.md
@@ -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)



0 comments on commit 15037c5

Please sign in to comment.