Subversion Repositories FlightCtrl

Rev

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

Rev 498 Rev 499
Line 107... Line 107...
107
unsigned char Parameter_I_Faktor = 10;          // Wert : 1-20
107
unsigned char Parameter_I_Faktor = 10;          // Wert : 1-20
108
unsigned char Parameter_UserParam1 = 0;
108
unsigned char Parameter_UserParam1 = 0;
109
unsigned char Parameter_UserParam2 = 0;
109
unsigned char Parameter_UserParam2 = 0;
110
unsigned char Parameter_UserParam3 = 0;
110
unsigned char Parameter_UserParam3 = 0;
111
unsigned char Parameter_UserParam4 = 0;
111
unsigned char Parameter_UserParam4 = 0;
-
 
112
unsigned char Parameter_UserParam5 = 0;
-
 
113
unsigned char Parameter_UserParam6 = 0;
-
 
114
unsigned char Parameter_UserParam7 = 0;
-
 
115
unsigned char Parameter_UserParam8 = 0;
112
unsigned char Parameter_ServoNickControl = 100;
116
unsigned char Parameter_ServoNickControl = 100;
113
unsigned char Parameter_LoopGasLimit = 70;
117
unsigned char Parameter_LoopGasLimit = 70;
114
unsigned char Parameter_AchsKopplung1 = 0;
118
unsigned char Parameter_AchsKopplung1 = 0;
115
unsigned char Parameter_AchsGegenKopplung1 = 0;
119
unsigned char Parameter_AchsGegenKopplung1 = 0;
-
 
120
unsigned char Parameter_DynamicStability = 100;
116
struct mk_param_struct EE_Parameter;
121
struct mk_param_struct EE_Parameter;
117
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20;
122
signed int ExternStickNick = 0,ExternStickRoll = 0,ExternStickGier = 0, ExternHoehenValue = -20;
Line 118... Line 123...
118
 
123
 
119
void Piep(unsigned char Anzahl)
124
void Piep(unsigned char Anzahl)
Line 367... Line 372...
367
 CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255);
372
 CHK_POTI(Parameter_I_Faktor,EE_Parameter.I_Faktor,0,255);
368
 CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255);
373
 CHK_POTI(Parameter_UserParam1,EE_Parameter.UserParam1,0,255);
369
 CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255);
374
 CHK_POTI(Parameter_UserParam2,EE_Parameter.UserParam2,0,255);
370
 CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255);
375
 CHK_POTI(Parameter_UserParam3,EE_Parameter.UserParam3,0,255);
371
 CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255);
376
 CHK_POTI(Parameter_UserParam4,EE_Parameter.UserParam4,0,255);
-
 
377
 CHK_POTI(Parameter_UserParam5,EE_Parameter.UserParam5,0,255);
-
 
378
 CHK_POTI(Parameter_UserParam6,EE_Parameter.UserParam6,0,255);
-
 
379
 CHK_POTI(Parameter_UserParam7,EE_Parameter.UserParam7,0,255);
-
 
380
 CHK_POTI(Parameter_UserParam8,EE_Parameter.UserParam8,0,255);
372
 CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255);
381
 CHK_POTI(Parameter_ServoNickControl,EE_Parameter.ServoNickControl,0,255);
373
 CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255);
382
 CHK_POTI(Parameter_LoopGasLimit,EE_Parameter.LoopGasLimit,0,255);
374
 CHK_POTI(Parameter_AchsKopplung1,    EE_Parameter.AchsKopplung1,0,255);
383
 CHK_POTI(Parameter_AchsKopplung1,    EE_Parameter.AchsKopplung1,0,255);
375
 CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255);
384
 CHK_POTI(Parameter_AchsGegenKopplung1,EE_Parameter.AchsGegenKopplung1,0,255);
-
 
385
 CHK_POTI(Parameter_DynamicStability,EE_Parameter.DynamicStability,0,255);
