バックナンバーはこちら
https://www.simulationroom999.com/blog/model-based-of-minimum-backnumber/
はじめに
前回のプラントモデルの精度向上の続き。
今回は実際にモデルの修正までする。
登場人物
博識フクロウのフクさん
![](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
振り返りと方針
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
さて、
前回プラントモデルをよりリアルにしたわけなのだけど。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
そこで出てきた問題として、
制御が振動するようになってしまったんだよね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうそう。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
んで、
PIDの各係数を調整すれば良いかと思ってたんだけど、
フクさんとしては別の手段があるような言い方してたよね?
どんな感じなの?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
一言でいうと、
「積分単位時間を調整する」
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
????
積分単位時間
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
ちょっと例題を出そう。
以下の積分するといくつ?
![積分例(単位sec)](https://www.simulationroom999.com/blog/wp-content/uploads/2020/06/02_1秒積分.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
縦軸1で横軸1だから
これは積分するまでもなく、答えは\(1\)だ!
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/まるフクロウ.png)
正解。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
では、
似たような感じだけどこれは?
![積分例(単位ms)](https://www.simulationroom999.com/blog/wp-content/uploads/2020/06/03_1ms積分.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
あれ?
えっと、これも・・・1かな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/まるフクロウ.png)
正解。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
え?正解なの?
不正解の流れだと思ってた。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
じゃこれは?
![積分例(単位10ms)](https://www.simulationroom999.com/blog/wp-content/uploads/2020/06/04_10ms積分.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
・・・。
これも・・・(ゴクリ)・・・い、1?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/まるフクロウ.png)
正解。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
何となく分かってきたぞ。
ようは横軸の単位をどう取るかで同じ1でも積分の意味が変ってくるってことだね?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
その通り。
PIDモデル修正
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
この考え方をPID制御モデルに取り込むと以下のようになる。
![PID制御器離散化に積分単位の概念を組み込む](https://www.simulationroom999.com/blog/wp-content/uploads/2020/06/05_PIDモデル修正-1024x334.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
\(Δt\)の分母側と\(\displaystyle\frac{1}{Δt}\)の分子側に\(T1\)ってのが付いたね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
これは\(Δt\)の単位を意味する。
いままでは\(1[sec]\)想定の計算だったんで\(1\)という値が居たことになる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者03アップ.png)
ということは今回はこれを調整するってことになるのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうだね。
積分単位時間の調整
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
で、調整といってもどういうふうに調整すれば良いのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
一次遅れ系の時定数的なイメージでおおよそOKかな?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
じゃー、11.5ってのを入れてみよう。
![シミュレーション結果、目標車速、実車速、乗っ取りモード、ユーザ操作AP開度、実AP開度、ギリ届いてない。](https://www.simulationroom999.com/blog/wp-content/uploads/2020/06/06_PIDシミュレーション11_5-1024x556.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
んー、
振動はしなくなった・・・かな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
制御側の積分単位時間\(T1\)をプラント側の時定数と合わせこんだので、振動は無くなった。
しかし、ちょっと反応が鈍い。
少し積分単位時間\(T1\)を下げてみる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
じゃあ、\(T1=5.5\)くらいでやってみるね。
![シミュレーション結果(積分単位時間を修正)、目標車速、実車速、乗っ取りモード、ブレーキ、ユーザ操作AP開度、実AP開度](https://www.simulationroom999.com/blog/wp-content/uploads/2020/06/07_PIDシミュレーション5_5-1024x556.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
お、今回はいい感じじゃないかな。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
振動もせず、そこそこの追従性がある状態になったね。
おおよそ、期待する追従時間の\(30~50[\%]\)くらいの時間を目安として、
積分単位時間T1を設定すると良いのかもね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
うーん、こういう調整の仕方もあるのかー。
普通のPIDでチューニングしたら?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
今回のやり方って、
一般的なPIDのチューニングに当てはめるとどういう感じになるのかな?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
普通に時間関係の係数をPIDの各係数として計算すると出てくるよ。
こんな感じだね。
\([K_p, K_i, K_d]\) | |
調整前(積分単位時間T1=1) | \([0.80000, 0.00500, 0.00100]\) |
積分単位時間T1=5.5 | \([0.80000, 0.00091, 0.00550]\) |
積分単位時間T1=11.5 | \([0.80000, 0.00043, 0.01150]\) |
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
\(K_p\)は変化せずに\(K_i\)と\(K_d\)を調整したような感じになるんだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
そうなるね。
慣れている人だと振動の仕方から
「積分係数\(K_i\)が強そうだからちょっと落としてみよう。」
みたいな判断になるのかもね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
慣れている人並みのチューニングがサクっとできてしまうのかぁ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まぁ今回のモデルはシンプルであったのと、時定数を大きく弄った事実をしっていたからね。
何も分からない状態だと慣れている人の方がうまいチューニングはすると思うね。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
うん。勉強になったよ。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
じゃ、
その勉強ついでに次回もPIDの特殊なパラメータを弄ってみようか。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
(まだなんか隠し持ってるのか?!)
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- 時間も調整可能パラメータの一部と考える。
- さらに時間の単位も調整可能のパラメータと考えられる。
バックナンバーはこちら
コメント