User Tools

Site Tools


aircraft:tmd:instruments

Instruments

Pitot-Static System

The most basic instruments inside the cockpit work with air pressures measured from static ports and pitot tubes, such as airspeed indicator, altimeter and vertical speed indicator.

Pitot-Tube

The pitot tube in Aerofly measures both the static air pressure as well as the total pressure (sum of static and dynamic air pressure). Other outputs are also available such as the angle of attack, mach number and true airspeed.

            <[pitot_tube][PitotTube][]
                <[string8][Body][Fuselage]>
            >

Outputs:
StaticPressure,
TotalPressure, in Pascals
AngleOfAttack,
SideslipAngle in radiant
MachNumber fraction speed of sound,
TrueAirspeed in meters per second

Airspeed Indicator

The airspeed indicator is actually a dynamic pressure indicator. In the real world the inside of a chamber is filled with the air from the total pressure which is surrounded by the static air pressure. The difference of the two pressures moves a membrane that is connected to the indicator needle. The resulting needle deflection is calibrated on the indicator scale.

In Aerofly the airspeed_indicator takes in the two pressures in Pascals and outputs the indicated airspeed in meters per second. The output is differentiated to get the airspeed trend and the airspeed and the airspeed trend are then send to external devices or the flight info bar via sender objects.

            <[airspeed_indicator][AirspeedIndicator][]
                <[string8][StaticPressure][PitotTube.StaticPressure]>
                <[string8][TotalPressure][PitotTube.TotalPressure]>
            >
            <[differentiator][AirspeedTrend][]
                <[string8][Input][AirspeedIndicator.IndicatedAirspeed]>
            >
            <[output][IndicatedAirspeed][]
                <[string8][Input][AirspeedIndicator.IndicatedAirspeed]>
            >
            <[sender][SenderAirspeed][]
                <[string8][Input][AirspeedIndicator.IndicatedAirspeed]>
                <[string8][Message][Aircraft.IndicatedAirspeed]>
            >
            <[sender][SenderAirspeedTrend][]
                <[string8][Input][AirspeedTrend.Output]>
                <[string8][Message][Aircraft.IndicatedAirspeedTrend]>
            >

Outputs: IndicatedAirspeed in meters per second.

Altimeter

The altimeter works similar to the airspeed indicator but instead of having the inner chamber filled with the total pressure it is closed off so that only changes in the static pressures are shown on the needle. The result is an altimeter calibrated to a certain pressure setting, the air pressure within the chamber. But because weather changes and thus pressure on the ground changes the altimeter is not actually indicating the altitude above the real main sea level. That is where the barometric pressure setting comes into play. It adjusts the altimeter in a way to fine tune the zero position.

In Aerofly the pressure setting and static pressure are provided to the altimeter object in Pascals. The default position of 1013.25 hPa is the ICAO standard atmosphere setting and should always be used for the default tmd file.

The pilot's altitude is send to external devices or the flight info bar via sender objects.

            <[input_default][PressureSettingPilot][]
                <[string8][Message][PressureSettingPilot]>
                <[uint][Positions][201]>
                <[tmvector2d][Range][ 95000.0 105000.0 ]>
                <[float64][Value][101325.0]>
            >
            <[output_free][PressureSettingPilotOutput][]
                <[string8][Input][PressureSettingPilot.Output]>
            >

            <[altimeter][AltimeterPilot][]
                <[string8][StaticPressure][PitotTube.StaticPressure]>
                <[string8][AltimeterSetting][PressureSettingPilot.Output]>
            >
            <[output][AltitudePilot][]
                <[string8][Input][AltimeterPilot.PressureAltitude]>
            >
            <[sender][SenderAltitude][]
                <[string8][Input][AltimeterPilot.PressureAltitude]>
                <[string8][Message][Aircraft.Altitude]>
            >

Outputs: PressureAltitude - Altitude in meters

Vertical Speed Indicator

The vertical speed indicator works with a larger chamber where air is rushing into or rushing out of, depending weather the aircraft is descending or climbing and air pressure is changing. The air flow is measured by letting the air pass through a narrow tube where the needle has to be pushed out of the way.

In Aerofly the vertical speed indicator works by differentiating the static pressure.

            <[vertical_speed_indicator][VerticalSpeedIndicator][]
                <[string8][StaticPressure][PitotTube.StaticPressure]>
            >
            <[output][VerticalSpeed][]
                <[string8][Input][VerticalSpeedIndicator.VerticalSpeed]>
            >