Line 376... Line 386...
376
 
386
 
377
 Ki = (float) Parameter_I_Faktor * 0.0001;
387
 Ki = (float) Parameter_I_Faktor * 0.0001;
378
 MAX_GAS = EE_Parameter.Gas_Max;
388
 MAX_GAS = EE_Parameter.Gas_Max;
379
 MIN_GAS = EE_Parameter.Gas_Min;
389
 MIN_GAS = EE_Parameter.Gas_Min;
Line 789... Line 799...
789
//             Mess_IntegralNick -= ausgleichNick;
799
//             Mess_IntegralNick -= ausgleichNick;
790
            }
800
            }
791
           else last_n_n = 1;
801
           else last_n_n = 1;
792
         } else  last_n_n = 0;
802
         } else  last_n_n = 0;
793
        } else cnt = 0;
803
        } else cnt = 0;
794
        if(cnt > 4) cnt = 4;
-
 
795
//        if(cnt > Poti2 / 40) cnt =  Poti2 / 40;
804
        if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
796
        if(IntegralFehlerNick >  FEHLER_LIMIT)   AdNeutralNick += cnt;
805
        if(IntegralFehlerNick >  FEHLER_LIMIT)   AdNeutralNick += cnt;
797
        if(IntegralFehlerNick < -FEHLER_LIMIT)   AdNeutralNick -= cnt;
806
        if(IntegralFehlerNick < -FEHLER_LIMIT)   AdNeutralNick -= cnt;
Line 798... Line 807...
798
 
807
 
799
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++
808
// Roll +++++++++++++++++++++++++++++++++++++++++++++++++
Line 829... Line 838...
829
        } else
838
        } else
830
        {
839
        {
831
         cnt = 0;
840
         cnt = 0;
832
        }
841
        }
833
DebugOut.Analog[27] = ausgleichRoll;
842
DebugOut.Analog[27] = ausgleichRoll;
834
        if(cnt > 4) cnt = 4;
-
 
835
//        if(cnt > Poti2 / 40) cnt =  Poti2 / 40;
843
        if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
836
//if(cnt > 1) beeptime = 50;
844
//if(cnt > 1) beeptime = 50;
837
        if(IntegralFehlerRoll >  FEHLER_LIMIT)   AdNeutralRoll += cnt;
845
        if(IntegralFehlerRoll >  FEHLER_LIMIT)   AdNeutralRoll += cnt;
838
        if(IntegralFehlerRoll < -FEHLER_LIMIT)   AdNeutralRoll -= cnt;
846
        if(IntegralFehlerRoll < -FEHLER_LIMIT)   AdNeutralRoll -= cnt;
839
DebugOut.Analog[23] = AdNeutralNick;//10*(AdNeutralNick - StartNeutralNick);
847
DebugOut.Analog[23] = AdNeutralNick;//10*(AdNeutralNick - StartNeutralNick);
840
DebugOut.Analog[24] = 10*(AdNeutralRoll - StartNeutralRoll);
848
DebugOut.Analog[24] = 10*(AdNeutralRoll - StartNeutralRoll);
Line 1036... Line 1044...
1036
    if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1;
1044
    if(SummeNick > 0) SummeNick-= (abs(SummeNick)/256 + 1); else SummeNick += abs(SummeNick)/256 + 1;
1037
    if(SummeNick >  16000) SummeNick =  16000;
1045
    if(SummeNick >  16000) SummeNick =  16000;
1038
    if(SummeNick < -16000) SummeNick = -16000;
1046
    if(SummeNick < -16000) SummeNick = -16000;
1039
    pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick                                      
1047
    pd_ergebnis = DiffNick + Ki * SummeNick; // PI-Regler für Nick                                      
1040
    // Motor Vorn
1048
    // Motor Vorn
