Skip to content
View in the app

A better way to browse. Learn more.

The AVSIM Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Microsoft engine startup programming error?

Featured Replies

I find that if I want to start a JET engine with a purpose made starter button XML gauge, the starter motor continues to turn the engine over indefinitely (long after the pre-ignition spool up period) if the fuel is turned off. However, if you have a mixture leaning control for that engine, and apply full lean, the starter will stop turning the engine, or if put at full lean before pressing the starter button, the starter motor stops after about 10 seconds. I have tried all sorts of workarounds, to get my starter button to stop automatically after a period if the fuel is turned off but none work. I now suspect this is because the "Start jet engine" command within FS goes into a loop if the fuel is not available.Anyone seen this or got a fix?Peter

Take a look at the code below, it is from the default 747 and you canadopt it to your needs.(G:Var1) if{ (A:Circuit general panel on, bool) (A:Eng1 N2 RPM, percent) 50 < && if{ 0 (>K:TOGGLE_STARTER1) } els{ (G:Var1) -- (>G:Var1) } } (G:Var1) 0 != (A:General eng1 starter, bool) ||5 (>G:Var1)hope it helps,Douglas.

Hi,Here an example with a lot of conditions:...........(L:fhl,enum) 0 == (A:SIM ON GROUND,bool) (L:ignition, enum) 0 == (L:left starter switch,enum) 1 == and and (A:SIM ON GROUND,bool) ! (L:ignition, enum) 1 == (L:left starter switch,enum) 4 == and and | (L:Sys Fail,bool) (L:left ductpressure,number) 40 > (L:left AC volts,number) 100 > (L:left AC volts,number) 100 < (L:STBY AC volts,number) 100 > and | (L:left forward fuelpump,bool) (L:left aft fuelpump,bool) | (L:left center fuelpump,bool) | (P:Absolute Time,seconds) (L:left engine cooling,number) > and and and and and and if{ 0 (>L:left engine cooling,number) 5 (>L:left engine start up,enum) } (L:left engine start up,enum) if{ (A:Eng1 N2 RPM, percent) 50 < (L:left starter switch,enum) 0 == (L:left starter switch,enum) 1 == | (L:left starter switch,enum) 4 == | and if{ (>K:TOGGLE_STARTER1) } els{ (L:left engine start up,enum) -- (>L:left engine start up,enum) } } .........Start only possible when all conditions ok.The starter stops "firing" when N2 > 50% or when starter switch is in wrong position.(here you can add of course more functions to stop the starter if necessary)May be you can take something useful from it,Jan"Beatus ille qui procul negotiis..."

Jan

 

 

 

"Beatus ille qui procul negotiis..."

I think the rucial bit, which you have both highlighted in different ways is that the starter stops firing when N2 reaches 50%. But if the fuel is off, N2 never reaches 50%. Nevertheless I'll try both ideas and report back.Peter

  • 1 month later...