Outputs: VerticalSpeed in meters per second.

Gyroscopic Instruments

The attitude indicator, turn coordinator and heading indicator work with multiple spinning gyroscopes that keep their attitude in space.

The sender_body object sends all this data to the external devices and the flight info bar.

            <[sender_body][SenderBody][]
                <[string8][Body][Fuselage]>
            >

Attitude Indicator

            <[attitude_indicator][AttitudeIndicator][]
                <[string8][Body][Fuselage]>
            >
            <[output][PitchAngle][]
                <[string8][Input][AttitudeIndicator.PitchAngle]>
            >
            <[output][BankAngle][]
                <[string8][Input][AttitudeIndicator.BankAngle]>
            >

Outputs: PitchAngle and BankAngle both in radiant between 0.0 and 6.28 (2*pi).

Heading Indicator

            <[heading_indicator][HeadingIndicator][]
                <[string8][Body][Fuselage]>
            >
            <[output][HeadingAngle][]
                <[string8][Input][HeadingIndicator.MagneticHeading]>
            >

Output: MagneticHeading in radiant measured from 0.0 to 6.28 (2*pi) in an anti-clockwise matter (mathematically positive direction, x = East).

  • East = 0.0
  • North = 1.57
  • West = 3.14
  • South = 4.71
Export your heading indicator compass rose to face East as recommended. Then you don't have to do any calculations, just a basic rotation with AngleMax/Scaling of 1.0.

Turn Coordinator

            <[turn_coordinator][TurnCoordinator][]
                <[string8][Body][Fuselage]>
            >
            <[output][RateOfTurn][]
                <[string8][Input][TurnCoordinator.RateOfTurn]>
            >

Outputs: RateOfTurn

Acceleration Based Instruments

Magnetic Compass

Simulates all movements of a magnetic compass including all turning errors due to accelerations, climbs or descents.

            <[magnetic_compass][MagneticCompass][]
                <[string8][Body][Fuselage]>
                <[tmvector3d][R0][ 2.0 0.0 0.0 ]>
            >

Outputs: in GraphicObjects section a rigidbodygraphics object can use the MagneticCompassCard.R and MagneticCompassCard.Q when the object is called MagneticCompass in the DynamicObjects section.

Export your compass card model to face East as recommended.

Balance Indicator

            <[balance_indicator][BalanceIndicator][]
                <[string8][Body][Fuselage]>
                <[tmvector3d][R0][ 2.0 0.0 0.0 ]>
                <[float64][Radius][0.085]>
                <[float64][Limit][0.02]>
                <[float64][Damping][0.4]>
            >
            <[output][BalanceIndicatorDeflection][]
                <[string8][Input][BalanceIndicator.Output]>
            >

Outputs: Output between -1.0 and 1.0

Accelerometer

Can be reset with a Reset event.

            <[accelerometer][Accelerometer][]
                <[string8][Body][Fuselage]>
                <[tmvector3d][R0][ 0.0 0.0 0.0 ]>
            >

Outputs:
Acceleration,
MaximumPositiveAcceleration,
MaximumNegativeAcceleration all in meters per second squared. Divide by 9.81 or multiply by 0.1019368 (with the graphics input Scaling) to get the g-load.

Radio Navigation Instruments

VOR/ILS

Navigation receivers usually can receive both VOR and ILS signals. Therefor we just call them NAV receivers. The receiver itself is a fairly short code snippet, but it requires some other objects to work.

First of all a radio frequency input is required, this is handled by the input_pair that can tune a standby frequency and then swap to the active frequency. We send these frequencies to outside devices using sender objects to be displayed on external panels for example.

Secondly a course selection has to be made, this happens with an input_cyclic from 0.0 to 6.28 for the course (see heading indicator). You may know this as the OBS knob.

