营销运营推广服务,成都市seo网站公司,网站注册商标属于哪一类,上饶网站开发最近看到了Brett Beauregard发表的有关PID的系列文章#xff0c;感觉对于理解PID算法很有帮助#xff0c;于是将系列文章翻译过来#xff01;在自我提高的过程中#xff0c;也希望对同道中人有所帮助。作者Brett Beauregard的原文网址#xff1a;http#xff1a;//brettb…最近看到了Brett Beauregard发表的有关PID的系列文章感觉对于理解PID算法很有帮助于是将系列文章翻译过来在自我提高的过程中也希望对同道中人有所帮助。作者Brett Beauregard的原文网址http//brettbeauregard.com/blog/2011/07/pid-when-should-i-compute-the-integral-term/ 最近有一个建议张贴到初学者的PID系列。争议的焦点是如果您解决拉普拉斯域中的问题它指定了执行积分项的不同方式。评论人士建议与其看某一点的误差总和不如看最后一个点的总和。
因此当前的代码是这样的
/*Compute all the working error variables*/
double input *myInput;
double error *mySetpoint - input;
ITerm (ki * error);
if(ITerm outMax) ITerm outMax;
else if(ITerm outMin) ITerm outMin;
double dInput (input - lastInput);/*Compute PID Output*/
double output kp * error ITerm- kd * dInput;
建议是这样的
/*Compute all the working error variables*/
double input *myInput;
double error *mySetpoint - input;double dInput (input - lastInput);/*Compute PID Output*/
double output kp * error ITerm- kd * dInput;ITerm (ki * error);
if(ITerm outMax) ITerm outMax;
else if(ITerm outMin) ITerm outMin;
我从未见过这样做但我想我应该试一试。我设计的测试是一个简单的设定值阶跃然后是一个斜坡下降。 当控制器设置为默认的采样时间时差异是无法察觉的。为了突出这两种方法之间的差异我决定将PID采样时间从默认值100mS提高到5秒。 这里我们可以看到一个明显的赢家。现有的PID代码的性能比建议的要好这可能是因为积分项对进程更改的响应要早5秒。但是为了确保我没有遗漏任何东西我决定再做一次测试。我没有改变设定值而是在系统中引入了负载变化。 同样现有的 PID 代码性能更好处理负载变化更快。
那么判决呢虽然这是一个有趣的锻炼但我认为结果很清楚。我会保持原来的代码。
欢迎关注