Branch data Line data Source code
1 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 : :
3 : : Header: FGPID.h
4 : : Author: Jon Berndt
5 : : Date started: 6/17/2006
6 : :
7 : : ------------- Copyright (C) 2006 by Jon S. Berndt, jon@jsbsim.org -------------
8 : :
9 : : This program is free software; you can redistribute it and/or modify it under
10 : : the terms of the GNU Lesser General Public License as published by the Free Software
11 : : Foundation; either version 2 of the License, or (at your option) any later
12 : : version.
13 : :
14 : : This program is distributed in the hope that it will be useful, but WITHOUT
15 : : ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
16 : : FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
17 : : details.
18 : :
19 : : You should have received a copy of the GNU Lesser General Public License along with
20 : : this program; if not, write to the Free Software Foundation, Inc., 59 Temple
21 : : Place - Suite 330, Boston, MA 02111-1307, USA.
22 : :
23 : : Further information about the GNU Lesser General Public License can also be found on
24 : : the world wide web at http://www.gnu.org.
25 : :
26 : : HISTORY
27 : : --------------------------------------------------------------------------------
28 : : Initial Code 6/17/2006 JSB
29 : :
30 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
31 : : SENTRY
32 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
33 : :
34 : : #ifndef FGPID_H
35 : : #define FGPID_H
36 : :
37 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
38 : : INCLUDES
39 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
40 : :
41 : : #include "FGFCSComponent.h"
42 : :
43 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
44 : : DEFINITIONS
45 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
46 : :
47 : : #define ID_PID "$Id: FGPID.h,v 1.12 2009/10/24 22:59:30 jberndt Exp $"
48 : :
49 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50 : : FORWARD DECLARATIONS
51 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
52 : :
53 : : namespace JSBSim {
54 : :
55 : : class FGFCS;
56 : : class Element;
57 : :
58 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
59 : : CLASS DOCUMENTATION
60 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
61 : :
62 : : /** Encapsulates a PID control component for the flight control system.
63 : :
64 : : <h3>Configuration Format:</h3>
65 : :
66 : : @code
67 : : <pid name="{string}">
68 : : <kp> {number} </kp>
69 : : <ki> {number} </ki>
70 : : <kd> {number} </kd>
71 : : <trigger> {string} </trigger>
72 : : </pid>
73 : : @endcode
74 : :
75 : : <h3>Configuration Parameters:</h3>
76 : : <pre>
77 : :
78 : : kp - Proportional constant, default value 0.
79 : : ki - Integrative constant, default value 0.
80 : : kd - Derivative constant, default value 0.
81 : : trigger - Property which is used to sense wind-up, optional.
82 : :
83 : : </pre>
84 : :
85 : : @author Jon S. Berndt
86 : : @version $Revision: 1.12 $
87 : : */
88 : :
89 : : /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
90 : : CLASS DECLARATION
91 : : %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
92 : :
93 : : class FGPID : public FGFCSComponent
94 : : {
95 : : public:
96 : : FGPID(FGFCS* fcs, Element* element);
97 : : ~FGPID();
98 : :
99 : : bool Run (void);
100 : 0 : void ResetPastStates(void) {Input_prev = Input_prev2 = Output = I_out_total = 0.0;}
101 : :
102 : : private:
103 : : FGPropertyManager *Trigger;
104 : : double Kp, Ki, Kd;
105 : : double I_out_total;
106 : : double Input_prev, Input_prev2;
107 : : double KpPropertySign;
108 : : double KiPropertySign;
109 : : double KdPropertySign;
110 : : FGPropertyManager* KpPropertyNode;
111 : : FGPropertyManager* KiPropertyNode;
112 : : FGPropertyManager* KdPropertyNode;
113 : :
114 : : void Debug(int from);
115 : : };
116 : : }
117 : : #endif
|