I really wish I had more time to post here these days. I enjoy coming here from time-to-time and seeing what new and amazing concepts are being discussed, and even some of the "atomic clocks" that are being built as well! ( With apologies to Bill for using that! lol... )Bill, Jan, Rob, Eugen, Douglas, Nick, Tom and everyone... I truly hope all is well with you and your families. You have all been very helpful with me in the past. Again, I wish time would permit me to "build a clock" here every once in a while, but life has been busy to say the least. So with that being said...I read this post not long ago and thought I'd post my work-around for a 737 Engine Start Knob. As you all know by now, the nature of the starting knob in MSFS usually only allows for two image positions to be shown with the knob. There have been work-arounds, but they don't always work so well when you have four positions on the overhead: "Ground" "Off" "Continuous" and "Flight". Not only this, but there's a lot to be said for the lack of realism with a delayed "snap-to" the off position after the engine starts.So, the workaround here uses the same MSFS logic, but now adds another variable to the mix and thus allowing for an enumerative click event to be programmed, while still keeping the two engine start event keys: "0" and "5". You may throw in several commands as Jan has mentioned above, but for my purposes I've only included the "Sim On Ground" function for utilizing the "ignition" of the starter. The number 1 event is for the "Ground" firing, and the number 4 event is for the "Flight" firing. The "Continuous" event, number 3, can be used either in flight or on the ground, simulating takeoff, landing, turbulence or engine anti-ice conditions. In any case, the knob works independantly of the engine start commands and can be used to toggle between all four positions at any time. Availability of the system is dependant upon the (L:StartX Avail, bool) command.Again... hope all is well and we'll see about getting to this forum a bit more often. Thanks again guys! : )Here's the code for the 737 Engine Start Knob: (L:Start1 Var1, enum) if{ (L:Start1 Avail, bool) (A:Eng1 N2 RPM, percent) 50 < && if{ 0 (>K:TOGGLE_STARTER1) } els{ (L:Start1 Var1, enum) -- (>L:Start1 Var1, enum) } } (L:Start1 Var1, enum) 0 != (A:General Eng1 Starter, bool) || if{ (L:Start1 Var2, enum) } els{ (L:Start1 Var2, enum) }(L:Start2 Var1, enum) if{ (L:Start2 Avail, bool) (A:Eng2 N2 RPM, percent) 50 < && if{ 0 (>K:TOGGLE_STARTER2) } els{ (L:Start2 Var1, enum) -- (>L:Start2 Var1, enum) } } (L:Start2 Var1, enum) 0 != (A:General Eng2 Starter, bool) || if{ (L:Start2 Var2, enum) } els{ (L:Start2 Var2, enum) }(L:Start1 Var1, enum) if{ 2 (>L:Start1 Var1, enum) } (L:Start2 Var1, enum) if{ 2 (>L:Start2 Var1, enum) }Eng1 Start Control (%((L:Start1 Var2, enum))%{case}%{:1}grd%{:2}off%{:3}cont%{:4}flt%{end})(L:Start1 Var2, enum) 2 == if{ 1 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) (A:Sim On Ground, bool) if{ 5 (>L:Start1 Var1, enum) } } (L:Start1 Var2, enum) 3 == if{ 2 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) 0 (>L:Start1 Var1, enum) } (L:Start1 Var2, enum) 4 == if{ 3 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) (A:Sim On Ground, bool) if{ 5 (>L:Start1 Var1, enum) } }(L:Start1 Var2, enum) 3 == if{ 4 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) (A:Sim On Ground, bool) ! if{ 5 (>L:Start1 Var1, enum) } } (L:Start1 Var2, enum) 2 == if{ 3 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) (A:Sim On Ground, bool) if{ 5 (>L:Start1 Var1, enum) } } (L:Start1 Var2, enum) 1 == if{ 2 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) 0 (>L:Start1 Var1, enum) }Eng2 Start Control (%((L:Start2 Var2, enum))%{case}%{:1}grd%{:2}off%{:3}cont%{:4}flt%{end})(L:Start1 Var2, enum) 2 == if{ 1 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) (A:Sim On Ground, bool) if{ 5 (>L:Start1 Var1, enum) } } (L:Start1 Var2, enum) 3 == if{ 2 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) 0 (>L:Start1 Var1, enum) } (L:Start1 Var2, enum) 4 == if{ 3 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) (A:Sim On Ground, bool) if{ 5 (>L:Start1 Var1, enum) } }(L:Start1 Var2, enum) 3 == if{ 4 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) (A:Sim On Ground, bool) ! if{ 5 (>L:Start1 Var1, enum) } } (L:Start1 Var2, enum) 2 == if{ 3 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) (A:Sim On Ground, bool) if{ 5 (>L:Start1 Var1, enum) } } (L:Start1 Var2, enum) 1 == if{ 2 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) 0 (>L:Start1 Var1, enum) }

