fgactuator.h

来自「6 DOF Missle Simulation」· C头文件 代码 · 共 177 行

H
177
字号
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Header:       FGActuator.h Author:       Jon Berndt Date started: 21 February 2007 ------------- Copyright (C) 2006 Jon S. Berndt (jsb@hal-pc.org) ------------- This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. Further information about the GNU Lesser General Public License can also be found on the world wide web at http://www.gnu.org.HISTORY--------------------------------------------------------------------------------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%SENTRY%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/#ifndef FGACTUATOR_H#define FGACTUATOR_H/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%INCLUDES%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/#include "FGFCSComponent.h"#include <input_output/FGXMLElement.h>/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%DEFINITIONS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/#define ID_ACTUATOR "$Id$"/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%FORWARD DECLARATIONS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/namespace JSBSim {class FGFCS;/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%CLASS DOCUMENTATION%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*//** Encapsulates an Actuator component for the flight control system.    The actuator can be modeled as a "perfect actuator", with the Output    being set directly to the input. The actuator can be made more "real"    by specifying any/all of the following additional effects that can be    applied to the actuator. In order of application to the input signal,    these are:        - System lag (input lag, really)    - Rate limiting    - Deadband    - Hysteresis (mechanical hysteresis)    - Bias (mechanical bias)    - Position limiting ("hard stops")        There are also several malfunctions that can be applied to the actuator    by setting a property to true or false (or 1 or 0).Syntax:@code<actuator name="name">  <input> {[-]property} </input>  <lag> number </lag>  <rate_limit> number <rate_limit>  <bias> number </bias>  <deadband_width> number </deadband_width>  <hysteresis_width> number </hysteresis_width>  [<clipto>    <min> {property name | value} </min>    <max> {property name | value} </max>   </clipto>]  [<output> {property} </output>]</actuator>@endcodeExample:@code<actuator name="fcs/gimbal_pitch_position">  <input> fcs/gimbal_pitch_command </input>  <lag> 60 </lag>  <rate_limit> 0.085 <rate_limit> <!-- 5 degrees/sec -->  <bias> 0.002 </bias>  <deadband_width> 0.002 </deadband_width>  <hysteresis_width> 0.05 </hysteresis_width>  <clipto> <!-- +/- 10 degrees -->    <min> -0.17 </min>    <max>  0.17 </max>   </clipto></actuator>@endcode@author Jon S. Berndt@version $Revision$*//*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%CLASS DECLARATION%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/class FGActuator  : public FGFCSComponent{public:  /// Constructor  FGActuator(FGFCS* fcs, Element* element);  /// Destructor  ~FGActuator();  /** This function processes the input.      It calls private functions if needed to perform the hysteresis, lag,      limiting, etc. functions. */  bool Run (void);  // these may need to have the bool argument replaced with a double  /** This function fails the actuator to zero. The motion to zero      will flow through the lag, hysteresis, and rate limiting      functions if those are activated. */  inline void SetFailZero(bool set) {fail_zero = set;}  inline void SetFailHardover(bool set) {fail_hardover = set;}  inline void SetFailStuck(bool set) {fail_stuck = set;}  inline bool GetFailZero(void) const {return fail_zero;}  inline bool GetFailHardover(void) const {return fail_hardover;}  inline bool GetFailStuck(void) const {return fail_stuck;}  private:  double dt;  double span;  double bias;  double rate_limit;  double hysteresis_width;  double deadband_width;  double lag;  double ca; // lag filter coefficient "a"  double cb; // lag filter coefficient "b"  double PreviousOutput;  double PreviousHystOutput;  double PreviousRateLimOutput;  double PreviousLagInput;  double PreviousLagOutput;  bool fail_zero;  bool fail_hardover;  bool fail_stuck;  void Hysteresis(void);  void Lag(void);  void RateLimit(void);  void Deadband(void);  void Bias(void);  void bind(void);  void Debug(int from);};}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?