1041
#define MUL  2
1049
//#define MUL  2
1042
    if(pd_ergebnis >  MUL * (GasMischanteil + abs(GierMischanteil))) pd_ergebnis =  MUL * (GasMischanteil + abs(GierMischanteil));
1050
//    if(pd_ergebnis >  MUL * (GasMischanteil + abs(GierMischanteil))) pd_ergebnis =  MUL * (GasMischanteil + abs(GierMischanteil)); 
1043
    if(pd_ergebnis < -MUL * (GasMischanteil + abs(GierMischanteil))) pd_ergebnis = -MUL * (GasMischanteil + abs(GierMischanteil));
1051
//    if(pd_ergebnis < -MUL * (GasMischanteil + abs(GierMischanteil))) pd_ergebnis = -MUL * (GasMischanteil + abs(GierMischanteil)); 
-
 
1052
    tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
-
 
1053
    if(pd_ergebnis >  tmp_int) pd_ergebnis =  tmp_int;
-
 
1054
    if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int;
Line 1044... Line 1055...
1044
 
1055
 
1045
    motorwert = GasMischanteil + pd_ergebnis + GierMischanteil;   // Mischer
1056
    motorwert = GasMischanteil + pd_ergebnis + GierMischanteil;   // Mischer
1046
        if ((motorwert < 0)) motorwert = 0;
1057
        if ((motorwert < 0)) motorwert = 0;
1047
        else if(motorwert > MAX_GAS)        motorwert = MAX_GAS;
1058
        else if(motorwert > MAX_GAS)        motorwert = MAX_GAS;
Line 1061... Line 1072...
1061
    else                 SummeRoll += DiffRoll;  // I-Anteil bei HH
1072
    else                 SummeRoll += DiffRoll;  // I-Anteil bei HH
1062
    if(SummeRoll > 0) SummeRoll-= (abs(SummeRoll)/256 + 1); else SummeRoll += abs(SummeRoll)/256 + 1;
1073
    if(SummeRoll > 0) SummeRoll-= (abs(SummeRoll)/256 + 1); else SummeRoll += abs(SummeRoll)/256 + 1;
1063
    if(SummeRoll >  16000) SummeRoll =  16000;
1074
    if(SummeRoll >  16000) SummeRoll =  16000;
1064
    if(SummeRoll < -16000) SummeRoll = -16000;
1075
    if(SummeRoll < -16000) SummeRoll = -16000;
1065
    pd_ergebnis = DiffRoll + Ki * SummeRoll;    // PI-Regler für Roll
1076
    pd_ergebnis = DiffRoll + Ki * SummeRoll;    // PI-Regler für Roll
1066
    if(pd_ergebnis >  MUL * (GasMischanteil + abs(GierMischanteil))) pd_ergebnis =  MUL * (GasMischanteil + abs(GierMischanteil));
1077
    tmp_int = (long)((long)Parameter_DynamicStability * (long)(GasMischanteil + abs(GierMischanteil)/2)) / 64;
-
 
1078
    if(pd_ergebnis >  tmp_int) pd_ergebnis =  tmp_int;
1067
    if(pd_ergebnis < -MUL * (GasMischanteil + abs(GierMischanteil))) pd_ergebnis = -MUL * (GasMischanteil + abs(GierMischanteil));
1079
    if(pd_ergebnis < -tmp_int) pd_ergebnis = -tmp_int;
1068
    // Motor Links
1080
    // Motor Links
1069
    motorwert = GasMischanteil + pd_ergebnis - GierMischanteil;
1081
    motorwert = GasMischanteil + pd_ergebnis - GierMischanteil;
1070
        if ((motorwert < 0)) motorwert = 0;
1082
        if ((motorwert < 0)) motorwert = 0;
1071
        else if(motorwert > MAX_GAS)            motorwert = MAX_GAS;
1083
        else if(motorwert > MAX_GAS)            motorwert = MAX_GAS;
1072
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;
1084
        if (motorwert < MIN_GAS)            motorwert = MIN_GAS;