You know... the guy who posted earlier... who will remain nameless... must confess he posted the wrong code. It seems this was a blessing in disguise. Sometimes code needs to be placed in more than one gauge, and this circumstance was so for the engine starters on both my overhead and upper main panel bitmap images. This will cause "cross-talk" between the two that if one is removed the other will stay the same... if not changed... due to the fact someone forgot all about the second set of coding in the first place. Do I need to say that lack of sleep these days contributed to my not seeing the trees for the forrest in front of my face? Oh well... live and learn. In any case, here's the CORRECT code and a much more tidy usage of it in fact. Sorry for the redundancy here... (L:Start1 Var1, enum) if{ (L:Start1 Avail, bool) (A:Eng1 N2 RPM, percent) 50 < && if{ 0 (>K:TOGGLE_STARTER1) } els{ (L:Start1 Var1, enum) -- (>L:Start1 Var1, enum) } } (L:Start1 Var1, enum) 0 != (A:General Eng1 Starter, bool) || if{ (L:Start1 Var2, enum) } els{ (L:Start1 Var2, enum) }(L:Start2 Var1, enum) if{ (L:Start2 Avail, bool) (A:Eng2 N2 RPM, percent) 50 < && if{ 0 (>K:TOGGLE_STARTER2) } els{ (L:Start2 Var1, enum) -- (>L:Start2 Var1, enum) } } (L:Start2 Var1, enum) 0 != (A:General Eng2 Starter, bool) || if{ (L:Start2 Var2, enum) } els{ (L:Start2 Var2, enum) }(L:Start1 Var2, enum) 0 == if{ 2 (>L:Start1 Var2, enum) } (L:Start2 Var2, enum) 0 == if{ 2 (>L:Start2 Var2, enum) } (L:Start1 Var2, enum) 1 == (A:Sim On Ground, bool) && if{ 5 (>L:Start1 Var1, enum) } (L:Start1 Var2, enum) 2 == if{ 0 (>L:Start1 Var1, enum) } (L:Start1 Var2, enum) 3 == if{ 5 (>L:Start1 Var1, enum) } (L:Start1 Var2, enum) 4 == (A:Sim On Ground, bool) ! && if{ 5 (>L:Start1 Var1, enum) } (L:Start2 Var2, enum) 1 == (A:Sim On Ground, bool) && if{ 5 (>L:Start2 Var1, enum) } (L:Start2 Var2, enum) 2 == if{ 0 (>L:Start2 Var1, enum) } (L:Start2 Var2, enum) 3 == if{ 5 (>L:Start2 Var1, enum) } (L:Start2 Var2, enum) 4 == (A:Sim On Ground, bool) ! && if{ 5 (>L:Start2 Var1, enum) } Eng1 Start Control (%((L:Start1 Var2, enum))%{case}%{:1}grd%{:2}off%{:3}cont%{:4}flt%{end})(L:Start1 Var2, enum) 2 == if{ 1 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) } (L:Start1 Var2, enum) 3 == if{ 2 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) } (L:Start1 Var2, enum) 4 == if{ 3 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) }(L:Start1 Var2, enum) 3 == if{ 4 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) } (L:Start1 Var2, enum) 2 == if{ 3 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) } (L:Start1 Var2, enum) 1 == if{ 2 (>L:Start1 Var2, enum) 05 (>L:skpd_xml_sound_id,number) }Eng2 Start Control (%((L:Start2 Var2, enum))%{case}%{:1}grd%{:2}off%{:3}cont%{:4}flt%{end})(L:Start2 Var2, enum) 2 == if{ 1 (>L:Start2 Var2, enum) 05 (>L:skpd_xml_sound_id,number) } (L:Start2 Var2, enum) 3 == if{ 2 (>L:Start2 Var2, enum) 05 (>L:skpd_xml_sound_id,number) } (L:Start2 Var2, enum) 4 == if{ 3 (>L:Start2 Var2, enum) 05 (>L:skpd_xml_sound_id,number) }(L:Start2 Var2, enum) 3 == if{ 4 (>L:Start2 Var2, enum) 05 (>L:skpd_xml_sound_id,number) } (L:Start2 Var2, enum) 2 == if{ 3 (>L:Start2 Var2, enum) 05 (>L:skpd_xml_sound_id,number) } (L:Start2 Var2, enum) 1 == if{ 2 (>L:Start2 Var2, enum) 05 (>L:skpd_xml_sound_id,number) }

Show off ;)

Create an account or sign in to comment

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.