Subversion Repositories FlightCtrl

Rev

Rev 1705 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1705 Rev 1707
Line 682... Line 682...
682
                sollGier = 0;
682
                sollGier = 0;
683
                Mess_Integral_Gier = 0;
683
                Mess_Integral_Gier = 0;
684
                if(modell_fliegt == 250)
684
                if(modell_fliegt == 250)
685
                 {
685
                 {
686
                  NeueKompassRichtungMerken = 1;
686
                  NeueKompassRichtungMerken = 1;
687
//                  Mess_Integral_Gier2 = 0;
-
 
688
                 }
687
                 }
689
                } else FCFlags |= FCFLAG_FLY;
688
                } else FCFlags |= FCFLAG_FLY;
Line 690... Line 689...
690
 
689
 
691
            if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
690
            if((PPM_in[EE_Parameter.Kanalbelegung[K_GAS]] > 80) && MotorenEin == 0)
Line 709... Line 708...
709
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
708
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] < 70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 3;
710
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
709
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] > 70) setting = 4;
711
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
710
                         if(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] <-70 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < 70) setting = 5;
712
                         SetActiveParamSet(setting);  // aktiven Datensatz merken
711
                         SetActiveParamSet(setting);  // aktiven Datensatz merken
713
                        }
712
                        }
714
//                        else
-
 
715
                         if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
713
                         if(abs(PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]]) < 30 && PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] < -70)
716
                          {
714
                          {
717
                           WinkelOut.CalcState = 1;
715
                           WinkelOut.CalcState = 1;
718
                           beeptime = 1000;
716
                           beeptime = 1000;
719
                          }
717
                          }
Line 820... Line 818...
820
    stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4;
818
    stick_nick = (stick_nick * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_P) / 4;
821
    stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D;
819
    stick_nick += PPM_diff[EE_Parameter.Kanalbelegung[K_NICK]] * EE_Parameter.Stick_D;
822
    stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4;
820
    stick_roll = (stick_roll * 3 + PPM_in[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_P) / 4;
823
    stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D;
821
    stick_roll += PPM_diff[EE_Parameter.Kanalbelegung[K_ROLL]] * EE_Parameter.Stick_D;
Line 824... Line -...
824
 
-
 
-
 
822
 
-
 
823
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
 
824
// CareFree und freie Wahl der vorderen Richtung
825
 
825
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Line 826... Line 826...
826
signed char sintab[31] = { 0, 2, 4, 6, 7, 8, 8, 8, 7, 6, 4, 2, 0, -2, -4, -6, -7, -8, -8, -8, -7, -6, -4, -2, 0, 2, 4, 6, 7, 8, 8};
826
signed char sintab[31] = { 0, 2, 4, 6, 7, 8, 8, 8, 7, 6, 4, 2, 0, -2, -4, -6, -7, -8, -8, -8, -7, -6, -4, -2, 0, 2, 4, 6, 7, 8, 8};
827
 
827
 
828
if(CareFree)
828
if(CareFree)
Line 867... Line 867...
867
     if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas;
867
     if(ExternControl.Gas < StickGas) StickGas = ExternControl.Gas;
868
    }
868
    }
869
    if(StickGas < 0) StickGas = 0;
869
    if(StickGas < 0) StickGas = 0;
Line 870... Line 870...
870
 
870
 
871
    if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor =  0;
-
 
872
    //if(GyroFaktor < 0) GyroFaktor = 0;
-
 
Line 873... Line 871...
873
    //if(IntegralFaktor < 0) IntegralFaktor = 0;
871
    if(EE_Parameter.GlobalConfig & CFG_HEADING_HOLD) IntegralFaktor =  0;
874
 
872
 
875
    if(abs(StickNick/STICK_GAIN) > MaxStickNick)
873
    if(abs(StickNick/STICK_GAIN) > MaxStickNick)
876
     {
874
     {
Line 1038... Line 1036...
1038
    MittelIntegralNick  /= ABGLEICH_ANZAHL;
1036
    MittelIntegralNick  /= ABGLEICH_ANZAHL;
1039
    MittelIntegralRoll  /= ABGLEICH_ANZAHL;
1037
    MittelIntegralRoll  /= ABGLEICH_ANZAHL;
1040
        IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL;
1038
        IntegralAccNick = (EE_Parameter.GyroAccFaktor * IntegralAccNick) / ABGLEICH_ANZAHL;
1041
        IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL;
1039
        IntegralAccRoll = (EE_Parameter.GyroAccFaktor * IntegralAccRoll) / ABGLEICH_ANZAHL;
1042
    IntegralAccZ    = IntegralAccZ / ABGLEICH_ANZAHL;
1040
    IntegralAccZ    = IntegralAccZ / ABGLEICH_ANZAHL;
1043
#define MAX_I 0//(Poti2/10)
1041
#define MAX_I 0
1044
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++
1042
// Nick ++++++++++++++++++++++++++++++++++++++++++++++++
1045
    IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick);
1043
    IntegralFehlerNick = (long)(MittelIntegralNick - (long)IntegralAccNick);
1046
    ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich;
1044
    ausgleichNick = IntegralFehlerNick / EE_Parameter.GyroAccAbgleich;
1047
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++
1045
// Roll ++++++++++++++++++++++++++++++++++++++++++++++++
1048
    IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll);
1046
    IntegralFehlerRoll = (long)(MittelIntegralRoll - (long)IntegralAccRoll);
Line 1062... Line 1060...
1062
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1060
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1063
    MittelIntegralNick2 /= ABGLEICH_ANZAHL;
1061
    MittelIntegralNick2 /= ABGLEICH_ANZAHL;
1064
    MittelIntegralRoll2 /= ABGLEICH_ANZAHL;
1062
    MittelIntegralRoll2 /= ABGLEICH_ANZAHL;
1065
    tmp_long  = IntegralNick2 - IntegralNick;
1063
    tmp_long  = IntegralNick2 - IntegralNick;
1066
    tmp_long2 = IntegralRoll2 - IntegralRoll;
1064
    tmp_long2 = IntegralRoll2 - IntegralRoll;
1067
    //DebugOut.Analog[25] = MittelIntegralRoll2 / 26;
-
 
Line 1068... Line 1065...
1068
 
1065
 
1069
    IntegralFehlerNick = tmp_long;
1066
    IntegralFehlerNick = tmp_long;
1070
    IntegralFehlerRoll = tmp_long2;
1067
    IntegralFehlerRoll = tmp_long2;
1071
    Mess_IntegralNick2 -= IntegralFehlerNick;
1068
    Mess_IntegralNick2 -= IntegralFehlerNick;