Increasing throttle keeps the actual throttle at 0

There are a few planes where, when starting on the runway with the engines spooled up/spinning, setting GENERAL_ENG_THROTTLE_LEVER_POSITION:1 through GENERAL_ENG_THROTTLE_LEVER_POSITION:4 doesn’t actually move the throttle, even though moving throttle levers on a connected peripheral moves them just fine.

For instance, the Vision Jet, HondaJet, DC-6, CJ4, and Longitude all just sit there with the throttle jittering at 0 rather than actually throttling up. Is there some secret var that needs to be set first, or some event that needs to be triggered, before these planes will actually throttle up?

https://docs.flightsimulator.com/html/Programming_Tools/Event_IDs/Aircraft_Engine_Events.htm#THROTTLE_SET

Cheers - unfortunately, using THROTTLE_SET still seems to do nothing, with the HUD showing no throttle increase, and the in-game cockpit model showing no movement on the throttle levers. Even triggering the THROTTLE_10 event (to rule out sending the wrong numerical value) doesn’t move their throttles.

If I just manually issue an AXIS_THROTTLE_SET, then the throttles do move but then immediately get set back to 0.

The INCREASE_THROTTLE event does work, but of course that doesn’t give much control over the amount, but AXIS_THROTTLE_PLUS seems to do nothing at all.

Trying “all the things”, it looks like THROTTLE_AXIS_SET_EX1 does work, and of course the docs don’t tell you what values it takes. Experimentally, -16k to +16k, with 0 being 50%.

Interesting new problem, using THROTTLE_AXIS_SET_EX1 to set the throttle based on a desired percentage using a lerp between -(2^14) and +(2^14) leads to the in-game lever showing the correct percentage, but querying the GENERAL_ENG_THROTTLE_LEVER_POSITION variables show different values. E.g. if I use THROTTLE_AXIS_SET_EX1 to set the throttle to 20% (i.e. -9830), the in-game throttle mouseover shows exactly 20%, but the throttle position simvar reports 25.23% for the CJ4 and 18.38 for the Longitude.

The DC-6 and Vision Jet report (near enough) the correct value, but the HJet doesn’t even respond to THROTTLE_AXIS_SET_EX1 at all.

For the CJ4/Longitude, Is there a simvar that can be used to get the correct in-game throttle percentage?

These engines have a FADEC, so the engine throttle position and the throttle lever position are not usually the same.

1 Like

Just use THROTTLE1_SET and THROTTLE2_SET with position 16k.

The DC-6 and Hondajet use their own L vars for throttle.

I’m not trying to set full throttle, this is for a naive autopilot demonstrator with naive autothrottle where the code needs to at least be able to set the throttle lever, and then when it reads it out on the next iteration, get a value that is (with rounding) the same as the value it set, so that it can move the throttle up and down as needed.

The DC-6 actually works perfectly fine with the _EX1 event, it’s the HJet that’s the problem child (it does nothing, which seems kinda of bizarre. Even if you use your own vars, at least honour the throttle instruction. After all, if peripheral works, then those vars should, too. The game shouldn’t care if the instruction comes from a throttle lever or a simconnect event), with the cessna’s being more of a “there is clearly a way to make it work, as long as there’s a var or pair of vars somewhere that let you map the simconnect reported value to the in-game value”. There’s the THROTTLE_LOWER_LIMIT var for the lower limit, from the wasm token set, but after some searching, it doesn’t appear there’s a corresponding var for where along the range the 100% mark is.

This is not exactly a simple project. As @tracernz says, these aircraft have FADEC systems that are delivering different throttle to the engines depending on conditions, whereas the throttle lever position is independent. Each aircraft will have their own FADEC system (which the sim doesn’t have, so must be built on top) represented differently and implemented differently. Additionally, some of these have their own autothrottle which may interfere with your own control loop.

The easiest solution here is to assume that the value you sent (+/- 16K) is the one being used and just store it locally, as I can’t think of a scenario in which the value you send would not be the representation of the in-cockpit throttle lever position. However, for some planes you may be able to validate that position, for example the Longitude uses L:WT_Virtual_Throttle_Lever_Pos_1 (or 2). You can investigate the Behaviors window from Tools and take a look at the LocalVariables tab:

I’d really hoped to keep things stateless, but if there’s no way to ask for the value that’s shown in-game, I guess I that might be the only option. Cheers!

The HJet throttle uses L:THROTTLE1_SET and L:THROTTLE2_SET. You can watch them in the list of local vars.

Taking the throttles out of cutoff detent requires a number of other L vars.

Value doesn’t matter, it can be 0-100, 0-16384, or -16384-16384. Different add-ons are also sometimes coded to not use the full range of the general simvar anyway.

If you want to monitor the value of GENERAL ENG THROTTLE LEVER POSITION:x, install the SDK and open SimVarWatcher.