UNPKG

jsbsim.js

Version:

JSBSim flight dynamics model ported to JavaScript

891 lines (823 loc) 33.4 kB
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="http://jsbsim.sourceforge.net/JSBSim.xsl"?> <fdm_config name="737" release="BETA" version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd"> <fileheader> <author> Dave Culp </author> <author> Aeromatic </author> <filecreationdate> 2006-01-04 </filecreationdate> <version>$Revision: 1.40 $</version> <description> Models a Boeing 737. </description> <license> <licenseName>GPL (General Public License)</licenseName> <licenseURL>http://www.gnu.org/licenses/gpl.html</licenseURL> </license> <note> This model was created using publicly available data, publicly available technical reports, textbooks, and guesses. It contains no proprietary or restricted data. If this model has been validated at all, it would be only to the extent that it seems to "fly right", and that it possibly complies with published, publicly known, performance data (maximum speed, endurance, etc.). Thus, this model is meant for educational and entertainment purposes only. This simulation model is not endorsed by the manufacturer. This model is not to be sold. </note> </fileheader> <metrics> <wingarea unit="FT2"> 1171.00 </wingarea> <wingspan unit="FT"> 94.70 </wingspan> <chord unit="FT"> 12.31 </chord> <htailarea unit="FT2"> 348.00 </htailarea> <htailarm unit="FT"> 48.04 </htailarm> <vtailarea unit="FT2"> 297.00 </vtailarea> <vtailarm unit="FT"> 44.50 </vtailarm> <location name="AERORP" unit="IN"> <x> 625 </x> <y> 0 </y> <z> 24 </z> </location> <location name="EYEPOINT" unit="IN"> <x> 80 </x> <y> -30 </y> <z> 70 </z> </location> <location name="VRP" unit="IN"> <x> 0 </x> <y> 0 </y> <z> 0 </z> </location> </metrics> <mass_balance> <ixx unit="SLUG*FT2"> 562000 </ixx> <iyy unit="SLUG*FT2"> 1.473e+06 </iyy> <izz unit="SLUG*FT2"> 1.894e+06 </izz> <ixy unit="SLUG*FT2"> 0 </ixy> <ixz unit="SLUG*FT2"> 8000 </ixz> <iyz unit="SLUG*FT2"> 0 </iyz> <emptywt unit="LBS"> 83000 </emptywt> <location name="CG" unit="IN"> <x> 639 </x> <y> 0 </y> <z> -40 </z> </location> </mass_balance> <ground_reactions> <contact name="Nose Gear" type="BOGEY"> <location unit="IN"> <x> 158 </x> <y> 0 </y> <z> -84 </z> </location> <static_friction> 0.80 </static_friction> <dynamic_friction> 0.50 </dynamic_friction> <rolling_friction> 0.02 </rolling_friction> <spring_coeff unit="LBS/FT"> 90000 </spring_coeff> <damping_coeff unit="LBS/FT/SEC"> 4000 </damping_coeff> <damping_coeff_rebound unit="LBS/FT/SEC">8000</damping_coeff_rebound> <max_steer unit="DEG"> 35 </max_steer> <brake_group> NONE </brake_group> <retractable>1</retractable> </contact> <contact name="Left Main Gear" type="BOGEY"> <location unit="IN"> <x> 648 </x> <y> -100 </y> <z> -84 </z> </location> <static_friction> 0.80 </static_friction> <dynamic_friction> 0.50 </dynamic_friction> <rolling_friction> 0.02 </rolling_friction> <spring_coeff unit="LBS/FT"> 120000 </spring_coeff> <damping_coeff unit="LBS/FT/SEC"> 10000 </damping_coeff> <damping_coeff_rebound unit="LBS/FT/SEC">20000</damping_coeff_rebound> <max_steer unit="DEG"> 0.0 </max_steer> <brake_group> LEFT </brake_group> <retractable>1</retractable> </contact> <contact name="Right Main Gear" type="BOGEY"> <location unit="IN"> <x> 648 </x> <y> 100 </y> <z> -84 </z> </location> <static_friction> 0.80 </static_friction> <dynamic_friction> 0.50 </dynamic_friction> <rolling_friction> 0.02 </rolling_friction> <spring_coeff unit="LBS/FT"> 120000 </spring_coeff> <damping_coeff unit="LBS/FT/SEC"> 10000 </damping_coeff> <damping_coeff_rebound unit="LBS/FT/SEC">20000</damping_coeff_rebound> <max_steer unit="DEG"> 0.0 </max_steer> <brake_group> RIGHT </brake_group> <retractable>1</retractable> </contact> </ground_reactions> <propulsion> <engine file="CFM56"> <location unit="IN"> <x> 540 </x> <y> -193 </y> <z> -40 </z> </location> <orient unit="DEG"> <roll> 0 </roll> <pitch> 0 </pitch> <yaw> 0 </yaw> </orient> <feed>0</feed> <feed>2</feed> <thruster file="direct"> <location unit="IN"> <x> 540 </x> <y> -193 </y> <z> -40 </z> </location> <orient unit="DEG"> <roll> 0 </roll> <pitch> 0 </pitch> <yaw> 0 </yaw> </orient> </thruster> </engine> <engine file="CFM56"> <location unit="IN"> <x> 540 </x> <y> 193 </y> <z> -40 </z> </location> <orient unit="DEG"> <roll> 0 </roll> <pitch> 0 </pitch> <yaw> 0 </yaw> </orient> <feed>1</feed> <feed>2</feed> <thruster file="direct"> <location unit="IN"> <x> 540 </x> <y> 193 </y> <z> -40 </z> </location> <orient unit="DEG"> <roll> 0 </roll> <pitch> 0 </pitch> <yaw> 0 </yaw> </orient> </thruster> </engine> <tank type="FUEL"><!-- Left wing tank --> <location unit="IN"> <x> 520 </x> <y> -80 </y> <z> -18 </z> </location> <capacity unit="LBS"> 10200 </capacity> <contents unit="LBS"> 10000 </contents> <temperature unit="degF"> 59.0 </temperature> <!-- Fuel temp in degrees F --> </tank> <tank type="FUEL"><!-- Right wing tank --> <location unit="IN"> <x> 520 </x> <y> 80 </y> <z> -18 </z> </location> <capacity unit="LBS"> 10200 </capacity> <contents unit="LBS"> 10000 </contents> </tank> <tank type="FUEL"><!-- Center tank --> <location unit="IN"> <x> 480 </x> <y> 0 </y> <z> -18 </z> </location> <capacity unit="LBS"> 15000 </capacity> <contents unit="LBS"> 4000 </contents> </tank> </propulsion> <flight_control name="FCS: 737"> <channel name="Pitch"> <summer name="Pitch Trim Sum"> <input>fcs/elevator-cmd-norm</input> <input>fcs/pitch-trim-cmd-norm</input> <clipto> <min>-1</min> <max> 1</max> </clipto> </summer> <aerosurface_scale name="Elevator Control"> <input>fcs/pitch-trim-sum</input> <range> <min>-0.3</min> <max> 0.3</max> </range> <output>fcs/elevator-pos-rad</output> </aerosurface_scale> <aerosurface_scale name="Elevator Normalized"> <input>fcs/elevator-pos-rad</input> <domain> <min>-0.3</min> <max> 0.3</max> </domain> <range> <min>-1</min> <max> 1</max> </range> <output>fcs/elevator-pos-norm</output> </aerosurface_scale> </channel> <channel name="Roll"> <summer name="Roll Trim Sum"> <input>fcs/aileron-cmd-norm</input> <input>fcs/roll-trim-cmd-norm</input> <clipto> <min>-1</min> <max> 1</max> </clipto> </summer> <aerosurface_scale name="Left Aileron Control"> <input>fcs/roll-trim-sum</input> <range> <min>-0.35</min> <max> 0.35</max> </range> <output>fcs/left-aileron-pos-rad</output> </aerosurface_scale> <aerosurface_scale name="Right Aileron Control"> <input>-fcs/roll-trim-sum</input> <range> <min>-0.35</min> <max> 0.35</max> </range> <output>fcs/right-aileron-pos-rad</output> </aerosurface_scale> <aerosurface_scale name="Left aileron Normalized"> <input>fcs/left-aileron-pos-rad</input> <domain> <min>-0.35</min> <max> 0.35</max> </domain> <range> <min>-1</min> <max> 1</max> </range> <output>fcs/left-aileron-pos-norm</output> </aerosurface_scale> <aerosurface_scale name="Right aileron Normalized"> <input>fcs/right-aileron-pos-rad</input> <domain> <min>-0.35</min> <max> 0.35</max> </domain> <range> <min>-1</min> <max> 1</max> </range> <output>fcs/right-aileron-pos-norm</output> </aerosurface_scale> </channel> <channel name="Yaw"> <summer name="Rudder Command Sum"> <input>fcs/rudder-cmd-norm</input> <input>fcs/yaw-trim-cmd-norm</input> <clipto> <min>-1</min> <max> 1</max> </clipto> </summer> <scheduled_gain name="Yaw Damper"> <input>velocities/r-aero-rad_sec</input> <table> <independentVar>velocities/mach</independentVar> <tableData> 0.00 0.0 0.10 0.0 0.11 1.0 </tableData> </table> </scheduled_gain> <scheduled_gain name="Yaw Damper Final"> <input>fcs/yaw-damper</input> <table> <independentVar>velocities/mach</independentVar> <tableData> 0.00 0.0 0.10 0.0 0.11 1.0 </tableData> </table> </scheduled_gain> <summer name="Rudder Sum"> <input>fcs/rudder-command-sum</input> <input>fcs/yaw-damper-final</input> <clipto> <min>-1</min> <max> 1</max> </clipto> </summer> <aerosurface_scale name="Rudder Control"> <input>fcs/rudder-sum</input> <range> <min>-0.35</min> <max> 0.35</max> </range> <output>fcs/rudder-pos-rad</output> </aerosurface_scale> <aerosurface_scale name="Rudder Normalized"> <input>fcs/rudder-pos-rad</input> <domain> <min>-0.35</min> <max> 0.35</max> </domain> <range> <min>-1</min> <max> 1</max> </range> <output>fcs/rudder-pos-norm</output> </aerosurface_scale> </channel> <channel name="Flaps"> <kinematic name="Flaps Control"> <input>fcs/flap-cmd-norm</input> <traverse> <setting> <position>0</position> <time>0</time> </setting> <setting> <position>0.125</position> <time>5</time> </setting> <setting> <position>0.25</position> <time>4</time> </setting> <setting> <position>0.375</position> <time>3</time> </setting> <setting> <position>0.5</position> <time>2</time> </setting> <setting> <position>0.625</position> <time>2</time> </setting> <setting> <position>0.75</position> <time>2</time> </setting> <setting> <position>0.875</position> <time>2</time> </setting> <setting> <position>1</position> <time>2</time> </setting> </traverse> <output>fcs/flap-pos-norm</output> </kinematic> </channel> <channel name="Landing Gear"> <kinematic name="Gear Control"> <input>gear/gear-cmd-norm</input> <traverse> <setting> <position>0</position> <time>0</time> </setting> <setting> <position>1</position> <time>5</time> </setting> </traverse> <output>gear/gear-pos-norm</output> </kinematic> </channel> <channel name="Flight Spoilers"> <!-- operated by the speedbrake handle and roll control --> <kinematic name="Flight Spoilers Control"> <input>fcs/speedbrake-cmd-norm</input> <traverse> <setting> <position>0</position> <time>0</time> </setting> <setting> <position>1</position> <time>0.6</time> </setting> </traverse> <output>fcs/speedbrake-pos-norm</output> </kinematic> </channel> <channel name="Ground Spoilers"> <!-- these only operate on the ground --> <kinematic name="Ground Spoilers Control"> <input>fcs/spoiler-cmd-norm</input> <traverse> <setting> <position>0</position> <time>0</time> </setting> <setting> <position>1</position> <time>0.6</time> </setting> </traverse> <output>fcs/spoiler-pos-norm</output> </kinematic> </channel> </flight_control> <aerodynamics> <function name="aero/function/kCDge"> <description>Change_in_drag_due_to_ground_effect</description> <product> <table> <independentVar>aero/h_b-mac-ft</independentVar> <tableData> 0.0000 0.0480 0.1000 0.5150 0.1500 0.6290 0.2000 0.7090 0.3000 0.8150 0.4000 0.8820 0.5000 0.9280 0.6000 0.9620 0.7000 0.9880 0.8000 1.0000 </tableData> </table> </product> </function> <function name="aero/function/kCLge"> <description>Change_in_lift_due_to_ground_effect</description> <product> <table> <independentVar>aero/h_b-mac-ft</independentVar> <tableData> 0.0000 1.2030 0.1000 1.1270 0.1500 1.0900 0.2000 1.0730 0.3000 1.0460 0.4000 1.0550 0.5000 1.0190 0.6000 1.0130 0.7000 1.0080 0.8000 1.0060 0.9000 1.0030 1.0000 1.0020 1.1000 1.0000 </tableData> </table> </product> </function> <function name="aero/function/kCLsb"> <description>Change_in_lift_due_to_speed_brake</description> <product> <table> <independentVar>fcs/speedbrake-pos-norm</independentVar> <tableData> 0.0000 1.0 0.1000 0.85 </tableData> </table> </product> </function> <function name="aero/function/kCLsp"> <description>Change_in_lift_due_to_spoilers</description> <product> <table> <independentVar>fcs/spoiler-pos-norm</independentVar> <tableData> 0.0000 1.0 0.1000 0.6 </tableData> </table> </product> </function> <axis name="DRAG"> <function name="aero/coefficient/CD0"> <description>Drag_at_zero_lift</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <table> <independentVar>aero/alpha-rad</independentVar> <tableData> -1.57 1.5000 -0.26 0.0420 0.00 0.0210 0.26 0.0420 1.57 1.5000 </tableData> </table> </product> </function> <function name="aero/coefficient/CDi"> <description>Induced_drag</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>aero/cl-squared</property> <property>aero/function/kCDge</property> <value>0.043</value> </product> </function> <function name="aero/coefficient/CDmach"> <description>Drag_due_to_mach</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <table> <independentVar>velocities/mach</independentVar> <tableData> 0.00 0.0000 0.79 0.0000 1.10 0.0230 1.80 0.0150 </tableData> </table> </product> </function> <function name="aero/coefficient/CDflap"> <description>Drag_due_to_flaps</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>fcs/flap-pos-norm</property> <value>0.059</value> </product> </function> <function name="aero/coefficient/CDgear"> <description>Drag_due_to_gear</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>gear/gear-pos-norm</property> <value>0.015</value> </product> </function> <function name="aero/coefficient/CDsb"> <description>Drag_due_to_flight_spoilers</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>fcs/speedbrake-pos-norm</property> <value>0.02</value> </product> </function> <function name="aero/coefficient/CDsp"> <description>Drag_due_to_ground_spoilers</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>fcs/spoiler-pos-norm</property> <value>0.04</value> </product> </function> <function name="aero/coefficient/CDbeta"> <description>Drag_due_to_sideslip</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <table> <independentVar>aero/beta-rad</independentVar> <tableData> -1.57 1.2300 -0.26 0.0500 0.00 0.0000 0.26 0.0500 1.57 1.2300 </tableData> </table> </product> </function> <function name="aero/coefficient/CDde"> <description>Drag_due_to_Elevator_Deflection</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>fcs/elevator-pos-norm</property> <value>0.059</value> </product> </function> </axis> <axis name="SIDE"> <function name="aero/coefficient/CYb"> <description>Side_force_due_to_beta</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>aero/beta-rad</property> <value>-1</value> </product> </function> </axis> <axis name="LIFT"> <function name="aero/coefficient/CLalpha"> <description>Lift_due_to_alpha</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>aero/function/kCLge</property> <property>aero/function/kCLsb</property> <property>aero/function/kCLsp</property> <table> <independentVar>aero/alpha-rad</independentVar> <tableData> -0.20 -0.68 0.00 0.20 0.23 1.20 0.46 0.20 </tableData> </table> </product> </function> <function name="aero/coefficient/dCLflap"> <description>Delta_Lift_due_to_flaps</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>fcs/flap-pos-norm</property> <property>aero/function/kCLge</property> <property>aero/function/kCLsb</property> <property>aero/function/kCLsp</property> <value>0.9</value> </product> </function> <function name="aero/coefficient/CLde"> <description>Lift_due_to_Elevator_Deflection</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>fcs/elevator-pos-rad</property> <value>0.2</value> </product> </function> </axis> <axis name="ROLL"> <function name="aero/coefficient/Clb"> <description>Roll_moment_due_to_beta</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/bw-ft</property> <property>aero/beta-rad</property> <value>-0.09</value> </product> </function> <function name="aero/coefficient/Clp"> <description>Roll_moment_due_to_roll_rate</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/bw-ft</property> <property>aero/bi2vel</property> <property>velocities/p-aero-rad_sec</property> <value>-0.4</value> </product> </function> <function name="aero/coefficient/Clr"> <description>Roll_moment_due_to_yaw_rate</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/bw-ft</property> <property>aero/bi2vel</property> <property>velocities/r-aero-rad_sec</property> <value>0.09</value> </product> </function> <function name="aero/coefficient/Clda"> <description>Roll_moment_due_to_aileron</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/bw-ft</property> <property>fcs/left-aileron-pos-rad</property> <table> <independentVar>velocities/mach</independentVar> <tableData> 0.0 0.100 2.0 0.033 </tableData> </table> </product> </function> <function name="aero/coefficient/Cldr"> <description>Roll_moment_due_to_rudder</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/bw-ft</property> <property>fcs/rudder-pos-rad</property> <value>0.01</value> </product> </function> </axis> <axis name="PITCH"> <function name="aero/coefficient/Cmalpha"> <description>Pitch_moment_due_to_alpha</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/cbarw-ft</property> <property>aero/alpha-rad</property> <value>-0.6</value> </product> </function> <function name="aero/coefficient/Cmde"> <description>Pitch_moment_due_to_elevator</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/cbarw-ft</property> <property>fcs/elevator-pos-rad</property> <table> <independentVar>velocities/mach</independentVar> <tableData> 0.0 -1.20 2.0 -0.30 </tableData> </table> </product> </function> <function name="aero/coefficient/Cmq"> <description>Pitch_moment_due_to_pitch_rate</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/cbarw-ft</property> <property>aero/ci2vel</property> <property>velocities/q-aero-rad_sec</property> <value>-27.0</value> </product> </function> <function name="aero/coefficient/Cmadot"> <description>Pitch_moment_due_to_alpha_rate</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/cbarw-ft</property> <property>aero/ci2vel</property> <property>aero/alphadot-rad_sec</property> <value>-16.0</value> </product> </function> </axis> <axis name="YAW"> <function name="aero/coefficient/Cnb"> <description>Yaw_moment_due_to_beta</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/bw-ft</property> <property>aero/beta-rad</property> <value>0.26</value> </product> </function> <function name="aero/coefficient/Cnr"> <description>Yaw_moment_due_to_yaw_rate</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/bw-ft</property> <property>aero/bi2vel</property> <property>velocities/r-aero-rad_sec</property> <value>-0.35</value> </product> </function> <function name="aero/coefficient/Cndr"> <description>Yaw_moment_due_to_rudder</description> <product> <property>aero/qbar-psf</property> <property>metrics/Sw-sqft</property> <property>metrics/bw-ft</property> <property>fcs/rudder-pos-rad</property> <value>-0.20</value> </product> </function> </axis> </aerodynamics> <output name="B737_datalog.csv" rate="60" type="CSV"> <property> aero/qbar-psf </property> <property> attitude/phi-rad </property> <property> position/h-sl-ft </property> <property> velocities/vc-kts </property> <property> fcs/throttle-cmd-norm </property> <property> fcs/elevator-pos-norm </property> <rates> ON </rates> <velocities> ON </velocities> <forces> ON </forces> <moments> ON </moments> <position> ON </position> <propulsion> OFF </propulsion> <aerosurfaces> OFF </aerosurfaces> <fcs> OFF </fcs> <ground_reactions> ON </ground_reactions> </output> </fdm_config>