【上流検証】最小構成のモデルベース開発事例 その20【PID振動対策】

【上流検証】最小構成のモデルベース開発事例 その20【PID振動対策】 事例

バックナンバーはこちら
https://www.simulationroom999.com/blog/model-based-of-minimum-backnumber/

はじめに

前回のプラントモデルの精度向上の続き。
今回は実際にモデルの修正までする。

登場人物

博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1

エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1

振り返りと方針

フクさん
フクさん

さて、
前回プラントモデルをよりリアルにしたわけなのだけど。

太郎くん
太郎くん

そこで出てきた問題として、
制御が振動するようになってしまったんだよね。

フクさん
フクさん

そうそう。

太郎くん
太郎くん

んで、
PIDの各係数を調整すれば良いかと思ってたんだけど、
フクさんとしては別の手段があるような言い方してたよね?
どんな感じなの?

フクさん
フクさん

一言でいうと、
「積分単位時間を調整する」

太郎くん
太郎くん

????

積分単位時間

フクさん
フクさん

ちょっと例題を出そう。
以下の積分するといくつ?

積分例(単位sec)
太郎くん
太郎くん

縦軸1で横軸1だから
これは積分するまでもなく、答えは\(1\)だ!

フクさん
フクさん

正解。

フクさん
フクさん

では、

似たような感じだけどこれは?

積分例(単位ms)
太郎くん
太郎くん

あれ?
えっと、これも・・・1かな?

フクさん
フクさん

正解。

太郎くん
太郎くん

え?正解なの?

不正解の流れだと思ってた。

フクさん
フクさん

じゃこれは?

積分例(単位10ms)
太郎くん
太郎くん

・・・。
これも・・・(ゴクリ)・・・い、1?

フクさん
フクさん

正解。

太郎くん
太郎くん

何となく分かってきたぞ。
ようは横軸の単位をどう取るかで同じ1でも積分の意味が変ってくるってことだね?

フクさん
フクさん

その通り。

PIDモデル修正

フクさん
フクさん

この考え方をPID制御モデルに取り込むと以下のようになる。

PID制御器離散化に積分単位の概念を組み込む
太郎くん
太郎くん

\(Δt\)の分母側と\(\displaystyle\frac{1}{Δt}\)の分子側に\(T1\)ってのが付いたね。

フクさん
フクさん

これは\(Δt\)の単位を意味する。
いままでは\(1[sec]\)想定の計算だったんで\(1\)という値が居たことになる。

太郎くん
太郎くん

ということは今回はこれを調整するってことになるのかな?

フクさん
フクさん

そうだね。

積分単位時間の調整

太郎くん
太郎くん

で、調整といってもどういうふうに調整すれば良いのかな?

フクさん
フクさん

一次遅れ系の時定数的なイメージでおおよそOKかな?

太郎くん
太郎くん

じゃー、11.5ってのを入れてみよう。

シミュレーション結果、目標車速、実車速、乗っ取りモード、ユーザ操作AP開度、実AP開度、ギリ届いてない。
太郎くん
太郎くん

んー、

振動はしなくなった・・・かな?

フクさん
フクさん

制御側の積分単位時間\(T1\)をプラント側の時定数と合わせこんだので、振動は無くなった。
しかし、ちょっと反応が鈍い。
少し積分単位時間\(T1\)を下げてみる。

太郎くん
太郎くん

じゃあ、\(T1=5.5\)くらいでやってみるね。

シミュレーション結果(積分単位時間を修正)、目標車速、実車速、乗っ取りモード、ブレーキ、ユーザ操作AP開度、実AP開度
太郎くん
太郎くん

お、今回はいい感じじゃないかな。

フクさん
フクさん

振動もせず、そこそこの追従性がある状態になったね。
おおよそ、期待する追従時間の\(30~50[\%]\)くらいの時間を目安として、
積分単位時間T1を設定すると良いのかもね。

太郎くん
太郎くん

うーん、こういう調整の仕方もあるのかー。

普通のPIDでチューニングしたら?

太郎くん
太郎くん

今回のやり方って、
一般的なPIDのチューニングに当てはめるとどういう感じになるのかな?

フクさん
フクさん

普通に時間関係の係数を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]\)
太郎くん
太郎くん

\(K_p\)は変化せずに\(K_i\)と\(K_d\)を調整したような感じになるんだね。

フクさん
フクさん

そうなるね。
慣れている人だと振動の仕方から
「積分係数\(K_i\)が強そうだからちょっと落としてみよう。」
みたいな判断になるのかもね。

太郎くん
太郎くん

慣れている人並みのチューニングがサクっとできてしまうのかぁ。

フクさん
フクさん

まぁ今回のモデルはシンプルであったのと、時定数を大きく弄った事実をしっていたからね。
何も分からない状態だと慣れている人の方がうまいチューニングはすると思うね。

太郎くん
太郎くん

うん。勉強になったよ。

フクさん
フクさん

じゃ、

その勉強ついでに次回もPIDの特殊なパラメータを弄ってみようか。

太郎くん
太郎くん

(まだなんか隠し持ってるのか?!)

まとめ

フクさん
フクさん

まとめだよ。

  • 時間も調整可能パラメータの一部と考える。
  • さらに時間の単位も調整可能のパラメータと考えられる。

バックナンバーはこちら

コメント

タイトルとURLをコピーしました