Subversion Repositories FlightCtrl

Rev

Rev 1747 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1747 Rev 1757
Line 409... Line 409...
409
   Mess_Integral_Gier += MesswertGier;
409
   Mess_Integral_Gier += MesswertGier;
410
   ErsatzKompass += MesswertGier;
410
   ErsatzKompass += MesswertGier;
411
// Kopplungsanteil  +++++++++++++++++++++++++++++++++++++
411
// Kopplungsanteil  +++++++++++++++++++++++++++++++++++++
Line 412... Line 412...
412
         
412
         
Line 413... Line 413...
413
         
413
         
414
          // if((EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) || (Parameter_UserParam1 > 50)) IntegralFaktor = 0;  // MartinR: zusätzlich
414
          // if((EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) || (Parameter_UserParam1 > 50)) IntegralFaktor = 0;  // MartinR: zusätzlich, wieder deaktiviert wegen Kameraausgleich
415
         
415
         
Line 416... Line 416...
416
      if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV))  // MartinR : so war es
416
      if(!Looping_Nick && !Looping_Roll && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV))  // MartinR : so war es
417
          //if(!Looping_Nick && !Looping_Roll && IntegralFaktor && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) // MartinR: zusätzlich "&& IntegralFaktor"
417
          //if(!Looping_Nick && !Looping_Roll && IntegralFaktor && (EE_Parameter.GlobalConfig & CFG_ACHSENKOPPLUNG_AKTIV)) // MartinR: zusätzlich "&& IntegralFaktor"
418
          // MartinR: Test Kamera-Ausgleich im HH
418
          // MartinR: wieder deaktiviert wegen Kamera-Ausgleich im HH
419
         
419
         
Line 685... Line 685...
685
//############################################################################
685
//############################################################################
686
{
686
{
687
         int pd_ergebnis_nick,pd_ergebnis_roll,tmp_int, tmp_int2;
687
         int pd_ergebnis_nick,pd_ergebnis_roll,tmp_int, tmp_int2;
688
         int GierMischanteil,GasMischanteil;
688
         int GierMischanteil,GasMischanteil;
Line 689... Line 689...
689
         
689
         
Line 690... Line 690...
690
         static long SummeNickHH=0,SummeRollHH=0; // MartinR: Für ACC-HH Umschaltung Prüfen !!!!!!!!!!!!!
690
         static long SummeNickHH=0,SummeRollHH=0;
691
         
691
         
692
     static long sollGier = 0,tmp_long,tmp_long2;
692
     static long sollGier = 0,tmp_long,tmp_long2;
693
     static long IntegralFehlerNick = 0;
693
     static long IntegralFehlerNick = 0;
Line 914... Line 914...
914
                //stick_nick_neutral = stick_nick; //  beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR
914
                //stick_nick_neutral = stick_nick; //  beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR
915
                //stick_roll_neutral = stick_roll; //  beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR
915
                //stick_roll_neutral = stick_roll; //  beim Umschalten auf HH wird derletzte Stickwert als Neutralposition verwendet, MartinR
916
                stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D;
916
                stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D;
917
                stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D;
917
                stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D;
Line 918... Line 918...
918
               
918
               
919
                //StickNick = stick_nick - (GPS_Nick + GPS_Nick2); // MartinR: GPS nur im ACC-Mode wirksam  wohin verschoben ?? Prüfen !!!!!!!!!!!!!!!!!!!!
919
                //StickNick = stick_nick - (GPS_Nick + GPS_Nick2); // MartinR: GPS nur im ACC-Mode wirksam  
920
                //StickRoll = stick_roll - (GPS_Roll + GPS_Roll2); // MartinR: GPS nur im ACC-Mode wirksam
920
                //StickRoll = stick_roll - (GPS_Roll + GPS_Roll2); // MartinR: GPS nur im ACC-Mode wirksam
921
                }
921
                }
922
        /*else          // wenn HH , MartinR
922
        /*else          // wenn HH , MartinR
923
                {
923
                {
924
                //stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; // MartinR: eventuell vor if verschieben
924
                //stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D; // MartinR: eventuell vor if verschieben
925
                //stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; // MartinR: eventuell vor if verschieben
925
                //stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D; // MartinR: eventuell vor if verschieben
926
                //StickNick = stick_nick; // MartinR: GPS nur im ACC-Mode wirksam    wohin verschoben ?? Prüfen !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
926
                //StickNick = stick_nick; // MartinR: GPS nur im ACC-Mode wirksam
927
                //StickRoll = stick_roll; // MartinR: GPS nur im ACC-Mode wirksam
927
                //StickRoll = stick_roll; // MartinR: GPS nur im ACC-Mode wirksam
928
                }
928
                }
929
        */
929
        */
Line 980... Line 980...
980
     ExternHoehenValue =  (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung;
980
     ExternHoehenValue =  (int) ExternControl.Hight * (int)EE_Parameter.Hoehe_Verstaerkung;
981
     if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas;
981
     if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas;
982
    }
982
    }
983
    if(StickGas < 0) StickGas = 0;
983
    if(StickGas < 0) StickGas = 0;
Line 984... Line 984...
984
 
984
 
Line 985... Line 985...
985
        //if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor =  0; // MartinR: so war es, verschoben 
985
        //if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor =  0; // MartinR: so war es, verschoben um code zu sparen 
986
 
986
 
987
    if(abs(StickNick/STICK_GAIN) > MaxStickNick)
987
    if(abs(StickNick/STICK_GAIN) > MaxStickNick)
988
     {
988
     {
Line 1086... Line 1086...
1086
    ZaehlMessungen = 0;
1086
    ZaehlMessungen = 0;
1087
    LageKorrekturNick = 0;
1087
    LageKorrekturNick = 0;
1088
    LageKorrekturRoll = 0;
1088
    LageKorrekturRoll = 0;
1089
  }
1089
  }
