namespace JSBSim {
-static const char *IdSrc = "$Id: FGActuator.cpp,v 1.14 2009/10/24 22:59:30 jberndt Exp $";
+static const char *IdSrc = "$Id: FGActuator.cpp,v 1.19 2011/06/18 13:30:27 bcoconni Exp $";
static const char *IdHdr = ID_ACTUATOR;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// "Output" on the right side of the "=" is the current frame input
// for this Lag filter
double input = Output;
- Output = ca * (input + PreviousLagInput) + PreviousLagOutput * cb;
+
+ if (!fcs->GetTrimStatus())
+ Output = ca * (input + PreviousLagInput) + PreviousLagOutput * cb;
+
PreviousLagInput = input;
PreviousLagOutput = Output;
}
// method.
double input = Output;
- if (input > PreviousHystOutput) {
- Output = max(PreviousHystOutput, input-0.5*hysteresis_width);
- } else if (input < PreviousHystOutput) {
- Output = min(PreviousHystOutput, input+0.5*hysteresis_width);
+ if (!fcs->GetTrimStatus()) {
+ if (input > PreviousHystOutput)
+ Output = max(PreviousHystOutput, input-0.5*hysteresis_width);
+ else if (input < PreviousHystOutput)
+ Output = min(PreviousHystOutput, input+0.5*hysteresis_width);
}
PreviousHystOutput = Output;
// is - for the purposes of this RateLimit method - really the input to the
// method.
double input = Output;
- if (dt > 0.0) {
+ if (!fcs->GetTrimStatus()) {
double rate = (input - PreviousRateLimOutput)/dt;
if (fabs(rate) > rate_limit) {
Output = PreviousRateLimOutput + (rate_limit*fabs(rate)/rate)*dt;
void FGActuator::Deadband(void)
{
+ // Note: this function acts cumulatively on the "Output" parameter. So, "Output"
+ // is - for the purposes of this Deadband method - really the input to the
+ // method.
+ double input = Output;
+
+ if (input < -deadband_width/2.0) {
+ Output = (input + deadband_width/2.0);
+ } else if (input > deadband_width/2.0) {
+ Output = (input - deadband_width/2.0);
+ } else {
+ Output = 0.0;
+ }
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (debug_lvl & 1) { // Standard console startup message output
if (from == 0) { // Constructor
if (InputSigns[0] < 0)
- cout << " INPUT: -" << InputNodes[0]->getName() << endl;
+ cout << " INPUT: -" << InputNames[0] << endl;
else
- cout << " INPUT: " << InputNodes[0]->getName() << endl;
+ cout << " INPUT: " << InputNames[0] << endl;
if (IsOutput) {
for (unsigned int i=0; i<OutputNodes.size(); i++)