Author: Jon Berndt
Date started: 6/17/2006
- ------------- Copyright (C) 2006 by Jon S. Berndt, jsb@hal-pc.org -------------
+ ------------- Copyright (C) 2006 by Jon S. Berndt, jon@jsbsim.org -------------
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#ifdef FGFS
-# include <simgear/compiler.h>
-# include STL_STRING
- SG_USING_STD(string);
-#else
-# include <string>
-#endif
-
#include "FGFCSComponent.h"
-#include <input_output/FGXMLElement.h>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#define ID_PID "$Id$"
+#define ID_PID "$Id: FGPID.h,v 1.12 2009/10/24 22:59:30 jberndt Exp $"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
namespace JSBSim {
class FGFCS;
+class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
/** Encapsulates a PID control component for the flight control system.
+<h3>Configuration Format:</h3>
+
+@code
+<pid name="{string}">
+ <kp> {number} </kp>
+ <ki> {number} </ki>
+ <kd> {number} </kd>
+ <trigger> {string} </trigger>
+</pid>
+@endcode
+
+<h3>Configuration Parameters:</h3>
+<pre>
+
+ kp - Proportional constant, default value 0.
+ ki - Integrative constant, default value 0.
+ kd - Derivative constant, default value 0.
+ trigger - Property which is used to sense wind-up, optional.
+
+</pre>
+
@author Jon S. Berndt
- @version $Revision$
+ @version $Revision: 1.12 $
*/
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
~FGPID();
bool Run (void);
+ void ResetPastStates(void) {Input_prev = Input_prev2 = Output = I_out_total = 0.0;}
private:
- double dt;
FGPropertyManager *Trigger;
double Kp, Ki, Kd;
- double P_out, D_out, I_out;
+ double I_out_total;
double Input_prev, Input_prev2;
+ double KpPropertySign;
+ double KiPropertySign;
+ double KdPropertySign;
+ FGPropertyManager* KpPropertyNode;
+ FGPropertyManager* KiPropertyNode;
+ FGPropertyManager* KdPropertyNode;
void Debug(int from);
};