Line 1090... Line 1090...
1090
 
1090
 
1091
  if(!IntegralFaktor & (Parameter_UserParam1 < 50) & !(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD)) // MartinR: 
1091
  if((!IntegralFaktor & (Parameter_UserParam1 < 50) & !(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD))    ) // MartinR:
1092
          // nur im Moment des Umschaltens von HH auf ACC erfolgt ein Reset der Integrale, nicht aber bei normalem HH 
1092
          // nur im Moment des Umschaltens von HH auf ACC erfolgt ein Reset der Integrale, nicht aber bei normalem HH 
1093
          // um einen im HH-Mode eventuell schwindelig geflogenen ACC_Mode zu resetten!
1093
          // um einen im HH-Mode eventuell schwindelig geflogenen ACC_Mode zu resetten!
1094
          // bis zur Umschaltung werden die Integrale für den Kameraausgleich verwendet 
1094
          // bis zur Umschaltung werden die Integrale für den Kameraausgleich verwendet 
Line 1105... Line 1105...
1105
 
1105
 
1106
        if((EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) || (Parameter_UserParam1 > 50)) IntegralFaktor = 0; // MartinR geändert und verschoben
1106
        if((EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) || (Parameter_UserParam1 > 50)) IntegralFaktor = 0; // MartinR geändert und verschoben
Line 1107... Line 1107...
1107
          else IntegralFaktor = Parameter_Gyro_I; // MartinR: verschoben um Code zu sparen
1107
          else IntegralFaktor = Parameter_Gyro_I; // MartinR: verschoben um Code zu sparen
1108
 
1108
 
1109
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1109
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Line 1110... Line 1110...
1110
    if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin)) // MartinR: so war es, für Test wieder aktiviert
1110
    if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin)) // MartinR: so war es, wegen Kameraausgleich wieder aktiviert
1111
  //if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin) && IntegralFaktor) // MartinR: "&& IntegralFaktor" hinzugefügt 
1111
  //if(!Looping_Nick && !Looping_Roll && (Aktuell_az > 512 || MotorenEin) && IntegralFaktor) // MartinR: "&& IntegralFaktor" hinzugefügt 
1112
 
1112
 
Line 1645... Line 1645...
1645
                                // ------------------------- D-Part 1: Vario Meter ----------------------------
1645
                                // ------------------------- D-Part 1: Vario Meter ----------------------------
1646
                                tmp_int = VarioMeter / 8;
1646
                                tmp_int = VarioMeter / 8;
1647
                                LIMIT_MIN_MAX(tmp_int, -127, 128);     
1647
                                LIMIT_MIN_MAX(tmp_int, -127, 128);     
1648
                                tmp_int = (tmp_int * (long)Parameter_Luftdruck_D) / 4L; // scale to d-gain parameter
1648
                                tmp_int = (tmp_int * (long)Parameter_Luftdruck_D) / 4L; // scale to d-gain parameter
1649
                                LIMIT_MIN_MAX(tmp_int,-64 * STICK_GAIN, 64 * STICK_GAIN);
1649
                                LIMIT_MIN_MAX(tmp_int,-64 * STICK_GAIN, 64 * STICK_GAIN);
-
 
1650
                                /* // MartinR: so war es Anfang
1650
                                if(HeightTrimmingFlag)  tmp_int /= 4; // reduce d-part while trimming setpoint
1651
                                if(HeightTrimmingFlag)  tmp_int /= 4; // reduce d-part while trimming setpoint
1651
                                else
1652
                                else
1652
                                if(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) tmp_int /= 8; // reduce d-part in "Deckel" mode
1653
                                if(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT) tmp_int /= 8; // reduce d-part in "Deckel" mode
-
 
1654
                                */ // MartinR: so war es Anfang
-
 
1655
                                tmp_int /= 4; // MartinR: geändert
1653
                                GasReduction += tmp_int;
1656
                                GasReduction += tmp_int;
1654
                        } // EOF no baro range expanding
1657
                        } // EOF no baro range expanding
1655
                        // ------------------------ D-Part 2: ACC-Z Integral  ------------------------
1658
                        // ------------------------ D-Part 2: ACC-Z Integral  ------------------------
1656
            if(Parameter_Hoehe_ACC_Wirkung)
1659
            if(Parameter_Hoehe_ACC_Wirkung)
1657
                         {
1660
                         {
Line 1705... Line 1708...
1705
            if(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT)
1708
            if(EE_Parameter.ExtraConfig & CFG2_HEIGHT_LIMIT)
1706
                        {  // old version
1709
                        {  // old version
1707
                                LIMIT_MAX(FilterHCGas, GasMischanteil); // nicht mehr als Gas
1710
                                LIMIT_MAX(FilterHCGas, GasMischanteil); // nicht mehr als Gas
1708
                                GasMischanteil = FilterHCGas;
1711
                                GasMischanteil = FilterHCGas;
1709
                        }
1712
                        }
1710
                        else GasMischanteil = FilterHCGas + (GasMischanteil - HoverGas) / 4; // only in Vario-Mode
1713
                        //else GasMischanteil = FilterHCGas + (GasMischanteil - HoverGas) / 4; // only in Vario-Mode // MartinR: so war es
-
 
1714
                        else GasMischanteil = FilterHCGas ; // MartinR: geändert, um  Überschwinger bei Höhenänderung zu verringern
1711
                  }
1715
                  }
1712
                }// EOF height control active
1716
                }// EOF height control active
1713
                else // HC not active
1717
                else // HC not active
1714
                {
1718
                {
1715
                        //update hoover gas stick value when HC is not active
1719
                        //update hoover gas stick value when HC is not active