ArduinoのPIDライブラリ

https://github.com/br3ttb/Arduino-PID-Library/
PID制御器

PID::Computeの解析

1. P on Errorのとき(デフォルト)

double input = *myInput;//システムからの出力x_tのこと
double error = *mySetpoint - input;//セットポイントはターゲットr、inputはx_tなので、
                                          //error=e_tを意味する→つまり制御器への入力
double dInput = (input - lastInput); //微分制御のための差分(前前回のシステムの出力と前回のシステムの差分)
outputSum+= (ki * error); //制御量への積分項の寄与:Kiゲインをかけてターゲットまでの差分を積算する
double output = kp*error + outputSum - kd * dInput; //outputsum項は積算になっている

2. P on Measurementのとき

比例ゲインは微分制御に近い働きをしているように見える

double input = *myInput;
double error = *mySetpoint - input;
                                          
double dInput = (input - lastInput); 
outputSum+= (ki * error); 
outputSum-= kp * dInput; //微分制御のための差分に比例ゲインをかけたものを積分項から差し引く
double output = 0 + outputSum - kd * dInput; //比例項は上のoutputsum部で計算に含めている