/**
- * A simple proportional controler
+ * Roy Ovesen's PID controller
*/
class FGPIDController : public FGXMLAutoComponent {
private:
- // proportional component data
- bool proportional;
- double factor;
- SGPropertyNode *offset_prop;
- double offset_value;
-
- // integral component data
- bool integral;
- double gain;
- double int_sum;
-
- // prep functions for error term
- bool one_eighty;
-
- // post functions for output
- bool clamp;
-
// debug flag
bool debug;
// Input values
double y_n; // measured process value
double r_n; // reference (set point) value
+ double y_scale; // scale process input from property system
+ double r_scale; // scale reference input from property system
// Configuration values
double Kp; // proportional gain
};
+/**
+ * A simplistic P [ + I ] PID controller
+ */
+
+class FGPISimpleController : public FGXMLAutoComponent {
+
+private:
+
+ // proportional component data
+ bool proportional;
+ double Kp;
+ SGPropertyNode *offset_prop;
+ double offset_value;
+
+ // integral component data
+ bool integral;
+ double Ki;
+ double int_sum;
+
+ // post functions for output
+ bool clamp;
+
+ // debug flag
+ bool debug;
+
+ // Input values
+ double y_n; // measured process value
+ double r_n; // reference (set point) value
+ double y_scale; // scale process input from property system
+ double r_scale; // scale reference input from property system
+
+ double u_min; // Minimum output clamp
+ double u_max; // Maximum output clamp
+
+
+public:
+
+ FGPISimpleController( SGPropertyNode *node );
+ ~FGPISimpleController() {}
+
+ void update( double dt );
+};
+
+
+/**
+ * Predictor - calculates value in x seconds future.
+ */
+
+class FGPredictor : public FGXMLAutoComponent {
+
+private:
+
+ // proportional component data
+ double last_value;
+ double average;
+ double seconds;
+ double filter_gain;
+
+ // debug flag
+ bool debug;
+
+ // Input values
+ double ivalue; // input value
+
+public:
+
+ FGPredictor( SGPropertyNode *node );
+ ~FGPredictor() {}
+
+ void update( double dt );
+};
+
+
/**
* Model an autopilot system.
*