2017-08-05 69 views
0

为什么我们在PID行后面的代码中添加所有错误?我无法正确理解答案。 公式: total_error = int(kp *比例+ ki *积分+ kd *导数)使用arduino后的PID行

回答

0

比例项给出一个与当前误差值成比例的值。积分误差会增加一个与误差大小和持续时间成正比的误差量。导数误差是在特定时间误差随时间的斜率。它们都相互作用以提供PID算法的输出值。

所有这些都加在一起的原因是,如果条件中的各种增益(K)值得到优化,则可以在给定系统中获得最佳调谐,最稳定的响应(如果稳定性可行)。但正如任何资料来源会告诉你的那样,PID调整可能是一个难题,因为这些错误是随时间和系统变化而异相动态发生的,都会及时相互影响。它们被设计成加在一起创建一个封闭形式的方程,可以用不同的增益值进行优化。

关于这些如何相互作用有大量的信息。你可以在Wikipedia上得到一个很好的介绍。这个伪代码和维基百科附带的描述证明了在算法中下一个输出是从哪里衍生出来的,从添加错误:

previous_error = 0 
integral = 0 
loop: 
    error = setpoint - measured_value 
    integral = integral + error*dt 
    derivative = (error - previous_error)/dt 
    output = Kp*error + Ki*integral + Kd*derivative 
    previous_error = error 
    wait(dt) 
    goto loop 
+0

谢谢!!!!! –

+0

@abhitpahwa你很受欢迎。如果您发现这个功能有用,请随时单击复选标记,接受我的答案对您有用。这将有助于其他人在未来找到我的答案。 [请阅读此有用的建议](https://stackoverflow.com/help/someone-answers)。 – TomServo

+0

@TomServo ...绝对 –