78 failureModeRPMError = 0,
81 failureModePitchMalfunction,
82 failureModeAzimuthLock,
83 failureModeAzimuthMalfunction,
84 failureModeFeedbackPitchFreeze,
85 failureModeFeedbackRPMFreeze,
86 failureModeFeedbackAzimuthFreeze,
87 failureModeFeedbackThrustFreeze,
91 PropulsorActuator(
const std::string& simObjectName,ISimObjectCreator*
const creator);
93 virtual void OdeFcn(
const double T,
const double*
const X,
double*
const XDot)
const;
97 void InitialConditionSetup(
const double T,
const double *
const currentIC,
double*
const updatedIC, ISimObjectCreator*
const creator);
98 const double * RPM(
const double T,
const double *
const X);
99 const double * RPMMotor(
const double T,
const double *
const X);
100 const double * Pitch(
const double T,
const double *
const X);
101 const double * PD(
const double T,
const double *
const X);
102 const double * ConsumedPower(
const double T,
const double *
const X);
104 const double * RPM_FB(
const double T,
const double *
const X);
105 const double * Thrust_FB(
const double T,
const double *
const X);
106 const double * Pitch_FB(
const double T,
const double *
const X);
108 const double * ForceBody2(
const double T,
const double *
const X);
109 const double * TorqueBody2(
const double T,
const double *
const X);
112 virtual const double * Angle_FB(
const double T,
const double *
const X);
113 virtual const double * Angle(
const double T,
const double *
const X);
116 double m_torqueLimit;
119 ISignalPort *m_inRPMLimits;
120 ISignalPort *m_inPitchLimits;
121 ISignalPort *m_inAngleLimits;
122 ISignalPort *m_inShaftTorque;
123 ISignalPort *m_inAvailablePower;
125 double m_pitchMaxChangeRate;
126 double m_RPMMaxChangeRate;
127 double m_aziMaxChangeRate;
129 int m_indexMotorPitch;
130 int m_indexPropulsorRPM;
132 ISignalPort *m_inFailureMode;
133 ISignalPort *m_inCommendedRPM;
134 ISignalPort *m_inCommandedPitch;
137 double m_azimuthLoss[2];
139 mutable bool m_failureModeRPMError =
false;
140 mutable bool m_failureModeRPMLock =
false;
141 mutable bool m_failureModePitchLock =
false;
142 mutable bool m_failureModePitchMalfunction =
false;
143 mutable bool m_failureModeAzimuthLock =
false;
144 mutable bool m_failureModeAzimuthMalfunction =
false;
145 mutable bool m_failureModeFeedbackPitchFreeze =
false;
146 mutable bool m_failureModeFeedbackRPMFreeze =
false;
147 mutable bool m_failureModeFeedbackAzimuthFreeze =
false;
148 mutable bool m_failureModeFeedbackThrustFreeze =
false;
150 mutable double m_maxAngle;
151 mutable double m_minAngle;
152 mutable double m_maxRPM;
153 mutable double m_minRPM;
154 mutable double m_maxPitch;
155 mutable double m_minPitch;
159 double m_angularMotorMalfunctionRate;
162 double m_actualMotorRPM;
163 double m_actualPitch;
165 double m_actualAngle;
166 double m_consumedPower;
167 double m_timeConstantPitch;
168 double m_timeConstantRPM;
170 double m_actualRPMFeedback;
171 double m_actualThrustFeedback;
172 double m_actualPitchFeedback;
173 double m_actualAngleFeedback;
177 double m_heldPitchFeedback = 0;
178 double m_heldAngleFeedback = 0;
179 double m_heldThrustFeedback = 0;
184 double m_forceParentBody[3];
185 double m_torqueParentBody[3];