Lastly we can give the receiver these values and it will spit out a multitude of outputs.

            <[input_knob][SelectedCourse1Knob][]
                <[string8][Message][Navigation.SelectedCourse1]>
                <[string8][Events][ KnobTurnSound.Trigger ]>
            >
            <[input_cyclic][SelectedCourse1][]
                <[string8][Message][Navigation.SelectedCourse1]>
                <[tmvector2d][Range][ 0.0 6.283185307179586476925286766559 ]>
                <[float64][StepSize][0.01745329251994329576923690768489]>
                <[float64][Value][1.5707963267948966192313216916398]>
            >
            <[output_free][SelectedCourse1Output][]
                <[string8][Input][SelectedCourse1.Output]>
            >
            <[sender][SenderSelectedCourse1][]
                <[string8][Input][SelectedCourse1.Output]>
                <[string8][Message][Navigation.SelectedCourse1]>
            >

            <[input_knob][NAV1StandbyFrequencyKnobSmall][]
                <[string8][Message][Navigation.NAV1StandbyFrequency]>
                <[float64][InputValue][1.0]>
                <[string8][Events][ KnobTurnSound.Trigger ]>
            >
            <[input_knob][NAV1StandbyFrequencyKnobLarge][]
                <[string8][Message][Navigation.NAV1StandbyFrequency]>
                <[float64][InputValue][20.0]>
                <[string8][Events][ KnobTurnSound.Trigger ]>
            >
            <[input_button][NAV1FrequencySwapButton][]
                <[string8][Message][Navigation.NAV1FrequencySwap]>
                <[string8][Events]       [ ButtonSound.Trigger ]>
                <[string8][EventsRelease][ ButtonSound.Trigger ]>
            >
            <[input_pair][NAV1Frequency][]
                <[string8][Message][Navigation.NAV1StandbyFrequency]>
                <[string8][MessageSwap][Navigation.NAV1FrequencySwap]>
                <[uint][Positions][201]>
                <[float64][StepLarge][20.0]>
                <[tmvector2d][Range][ 108000000.0 118000000.0 ]>
                <[float64][Active]  [ 110750000.0 ]>
                <[float64][Standby] [ 114850000.0 ]>
            >
            <[output_free][NAV1FrequencyOutput][]
                <[string8][Input][NAV1Frequency.Output]>
            >
            <[output][NAV1StandbyFrequency][]
                <[string8][Input][NAV1Frequency.OutputStandby]>
            >
            <[sender][SenderNAV1Frequency][]
                <[string8][Input][NAV1Frequency.Output]>
                <[string8][Message][Navigation.NAV1Frequency]>
            >
            <[sender][SenderNAV1StandbyFrequency][]
                <[string8][Input][NAV1Frequency.OutputStandby]>
                <[string8][Message][Navigation.NAV1StandbyFrequency]>
            >

            <[nav_receiver][NAV1Receiver][]
                <[string8][InputEnable][NAV1On.Output]>
                <[string8][InputFrequency][NAV1Frequency.Output]>
                <[string8][InputBearing][SelectedCourse1.Output]>
            >
            <[output_text][NAV1Identifier][]
                <[string8][Input][NAV1Receiver.OutputIdentifier]>
            >
            <[output][NAV1Radial][]
                <[string8][Input][NAV1Receiver.OutputRadial]>
            >
            <[output][NAV1ToFrom][]
                <[string8][Input][NAV1Receiver.OutputToFrom]>
            >
            <[output][NAV1LocalizerSignalStrength][]
                <[string8][Input][NAV1Receiver.OutputStrength]>
            >
            <[output][NAV1GlideSlopeSignalStrength][]
                <[string8][Input][NAV1Receiver.OutputGlideSlopeStrength]>
            >
            <[output][NAV1LocalizerDeviation][]
                <[string8][Input][NAV1Receiver.OutputDeviation]>
            >
            <[output][NAV1GlideSlopeDeviation][]
                <[string8][Input][NAV1Receiver.OutputGlideSlopeDeviation]>
            >

Outputs:
OutputIdentifier (caution this output is a string, not a value!),
OutputRadial in radiant on the compass rose,
OutputToFrom +1.0, 0.0 or -1.0 (to/off/from),
OutputStrength and OutputGlideSlopeStrength 1.0 = full strength, 0.0 = no reception,
OutputDeviation and OutputGlideSlopeDeviation from -2.0 to +2.0, -1.0 defining full needle deflection on the scale (but the needle goes a bit wider until it hits the stops).

DME

Distance measurement equipment - Transmits unique code to a nearby station which sends it back after a very short delay. The total time between the sending and reception of the message is measured and the distance retained with the known speed of light and calibrated delay at the station.

