fork

Dependencies:   mbed

Fork of LG by igor Apu

Revision:
211:ac8251b067d2
Parent:
210:b02fa166315d
Child:
214:4c70e452c491
--- a/vibro.c	Mon Apr 24 05:43:54 2017 +0000
+++ b/vibro.c	Mon Jul 03 05:50:08 2017 +0000
@@ -55,7 +55,7 @@
       PeriodCount=0;//сбрасываем таймер
       /*   sprintf((Time),"%d   %d    %d\r\n", Gyro.AmpN1, Gyro.AmpN2-Gyro.AmpN1,  Gyro.AmpPer);
          WriteCon(Time);*/
-         
+    //Gyro.AmpPerDel=(Gyro.AmpPer*100)/Gyro.AmpPerDel;   
     if(Cheng_AMP_Flag==0) 
       { 
        if((Gyro.AmpPer+Gyro.AmpPerDel)>90)
@@ -100,7 +100,7 @@
 { 
 
     int temp=0;
-  
+    int LowDZ,HiDZ;
    	Gyro.CaunPlus = CaunAddPlus;//амплитуда по модулю из востановленного синиуса Buff_Restored_sin
    // Gyro.CaunPlus = Gyro.CaunPlusReper;
 	CaunAddPlus = 0;
@@ -117,8 +117,8 @@
 	}
 	else
 	{   
-	    sprintf((Time)," %d   %d   %d\r\n",Gyro.F_ras,  Gyro.MaxAmp,  Gyro.AmpTarget/((Gyro.Frq)>>16));
-        WriteCon(Time);
+	 /*   sprintf((Time)," %d   %d   %d\r\n",Gyro.F_ras,  Gyro.MaxAmp,  Gyro.AmpTarget/((Gyro.Frq)>>16));
+        WriteCon(Time);*/
 		Gyro.F_rasAdd += Gyro.MaxAmp/32*Gyro.FrqHZ/40;
 		Gyro.F_ras=Gyro.F_rasAdd>>8;
 		Gyro.F_rasAdd=0;
@@ -131,7 +131,18 @@
   	//расчет максимальной амплитуды из востановленного синуса р-р.
   	temp=(int)(((Gyro.MaxAmp -Gyro.AmpTarget/((Gyro.Frq)>>16)) * Gyro.AmpSpeed));
   	temp=temp>>6;
-    Gyro.Amp   -= temp; // расчет амплитуды ВП с учетом разници
+    LowDZ	=	((Gyro.AmpSpeed<<3)*(-1));
+    HiDZ	=	(Gyro.AmpSpeed<<3);
+     if((temp<LowDZ)||(temp>HiDZ))
+     { 	/* sprintf((Time)," %d   %d\r\n",Gyro.MaxAmp, temp);
+         WriteCon(Time);*/
+    	Gyro.Amp   -= temp; // расчет амплитуды ВП с учетом разници
+     }
+     else {
+     	/* 	 sprintf((Time),"not regul\r\n");
+         WriteCon(Time);
+     	*/
+     	}
   		if((Gyro.Amp>>16) > Gyro.AmpPerMax)   {Gyro.Amp = (Gyro.AmpPerMax << 16);}   // временное ограничение роста амплитуды ВП в случае неподоженного гироскопа//////////
  		if((Gyro.Amp>>16) < Gyro.AmpPerMin)   {Gyro.Amp = (Gyro.AmpPerMin << 16);}  // временное ограничение роста амплитуды ВП в случае неподоженного гироскопа//////////
     Gyro.AmpPer = Gyro.Amp>>16; //приведение амплитуды ВП к виду 0%-100%
@@ -181,35 +192,23 @@
    
     if (Spi.ADC_NewData     == 1) {ADS_Acum();								 	}   // был приход новых данных по ацп сдесь сделать обработку информации и подготовку для выдачи делается 1 раз за вибро
 	if (Gyro.ADF_NewData    == 1) {Gyro.ADF_NewData = 0;                    	}   // был приход новых данных После быстрого фильтра AD	
-	
-	
-	
-	/*if (Gyro.ADS_NewData    == 1) 
-	{	Gyro.ADS_NewData = 0; 
-		switch(Gyro.LogPLC) {
-        case 0:     PlcRegul();    break;    
-	    case 1:     PlcRegul();    break;
-	    case 2:     ShowMod();     break;
-	    }
-	}*/// был приход новых данных После Медленного фильтра AD (гдето раз в 0.63 секунды )//регулировка периметра.
- 
- 
- 
     if (Gyro.VibroFrqRegulF == 1) {Gyro.VibroFrqRegulF = 0;	 VibroFrqRegul();	}	// Регулеровка частоты виброподвеса    
     if (Gyro.VibroAMPRegulF == 1) 
     {
     	Gyro.VibroAMPRegulF = 0;	
     	VibroAMPRegul(); 
-    	if(!MODFlag)PLCRegul(); 
     	
+    	if( Gyro.LG_Type==0)
+    	{
+    		if(!MODFlag)PLCRegul();   
+    	} 	
+    	if(Gyro.LG_Type==1)
+    	{  
+    	 switch(Gyro.PLCDelay) {
+          case 0:PLCRegul();break;
+          }
+    		  	  HFORegul();
+    	} 
    	}	// Регулеровка Амплитуды виброподвеса
     if (Gyro.VibroNoiseF    == 1) {Gyro.VibroNoiseF = 0;  OLDCalcAmpN();}
- /*   { 
-      switch(Gyro.flag) {
-  	   case 1: Gyro.VibroNoiseF = 0; OLDCalcAmpN();                             break;
-       case 2: Gyro.AmpMin =3;Gyro.AmpTD =10;Gyro.VibroNoiseF = 0;Calc2AmpN();  break;
-       case 3: Gyro.AmpMin =1;Gyro.AmpTD =10;Gyro.VibroNoiseF = 0;CalcAmpD();   break; 
-	  }
-    }	 */// регулеровка ошумления, наверно нужно объеденить с регулеровкой ампитуды
-    //if (Gyro.VibroOutF      == 1) {Gyro.VibroOutF = 0; VibroOut();}	// установка ног в регисторе тоже подумать , зачем отделный флаг? наверно 
 }