FlightGear next
FGTransmission.h
Go to the documentation of this file.
1/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2
3 JSBSim
4 Author: Jon S. Berndt
5 Date started: 08/24/00
6 ------------- Copyright (C) 2000 Jon S. Berndt (jon@jsbsim.org) -------------
7
8 Header: FGTransmission.h
9 Author: T.Kreitler
10 Date started: 02/05/12
11
12 ------------- Copyright (C) 2012 T. Kreitler (t.kreitler@web.de) -------------
13
14 This program is free software; you can redistribute it and/or modify it under
15 the terms of the GNU Lesser General Public License as published by the Free Software
16 Foundation; either version 2 of the License, or (at your option) any later
17 version.
18
19 This program is distributed in the hope that it will be useful, but WITHOUT
20 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
21 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
22 details.
23
24 You should have received a copy of the GNU Lesser General Public License along with
25 this program; if not, write to the Free Software Foundation, Inc., 59 Temple
26 Place - Suite 330, Boston, MA 02111-1307, USA.
27
28 Further information about the GNU Lesser General Public License can also be found on
29 the world wide web at http://www.gnu.org.
30
31HISTORY
32--------------------------------------------------------------------------------
3302/05/12 T.Kreitler Created
34
35%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
36SENTRY
37%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
38
39#ifndef FGTRANSMISSION_H
40#define FGTRANSMISSION_H
41
42/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
43INCLUDES
44%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
45
46#include "FGJSBBase.h"
47#include "FGFDMExec.h"
49
50/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
51FORWARD DECLARATIONS
52%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
53
54namespace JSBSim {
55
56/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
57CLASS DOCUMENTATION
58%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
59
102
103
104/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
105CLASS DECLARATION
106%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
107
108class FGTransmission : public FGJSBBase {
109
110public:
115 FGTransmission(FGFDMExec *exec, int num, double dt);
116
119
120 void Calculate(double EnginePower, double ThrusterTorque, double dt);
121
122 void SetMaxBrakePower(double x) {MaxBrakePower=x;}
123 double GetMaxBrakePower() const {return MaxBrakePower;}
124 void SetEngineFriction(double x) {EngineFriction=x;}
125 double GetEngineFriction() const {return EngineFriction;}
126 void SetEngineMoment(double x) {EngineMoment=x;}
127 double GetEngineMoment() const {return EngineMoment;}
128 void SetThrusterMoment(double x) {ThrusterMoment=x;}
129 double GetThrusterMoment() const {return ThrusterMoment;}
130
131 double GetFreeWheelTransmission() const {return FreeWheelTransmission;}
132 void SetEngineRPM(double x) {EngineRPM=x;}
133 double GetEngineRPM() {return EngineRPM;}
134 void SetThrusterRPM(double x) {ThrusterRPM=x;}
135 double GetThrusterRPM() {return ThrusterRPM;}
136
137 double GetBrakeCtrlNorm() const {return BrakeCtrlNorm;}
138 void SetBrakeCtrlNorm(double x) {BrakeCtrlNorm=x;}
139 double GetClutchCtrlNorm() const {return ClutchCtrlNorm;}
140 void SetClutchCtrlNorm(double x) {ClutchCtrlNorm=x;}
141
142private:
143 bool BindModel(int num);
144 void Debug(int from);
145
146 inline double omega_to_rpm(double w) {
147 return w * 9.54929658551372014613302580235; // omega/(2.0*PI) * 60.0
148 }
149 inline double rpm_to_omega(double r) {
150 return r * 0.104719755119659774615421446109; // (rpm/60.0)*2.0*PI
151 }
152
153 Filter FreeWheelLag;
154 double FreeWheelTransmission; // state, 0: free, 1:locked
155
156 double ThrusterMoment;
157 double EngineMoment; // estimated MOI of gear and engine, influences acceleration
158 double EngineFriction; // estimated friction in gear and possibly engine
159
160 double ClutchCtrlNorm;
161 double BrakeCtrlNorm;
162 double MaxBrakePower;
163
164 double EngineRPM;
165 double ThrusterRPM;
166 FGPropertyManager* PropertyManager;
167
168};
169
170}
171//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
172#endif
First order, (low pass / lag) filter.
Definition FGJSBBase.h:99
FGJSBBase()
Constructor for FGJSBBase.
Definition FGJSBBase.h:81
FGTransmission(FGFDMExec *exec, int num, double dt)
Constructor for FGTransmission.
double GetMaxBrakePower() const
void SetClutchCtrlNorm(double x)
void SetEngineMoment(double x)
void SetEngineRPM(double x)
double GetBrakeCtrlNorm() const
void SetThrusterMoment(double x)
~FGTransmission()
Destructor for FGTransmission.
double GetClutchCtrlNorm() const
double GetFreeWheelTransmission() const
void Calculate(double EnginePower, double ThrusterTorque, double dt)
void SetEngineFriction(double x)
void SetThrusterRPM(double x)
double GetEngineFriction() const
void SetMaxBrakePower(double x)
void SetBrakeCtrlNorm(double x)
double GetThrusterMoment() const
double GetEngineMoment() const