From a428d611c38708bedfda5e365ec0d90954e87afe Mon Sep 17 00:00:00 2001 From: bcoconni Date: Sat, 19 Jul 2014 00:23:41 +0200 Subject: [PATCH] Fixed the erratic behavior of when rate_limit is read from a property. See more details about the bug in the issue #1503 in FlightGear bug tracker. --- src/FDM/JSBSim/models/flight_control/FGActuator.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/FDM/JSBSim/models/flight_control/FGActuator.cpp b/src/FDM/JSBSim/models/flight_control/FGActuator.cpp index b3ba0df04..e2d07c7d4 100644 --- a/src/FDM/JSBSim/models/flight_control/FGActuator.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGActuator.cpp @@ -46,7 +46,7 @@ using namespace std; namespace JSBSim { -IDENT(IdSrc,"$Id: FGActuator.cpp,v 1.34 2014/07/16 23:08:32 bcoconni Exp $"); +IDENT(IdSrc,"$Id: FGActuator.cpp,v 1.35 2014/07/18 22:12:40 bcoconni Exp $"); IDENT(IdHdr,ID_ACTUATOR); /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -106,11 +106,11 @@ FGActuator::FGActuator(FGFCS* fcs, Element* element) : FGFCSComponent(fcs, eleme else rate_limit_incr = rate_limit; } else if (sense.substr(0,4) == "decr") { if (rate_limit_prop != 0) rate_limit_decr_prop = rate_limit_prop; - else rate_limit_decr = -rate_limit; + else rate_limit_decr = rate_limit; } } else { - rate_limit_incr = rate_limit; - rate_limit_decr = -rate_limit; + rate_limit_incr = rate_limit; + rate_limit_decr = rate_limit; } ratelim_el = element->FindNextElement("rate_limit"); } @@ -250,8 +250,8 @@ void FGActuator::RateLimit(void) if (rate_limit_decr_prop != 0) rate_limit_decr = rate_limit_decr_prop->getDoubleValue(); if (delta > dt * rate_limit_incr) { Output = PreviousRateLimOutput + rate_limit_incr * dt; - } else if (delta < dt * rate_limit_decr) { - Output = PreviousRateLimOutput + rate_limit_decr * dt; + } else if (delta < -dt * rate_limit_decr) { + Output = PreviousRateLimOutput - rate_limit_decr * dt; } } PreviousRateLimOutput = Output; -- 2.39.5