Subversion Repositories FlightCtrl

Rev

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

Rev 846 Rev 847
Line 882... Line 882...
882
             if(ausgleichNick < -5000) ausgleichNick = -5000;
882
             if(ausgleichNick < -5000) ausgleichNick = -5000;
883
             LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL;
883
             LageKorrekturNick += ausgleichNick / ABGLEICH_ANZAHL;
884
            }
884
            }
885
           else last_n_n = 1;
885
           else last_n_n = 1;
886
         } else  last_n_n = 0;
886
         } else  last_n_n = 0;
-
 
887
        }
-
 
888
        else
-
 
889
        {
887
        } else cnt = 0;
890
         cnt = 0;
-
 
891
         KompassSignalSchlecht = 500;
-
 
892
        }
888
        if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
893
        if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
889
        if(IntegralFehlerNick >  FEHLER_LIMIT)   AdNeutralNick += cnt;
894
        if(IntegralFehlerNick >  FEHLER_LIMIT)   AdNeutralNick += cnt;
890
        if(IntegralFehlerNick < -FEHLER_LIMIT)   AdNeutralNick -= cnt;
895
        if(IntegralFehlerNick < -FEHLER_LIMIT)   AdNeutralNick -= cnt;
Line 891... Line 896...
891
 
896
 
Line 918... Line 923...
918
           else last_r_n = 1;
923
           else last_r_n = 1;
919
         } else  last_r_n = 0;
924
         } else  last_r_n = 0;
920
        } else
925
        } else
921
        {
926
        {
922
         cnt = 0;
927
         cnt = 0;
-
 
928
         KompassSignalSchlecht = 500;
923
        }
929
        }
Line 924... Line 930...
924
 
930
 
925
        if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
931
        if(cnt > EE_Parameter.Driftkomp) cnt = EE_Parameter.Driftkomp;
926
        if(IntegralFehlerRoll >  FEHLER_LIMIT)   AdNeutralRoll += cnt;
932
        if(IntegralFehlerRoll >  FEHLER_LIMIT)   AdNeutralRoll += cnt;
Line 954... Line 960...
954
 
960
 
955
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
961
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
956
//  Gieren
962
//  Gieren
957
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
963
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
958
//    if(GasMischanteil < 35) { if(StickGier > 10) StickGier = 10; else if(StickGier < -10) StickGier = -10;};
964
//    if(GasMischanteil < 35) { if(StickGier > 10) StickGier = 10; else if(StickGier < -10) StickGier = -10;};
959
    if(abs(StickGier) > 20) // war 35 
965
    if(abs(StickGier) > 15) // war 35 
960
     {
966
     {
961
      if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX))
967
      if(!(EE_Parameter.GlobalConfig & CFG_KOMPASS_FIX))
962
       {
968
       {
963
         NeueKompassRichtungMerken = 1;
969
         NeueKompassRichtungMerken = 1;
Line 978... Line 984...
978
//DebugOut.Analog[29] = (MaxStickNick + MaxStickRoll);
984
//DebugOut.Analog[29] = (MaxStickNick + MaxStickRoll);
Line 979... Line 985...
979
 
985
 
980
    if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV))
986
    if(KompassValue && (EE_Parameter.GlobalConfig & CFG_KOMPASS_AKTIV))
981
     {
987
     {
982
       int w,v,r,fehler,korrektur;
-
 
983
       static int KompassSignalSchlecht = 0;
988
       int w,v,r,fehler,korrektur;
984
       w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
989
       w = abs(IntegralNick /512); // mit zunehmender Neigung den Einfluss drosseln
985
       v = abs(IntegralRoll /512);
990
       v = abs(IntegralRoll /512);
986
       if(v > w) w = v; // grösste Neigung ermitteln
991
       if(v > w) w = v; // grösste Neigung ermitteln
987
       korrektur = w / 8 + 1;
992
       korrektur = w / 8 + 1;
988
       if(w < 25 && NeueKompassRichtungMerken && !KompassSignalSchlecht)    
993
       if(w < 25 && NeueKompassRichtungMerken && !KompassSignalSchlecht)    
-
 
994
        {
989
        {
995
         beeptime = 200;
-
 
996
//         KompassStartwert = KompassValue;
990
         KompassStartwert = KompassValue;
997
         KompassStartwert = (ErsatzKompass/GIER_GRAD_FAKTOR);
991
         NeueKompassRichtungMerken = 0;
998
         NeueKompassRichtungMerken = 0;
992
        }
-
 
993
 
999
        }
994
       fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180;
1000
       fehler = ((540 + KompassValue - (ErsatzKompass/GIER_GRAD_FAKTOR)) % 360) - 180;
995
       ErsatzKompass += (fehler * 8) / korrektur;
1001
       ErsatzKompass += (fehler * 8) / korrektur;
996
       w = (w * Parameter_KompassWirkung) / 64;           // auf die Wirkung normieren
1002
       w = (w * Parameter_KompassWirkung) / 64;           // auf die Wirkung normieren
997
       w = Parameter_KompassWirkung - w;                  // Wirkung ggf drosseln
1003
       w = Parameter_KompassWirkung - w;                  // Wirkung ggf drosseln
998
       if(w > 0)
1004
       if(w > 0)
999
        {
1005
        {
1000
          if(!KompassSignalSchlecht)
1006
          if(!KompassSignalSchlecht)
1001
          {
1007
          {
1002
           GierGyroFehler += fehler;
1008
           GierGyroFehler += fehler;
-
 
1009
           v = 64 + ((MaxStickNick + MaxStickRoll)) / 8;  
1003
           v = 64 + ((MaxStickNick + MaxStickRoll)) / 8;  
1010
           r = ((540 + (ErsatzKompass/GIER_GRAD_FAKTOR) - KompassStartwert) % 360) - 180;
1004
           r = KompassRichtung;
1011
//           r = KompassRichtung;
1005
           v = (r * w) / v;  // nach Kompass ausrichten
1012
           v = (r * w) / v;  // nach Kompass ausrichten
1006
           w = 3 * Parameter_KompassWirkung;
1013
           w = 3 * Parameter_KompassWirkung;
1007
           if(v > w) v = w; // Begrenzen
1014
           if(v > w) v = w; // Begrenzen
1008
           else
1015
           else
1009
           if(v < -w) v = -w;
1016
           if(v < -w) v = -w;
1010
           Mess_Integral_Gier += v;
1017
           Mess_Integral_Gier += v;
1011
          }
1018
          }
1012
          if(KompassSignalSchlecht) KompassSignalSchlecht--;
1019
          if(KompassSignalSchlecht) KompassSignalSchlecht--;
1013
        }  
1020
        }  
-
 
1021
        else KompassSignalSchlecht = 250; // so lange das Signal taub stellen --> ca. 0,5 sek
1014
        else KompassSignalSchlecht = 250; // so lange das Signal taub stellen --> ca. 0,5 sek
1022
       
1015
     }
1023
     }
Line 1016... Line 1024...
1016
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
1024
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++                
1017
 
1025