PIDオートチューンニング
2018年11月28日 - 未分類
温度調整機能があるITBOXに、ステップ応答法によるPIDオートチューニングを実装してみました。ステップ応答法に関しては、ネット上に多くの情報があるので、詳細な説明は省きます。
アルゴリズム
- 現在温度−1度まで冷やす
- A点は、現在温度+1度の温度点
- A点を超えるまで温める
- A点を超えたら冷やす
- 再びA点を超えたら停止する
- 温度変化曲線からPIDを算出
現在温度は、指定温度、温度変化も任意で構いませんが、現状温度±1度の変化が最も早くできます。
このような温度変動曲線が得られます。この曲線から、最小温度と最大温度の間のデータを使います。
最小温度時点を0として、0.632Kの点を探してicenterとします。この点の前後20点で最小自乗近似を行い、接線を決めます。
この接線 y = ax +bより、LとTを求めます。
L = -a/b
T = icenter-L
CHR法による係数決定方法を使います。
オーバーシュート 0%の場合
KL = K*L
Kp = 0.6*T/KL*1000.0
Ki = 0.6/KL
Kd = 0.3*T/K
オーバーシュート 20%の場合
KL = K*L
Kp = 0.95*T/KL*1000.0
Ki = 0.7/KL
Kd = 0.447*T/K
となります。具体的な結果は、
(‘center = ‘, 26, 0.6199999999999974)
a=-0.772541353383 b=0.0522406015038
overshoot 0% Kp 454.9 Ki 0.040 Kd 3.36
overshoot 20% Kp 720.3 Ki 0.047 Kd 5.01
となりました。Kpが1より大きいのは、ITBOXではペルチェ制御を0から1000の整数で行っているために1000倍されているからです。
PIDオートチューニング中は、PID制御はできません。また、オートチューニングは、常に必要なわけではなく、最初のPIDパラメータ設定時だけ実行するだけです。