70303


Pythonで制御工学を学んでいます。そこで、このコードに疑問点があります。

サンプル方式  
MVn = MVn-1 + ΔMVn  
ΔMVn = Kp(en-en-1) + Ki en + Kd((en-en-1) - (en-1-en-2))

＃ただし  
MVn、MVn-1:今回、前回操作量 ΔMVn:今回操作量差分  
en,en-1,en-2：今回、前回、前々回の偏差 とする。

というPID制御のモデルのような式なのですが、比例項に疑問があります。

比例項は、”現在”の偏差にゲインをかけたものですよね？なぜ、前回の偏差が引き算されるのでしょうか？

ご説明よろしくお願いします。

参考  
・PythonでPID制御をやってみる  
<https://qiita.com/BIG_LARGE_STONE/items/4f8af62b3edc4a03c4a5>

・モータのPID制御法  
<http://www.picfun.com/motor05.html>


CC BY-SA 4.0
2020-09-10T23:22:17.020
70301
2020-09-11T00:12:53.630
2020-09-11T00:12:53.630
3060
41334
question
python python3 numpy sympy
PID制御のコーディングについて


「操作量」について誤解があるような？

操作量とは操作できるものの量（＝現在値）

  * 弁を開閉する場合、操作量とは弁開度（０点から何ステップ回した）
  * 自動車を走らせるとき、操作量とはアクセル開度
  * モーターを回すとき (ブラシレス DC モータなら) インバータの出力周波数

実際に制御する上で必要なのは「操作量の差分」っスよね。

  * 追加で何ステップ開ける閉じる
  * アクセル板の末端高さで何ミリ踏み込む戻す
  * 周波数をいくつ下げる上げる

だから紹介されたページにも「今回の操作量＝前回の操作量＋今回の操作量差分」とちゃんとありますよね。欲しいのは「今回の操作量差分＝今回の操作量－前回の操作量」となれば操作量の漸化式から提示の式となります。


CC BY-SA 4.0
2020-09-11T00:10:47.960
70303
2020-09-11T00:10:47.960
8589
70301
answer