Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
Collapse
Just Flight Community Forum
  1. Home
  2. Just Flight
  3. MSFS Products
  4. Black Square Add-Ons
  5. Commander 114
  6. Autopilot events in manual correct? VS Mode?

Autopilot events in manual correct? VS Mode?

Scheduled Pinned Locked Moved Commander 114
12 Posts 5 Posters 132 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • RhinozherousR Offline
    RhinozherousR Offline
    Rhinozherous
    wrote last edited by
    #3

    @Black-Square Is the fact that we have to use the AP Master a workaround because of MSFS or is this something that will change?
    I just want to know, sorry to bother you! Thank you very much!

    1 Reply Last reply
    0
    • M Online
      M Online
      MatzeH84
      wrote last edited by
      #4

      I currently solved it in mobiflight with RPN code. It first checks if the AP Master is on, if not, activates it, and then selects HDG mode. Same for all other modes.
      Additionally, when using the suggested AP disconnect variable, you actually have to press twice to cancel the mode- because it behaves like it does in the Bo/Baron/Duke where you disengage the AP with the first click, but keep the FD modes active which are only canceled on the second click.
      As far as I understand, in the 114 the disconnect button should cancel the AP and all modes immediately, as there is no FD installed.

      SadBucketS RhinozherousR 2 Replies Last reply
      0
      • M MatzeH84

        I currently solved it in mobiflight with RPN code. It first checks if the AP Master is on, if not, activates it, and then selects HDG mode. Same for all other modes.
        Additionally, when using the suggested AP disconnect variable, you actually have to press twice to cancel the mode- because it behaves like it does in the Bo/Baron/Duke where you disengage the AP with the first click, but keep the FD modes active which are only canceled on the second click.
        As far as I understand, in the 114 the disconnect button should cancel the AP and all modes immediately, as there is no FD installed.

        SadBucketS Offline
        SadBucketS Offline
        SadBucket
        wrote last edited by
        #5

        @MatzeH84 was going to suggest that work around.

        @Rhinozherous I believe it is safe to assume its an MSFS limitation.

        CPL MIFR 🍁

        1 Reply Last reply
        0
        • M MatzeH84

          I currently solved it in mobiflight with RPN code. It first checks if the AP Master is on, if not, activates it, and then selects HDG mode. Same for all other modes.
          Additionally, when using the suggested AP disconnect variable, you actually have to press twice to cancel the mode- because it behaves like it does in the Bo/Baron/Duke where you disengage the AP with the first click, but keep the FD modes active which are only canceled on the second click.
          As far as I understand, in the 114 the disconnect button should cancel the AP and all modes immediately, as there is no FD installed.

          RhinozherousR Offline
          RhinozherousR Offline
          Rhinozherous
          wrote last edited by
          #6

          @MatzeH84 Thank you, I will trie the same with Axis and Ohs I think. As I have not much of a clue of programming I will see what chatGPT can do for me 🙂

          1 Reply Last reply
          0
          • WooliesW Offline
            WooliesW Offline
            Woolies
            wrote last edited by Woolies
            #7

            It’s funny, I am actually using virtually no bindings for the 114 for a change. I did go and set most up but kinda enjoying using the mouse for a change. Also I don’t know how to trigger button press sounds from the aircraft, if at all possible, and that is more a lack of immersion than anything else.

            https://www.twitch.tv/woolies

            1 Reply Last reply
            0
            • F Online
              F Online
              fredgarven
              wrote last edited by
              #8

              I spent some time going through the Commander 114’s actual model behavior with the MSFS DevMode Behavior Viewer and now have the autopilot buttons working correctly through MobiFlight.

              The missing piece is that the cockpit buttons do more than send the basic mode event. They first check that the autopilot is powered and, when necessary, automatically turn on AP_MASTER. That is why assigning only the individual events from the manual can make it seem like a separate AP Master button is required.

              These are RPN calculator codes. In MobiFlight, use each one as On Press and leave On Release blank. The same RPN logic should also be usable as an AxisAndOhs script.

              HDG

              (A:CIRCUIT ON:54, bool)
              (L:var_AutopilotTest, bool) !
              and
              if{
                  (A:AUTOPILOT MASTER, bool) !
                  if{
                      (>K:AP_MASTER)
                  }
              
                  (>K:AP_PANEL_HEADING_HOLD)
              }
              

              NAV

              (A:CIRCUIT ON:54, bool)
              (L:var_AutopilotTest, bool) !
              and
              if{
                  (A:AUTOPILOT MASTER, bool) !
                  if{
                      (>K:AP_MASTER)
                  }
              
                  (>K:AP_NAV1_HOLD)
              }
              

              Back Course

              (A:CIRCUIT ON:54, bool)
              (L:var_AutopilotTest, bool) !
              and
              if{
                  (A:AUTOPILOT MASTER, bool) !
                  if{
                      (>K:AP_MASTER)
                  }
              
                  (>K:AP_BC_HOLD)
              }
              

              Vertical Speed

              The VS button is more involved because it transfers the Commander’s selected altitude and selected vertical speed into the simulator autopilot before engaging VS mode.

              (A:CIRCUIT ON:54, bool)
              (L:var_AutopilotTest, bool) !
              and
              if{
                  0 (>L:var_AutopilotVsIntervention, bool)
              
                  (L:var_PreselectedAltitude, number)
                  1 r (>K:2:AP_ALT_VAR_SET_ENGLISH)
              
                  (L:var_PreselectedVerticalSpeed, number) 100 *
                  1 r (>K:2:AP_VS_VAR_SET_ENGLISH)
              
                  (A:AUTOPILOT MASTER, bool) !
                  if{
                      (>K:AP_MASTER)
                  }
              
                  (>K:AP_VS_HOLD)
              }
              

              The Commander stores the selected vertical speed in hundreds of feet per minute, which is why the script multiplies it by 100.

              ALT

              (A:CIRCUIT ON:54, bool)
              (L:var_AutopilotTest, bool) !
              and
              if{
                  0 (>L:var_AutopilotAltIntervention, bool)
              
                  (L:PMS50_APGA_RUNNING, bool)
                  if{
                      (L:PMS50_APGA_ACTIVE_VERTICAL_MODE, number) 3 ==
                  }
                  els{
                      (A:AUTOPILOT ALTITUDE LOCK, bool)
                  }
              
                  if{
                      (A:AUTOPILOT MASTER, bool) !
                      if{
                          (>K:AP_MASTER)
                      }
              
                      (>K:AP_PITCH_LEVELER_ON)
                  }
                  els{
                      (A:AUTOPILOT MASTER, bool) !
                      if{
                          (>K:AP_MASTER)
                      }
              
                      (>K:AP_ALT_HOLD)
                  }
              }
              

              This duplicates the airplane’s ALT-button logic rather than merely sending a generic altitude-hold event.

              AP Disconnect - cancel everything with one press

              The reason the suggested disconnect assignment requires two presses is that the Commander’s cockpit behavior uses an if/else arrangement:

              First press disconnects the autopilot.
              A later press cancels the remaining flight-director modes.

              For a hardware disconnect button, this version checks and cancels both during the same press:

              (A:AUTOPILOT MASTER, bool)
              if{
                  (>K:AP_MASTER)
              }
              
              (A:AUTOPILOT FLIGHT DIRECTOR ACTIVE, bool)
              if{
                  (>K:TOGGLE_FLIGHT_DIRECTOR)
              }
              

              That gives the expected Commander behavior: one press disconnects the autopilot and removes the remaining active modes.

              RhinozherousR 1 Reply Last reply
              1
              • F fredgarven

                I spent some time going through the Commander 114’s actual model behavior with the MSFS DevMode Behavior Viewer and now have the autopilot buttons working correctly through MobiFlight.

                The missing piece is that the cockpit buttons do more than send the basic mode event. They first check that the autopilot is powered and, when necessary, automatically turn on AP_MASTER. That is why assigning only the individual events from the manual can make it seem like a separate AP Master button is required.

                These are RPN calculator codes. In MobiFlight, use each one as On Press and leave On Release blank. The same RPN logic should also be usable as an AxisAndOhs script.

                HDG

                (A:CIRCUIT ON:54, bool)
                (L:var_AutopilotTest, bool) !
                and
                if{
                    (A:AUTOPILOT MASTER, bool) !
                    if{
                        (>K:AP_MASTER)
                    }
                
                    (>K:AP_PANEL_HEADING_HOLD)
                }
                

                NAV

                (A:CIRCUIT ON:54, bool)
                (L:var_AutopilotTest, bool) !
                and
                if{
                    (A:AUTOPILOT MASTER, bool) !
                    if{
                        (>K:AP_MASTER)
                    }
                
                    (>K:AP_NAV1_HOLD)
                }
                

                Back Course

                (A:CIRCUIT ON:54, bool)
                (L:var_AutopilotTest, bool) !
                and
                if{
                    (A:AUTOPILOT MASTER, bool) !
                    if{
                        (>K:AP_MASTER)
                    }
                
                    (>K:AP_BC_HOLD)
                }
                

                Vertical Speed

                The VS button is more involved because it transfers the Commander’s selected altitude and selected vertical speed into the simulator autopilot before engaging VS mode.

                (A:CIRCUIT ON:54, bool)
                (L:var_AutopilotTest, bool) !
                and
                if{
                    0 (>L:var_AutopilotVsIntervention, bool)
                
                    (L:var_PreselectedAltitude, number)
                    1 r (>K:2:AP_ALT_VAR_SET_ENGLISH)
                
                    (L:var_PreselectedVerticalSpeed, number) 100 *
                    1 r (>K:2:AP_VS_VAR_SET_ENGLISH)
                
                    (A:AUTOPILOT MASTER, bool) !
                    if{
                        (>K:AP_MASTER)
                    }
                
                    (>K:AP_VS_HOLD)
                }
                

                The Commander stores the selected vertical speed in hundreds of feet per minute, which is why the script multiplies it by 100.

                ALT

                (A:CIRCUIT ON:54, bool)
                (L:var_AutopilotTest, bool) !
                and
                if{
                    0 (>L:var_AutopilotAltIntervention, bool)
                
                    (L:PMS50_APGA_RUNNING, bool)
                    if{
                        (L:PMS50_APGA_ACTIVE_VERTICAL_MODE, number) 3 ==
                    }
                    els{
                        (A:AUTOPILOT ALTITUDE LOCK, bool)
                    }
                
                    if{
                        (A:AUTOPILOT MASTER, bool) !
                        if{
                            (>K:AP_MASTER)
                        }
                
                        (>K:AP_PITCH_LEVELER_ON)
                    }
                    els{
                        (A:AUTOPILOT MASTER, bool) !
                        if{
                            (>K:AP_MASTER)
                        }
                
                        (>K:AP_ALT_HOLD)
                    }
                }
                

                This duplicates the airplane’s ALT-button logic rather than merely sending a generic altitude-hold event.

                AP Disconnect - cancel everything with one press

                The reason the suggested disconnect assignment requires two presses is that the Commander’s cockpit behavior uses an if/else arrangement:

                First press disconnects the autopilot.
                A later press cancels the remaining flight-director modes.

                For a hardware disconnect button, this version checks and cancels both during the same press:

                (A:AUTOPILOT MASTER, bool)
                if{
                    (>K:AP_MASTER)
                }
                
                (A:AUTOPILOT FLIGHT DIRECTOR ACTIVE, bool)
                if{
                    (>K:TOGGLE_FLIGHT_DIRECTOR)
                }
                

                That gives the expected Commander behavior: one press disconnects the autopilot and removes the remaining active modes.

                RhinozherousR Offline
                RhinozherousR Offline
                Rhinozherous
                wrote last edited by
                #9

                @fredgarven Thank you a lot! Will trie it asap in AAOhs.

                1 Reply Last reply
                0
                • M Online
                  M Online
                  MatzeH84
                  wrote last edited by
                  #10

                  Yeah, ChatGPT or Gemini save the day. It has become really easy once you figured out the correct variables.

                  1 Reply Last reply
                  0
                  • RhinozherousR Offline
                    RhinozherousR Offline
                    Rhinozherous
                    wrote last edited by
                    #11

                    @fredgarven Your scripts worked like a charm, thank you again!

                    1 Reply Last reply
                    0
                    • F Online
                      F Online
                      fredgarven
                      wrote last edited by fredgarven
                      #12

                      I'm glad to hear the autopilot scripts worked.

                      I am still finishing my complete Commander 114 MobiFlight project, so I am not ready to share the full project file yet. However, here is a bonus for anyone using the Honeycomb Bravo Throttle Quadrant.

                      I configured the Bravo’s left selector knob to determine what the right knob controls. MobiFlight has a guide explaining how to configure the selector variable and use it as a precondition:

                      https://docs.mobiflight.com/guides/honeycomb-bravo-selector-knob

                      These are the selector values I am using:

                      ALT = 0
                      VS  = 1
                      HDG = 2
                      CRS = 3
                      IAS = 4
                      

                      I repurposed the Bravo’s IAS selector position for the Commander autopilot’s BAR setting.

                      For each right-knob input, add the appropriate Selector value as a MobiFlight-variable precondition. Place the code under On Press and leave On Release blank.

                      ALT SELECTOR

                      Precondition:

                      Selector = 0
                      

                      The altitude control normally moves in 100-foot increments. These versions measure how quickly the right knob is being turned:

                      Slow rotation: 100 feet per click
                      Medium rotation: 500 feet per click
                      Fast rotation: 1,000 feet per click

                      Right Knob - ALT Increase

                      (E:SIMULATION TIME, seconds)
                      (L:MF_ALT_LastIncTime, seconds) -
                      0.08 < if{
                          1000 (>L:MF_ALT_Step, number)
                      }
                      els{
                          (E:SIMULATION TIME, seconds)
                          (L:MF_ALT_LastIncTime, seconds) -
                          0.20 < if{
                              500 (>L:MF_ALT_Step, number)
                          }
                          els{
                              100 (>L:MF_ALT_Step, number)
                          }
                      }
                      
                      (L:var_PreselectedAltitude_10000, number) 10000 *
                      (L:var_PreselectedAltitude_1000, number) 1000 * +
                      (L:var_PreselectedAltitude_100, number) 100 * +
                      (L:MF_ALT_Step, number) +
                      99900 min
                      (>L:MF_ALT_New, number)
                      
                      (L:MF_ALT_New, number)
                      10000 /
                      flr
                      (>L:var_PreselectedAltitude_10000, number)
                      
                      (L:MF_ALT_New, number)
                      10000 %
                      1000 /
                      flr
                      (>L:var_PreselectedAltitude_1000, number)
                      
                      (L:MF_ALT_New, number)
                      1000 %
                      100 /
                      flr
                      (>L:var_PreselectedAltitude_100, number)
                      
                      (E:SIMULATION TIME, seconds)
                      (>L:MF_ALT_LastIncTime, seconds)
                      

                      Right Knob - ALT Decrease

                      (E:SIMULATION TIME, seconds)
                      (L:MF_ALT_LastDecTime, seconds) -
                      0.08 < if{
                          1000 (>L:MF_ALT_Step, number)
                      }
                      els{
                          (E:SIMULATION TIME, seconds)
                          (L:MF_ALT_LastDecTime, seconds) -
                          0.20 < if{
                              500 (>L:MF_ALT_Step, number)
                          }
                          els{
                              100 (>L:MF_ALT_Step, number)
                          }
                      }
                      
                      (L:var_PreselectedAltitude_10000, number) 10000 *
                      (L:var_PreselectedAltitude_1000, number) 1000 * +
                      (L:var_PreselectedAltitude_100, number) 100 * +
                      (L:MF_ALT_Step, number) -
                      0 max
                      (>L:MF_ALT_New, number)
                      
                      (L:MF_ALT_New, number)
                      10000 /
                      flr
                      (>L:var_PreselectedAltitude_10000, number)
                      
                      (L:MF_ALT_New, number)
                      10000 %
                      1000 /
                      flr
                      (>L:var_PreselectedAltitude_1000, number)
                      
                      (L:MF_ALT_New, number)
                      1000 %
                      100 /
                      flr
                      (>L:var_PreselectedAltitude_100, number)
                      
                      (E:SIMULATION TIME, seconds)
                      (>L:MF_ALT_LastDecTime, seconds)
                      

                      This allows precise 100-foot adjustments when turning the knob slowly, while still making it practical to move from zero to normal cruising altitudes quickly.

                      VS SELECTOR

                      Precondition:

                      Selector = 1
                      

                      The Commander stores the selected vertical speed in hundreds of feet per minute. These commands adjust it by 200 feet per minute and limit the selection to plus or minus 1,600 feet per minute.

                      Right Knob - VS Increase

                      (L:var_PreselectedVerticalSpeed, number)
                      2 +
                      16 min
                      (>L:var_PreselectedVerticalSpeed, number)
                      

                      Right Knob - VS Decrease

                      (L:var_PreselectedVerticalSpeed, number)
                      2 -
                      -16 max
                      (>L:var_PreselectedVerticalSpeed, number)
                      

                      BAR SELECTOR

                      I use the Bravo’s IAS selector position for the autopilot barometric setting.

                      Precondition:

                      Selector = 4
                      

                      The Commander stores the BAR setting as three separate digits, so the following code handles carrying and borrowing between them.

                      Right Knob - BAR Increase

                      (L:var_AutopilotBaroCalibration_01, number) 9 < if{
                      
                          (L:var_AutopilotBaroCalibration_01, number) 1 +
                          (>L:var_AutopilotBaroCalibration_01, number)
                      
                      }
                      els{
                      
                          (L:var_AutopilotBaroCalibration_1, number) 9 < if{
                      
                              0 (>L:var_AutopilotBaroCalibration_01, number)
                      
                              (L:var_AutopilotBaroCalibration_1, number) 1 +
                              (>L:var_AutopilotBaroCalibration_1, number)
                      
                          }
                          els{
                      
                              (L:var_AutopilotBaroCalibration_10, number) 9 < if{
                      
                                  0 (>L:var_AutopilotBaroCalibration_01, number)
                                  0 (>L:var_AutopilotBaroCalibration_1, number)
                      
                                  (L:var_AutopilotBaroCalibration_10, number) 1 +
                                  (>L:var_AutopilotBaroCalibration_10, number)
                      
                              }
                      
                          }
                      
                      }
                      

                      Right Knob - BAR Decrease

                      (L:var_AutopilotBaroCalibration_01, number) 0 > if{
                      
                          (L:var_AutopilotBaroCalibration_01, number) 1 -
                          (>L:var_AutopilotBaroCalibration_01, number)
                      
                      }
                      els{
                      
                          (L:var_AutopilotBaroCalibration_1, number) 0 > if{
                      
                              9 (>L:var_AutopilotBaroCalibration_01, number)
                      
                              (L:var_AutopilotBaroCalibration_1, number) 1 -
                              (>L:var_AutopilotBaroCalibration_1, number)
                      
                          }
                          els{
                      
                              (L:var_AutopilotBaroCalibration_10, number) 0 > if{
                      
                                  9 (>L:var_AutopilotBaroCalibration_01, number)
                                  9 (>L:var_AutopilotBaroCalibration_1, number)
                      
                                  (L:var_AutopilotBaroCalibration_10, number) 1 -
                                  (>L:var_AutopilotBaroCalibration_10, number)
                      
                              }
                      
                          }
                      
                      }
                      

                      These are working well for me in MobiFlight with the Honeycomb Bravo. The same aircraft variables should also be usable with other hardware after adapting the device inputs and preconditions.

                      1 Reply Last reply
                      0
                      Reply
                      • Reply as topic
                      Log in to reply
                      • Oldest to Newest
                      • Newest to Oldest
                      • Most Votes


                      • Login

                      • Don't have an account? Register

                      • Login or register to search.
                      • First post
                        Last post
                      0
                      • Categories
                      • Recent
                      • Tags
                      • Popular
                      • Users