JSBSim Thrusters: Difference between revisions

Jump to navigation Jump to search
m
Copyedit
m (Copyedit)
Line 1: Line 1:
'''[[JSBSim]]''' uses '''thruster''' models to convert engine power into aerodynamic forces. The following table shows which engine-thruster combinations work.
'''[[JSBSim]]''' uses '''thruster''' models to convert engine power into aerodynamic forces. The following table shows which engine-thruster combinations work.
{| class="wikitable" style="text-align:center;"
{| class="wikitable" style="text-align:center;"
|
|
Line 40: Line 41:
== FGDirect ==
== FGDirect ==
Thrust is computed directly by the engine, the direct thruster file is a stub. Currently FGTurbine engines use this thruster and it can also be used with FGElectric.
Thrust is computed directly by the engine, the direct thruster file is a stub. Currently FGTurbine engines use this thruster and it can also be used with FGElectric.
=== Configuration File Format ===
 
=== Configuration file format ===
This is the complete configuration file. Copy and paste into your 'direct.xml' file.
This is the complete configuration file. Copy and paste into your 'direct.xml' file.
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
Line 47: Line 49:
</direct>  
</direct>  
</syntaxhighlight>
</syntaxhighlight>
=== Notes ===
=== Notes ===
* The direct thruster creates a property called propulsion/engine[#]/reverser-angle-rad
* The direct thruster creates a property called propulsion/engine[#]/reverser-angle-rad
Line 53: Line 56:
== FGNozzle ==
== FGNozzle ==
FGNozzle is for the FGRocket engine.
FGNozzle is for the FGRocket engine.
=== Configuration File Format ===
 
=== Configuration file format ===
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<?xml version="1.0"?>  
<?xml version="1.0"?>  
Line 60: Line 64:
</nozzle>
</nozzle>
</syntaxhighlight>
</syntaxhighlight>
=== Parameter definitions ===
=== Parameter definitions ===
{| class="prettytable"
{| class="prettytable"
Line 66: Line 71:
|Nozzle area at the exit plane.
|Nozzle area at the exit plane.
|}
|}
=== Notes ===
=== Notes ===
* All parameters MUST be specified.
* All parameters MUST be specified.


== FGPropeller ==
== FGPropeller ==
FGPropeller models a propeller given the tabular data for Ct and Cp, indexed by the advance ratio "J".  
FGPropeller models a propeller given the tabular data for Ct and Cp, indexed by the advance ratio "J".
=== Configuration File Format ===
 
=== Configuration file format ===
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<!-- Sense goes in the parent tag -->
<!-- Sense goes in the parent tag -->
Line 117: Line 124:
</propeller>
</propeller>
</syntaxhighlight>
</syntaxhighlight>
=== Parameter definitions ===
=== Parameter definitions ===
{| class="prettytable"
{| class="prettytable"
|-
|-
|ixx
| valign="top" | ixx
|Propeller rotational inertia. This can be english units, slug & feet^2:
|Propeller rotational inertia. This can be english units, slug & feet^2:


Line 171: Line 179:
|}
|}


===C_THRUST and C_POWER tables===
=== C_THRUST and C_POWER tables ===
The C_THRUST and C_POWER tables are required.  
The C_THRUST and C_POWER tables are required.  


Line 205: Line 213:
==== Sample C_THRUST and C_POWER tables ====
==== Sample C_THRUST and C_POWER tables ====
These example tables are from FlightGear's C172P aircraft:
These example tables are from FlightGear's C172P aircraft:
<nowiki>
 
<syntaxhighlight lang="xml">
   <table name="C_THRUST" type="internal">
   <table name="C_THRUST" type="internal">
       <tableData>
       <tableData>
Line 266: Line 275:
       </tableData>
       </tableData>
     </table>
     </table>
</nowiki>
</syntaxhighlight>


Example of table for variable pitch propeller ([http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg32187.html source]):
Example of table for variable pitch propeller ([http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg32187.html source]):


<nowiki>
<syntaxhighlight lang="xml">
  <!-- thrust coefficient as a function of advance ratio and blade angle -->
  <!-- thrust coefficient as a function of advance ratio and blade angle -->
     <table name="C_THRUST" type="internal">
     <table name="C_THRUST" type="internal">
Line 347: Line 356:
     </tableData>
     </tableData>
   </table>
   </table>
 
<syntaxhighlight lang="xml">
</nowiki>


=== CT_MACH and CP_MACH ===
=== CT_MACH and CP_MACH ===
Line 355: Line 363:
Examples:
Examples:
   
   
<nowiki>
<syntaxhighlight lang="xml">


  <!-- thrust effects of helical tip Mach -->
  <!-- thrust effects of helical tip Mach -->
Line 373: Line 381:
     </tableData>
     </tableData>
   </table>
   </table>
</nowiki>
</syntaxhighlight>


=== Sense ===
=== Sense ===
Sense is the direction of rotation. 1=clockwise (typically as seen from rear of aircraft or the cockpit of a typical front-propeller aircraft, but this may vary depending on how you have set up the coordinate system for your aircraft) and -1 is counter-clockwise.
Sense is the direction of rotation. 1=clockwise (typically as seen from rear of aircraft or the cockpit of a typical front-propeller aircraft, but this may vary depending on how you have set up the coordinate system for your aircraft) and -1 is counter-clockwise.


The sense tag goes in the parent tag of the thruster, ie, in the <propulsion><thruster> section which is typically in the main JSBSim XML file.  Example:
The sense tag goes in the parent tag of the thruster, ie, in the <propulsion><thruster> section which is typically in the main JSBSim XML file.  Example:


<syntaxhighlight lang="xml">
     <propulsion>
     <propulsion>
         <engine file="Clerget9B">
         <engine file="Clerget9B">
Line 418: Line 426:
         </tank>
         </tank>
     </propulsion>
     </propulsion>
</syntaxhighlight>


=== Starter speed (For piston engines) ===
=== Starter speed (for piston engines) ===
There is a somewhat complex relationship among the power coefficient, the maxhp, and idlerpm.  Both maxhp and idlerpm are set in the engine xml file.
There is a somewhat complex relationship among the power coefficient, the maxhp, and idlerpm.  Both maxhp and idlerpm are set in the engine xml file.


Line 437: Line 446:
starter-rpm (fgfs 2.8) is a value specifying the maximum RPM the unloaded starter motor can achieve. Loads placed on the engine by the propeller and throttle will further limit RPM achieved in practice. Peak starter power is achieved at 1/2 starter-rpm. At 1/2 starter-rpm torque is 1/2 starter-torque. Peak power can be calculated by the standard formula HP=(Torque*RPM)/5252
starter-rpm (fgfs 2.8) is a value specifying the maximum RPM the unloaded starter motor can achieve. Loads placed on the engine by the propeller and throttle will further limit RPM achieved in practice. Peak starter power is achieved at 1/2 starter-rpm. At 1/2 starter-rpm torque is 1/2 starter-torque. Peak power can be calculated by the standard formula HP=(Torque*RPM)/5252


=== Development Tips ===
=== Development tips ===
 
* If you open the property tree browser within FG to /fdm/jsbsim/propulsion/engines you can see a number of helpful variables in action, including RPM, horsepower, advance ratio, thrust coefficient, and others.
* If you open the property tree browser within FG to /fdm/jsbsim/propulsion/engines you can see a number of helpful variables in action, including RPM, horsepower, advance ratio, thrust coefficient, and others.


=== Notes ===
=== References ===
*  Several references were helpful, here:
* Barnes W. McCormick, "Aerodynamics, Aeronautics, and Flight Mechanics", Wiley & Sons, 1979 ISBN 0-471-03032-5
**Barnes W. McCormick, "Aerodynamics, Aeronautics, and Flight Mechanics", Wiley & Sons, 1979 ISBN 0-471-03032-5
* Edwin Hartman, David Biermann, "The Aerodynamic Characteristics of Full Scale Propellers Having 2, 3, and 4 Blades of Clark Y and R.A.F. 6 Airfoil Sections", NACA Report TN-640, 1938 (?)
**Edwin Hartman, David Biermann, "The Aerodynamic Characteristics of Full Scale Propellers Having 2, 3, and 4 Blades of Clark Y and R.A.F. 6 Airfoil Sections", NACA Report TN-640, 1938 (?)
* Various NACA Technical Notes and Reports
**Various NACA Technical Notes and Reports


== FGRotor ==
== FGRotor ==
FGRotor moodels a helicopter rotor.
FGRotor moodels a helicopter rotor.
=== Configuration File Format ===
 
=== Configuration file format ===
<syntaxhighlight lang="xml">
<syntaxhighlight lang="xml">
<!-- Sense goes in the parent tag -->
<!-- Sense goes in the parent tag -->
Line 550: Line 558:
=== Notes ===
=== Notes ===
==== Controls ====
==== Controls ====
* The behavior of the rotor is controlled/influenced by following inputs.
The behavior of the rotor is controlled/influenced by following inputs.
** The power provided by the engine. This is handled by the regular engine controls.
* The power provided by the engine. This is handled by the regular engine controls.
** The collective control input. This is read from the <tt>fdm</tt> property <tt>propulsion/engine[x]/collective-ctrl-rad</tt>. See below for tail rotor
* The collective control input. This is read from the <tt>fdm</tt> property <tt>propulsion/engine[x]/collective-ctrl-rad</tt>. See below for tail rotor
** The lateral cyclic input. Read from <tt>propulsion/engine[x]/lateral-ctrl-rad</tt>.
* The lateral cyclic input. Read from <tt>propulsion/engine[x]/lateral-ctrl-rad</tt>.
** The longitudinal cyclic input. Read from <tt>propulsion/engine[x]/longitudinal-ctrl-rad</tt>.
* The longitudinal cyclic input. Read from <tt>propulsion/engine[x]/longitudinal-ctrl-rad</tt>.
** The tail collective (aka antitorque, aka pedal) control input. Read from <tt>propulsion/engine[x]/antitorque-ctrl-rad</tt> or <tt>propulsion/engine[x]/tail-collective-ctrl-rad</tt>.  
** The tail collective (aka antitorque, aka pedal) control input. Read from <tt>propulsion/engine[x]/antitorque-ctrl-rad</tt> or <tt>propulsion/engine[x]/tail-collective-ctrl-rad</tt>.  


==== Tail/tandem rotor ====
==== Tail/tandem rotor ====
 
Providing '''&lt;ExternalRPM&gt; 0 &lt;/ExternalRPM&gt;''' the tail rotor's RPM is linked to to the main (=first, =0) rotor, and specifying '''&lt;controlmap&gt; TAIL &lt;/controlmap&gt;''' tells this rotor to read the collective input from '''propulsion/engine[1]/antitorque-ctrl-rad''' (The TAIL-map ignores lateral and longitudinal input). The rotor needs to be attached to a dummy engine, e.g. an 1HP electrical engine. A tandem rotor is setup analogous.
    Providing '''&lt;ExternalRPM&gt; 0 &lt;/ExternalRPM&gt;''' the tail rotor's RPM
    is linked to to the main (=first, =0) rotor, and specifying
    '''&lt;controlmap&gt; TAIL &lt;/controlmap&gt;''' tells this rotor to read the
    collective input from '''propulsion/engine[1]/antitorque-ctrl-rad'''
    (The TAIL-map ignores lateral and longitudinal input). The rotor needs to be  
    attached to a dummy engine, e.g. an 1HP electrical engine.
    A tandem rotor is setup analogous.


==== Sense ====
==== Sense ====
 
The 'sense' parameter from the thruster is interpreted as follows, sense=1 means counter clockwise rotation of the main rotor, as viewed from above. This is as a far as I know more popular than clockwise rotation, which is defined by setting sense to -1. Concerning coaxial designs - by setting 'sense' to zero, a Kamov-style rotor is modeled (i.e. the rotor produces no torque).
    The 'sense' parameter from the thruster is interpreted as follows, sense=1 means
    counter clockwise rotation of the main rotor, as viewed from above. This is as a far
    as I know more popular than clockwise rotation, which is defined by setting sense to
    -1. Concerning coaxial designs - by setting 'sense' to zero, a Kamov-style rotor is
    modeled (i.e. the rotor produces no torque).


==== Engine issues ====
==== Engine issues ====
 
In order to keep the rotor speed constant, use of a RPM-Governor system is encouraged (see examples).
    In order to keep the rotor speed constant, use of a RPM-Governor system is  
    encouraged (see examples).


==== Development hints ====
==== Development hints ====
Setting '''&lt;ExternalRPM&gt; -1 &lt;/ExternalRPM&gt;''' the rotor's RPM is controlled by the '''propulsion/engine[x]/x-rpm-dict''' property. This feature can be useful when developing a FDM.


    Setting '''&lt;ExternalRPM&gt; -1 &lt;/ExternalRPM&gt;''' the rotor's RPM is controlled  by
==== Properties ====
    the '''propulsion/engine[x]/x-rpm-dict''' property. This feature can be useful
The rotor model creates the following properties:
    when developing a FDM.


==== Properties ====
    The rotor model creates the following properties:
{| class="prettytable"
{| class="prettytable"
|-
|-
Line 632: Line 624:
|
|
|}
|}


(Control Inputs)
(Control Inputs)
Line 659: Line 650:
|}
|}


=== References:===
=== References ===
{| class="prettytable"
{| class="prettytable"
|-
|-

Navigation menu