From 223ac8d795b08d7f4fbc7d85bd856aec85aacea1 Mon Sep 17 00:00:00 2001 From: Anton Gomez Alvedro Date: Mon, 4 Nov 2013 14:13:22 +0100 Subject: [PATCH] Integrates existing soaring instruments with the soaring sdk All reviewed aircraft now support total energy compensated variometers and reuse a common implementation. The following issues have been addressed, either explicitly or as a benefit from the integration: + Fixed incorrect variometer readouts at sim/speed-up values != 1 + Fixed erratic instrument behavior after pause and reinit + Reworked all vario needle animations to be smoother. + Fixed ASK13 yaw string. Now it deflects to the correct side. + Added temperature and (fake) battery readings to ILEC SC7 digital variometer. + Fixed ILEC SC7 sign readout (didn't show the minus sign). Note: The ASK21 models have not been integrated, as they will need a more profound cockpit overhaul. --- .../instruments/vario-5stv5/winter-vario-5stv5.xml | 20 +- Aircraft/ASK13/Nasal/wool-thread.nas | 24 +- .../DG-101G/Models/Instruments/57mm_vsi_5m.xml | 10 +- .../DG-101G/Models/Instruments/80mm_vsi_5stv5.xml | 6 +- Aircraft/DG-101G/Nasal/te-vario.nas | 120 +------- .../Panel/Instruments/vario-5stv5/vario-5stv5.xml | 19 +- .../Panel/Instruments/yawstring/yawstring.xml | 6 +- .../Grob-Astir/Models/Interior/Panel/panel.xml | 2 +- Aircraft/Grob-Astir/Nasal/yawstring.nas | 20 +- .../Panel/Instruments/Variometer/Variometer.xml | 7 +- Aircraft/Grob-G109/Nasal/te-vario.nas | 14 + Aircraft/Grob-G109/g109-base.xml | 1 + .../glider/vario/ilec-sc7/ilec-sc7.nas | 173 +++++------ .../glider/vario/ilec-sc7/ilec-sc7.xml | 336 ++++++++++----------- .../Instruments/vario-5stv5/winter-vario-5stv5.xml | 20 +- Aircraft/asw20/Nasal/wool-thread.nas | 24 +- Aircraft/bocian/Models/vsi.xml | 7 +- Aircraft/bocian/Models/vsi2.xml | 15 +- Aircraft/bocian/Models/yawstring.xml | 5 +- Aircraft/bocian/Nasal/vario.nas | 23 ++ Aircraft/bocian/Nasal/winch.nas | 4 - Aircraft/bocian/Nasal/yawstring.nas | 20 +- Aircraft/bocian/bocian-set.xml | 1 + 23 files changed, 355 insertions(+), 522 deletions(-) create mode 100644 Aircraft/Grob-G109/Nasal/te-vario.nas create mode 100644 Aircraft/bocian/Nasal/vario.nas diff --git a/Aircraft/ASK13/Models/instruments/vario-5stv5/winter-vario-5stv5.xml b/Aircraft/ASK13/Models/instruments/vario-5stv5/winter-vario-5stv5.xml index 8fab45d..5d2d1c3 100644 --- a/Aircraft/ASK13/Models/instruments/vario-5stv5/winter-vario-5stv5.xml +++ b/Aircraft/ASK13/Models/instruments/vario-5stv5/winter-vario-5stv5.xml @@ -19,24 +19,12 @@ rotate Needle - /instrumentation/vertical-speed-indicator/indicated-speed-fpm + /instrumentation/variometer/te-reading-mps - -1240.16 -168.44 - -1181.1 -160.42 - -984.25 -135.08 - -787.5 -107.91 - -590.55 -80.53 - -393.7 -53.99 - -196.85 -26.8 - 0.0 0.0 - 196.85 26.8 - 393.7 53.99 - 590.55 80.53 - 787.5 107.91 - 984.25 135.08 - 1181.1 160.42 - 1240.16 168.44 + -6.33 -171 + 6.33 171 + -1 0 diff --git a/Aircraft/ASK13/Nasal/wool-thread.nas b/Aircraft/ASK13/Nasal/wool-thread.nas index 4c72dc6..1e14e13 100644 --- a/Aircraft/ASK13/Nasal/wool-thread.nas +++ b/Aircraft/ASK13/Nasal/wool-thread.nas @@ -1,20 +1,10 @@ -# Simple vibrating yawstring +# Vibrating yaw string -var yawstring = func { +io.include("Aircraft/Generic/soaring-instrumentation-sdk.nas"); - var airspeed = getprop("velocities/airspeed-kt"); - var severity = 0; - if ( airspeed < 54 ) - { - severity = ( math.sin ( math.pi * airspeed/54 ) * rand() ) ; - } - var position = -getprop("orientation/side-slip-deg") + severity ; +var yawstring = YawString.new( + on_update: update_prop("instrumentation/yawstring")); - setprop("instrumentation/yawstring",position); - - settimer(yawstring,0); - -} - -# Start the yawstring ASAP -yawstring(); +var string_instrument = Instrument.new( + components: [yawstring], + enable: 1); diff --git a/Aircraft/DG-101G/Models/Instruments/57mm_vsi_5m.xml b/Aircraft/DG-101G/Models/Instruments/57mm_vsi_5m.xml index edfe48f..d31f3c0 100644 --- a/Aircraft/DG-101G/Models/Instruments/57mm_vsi_5m.xml +++ b/Aircraft/DG-101G/Models/Instruments/57mm_vsi_5m.xml @@ -10,14 +10,10 @@ rotate needle - instrumentation/vertical-speed-indicator/indicated-speed-fpm - + instrumentation/te-vario/te-reading2-mps - -984.25-150 - 0 0 - 984.25 150 + -5-150 + 5 150
0 diff --git a/Aircraft/DG-101G/Models/Instruments/80mm_vsi_5stv5.xml b/Aircraft/DG-101G/Models/Instruments/80mm_vsi_5stv5.xml index 79ca9a3..ac0c709 100644 --- a/Aircraft/DG-101G/Models/Instruments/80mm_vsi_5stv5.xml +++ b/Aircraft/DG-101G/Models/Instruments/80mm_vsi_5stv5.xml @@ -20,13 +20,9 @@ rotate needle - - instrumentation/te-vario/te-reading-mps + instrumentation/te-vario/te-reading1-mps -5.00-125 - 0 0 5.00 125
diff --git a/Aircraft/DG-101G/Nasal/te-vario.nas b/Aircraft/DG-101G/Nasal/te-vario.nas index 1573281..9ea78ea 100644 --- a/Aircraft/DG-101G/Nasal/te-vario.nas +++ b/Aircraft/DG-101G/Nasal/te-vario.nas @@ -1,111 +1,19 @@ -# #################################################################################### -# #################################################################################### -# Nasal script for a total energy compensated variometer -# -# script from Flightgear Wiki used as basis +# Total Energy compensated variometers -# #################################################################################### -# Author: Klaus Kerner -# Version: 2012-03-08 -# -# #################################################################################### -# Concepts: -# 1. check, whether the properties are created -# 1a. get current status and write to previus properties -# 2. after wait-cycle -# 2a. get current status -# 2b. calculate te-vario -# 2c. write current status to previous properties -# 3. be happy and fly +io.include("Aircraft/Generic/soaring-instrumentation-sdk.nas"); -# existing properties -# /position/altitude-ft -# /velocities/airspeed-kt +var probe = TotalEnergyProbe.new(); -# new properties created by this script -# /instrumentation/te-vario/tmp/current-height-m -# /instrumentation/te-vario/tmp/previous-height-m -# /instrumentation/te-vario/tmp/current-airspeed-mps -# /instrumentation/te-vario/tmp/previous-airspeed-mps -# /instrumentation/te-vario/tmp/delta-secs -# /instrumentation/te-vario/te-reading-mps +var needle1 = Dampener.new( + input: probe, + dampening: 2.3, + on_update: update_prop("/instrumentation/te-vario/te-reading1-mps")); -# +var needle2 = Dampener.new( + input: probe, + dampening: 3, + on_update: update_prop("/instrumentation/te-vario/te-reading2-mps")); -# helper function -var square = func(x) {return x*x}; - - -var initTeVario = func { - # root node for TE Vario properties - var location = "instrumentation/te-vario/"; - # nodes for TE Vario properties - var node_current_height_m = location ~ "tmp/current-height-m"; - var node_previous_height_m = location ~ "tmp/previous-height-m"; - var node_current_airspeed_mps = location ~ "tmp/current-airspeed-mps"; - var node_previous_airspeed_mps = location ~ "tmp/previous-airspeed-mps"; - var node_update_rate_sec = location ~ "tmp/delta-secs"; - var node_te_reading = location ~ "te-reading-mps"; - - # initialize all properties with some defaults, if not allready existent: - setprop(node_current_height_m, getprop("position/altitude-ft") * FT2M); - setprop(node_previous_height_m, getprop("position/altitude-ft") * FT2M); - setprop(node_current_airspeed_mps, getprop("velocities/airspeed-kt") * KT2MPS); - setprop(node_previous_airspeed_mps, getprop("velocities/airspeed-kt") * KT2MPS); - setprop(node_update_rate_sec, getprop("sim/time/delta-sec")); - setprop(node_te_reading, 5.0); - - # start running TE Vario 1sec after system is up - settimer(runTeVario, 1.0 ); -} - -var runTeVario = func { - # root node for TE Vario properties - var location = "instrumentation/te-vario/"; - # nodes for TE Vario properties - var node_current_height_m = location ~ "tmp/current-height-m"; - var node_previous_height_m = location ~ "tmp/previous-height-m"; - var node_current_airspeed_mps = location ~ "tmp/current-airspeed-mps"; - var node_previous_airspeed_mps = location ~ "tmp/previous-airspeed-mps"; - var node_update_rate_s = location ~ "tmp/delta-secs"; - var node_te_reading = location ~ "te-reading-mps"; - - # shift former current properties to now previous properties - setprop(node_previous_airspeed_mps, getprop(node_current_airspeed_mps)); - setprop(node_previous_height_m, getprop(node_current_height_m)); - # get time increment since last run - setprop(node_update_rate_s, getprop("sim/time/delta-sec")); - # get current properties - setprop(node_current_height_m, getprop("position/altitude-ft") * FT2M); - setprop(node_current_airspeed_mps, getprop("velocities/airspeed-kt") * KT2MPS); - - # formula (see also wiki): - # TE reading = (h2-h1)/t + (v2^2 - v1^2) / (19.62*t) - var uncompensated = (getprop(node_current_height_m) - - getprop(node_previous_height_m)) - / getprop(node_update_rate_s); - var adjustment = (square(getprop(node_current_airspeed_mps)) - - square(getprop(node_previous_airspeed_mps))) - / (19.62 * getprop(node_update_rate_s)); - - # some kind of damping to get a more smooth needle - # get difference from last to current, correct delta with factor and add to last - var te_reading_old = getprop(node_te_reading); # old value - var te_reading_the = uncompensated + adjustment; # theoretical value now - var te_reading_del = te_reading_the - te_reading_old; # delta now to old - # correction value, can be adjusted by last factor to simulate different latencies - var te_reading_cor = getprop(node_update_rate_s) * te_reading_del * 0.5; - if ( getprop(node_current_airspeed_mps) == 0 ) { - var te_reading = 0.0; - } - else { - var te_reading = te_reading_old + te_reading_cor; - } - - # publish value to property tree - setprop(node_te_reading,te_reading); - - settimer(runTeVario, 0 ); -} - -setlistener("sim/signals/fdm-initialized", initTeVario); +var instrument = Instrument.new( + components: [probe, needle1, needle2], + enable: 1); diff --git a/Aircraft/Grob-Astir/Models/Interior/Panel/Instruments/vario-5stv5/vario-5stv5.xml b/Aircraft/Grob-Astir/Models/Interior/Panel/Instruments/vario-5stv5/vario-5stv5.xml index eaa8516..9eec059 100644 --- a/Aircraft/Grob-Astir/Models/Interior/Panel/Instruments/vario-5stv5/vario-5stv5.xml +++ b/Aircraft/Grob-Astir/Models/Interior/Panel/Instruments/vario-5stv5/vario-5stv5.xml @@ -42,23 +42,10 @@ rotate Needle - /instrumentation/vertical-speed-indicator/indicated-speed-fpm + /instrumentation/variometer/te-reading-mps - -1240.16 -168.44 - -1181.10 -160.42 - -984.25 -135.08 - -787.50 -107.91 - -590.55 -80.53 - -393.70 -53.99 - -196.85 -26.80 - 0.00 0.00 - 196.85 26.80 - 393.70 53.99 - 590.55 80.53 - 787.50 107.91 - 984.25 135.08 - 1181.10 160.42 - 1240.16 168.44 + -6.33 -171 + 6.33 171 -1 diff --git a/Aircraft/Grob-Astir/Models/Interior/Panel/Instruments/yawstring/yawstring.xml b/Aircraft/Grob-Astir/Models/Interior/Panel/Instruments/yawstring/yawstring.xml index 4a1f594..7514ae2 100644 --- a/Aircraft/Grob-Astir/Models/Interior/Panel/Instruments/yawstring/yawstring.xml +++ b/Aircraft/Grob-Astir/Models/Interior/Panel/Instruments/yawstring/yawstring.xml @@ -27,9 +27,9 @@ AllString instrumentation/yawstring - 0 - 0 - -1 + 0 + 0 + 1 diff --git a/Aircraft/Grob-Astir/Models/Interior/Panel/panel.xml b/Aircraft/Grob-Astir/Models/Interior/Panel/panel.xml index 9405582..b6798a6 100644 --- a/Aircraft/Grob-Astir/Models/Interior/Panel/panel.xml +++ b/Aircraft/Grob-Astir/Models/Interior/Panel/panel.xml @@ -13,7 +13,7 @@ - Aircraft/Grob-Astir/Models/Interior/Panel/Instruments/vario/ilec-sc7.xml + Aircraft/Instruments-3d/glider/vario/ilec-sc7/ilec-sc7.xml 0.141 0.099 diff --git a/Aircraft/Grob-Astir/Nasal/yawstring.nas b/Aircraft/Grob-Astir/Nasal/yawstring.nas index e59ec4b..1e14e13 100644 --- a/Aircraft/Grob-Astir/Nasal/yawstring.nas +++ b/Aircraft/Grob-Astir/Nasal/yawstring.nas @@ -1,16 +1,10 @@ -# Simple vibrating yawstring +# Vibrating yaw string - var yawstring = func { +io.include("Aircraft/Generic/soaring-instrumentation-sdk.nas"); - var airspeed = getprop("velocities/airspeed-kt"); - var severity = (airspeed / 30) * rand() ; - var position = -getprop("orientation/side-slip-deg") + severity ; - - setprop("instrumentation/yawstring",position); - - settimer(yawstring,0); -} - -# Start the yawstring ASAP -yawstring(); +var yawstring = YawString.new( + on_update: update_prop("instrumentation/yawstring")); +var string_instrument = Instrument.new( + components: [yawstring], + enable: 1); diff --git a/Aircraft/Grob-G109/Models/Interior/Panel/Instruments/Variometer/Variometer.xml b/Aircraft/Grob-G109/Models/Interior/Panel/Instruments/Variometer/Variometer.xml index 4306608..a267b59 100644 --- a/Aircraft/Grob-G109/Models/Interior/Panel/Instruments/Variometer/Variometer.xml +++ b/Aircraft/Grob-G109/Models/Interior/Panel/Instruments/Variometer/Variometer.xml @@ -19,11 +19,10 @@ rotate Pointer - instrumentation/vertical-speed-indicator/indicated-speed-fpm + instrumentation/variometer/te-reading-mps - -1000-135 - 00 - 1000135 + -10-135 + 10135 -1 diff --git a/Aircraft/Grob-G109/Nasal/te-vario.nas b/Aircraft/Grob-G109/Nasal/te-vario.nas new file mode 100644 index 0000000..d72a650 --- /dev/null +++ b/Aircraft/Grob-G109/Nasal/te-vario.nas @@ -0,0 +1,14 @@ +# Winter Total Energy compensated variometers + +io.include("Aircraft/Generic/soaring-instrumentation-sdk.nas"); + +var probe = TotalEnergyProbe.new(); + +var needle = Dampener.new( + input: probe, + dampening: 2.3, + on_update: update_prop("/instrumentation/variometer/te-reading-mps")); + +var instrument = Instrument.new( + components: [probe, needle], + enable: 1); diff --git a/Aircraft/Grob-G109/g109-base.xml b/Aircraft/Grob-G109/g109-base.xml index b93672e..e14f8b7 100644 --- a/Aircraft/Grob-G109/g109-base.xml +++ b/Aircraft/Grob-G109/g109-base.xml @@ -78,6 +78,7 @@ Aircraft/Grob-G109/Models/Interior/Panel/Instruments/Transponder/Transponder.nas Aircraft/Grob-G109/Nasal/liveries.nas Aircraft/Grob-G109/Nasal/immat.nas + Aircraft/Grob-G109/Nasal/te-vario.nas diff --git a/Aircraft/Instruments-3d/glider/vario/ilec-sc7/ilec-sc7.nas b/Aircraft/Instruments-3d/glider/vario/ilec-sc7/ilec-sc7.nas index 6570e01..1c71b14 100644 --- a/Aircraft/Instruments-3d/glider/vario/ilec-sc7/ilec-sc7.nas +++ b/Aircraft/Instruments-3d/glider/vario/ilec-sc7/ilec-sc7.nas @@ -1,102 +1,73 @@ +io.include("Aircraft/Generic/soaring-instrumentation-sdk.nas"); - var debug_enabled = 0; - - ## helpers - # - var FT2M=0.30480; - var KT2MPS=1852/3600; - var square=func(x) return x*x; - var get_delta=func (current,previous) {return (current-previous);} - var state = {new:func {return{parents:[state]};},altitude_m:0,airspeed_mps:0,timestamp:0,te_read:0}; - var samples = []; setsize(samples, 30); - var te_needle =0; - - setprop("/instrumentation/ilec-sc7/te-reading-mps",0); - setprop("/instrumentation/ilec-sc7/volume",0.8); - setprop("/instrumentation/ilec-sc7/audio",2); - setprop("/instrumentation/ilec-sc7/mode",1); - setprop("/instrumentation/ilec-sc7/sensitivity",1); - setprop("/instrumentation/ilec-sc7/filter",0.05); - - var update_state = func { - var s = state.new(); - s.altitude_m=getprop("/position/altitude-ft")*FT2M; - s.airspeed_mps=getprop("/velocities/airspeed-kt")*KT2MPS; - s.timestamp=systime(); - return s; - } - - var push30 = func { - var i = 0; - while ( i < 30 ) { - samples[i]=0; - i += 1; - }; - } - - ## - # debug info - var s_dump = func(s) { - print(s.timestamp," ", s.altitude_m, " ", s.airspeed_mps); - } - - var averager = func { - var sum = 0 ; - var i = 0; - while ( i < 29 ) { - samples[i] = samples[i+1]; # shift everything to the "left" - i += 1; - }; - samples[29] = te_needle; # and set last sample to current - i = 0; - while ( i < 30 ) { - sum = sum + samples[i]; - i += 1; - }; - var average30 = sum / 30; - setprop("/instrumentation/ilec-sc7/average",math.abs(average30)); - setprop("/instrumentation/ilec-sc7/average-sign",math.sgn(average30)); - if (debug_enabled) print (" average ",average30); - settimer(averager, 1); # update rate - } - - - var tvario = { - new: func {return {parents:[tvario]};}, - state:{previous:,current:}, - init: func {state.previous=state.new(); state.current=state.new();}, - update:func { - if (debug_enabled) print("\nUpdating TEV:"); - state.current = update_state(); - if (debug_enabled) { - s_dump(state.current); - s_dump(state.previous); - } - var delta_t = get_delta(state.current.timestamp, state.previous.timestamp); - # TE reading = (h2-h1)/t + (v2^2 - v1^2) / 19.62*t - if (debug_enabled) print("delta_t:",delta_t); - var uncompensated = get_delta(state.current.altitude_m,state.previous.altitude_m) / delta_t; - if (debug_enabled) print(" uncompensated:",uncompensated); - var adjustment = get_delta(square(state.current.airspeed_mps),square(state.previous.airspeed_mps)) / (19.62 * delta_t); - if (debug_enabled) print(" adjustment:",adjustment,"\n"); - var te_reading = uncompensated + adjustment; - if (debug_enabled) print (" te_reading:",te_reading); - - te_needle = getprop("/instrumentation/ilec-sc7/te-reading-mps"); - var filter = 0.01 + 0.02 * getprop("/instrumentation/ilec-sc7/sensitivity"); - setprop("/instrumentation/ilec-sc7/filter",filter); - - te_needle = te_needle * (1-filter) + filter * te_reading; - setprop("/instrumentation/ilec-sc7/te-reading-mps",te_needle); - setprop("/instrumentation/ilec-sc7/te-reading-neg",-te_needle); - state.previous = state.current; # save current state for next call - settimer(func me.update(), 1/20); # update rate - } - }; - - var tv = tvario.new(); - tv.init(); - tv.update(); - push30(); - averager(); - +# Initialize exported properties +setprop("/instrumentation/ilec-sc7/volume", 0.8); +setprop("/instrumentation/ilec-sc7/audio", 2); +setprop("/instrumentation/ilec-sc7/mode", 1); +setprop("/instrumentation/ilec-sc7/sensitivity", 3); +setprop("/instrumentation/ilec-sc7/lcd-digits-abs", 0); +setprop("/instrumentation/ilec-sc7/lcd-digits-sgn", 0); +setprop("/instrumentation/ilec-sc7/te-reading-mps", 0); +setprop("/instrumentation/variometer/te-reading-mps", 0); + +# Helper function for updating lcd display +var update_lcd_props = func(value) { + setprop("/instrumentation/ilec-sc7/lcd-digits-abs", math.abs(value)); + setprop("/instrumentation/ilec-sc7/lcd-digits-sgn", (value < 0) ? 0 : 1); +}; + +# Instrument setup: + +# One TE probe feeds two vario needles and a 25s averager. +# LCD digits are controlled by the.. um.. lcd_controller +# that switches between battery level, temperature and averager +# depending on mode switch posiion. + +# Why a second needle? A digital vario is usually installed together +# with a mechanical one, so now we are at it, why not provide a bonus +# TE reading for it and avoid loading an extra script? + +var probe = TotalEnergyProbe.new(); + +var sc7_needle = Dampener.new( + input: probe, + dampening: 3, + on_update: update_prop("/instrumentation/ilec-sc7/te-reading-mps")); + +var extra_needle = Dampener.new( + input: probe, + dampening: 2.7, + on_update: update_prop("/instrumentation/variometer/te-reading-mps")); + +var averager = Averager.new( + input: probe, + buffer_size: 25); + +var battery_level = { output: 9.9 }; + +var temperature = PropertyReader.new( + property: "environment/temperature-degc", + scale: 0.1); + +var lcd_controller = InputSwitcher.new( + inputs: [battery_level, averager, temperature], + active_input: 1, + on_update: update_lcd_props); + +# Subscribe property listeners for instrument switches +setlistener("instrumentation/ilec-sc7/mode", + func(n) { lcd_controller.select_input(n.getValue()) }, 0, 0); + +setlistener("instrumentation/ilec-sc7/sensitivity", + func(n) { sc7_needle.dampening = n.getValue() }, 0, 0); + +# Wrap everything together into an instrument +var fast_instruments = Instrument.new( + update_period: 0, + components: [probe, sc7_needle, extra_needle], + enable: 1); + +var slow_instruments = Instrument.new( + update_period: 1, + components: [averager, temperature, lcd_controller], + enable: 1); diff --git a/Aircraft/Instruments-3d/glider/vario/ilec-sc7/ilec-sc7.xml b/Aircraft/Instruments-3d/glider/vario/ilec-sc7/ilec-sc7.xml index 912534b..135656d 100644 --- a/Aircraft/Instruments-3d/glider/vario/ilec-sc7/ilec-sc7.xml +++ b/Aircraft/Instruments-3d/glider/vario/ilec-sc7/ilec-sc7.xml @@ -11,7 +11,7 @@ decimals-digit units-digit sign-digit - dot-digit + dot-digit 0.028 0.014 @@ -19,14 +19,14 @@ systems/electrical/outputs/instrument-lights - + rotate Needle /instrumentation/ilec-sc7/te-reading-mps - + -5-119.713 0.0 0.0 5119.7135 @@ -42,9 +42,9 @@ 0 - + - + rotate mc-cready @@ -61,7 +61,7 @@ 0 - + pick mc-cready @@ -80,7 +80,7 @@ - + pick mc-cready @@ -99,9 +99,9 @@ - + - + rotate vol-knob @@ -118,7 +118,7 @@ 0 - + pick vol-knob @@ -137,7 +137,7 @@ - + pick vol-knob @@ -156,9 +156,9 @@ - + - + rotate audio-switch @@ -179,191 +179,191 @@ 0 - + pick incr-audio - + property-adjust instrumentation/ilec-sc7/audio 1 0 2 - false - + false + - - + + pick decr-audio - + property-adjust instrumentation/ilec-sc7/audio -1 0 2 - false - + false + - - - - - - rotate - mode-switch - instrumentation/ilec-sc7/mode - - 0-30 - 1.00 - 2.030 - -
- 0.001 - 0.025 - -0.013 -
- - 0 - -1 - 0 -
- - - pick - incr-mode - - - - property-adjust + + + + + rotate + mode-switch + instrumentation/ilec-sc7/mode + + 0-30 + 1.00 + 2.030 + +
+ 0.001 + 0.025 + -0.013 +
+ + 0 + -1 + 0 + +
+ + + pick + incr-mode + + + + property-adjust instrumentation/ilec-sc7/mode 1 0 2 - false - - - - - - pick - decr-mode - - - - property-adjust - instrumentation/ilec-sc7/mode - -1 - 0 - 2 - false - - - - + false +
+
+
+ + + pick + decr-mode + + + + property-adjust + instrumentation/ilec-sc7/mode + -1 + 0 + 2 + false + + + + - - - rotate - sens-switch - instrumentation/ilec-sc7/sensitivity - - 0-30 - 1.030 - -
- 0.001 - 0.003 - -0.031 -
- - 0 - -1 - 0 - -
- - - pick - incr-sens - - - - property-adjust - instrumentation/ilec-sc7/sensitivity - 1 - 0 - 1 - false - - - - - - pick - decr-sens - - - - property-adjust - instrumentation/ilec-sc7/sensitivity - -1 - 0 - 1 - false - - - - + + + rotate + sens-switch + instrumentation/ilec-sc7/sensitivity + + 130 + 3-30 + +
+ 0.001 + 0.003 + -0.031 +
+ + 0 + -1 + 0 + +
+ + + pick + decr-sens + + + + property-adjust + instrumentation/ilec-sc7/sensitivity + 3 + 1 + 3 + false + + + + + + pick + incr-sens + + + + property-adjust + instrumentation/ilec-sc7/sensitivity + -3 + 1 + 3 + false + + + + - - - textranslate - decimals-digit - instrumentation/ilec-sc7/average - 1 - 0.1 - 0.005 - - 1 - 0 - 0 - - - - textranslate - units-digit - instrumentation/ilec-sc7/average - 0.1 - 1 - 0.005 - - 1 - 0 - 0 - - - - - textranslate - sign-digit - instrumentation/ilec-sc7/average-sign - 0.1 - 1 - 0.005 - - 1 - 0 - 0 - - + + textranslate + decimals-digit + instrumentation/ilec-sc7/lcd-digits-abs + 1 + 0.1 + 0.005 + + 1 + 0 + 0 + + + + + textranslate + units-digit + instrumentation/ilec-sc7/lcd-digits-abs + 0.1 + 1 + 0.005 + + 1 + 0 + 0 + + + + + textranslate + sign-digit + instrumentation/ilec-sc7/lcd-digits-sgn + 0.1 + 1 + 0.005 + + 1 + 0 + 0 + + diff --git a/Aircraft/asw20/Models/JSBSim/Instruments/vario-5stv5/winter-vario-5stv5.xml b/Aircraft/asw20/Models/JSBSim/Instruments/vario-5stv5/winter-vario-5stv5.xml index 8fab45d..5d2d1c3 100644 --- a/Aircraft/asw20/Models/JSBSim/Instruments/vario-5stv5/winter-vario-5stv5.xml +++ b/Aircraft/asw20/Models/JSBSim/Instruments/vario-5stv5/winter-vario-5stv5.xml @@ -19,24 +19,12 @@ rotate Needle - /instrumentation/vertical-speed-indicator/indicated-speed-fpm + /instrumentation/variometer/te-reading-mps - -1240.16 -168.44 - -1181.1 -160.42 - -984.25 -135.08 - -787.5 -107.91 - -590.55 -80.53 - -393.7 -53.99 - -196.85 -26.8 - 0.0 0.0 - 196.85 26.8 - 393.7 53.99 - 590.55 80.53 - 787.5 107.91 - 984.25 135.08 - 1181.1 160.42 - 1240.16 168.44 + -6.33 -171 + 6.33 171 + -1 0 diff --git a/Aircraft/asw20/Nasal/wool-thread.nas b/Aircraft/asw20/Nasal/wool-thread.nas index e386c5a..1e14e13 100644 --- a/Aircraft/asw20/Nasal/wool-thread.nas +++ b/Aircraft/asw20/Nasal/wool-thread.nas @@ -1,20 +1,10 @@ -# Simple vibrating yawstring +# Vibrating yaw string -var yawstring = func { +io.include("Aircraft/Generic/soaring-instrumentation-sdk.nas"); - var airspeed = getprop("velocities/airspeed-kt"); - var severity = 0; - if ( airspeed < 54 ) - { - severity = ( math.sin ( math.pi * airspeed/54 ) * rand() ) ; - } - var position = getprop("orientation/side-slip-deg") + severity ; +var yawstring = YawString.new( + on_update: update_prop("instrumentation/yawstring")); - setprop("instrumentation/yawstring",position); - - settimer(yawstring,0); - -} - -# Start the yawstring ASAP -yawstring(); +var string_instrument = Instrument.new( + components: [yawstring], + enable: 1); diff --git a/Aircraft/bocian/Models/vsi.xml b/Aircraft/bocian/Models/vsi.xml index 6f6c63d..4587c18 100644 --- a/Aircraft/bocian/Models/vsi.xml +++ b/Aircraft/bocian/Models/vsi.xml @@ -10,11 +10,10 @@ rotate vsi-Needle1 - instrumentation/vertical-speed-indicator/indicated-speed-fpm + instrumentation/variometer/te-reading1-mps - -984-130 - 00 - 984130 + -5-130 + 5130
0 diff --git a/Aircraft/bocian/Models/vsi2.xml b/Aircraft/bocian/Models/vsi2.xml index fe252e9..3b961df 100644 --- a/Aircraft/bocian/Models/vsi2.xml +++ b/Aircraft/bocian/Models/vsi2.xml @@ -10,15 +10,14 @@ rotate needle - instrumentation/vertical-speed-indicator/indicated-speed-fpm + instrumentation/variometer/te-reading2-mps - -5905.5-125 - -1968.5-80 - -984.25-52 - 00 - 984.2555 - 1968.587 - 5905.5135 + -30-125 + -10-80 + -5-52 + 555 + 1087 + 30135
0 diff --git a/Aircraft/bocian/Models/yawstring.xml b/Aircraft/bocian/Models/yawstring.xml index 7138ade..57061f7 100644 --- a/Aircraft/bocian/Models/yawstring.xml +++ b/Aircraft/bocian/Models/yawstring.xml @@ -1,7 +1,5 @@ - - yawstring.ac @@ -11,6 +9,7 @@ rotate string instrumentation/yawstring + 4
-0.061937 0.0002164490 @@ -19,7 +18,7 @@ 0 0 - -1 + 1 diff --git a/Aircraft/bocian/Nasal/vario.nas b/Aircraft/bocian/Nasal/vario.nas new file mode 100644 index 0000000..44f6007 --- /dev/null +++ b/Aircraft/bocian/Nasal/vario.nas @@ -0,0 +1,23 @@ +# PZL Total Energy compensated variometers + +io.include("Aircraft/Generic/soaring-instrumentation-sdk.nas"); + +var vario_ui = gui.Dialog.new( + "/sim/gui/dialogs/bocian/variometer/dialog", + "Aircraft/bocian/Dialogs/variometer.xml"); + +var probe = TotalEnergyProbe.new(); + +var needle1 = Dampener.new( + input: probe, + dampening: 2.5, + on_update: update_prop("/instrumentation/variometer/te-reading1-mps")); + +var needle2 = Dampener.new( + input: probe, + dampening: 2.8, + on_update: update_prop("/instrumentation/variometer/te-reading2-mps")); + +var instrument = Instrument.new( + components: [probe, needle1, needle2], + enable: 1); diff --git a/Aircraft/bocian/Nasal/winch.nas b/Aircraft/bocian/Nasal/winch.nas index 048ef40..2ca21d0 100644 --- a/Aircraft/bocian/Nasal/winch.nas +++ b/Aircraft/bocian/Nasal/winch.nas @@ -63,7 +63,3 @@ controls.applyBrakes = func(v) { setprop("sim/hitches/winch/open",1); } # End Function - -# Variometer dialogue (doesn't really belong here, move later) -var variometer = gui.Dialog.new("/sim/gui/dialogs/bocian/variometer/dialog", - "Aircraft/bocian/Dialogs/variometer.xml"); diff --git a/Aircraft/bocian/Nasal/yawstring.nas b/Aircraft/bocian/Nasal/yawstring.nas index 14dcc16..1e14e13 100644 --- a/Aircraft/bocian/Nasal/yawstring.nas +++ b/Aircraft/bocian/Nasal/yawstring.nas @@ -1,16 +1,10 @@ -# Simple vibrating yawstring +# Vibrating yaw string -var yawstring = func { +io.include("Aircraft/Generic/soaring-instrumentation-sdk.nas"); - var airspeed = getprop("velocities/airspeed-kt"); - var severity = (airspeed / 30) * rand() ; - var position = -getprop("orientation/side-slip-deg") + severity ; +var yawstring = YawString.new( + on_update: update_prop("instrumentation/yawstring")); - setprop("instrumentation/yawstring",position); - - settimer(yawstring,0); - -} - -# Start the yawstring ASAP -yawstring(); +var string_instrument = Instrument.new( + components: [yawstring], + enable: 1); diff --git a/Aircraft/bocian/bocian-set.xml b/Aircraft/bocian/bocian-set.xml index 0ca735a..d799a93 100644 --- a/Aircraft/bocian/bocian-set.xml +++ b/Aircraft/bocian/bocian-set.xml @@ -234,6 +234,7 @@ + Aircraft/bocian/Nasal/vario.nas Aircraft/bocian/Nasal/winch.nas Aircraft/bocian/Nasal/yawstring.nas -- 2.1.4