Dmitry Kovalev
/
LGstaandart
forkd
Fork of LG2 by
Diff: Command.c
- Revision:
- 211:ac8251b067d2
- Parent:
- 210:b02fa166315d
- Child:
- 213:9953db9543d6
diff -r b02fa166315d -r ac8251b067d2 Command.c --- a/Command.c Mon Apr 24 05:43:54 2017 +0000 +++ b/Command.c Mon Jul 03 05:50:08 2017 +0000 @@ -16,12 +16,14 @@ unsigned int OldCuruAngle; unsigned int OldCaunPlus=0; unsigned int OldCaunMin=0; +unsigned int OutDeltaPS; +int IntOutDeltaPS; int ttemp,temp5=1; int OLDDAC=0; int rr = 123; unsigned int pDestT; GyroParam *Flash; - +//int q; ///////////////flah and boot/////////// void GoBoot(void) { @@ -121,14 +123,15 @@ { switch(Gyro.ModeOut) { - case 1: if(Gyro.Rate1_Event ) CMD_Rate(); break; - case 2: if(Gyro.Reper_Event ) CMD_Rate2(); break; - case 8: if(Gyro.Rate3_Event ) CMD_Rate3(); break; - case 3: if(Gyro.Event_500Hz ) CMD_Delta_PS(); break; - case 4: if(Gyro.EXT_Latch ) CMD_Delta_PS(); break; - case 5: if(Gyro.Event_500Hz ) CMD_Delta_Bins(); break; - case 6: if(Gyro.EXT_Latch ) CMD_B_Delta(); break; - case 7: if(Gyro.Event_500Hz ) CMD_B_Delta(); break; + case 1: if(Gyro.Rate1_Event ) CMD_Rate(); break; + case 2: if(Gyro.Reper_Event ) CMD_Rate2(); break; + case 3: if(Gyro.Event_500Hz ) CMD_Delta_PS(); break; + case 4: if(Gyro.EXT_Latch ) CMD_Delta_PS(); break; + case 5: if(Gyro.Event_500Hz ) CMD_Delta_Bins(); break; + case 6: if(Gyro.EXT_Latch ) CMD_B_Delta(); break; + case 7: if(Gyro.Event_500Hz ) CMD_B_Delta(); break; + case 8: if(Gyro.Rate3_Event ) CMD_Rate3(); break; + case 9: if(Gyro.Reper_Event ){ CMD_Rate2(); Gyro.ModeOut=0;} break; } } @@ -174,8 +177,13 @@ switch(NP) { - case 0: Gyro.My_Addres = GyroP.Str.My_Addres; break; - case 3: Spi.DAC_A = ((((int)(GyroP.Str.DAC_current_Work+ 0x7fff)&0xffff)+22544)*0.65); break; + case 0: Gyro.My_Addres = GyroP.Str.My_Addres; break; + case 1: Gyro.HFO_ref = /*GyroP.Str.HFO_ref>>1;*/(unsigned int)(GyroP.Str.HFO_ref)*0.82; break; + case 2: Gyro.HFO_Gain = GyroP.Str.HFO_Gain; break; + case 3: if(Gyro.LG_Type) Gyro.HFO_Max=((int)(GyroP.Str.DAC_current_Work*0.67)-2000); + else Spi.DAC_A = ((((int)(GyroP.Str.DAC_current_Work+ 0x7fff)&0xffff)+22544)*0.65); break; + + case 4: if(Gyro.LG_Type) Gyro.HFO_Min=((int)(GyroP.Str.DAC_current_Start*0.67)-2000); break; case 7: Gyro.PLC_Phase = GyroP.Str.PLC_Phase; break; case 8: Gyro.PLC_Gain = GyroP.Str.PLC_Gain; break; @@ -215,6 +223,19 @@ Out_G_photo(Gyro.Gain_Sin, Gyro.Gain_Cos); break; case 60: Gyro.GLD_Serial = GyroP.Str.GLD_Serial; break; + + + case 10: Gyro.DownTreshold =0x7fff+GyroP.Str.DownTreshold; break; + case 11: Gyro.HighTreshold =0x7fff+GyroP.Str.HighTreshold; break; + case 9: Gyro.PLCDelay = GyroP.Str.PLCDelay/10; break; + /*case 105: Gyro.ResetLevelCool = GyroP.Str.ResetLevelCool; break; + case 55: Gyro.ResetLevelHeat = GyroP.Str.ResetLevelHeat; break;*/ + case 39: Gyro.ResetLevelCool = 0x7fff+GyroP.Str.ResetLevelCool; break; + case 31: Gyro.ResetLevelHeat = 0x7fff+GyroP.Str.ResetLevelHeat; break; //27 + + + //105 + } NP=0; @@ -311,37 +332,40 @@ //F_ras case 0: - Temp = Gyro.F_ras; - BuffTemp[5] = (Temp >> 8) & 0xff; + OutDeltaPS = Gyro.F_ras; + BuffTemp[5] = (OutDeltaPS >> 8) & 0xff; break; case 1: - BuffTemp[5] = (Temp >> 0) & 0xff; + BuffTemp[5] = (OutDeltaPS >> 0) & 0xff; break; //HFO case 2: - Temp2 = ((Spi.DAC_A/0.65)-22544)-0x7fff; - Temp1= (int)Temp2; + /* Temp2 = ((Spi.DAC_A/0.65)-22544)-0x7fff; + Temp1= (int)Temp2;*/ + + if(Gyro.LG_Type) {OutDeltaPS =(int)(((Spi.DAC_A/0.6667)-30000)-0x7fff);} + else {OutDeltaPS =(unsigned int)(0x7fff-Spi.ADC5)*0.79;} // Temp = Spi.DAC_A-0x7fff; - BuffTemp[5] = (Temp1 >> 8) & 0xff; + BuffTemp[5] = (OutDeltaPS >> 8) & 0xff; break; case 3: - BuffTemp[5] = (Temp1 >> 0) & 0xff; + BuffTemp[5] = (OutDeltaPS >> 0) & 0xff; break; //T_Vibro case 4: - Temp = (unsigned int)(7680000/(Gyro.Frq>>16)); - BuffTemp[5] = (Temp >> 8) & 0xff; + OutDeltaPS = (unsigned int)(7680000/(Gyro.Frq>>16)); + BuffTemp[5] = (OutDeltaPS >> 8) & 0xff; break; case 5: - BuffTemp[5] = (Temp >> 0) & 0xff; + BuffTemp[5] = (OutDeltaPS >> 0) & 0xff; break; @@ -349,53 +373,53 @@ //L_Vibro case 6: //Temp = Gyro.L_vibro>>1; - Temp = Gyro.L_vibro; - BuffTemp[5] = (Temp >> 8) & 0xff; + OutDeltaPS = Gyro.L_vibro; + BuffTemp[5] = (OutDeltaPS >> 8) & 0xff; break; case 7: - BuffTemp[5] = (Temp >> 0) & 0xff; + BuffTemp[5] = (OutDeltaPS >> 0) & 0xff; break; //Напряжение на регуляторе периметра case 8: - Temp = (Spi.DAC_B - 0x7fff); - BuffTemp[5] = (Temp >> 8) & 0xff; + OutDeltaPS = (Spi.DAC_B - 0x7fff); + BuffTemp[5] = (OutDeltaPS >> 8) & 0xff; break; case 9: - BuffTemp[5] = (Temp >> 0) & 0xff; + BuffTemp[5] = (OutDeltaPS >> 0) & 0xff; break; //темпкратурный канал 0 case 10: - Temp = 100; - BuffTemp[5] = (Temp >> 8) & 0xff; + OutDeltaPS = 0; + BuffTemp[5] = (OutDeltaPS >> 8) & 0xff; break; case 11: - BuffTemp[5] = (Temp >> 0) & 0xff; + BuffTemp[5] = (OutDeltaPS >> 0) & 0xff; break; //f case 12: - Temp =(unsigned int)(0x7fff-Spi.ADC5)*0.79; + OutDeltaPS =0;//(unsigned int)(0x7fff-Spi.ADC5)*0.79; // Temp = Gyro.AD_Slow >> 16; - BuffTemp[5] = (Temp >> 8) & 0xff; + BuffTemp[5] = (OutDeltaPS >> 8) & 0xff; break; case 13: - BuffTemp[5] = (Temp >> 0) & 0xff; + BuffTemp[5] = (OutDeltaPS >> 0) & 0xff; break; @@ -403,13 +427,13 @@ //ток 1 case 14: //Temp = Gyro.In1; - Temp1 = ((Gyro.In1>>1)*0.800875)-0x3e0b; - BuffTemp[5] = (Temp >> 8) & 0xff;//in1//2 + IntOutDeltaPS = ((Gyro.In1>>1)*0.800875)-0x3e0b; + BuffTemp[5] = (IntOutDeltaPS >> 8) & 0xff;//in1//2 break; case 15: - BuffTemp[5] = (Temp >> 0) & 0xff; + BuffTemp[5] = (IntOutDeltaPS >> 0) & 0xff; break; @@ -417,37 +441,40 @@ //ток 2 case 16: // Temp = Gyro.In2; - Temp1 = ((Gyro.In2>>1)*0.800875)-0x3e0b; - BuffTemp[5] = (Temp >> 8) & 0xff; + IntOutDeltaPS = ((Gyro.In2>>1)*0.800875)-0x3e0b; + BuffTemp[5] = (IntOutDeltaPS >> 8) & 0xff; break; case 17: - BuffTemp[5] = (Temp >> 0) & 0xff;//in2//3 + BuffTemp[5] = (IntOutDeltaPS >> 0) & 0xff;//in2//3 break; //разностный температурный канал Delta Temp case 18: - Temp = Gyro.DeltaT; - BuffTemp[5] = (Temp >> 8) & 0xff;//дельта + OutDeltaPS = 0; + OutDeltaPS = Gyro.DeltaT; + BuffTemp[5] = (OutDeltaPS >> 8) & 0xff;//дельта break; case 19: - BuffTemp[5] = (Temp >> 0) & 0xff; + BuffTemp[5] = (OutDeltaPS >> 0) & 0xff; break; //температурный канал 5 case 20: - Temp = Gyro.Termo;//0xa4=164 - BuffTemp[5] =(Temp >> 8) & 0xff;//температура - + OutDeltaPS = 0; + OutDeltaPS = Gyro.TermLM;//Spi.ADC1;// //Gyro.Termo;//0xa4=164 + BuffTemp[5] =(OutDeltaPS >> 8) & 0xff;//температура break; case 21: - BuffTemp[5] =(Temp >> 0) & 0xff;//ADC6 sesnsor 5 + BuffTemp[5] =(OutDeltaPS >> 0) & 0xff;//ADC6 sesnsor 5 + /* sprintf((Time),"%d %d \r\n", Spi.ADC1, Spi.ADC5 ); + WriteCon(Time);*/ break; } Check(BuffTemp, CRC_N); @@ -471,30 +498,15 @@ BuffTemp[ 2] =( Gyro.CaunPlusReper >> 8) & 0xff;//старший байт счетчика +. 3 --сарший байт счентчика + BuffTemp[ 3] =( Gyro.CaunPlusReper >> 0) & 0xff;//младший байт счетчика +. 4 --младший байт счетчика + - // Gyro.CaunPlusRate=0; -/* - BuffTemp[ 2] =(Gyro.CaunPlus >> 8) & 0xff;//старший байт счетчика +. 3 --сарший байт счентчика + - BuffTemp[ 3] =(Gyro.CaunPlus >> 0) & 0xff;//младший байт счетчика +. 4 --младший байт счетчика + - */ + BuffTemp[ 4] =( Gyro.CaunMinReper >> 8) & 0xff;//старший байт счетчика -. 5 --сарший байт счентчика - BuffTemp[ 5] =( Gyro.CaunMinReper >> 0) & 0xff;//младший байт счетчика -. 6 --младший байт счетчика - - // Gyro.CaunMinRate=0; -/* - BuffTemp[ 4] =(Gyro.CaunMin >> 8) & 0xff;//старший байт счетчика -. 5 --сарший байт счентчика - - BuffTemp[ 5] =(Gyro.CaunMin >> 0) & 0xff;//младший байт счетчика -. 6 --младший байт счетчика - -*/ - //Temp=Gyro.CuruAngle; //(0,28/с) - //8 байт + 4 байта от прошлых измерений + Gyro.CuruAngle = Gyro.CuruAngle + OldCuruAngle; //(72 град/с) - /* OldCuruAngle=Gyro.CuruAngle & 0xff; //сохраняем 4 байта для след измирений - Temp=Gyro.CuruAngle>>8; */ //приводим к форме вывода - //(9 град/с) OldCuruAngle=Gyro.CuruAngle & 0x1f; //сохраняем 5 бит для след измирений - Temp=Gyro.CuruAngle>>5; //приводим к форме вывода - - /*sprintf((Time),"%d %d\r\n",Gyro.CuruAngle, Temp); - WriteCon(Time); */ + Temp=Gyro.CuruAngle>>5; //приводим к форме вывода + Gyro.CuruAngle = 0; BuffTemp[ 6] =(Temp >> 8) & 0xff;//старший байт разности счетчиков 7 --младший байт разности счетчиков @@ -511,14 +523,21 @@ BuffTemp[ 8] = (Temp >> 8) & 0xff;//расщипление частота 9 --частота расщипления BuffTemp[ 9] = (Temp >> 0) & 0xff;// 10 --частота расщипления - // ((temp*1.67)-0x5523); + //(unsigned int)((Gyro.DacIn+30000)*0.6667); + if(Gyro.LG_Type) {Temp1 =(int)(((Spi.DAC_A/0.6667)-30000)-0x7fff);} + else + { Temp2 = ((Spi.DAC_A/0.65)-22544)-0x7fff; Temp1= (int)Temp2; + } //Temp1=Gyro.DacIn/*-0x7fff*/; BuffTemp[10] = (Temp1 >> 8) & 0xff;//выход регулятора гвч; 11 --выход регулятора ГВЧ BuffTemp[11] = (Temp1 >> 0) & 0xff; //12 --выход регулятора ГВЧ - Temp =(unsigned int)(0x7fff-Spi.ADC5)*0.79; + + + if(Gyro.LG_Type) Temp =(int)(DeltaRegul<<2); + else Temp =(unsigned int)(0x7fff-Spi.ADC5)*0.79; BuffTemp[12]=(Temp >> 8) & 0xff;//// HFO 13 --сигнал ошибки регулятора ГВЧ BuffTemp[13]=(Temp >> 0) & 0xff;//// 14 --сигнал ошибки регулятора ГВЧ @@ -546,9 +565,7 @@ BuffTemp[22] = (Temp1 >> 8) & 0xff; //23 Выход регулятора рабочего периметра BuffTemp[23] = (Temp1 >> 0) & 0xff; //24 - /* sprintf((Time),"%d \r\n",Temp1); - WriteCon(Time); */ - + Temp = Gyro.PLC_Eror_count>>4; //Gyro.AD_Slow >> 16; Gyro.PLC_Eror_count = 0; BuffTemp[24] = (Temp >> 8) & 0xff;// //25 ФД СРП @@ -591,18 +608,18 @@ BuffTemp[ 0] = Gyro.SOC_Out; BuffTemp[ 1] = Gyro.My_Addres; - - - Temp=Gyro.CaunPlusReper; + +Temp=Gyro.CaunPlusReper; + BuffTemp[ 2] =(Temp >> 8) & 0xff;//старший байт счетчика +. BuffTemp[ 3] =(Temp >> 0) & 0xff;//младший байт счетчика +. - - //сохраняем 5 бит для след измирений + //сохраняем 5 бит для след измирений - Temp= Gyro.CaunMinReper; +Temp= Gyro.CaunMinReper; + BuffTemp[ 4] =(Temp >> 8) & 0xff;//старший байт счетчика -. BuffTemp[ 5] =(Temp >> 0) & 0xff;//младший байт счетчика -. - + Check(BuffTemp, 8); WriteConN (BuffTemp,8); } @@ -636,13 +653,14 @@ if(HFO) { Gyro.DacIn=temp; - Spi.DAC_A = (unsigned int)((temp+22544)*0.65); + if(Gyro.LG_Type==1) Spi.DAC_A = (unsigned int)((Gyro.DacIn+30000)*0.6667); + else Spi.DAC_A = (unsigned int)((temp)); } else Spi.DAC_B = (unsigned int)temp; - sprintf((Time)," %d %d \r\n", Spi.DAC_B,temp); +/* sprintf((Time)," %d %d \r\n", Spi.DAC_A,Gyro.DacIn); WriteCon(Time); - +*/ /* sprintf((Time),"%d %d %f \r\n", temp, Spi.DAC_A, (temp+10744)*0.79); @@ -968,10 +986,10 @@ case 0xDD: TempParam=(BuffTemp[3]) & 0x9f; //Rate switch(TempParam) { case Rate1 : CMD_Rate(); break; - case Rate2 : CMD_Rate2(); break; + case Rate2 : Gyro.ModeOut=9; break; case Rate3 : CMD_Rate3(); break; case PRate1 : Gyro.ModeOut=1; break; - case PRate2 : Gyro.ModeOut=2; break; + case PRate2 : Gyro.ModeOut=2; break; case PRate3 : Gyro.ModeOut=8; break; } break; //DropDelay(); выставка задержки для мультидропа сбрасывается в команде CMD_Maintenance() на () микросекунд; @@ -1026,56 +1044,89 @@ - if (Time[0] == 'f') { // выдача технологическая + /* if (Time[0] == 'f') { // выдача технологическая Gyro.ModAmp += 1; sprintf((Time),"%d \r\n", Gyro.ModAmp); WriteCon(Time); - } - if (Time[0] == 'd') { // выдача технологическая + }*/ + /* if (Time[0] == 'd') { // выдача технологическая Gyro.ModAmp -= 1; sprintf((Time),"%d \r\n", Gyro.ModAmp); WriteCon(Time); - } + }*/ if (Time[0] == 'V') { // выдача технологическая - Spi.DAC_B += 1000; - } + Gyro.Debag += 10; + } if (Time[0] == 'v') { // выдача технологическая - Spi.DAC_B -= 1000; + Gyro.Debag -= 10; + } if (Time[0] == 'C') { // выдача технологическая - Spi.DAC_B += 2000; + Gyro.Debag += 1000; + } if (Time[0] == 'c') { // выдача технологическая - Spi.DAC_B -= 2000; + Gyro.Debag -= 1000; + } if (Time[0] == 'X') { // выдача технологическая - Spi.DAC_B += 3000; + Spi.DAC_A += 3000; + sprintf((Time),"%d \r\n", Spi.DAC_A); + WriteCon(Time); } if (Time[0] == 'x') { // выдача технологическая - Spi.DAC_B -= 3000; + Spi.DAC_A -= 3000; + sprintf((Time),"%d \r\n", Spi.DAC_A); + WriteCon(Time); } if (Time[0] == 'p') { // выдача технологическая PlcOFF //Gyro.RgConA&0x8=0; Gyro.LogMod=1; - MODFlag=1; - Spi.DAC_B = 16000; + // MODFlag=1; + Spi.DAC_B = 65535; } if (Time[0] == 'o') { // выдача технологическая PlcON - Gyro.LogMod=0; + // Gyro.LogMod=0; MODFlag=2; - Spi.DAC_B = 32000; + // Spi.DAC_B = 32000; } - + if (Time[0] == 'm') + { // выдача технологическая + /* for(q=0; q<32; q++) + { + sprintf((Time),"%d ", Buff_1Point[q]); + WriteCon(Time); + } + sprintf((Time),"\r\n"); + WriteCon(Time); + for(q=0; q<32; q++) + { + sprintf((Time),"%d ", Buff_Restored_sin [q]); + WriteCon(Time); + }*/ + sprintf((Time),"\r\n"); + WriteCon(Time); + } if (Time[0] == 'u') { // выдача технологическая MODFlag=0; //Mod vibro Hz - } + } + + if (Time[0] == 'y') { //Mod 250 Hz PLCRegul250(); MODFlag=2; } + if (Time[0] == 'f') + { // выдача технологическая + Gyro.CuruAngleLog = 0; //Mod vibro Hz + } + if (Time[0] == 'd') + { // выдача технологическая + Gyro.CuruAngleLog = 1; //Mod vibro Hz + } if (Time[0] == 'l') { // выдача технологическая Gyro.My_Addres = GyroP.Str.My_Addres; // Gyro.My_Addres = 0;