1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 <2013> 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 <2013> 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Question about epid record |
From: | Bruce Hill <[email protected]> |
To: | Mark Rivers <[email protected]> |
Cc: | "[email protected]" <[email protected]> |
Date: | Tue, 26 Feb 2013 22:36:48 -0800 |
Hi Mark, I'm in the process of replacing a genSub based PID controller with the epid record that you and Bob developed, and I'm puzzled by a difference in how the two compute the I and D terms. In the classical PID algorithm, the value of M(n), the manipulated variable is M(n) = KP*(E(n) + KI*SUMi(E(i)*dT(i)) + KD*(E(n) -E(n-1))/dT(n) In fact, the above is from line 33 of devEpidSoft.c, and agrees with other descriptions I've found of the PID calculation. However, in the do_pid() function, and in epidRecord.html, the calculation includes the KP gain in the integral and derivative terms. M(n) = KP*(E(n) + KP*KI*SUMi(E(i)*dT(i)) + KP*KD*(E(n) -E(n-1))/dT(n) I can scale my KI and KD gain factors by KP to get the equivalent result, but I don't see why the effective integral gain should be affected when the proportional gain is tweaked. Ditto for KD. Any comments or clarification would be appreciated. Thanks, - Bruce -- Bruce Hill Member Technical Staff SLAC National Accelerator Laboratory |