The device is therefor technically a transceiver, not just a receiver.

            <[dme_transceiver][NAV1DMEReceiver][]
                <[string8][InputFrequency][NAV1Frequency.Output]>
            >
            <[output][NAV1DMESignalStrength][]
                <[string8][Input][NAV1DMEReceiver.OutputStrength]>
            >
            <[output][NAV1DMEDistance][]
                <[string8][Input][NAV1DMEReceiver.OutputDistance]>
            >
            <[output][NAV1DMESpeed][]
                <[string8][Input][NAV1DMEReceiver.OutputSpeed]>
            >
            <[output][NAV1DMETime][]
                <[string8][Input][NAV1DMEReceiver.OutputTime]>
            >
            <[sender][SenderNAV1DMEDistance][]
                <[string8][Input][NAV1DMEReceiver.OutputDistance]>
                <[string8][Message][Navigation.DME1Distance]>
            >

Outputs:
OutputStrength 1.0 = full strength, 0.0 = no signal
OutputDistance distance in meters,
OutputSpeed speed relative to the station (away or towards) in meters per second,
OutputTime time to the station in seconds

ADF

Automatic Direction Finder - tunes the frequency of a nearby Non-Directional-Beacon (NDB) and indicates a bearing to it.

            <[input_knob][ADFStandbyFrequencyKnobSmall][]
                <[string8][Message][Navigation.ADF1StandbyFrequency]>
                <[float64][InputValue][1.0]>
                <[string8][Events][ KnobTurnSound.Trigger ]>
            >
            <[input_knob][ADFtandbyFrequencyKnobLarge][]
                <[string8][Message][Navigation.ADF1StandbyFrequency]>
                <[float64][InputValue][100.0]>
                <[string8][Events][ KnobTurnSound.Trigger ]>
            >
            <[input_pair][ADF1FrequencyInput][]
                <[string8][Message][Navigation.ADF1StandbyFrequency]>
                <[string8][MessageSwap][Navigation.ADF1FrequencySwap]>
                <[string8][InputEnable][ADFOn.Output]>
                <[uint][Positions][1561]>
                <[float64][StepLarge][20.0]>
                <[tmvector2d][Range][  190000.0 1750000.0 ]>
                <[float64][Active]  [  385000.0 ]>
                <[float64][Standby] [ 1180000.0 ]>
            >
            <[input_button][ADF1FrequencySwapButton][]
                <[string8][Message][Navigation.ADF1FrequencySwap]>
                <[string8][Events][ ButtonSound.Trigger ]>
                <[string8][EventsRelease][ ButtonSound.Trigger ]>
            >
            <[output][ADF1Frequency][]
                <[string8][Input][ADF1FrequencyInput.Output]>
            >
            <[output][ADF1StandbyFrequency][]
                <[string8][Input][ADF1FrequencyInput.OutputStandby]>
            >
            <[sender][SenderADF1Frequency][]
                <[string8][Input][ADF1FrequencyInput.Output]>
                <[string8][Message][Navigation.ADF1Frequency]>
            >
            <[sender][SenderADF1StandbyFrequency][]
                <[string8][Input][ADF1FrequencyInput.OutputStandby]>
                <[string8][Message][Navigation.ADF1StandbyFrequency]>
            >
            
            <[adf_receiver][ADF1][]
                <[string8][InputFrequency][ADF1FrequencyInput.Output]>
                <[string8][InputEnable][ADFOn.Output]>
            >
            <[output][ADF1Bearing][]
                <[string8][Input][ADF1.OutputBearing]>
            >

Outputs: OutputBearing angle in radiant on the compass rose.

ATC-Transponder

The transponder sends signals to air traffic control to identify the aircraft on the radar screens. A unique four digit code is given to each aircraft that is in the airspace of the controller. This is called the Squawk code or just transponder code.

To enter a code you can either set up control clickspots with the message Communication.TransponderDigit to enter one digit after the other (like in the default Cessna 172), or Communication.TransponderCode to directly change one of the digits (like in the default Baron 58)

            <[transponder][Transponder][]
                <[string8][InputEnable][TransponderOn.Output]>
            >
            <[output][TransponderCode][]
                <[string8][Input][Transponder.OutputStandby]>
            >
            <[output][TransponderCursor][]
                <[string8][Input][Transponder.OutputCursor]>
            >
            <[sender][SenderTransponderCode][]
                <[string8][Input][Transponder.OutputStandby]>
                <[string8][Message][Communication.TransponderCode]>
            >
            <[sender][SenderTransponderCursor][]
                <[string8][Input][Transponder.OutputCursor]>
                <[string8][Message][Communication.TransponderCursor]>
            >

Outputs:
Output currently active code (remains active until entry completed)
OutputStandby entry made, displayed to pilots
OutputCursor digit that is being edited at the moment

aircraft/tmd/instruments.txt · Last modified: 2022/07/19 21:10 by jh