Howto:Add thrust reversal
Jump to navigation
Jump to search
JSBSim
-set.xml
Add the following codes in the -set.xml file, below the </sim> tag. You've to add such piece for every engine, containing thrust reversal.
<engines> <engine n="0"> <running>true</running> </engine> <engine n="1"> <reverser-position type="double">0.000000</reverser-position> </engine> </engines>
<input> <keyboard> <key n="127"> <name>Delete</name> <desc>Toggle Reversers</desc> <binding> <command>nasal</command> <script>reversethrust.togglereverser()</script> </binding> </key> </keyboard> </input>
<nasal> <reversethrust> <file>Aircraft/747-400/Nasal/reverse-thrust.nas</file> </reversethrust> </nasal>
reverse-thrust.nas
Create a new file into your data/Aircraft/.../Nasal/ directory named reverse-thrust.nas. The piece of code shown below is designed for a two engine plane. To see how to handle more engined planes, take a look at the Boeing 747-400.
togglereverser = func { r1 = "/fdm/jsbsim/propulsion/engine"; r2 = "/fdm/jsbsim/propulsion/engine[1]"; r3 = "/controls/engines/engine"; r4 = "/controls/engines/engine[1]"; r5 = "/sim/input/selected"; rv1 = "/engines/engine/reverser-pos-norm"; rv2 = "/engines/engine[1]/reverser-pos-norm"; val = getprop(rv1); if (val == 0 or val == nil) { interpolate(rv1, 1.0, 1.4); interpolate(rv2, 1.0, 1.4); setprop(r1,"reverser-angle-rad","3.14159"); setprop(r2,"reverser-angle-rad","3.14159"); setprop(r3,"reverser", "true"); setprop(r4,"reverser", "true"); setprop(r5,"engine", "true"); setprop(r5,"engine[1]", "true"); } else { if (val == 1.0){ interpolate(rv1, 0.0, 1.4); interpolate(rv2, 0.0, 1.4); setprop(r1,"reverser-angle-rad",0); setprop(r2,"reverser-angle-rad",0); setprop(r3,"reverser",0); setprop(r4,"reverser",0); setprop(r5,"engine", "true"); setprop(r5,"engine[1]", "true"); } } }
YASim
-set.xml
Add the following codes in the -set.xml file, below the </sim> tag. You've to add such piece for every engine, containing thrust reversal.
<input> <keyboard> <key n="127"> <name>Delete</name> <desc>Toggle Reversers</desc> <binding> <command>property-toggle</command> <property>controls/engines/engine[0]/reverser</property> </binding> <binding> <command>property-toggle</command> <property>controls/engines/engine[1]/reverser</property> </binding> </key> </keyboard> </input>
-yasim.xml
Every engine with reversal should contain the following code. The transition-time defines the time that it takes to turn the engines to reversed position.
<jet> <control-input axis="/controls/engines/engine[0]/reverser" control="REVERSE_THRUST"/> <control-output control="REVERSE_THRUST" prop="/surface-positions/reverser-norm"/> <control-speed control="REVERSE_THRUST" transition-time="1.5"/> </jet> <jet> <control-input axis="/controls/engines/engine[1]/reverser" control="REVERSE_THRUST"/> <control-output control="REVERSE_THRUST" prop="/surface-positions/reverser-norm[1]"/> <control-speed control="REVERSE_THRUST" transition-time="1.5"/> </jet>