zoulei 11 月之前
父节点
当前提交
2eb9aed4fd

+ 2 - 2
Service/X1LeoTaskServer54/Service/TaskService.cs

@@ -94,7 +94,7 @@ namespace X1LeoTaskServer54.Service
                         }
                         #endregion
 
-                        #region 第2步,扫描检测结果目录
+                        #region 第2步,扫描采集文件
                         var groupFiles = Directory.EnumerateFiles(CapDir, "*.dat", SearchOption.TopDirectoryOnly).Select(p => StringToAdFile(p))
                         .GroupBy(p => p.FreqDownMHz);
                         bool matched = false;
@@ -187,7 +187,7 @@ namespace X1LeoTaskServer54.Service
                                             LeoX1ParPosDto leoX1 = new LeoX1ParPosDto()
                                             {
                                                 TaskID = dto.ID,
-                                                SigTime = adTime.AddSeconds(data1[i].TimeSeconds),
+                                                SigTime = adTime.AddSeconds(data1[i].Smpstart / (double)adFile1.Fs),
                                                 MainCode = MainSatCode,
                                                 Adja1Code = MainSatCode,
                                                 Adja2Code = MainSatCode,

+ 10 - 12
Service/X2LeoTaskServer54/App.config

@@ -11,34 +11,32 @@
 		<add key="PosPlatformAddr" value="http://127.0.0.1:8091" />
 
 		<!--采集数据目录-->
-		<add key="CapDir" value="E:\data10\低轨双星仿真数据"/>
+		<add key="CapDir" value="D:\data10\低轨双星仿真数据"/>
 
 		<!--定位结果输出目录-->
-		<add key="PosResDir" value="E:\PosRes"/>
+		<add key="PosResDir" value="D:\PosRes"/>
 
 		<!--状态上报目录-->
-		<add key="StateRptDir" value="E:\StateRes"/>
+		<add key="StateRptDir" value="D:\StateRes"/>
 
 		<!--卫星及星历-->
-		<add key ="MainSatInfo" value="23467,-41275189.6404,5820330.8446,6331022.0431,1,2,3"/>
-		<add key ="Adja1SatInfo" value="40892,4694560.4826,41891872.2374,47531.3795,1,2,3"/>
-		
-		<!--参考信号频点(MHz)-->
-		<add key ="RefFreqDown" value="255.425"/>
-		
+		<add key ="MainSatInfo" value="23467,-1608418.46,5994257.60,3139819.89,-6632.8731,-373.9909,-2678.2335"/>
+		<add key ="Adja1SatInfo" value="40892,-4629555.87,4978929.91,1487241.78,-4890.2693,-3337.6709,-4031.3087"/>
+
 		<!--定位时差系数-->
-		<add key="PosDtoFactor" value="-1"/>
+		<add key="PosDtoFactor" value="1"/>
 
 		<!--时差误差(单位:us)-->
 		<add key="DtoErrus" value="1"/>
+
 		<!--频差误差(单位:Hz)-->
-		<add key="DfoErr" value="0.01"/>
+		<add key="DfoErr" value="1"/>
 
 		<!--星历位置误差(单位:m)-->
 		<add key="EphPosErr" value="10000"/>
 
 		<!--星历速度误差(单位:m/s)-->
-		<add key="EphVelErr" value="0.1"/>
+		<add key="EphVelErr" value="10"/>
 
 	</appSettings>
 	<startup>

+ 6 - 8
Service/X2LeoTaskServer54/AppDebug.config

@@ -20,25 +20,23 @@
 		<add key="StateRptDir" value="D:\StateRes"/>
 
 		<!--卫星及星历-->
-		<add key ="MainSatInfo" value="23467,-41275189.6404,5820330.8446,6331022.0431,1,2,3"/>
-		<add key ="Adja1SatInfo" value="40892,4694560.4826,41891872.2374,47531.3795,1,2,3"/>
-
-		<!--参考信号频点(MHz)-->
-		<add key ="RefFreqDown" value="255.425"/>
+		<add key ="MainSatInfo" value="23467,-1608418.46,5994257.60,3139819.89,-6632.8731,-373.9909,-2678.2335"/>
+		<add key ="Adja1SatInfo" value="40892,-4629555.87,4978929.91,1487241.78,-4890.2693,-3337.6709,-4031.3087"/>
 
 		<!--定位时差系数-->
-		<add key="PosDtoFactor" value="-1"/>
+		<add key="PosDtoFactor" value="1"/>
 
 		<!--时差误差(单位:us)-->
 		<add key="DtoErrus" value="1"/>
+
 		<!--频差误差(单位:Hz)-->
-		<add key="DfoErr" value="0.01"/>
+		<add key="DfoErr" value="1"/>
 
 		<!--星历位置误差(单位:m)-->
 		<add key="EphPosErr" value="10000"/>
 
 		<!--星历速度误差(单位:m/s)-->
-		<add key="EphVelErr" value="0.1"/>
+		<add key="EphVelErr" value="10"/>
 
 	</appSettings>
 	<startup>

+ 0 - 6
Service/X2LeoTaskServer54/HistoryFile.cs

@@ -20,12 +20,6 @@ namespace X2LeoTaskServer54
         /// </summary>
         public DateTime AdTime { get; set; }
 
-
-        /// <summary>
-        /// 分组号
-        /// </summary>
-        public int XDNo { get; set; }
-
         /// <summary>
         /// 通道
         /// </summary>

+ 35 - 83
Service/X2LeoTaskServer54/Service/TaskService.cs

@@ -24,9 +24,6 @@ namespace X2LeoTaskServer54.Service
         int Adja1SatCode;
         double[] MainXYZ, Adja1XYZ;
         int PosDtoFactor;
-
-        double RefFreqDownMHz;
-
         double DtoErrus;
         double DfoErrHz;
         double EphPosErrM;
@@ -48,10 +45,6 @@ namespace X2LeoTaskServer54.Service
             int.TryParse(PosDtoFactorstr, out PosDtoFactor);
             if (PosDtoFactor == 0) PosDtoFactor = 1;
 
-            var RefFreqDownstr = ConfigurationManager.AppSettings["RefFreqDown"].Trim();
-            double.TryParse(RefFreqDownstr, out RefFreqDownMHz);
-
-
             var DtoErrusstr = ConfigurationManager.AppSettings["DtoErrus"].Trim();
             double.TryParse(DtoErrusstr, out DtoErrus);
             var DfoErrusstr = ConfigurationManager.AppSettings["DfoErr"].Trim();
@@ -106,62 +99,41 @@ namespace X2LeoTaskServer54.Service
                         }
                         #endregion
 
-                        #region 第2步,扫描检测结果目录
-                        //同一个AD文件得到的不同频点的检测文件FlagNo相同
+                        #region 第2步,扫描采集文件
                         var groupFiles = Directory.EnumerateFiles(CapDir, "*.dat", SearchOption.TopDirectoryOnly).Select(p => StringToAdFile(p))
-                        .GroupBy(m => m.XDNo).OrderBy(m => m.Key);
+                        .GroupBy(m => m.AdTime).OrderBy(m => m.Key);
 
                         if (!groupFiles.Any())
                         {
                             await LogHelper.Info($"【任务{dto.ID}】等待扫描文件...");
                             await Task.Delay(10000, cts.Token);
                         }
-
-                        foreach (var groupFile in groupFiles)//每一组文件代表同一组可定位的三个不同时刻的采集文件
+                        foreach (var groupFile in groupFiles)//每一组文件代表同一组可定位的2*(N+1)个采集文件,N个目标1和1个参考
                         {
                             if (cts.IsCancellationRequested) break;
-
-                            var first = groupFile.First();
-                            await LogHelper.Info($"【任务{dto.ID}】正在执行第{first.XDNo}组的采集文件");
-                            var group = groupFile.OrderBy(g => g.AdTime).ToArray();
-                            var freqItems = group.GroupBy(p => p.FreqDownMHz);
-                            var listTask = new List<Task>();
-                            foreach (var item in freqItems)
+                            var adTime = groupFile.First().AdTime;
+                            var tarItems = groupFile.GroupBy(p => p.FreqDownMHz);
+                            List<Task> listTask = new List<Task>();
+                            foreach (var tarItem in tarItems)
                             {
-                                if (item.Count() != 4)
+                                var freq = tarItem.First().FreqDownMHz;
+                                if (tarItem.Count() != 2)
                                 {
-                                    await LogHelper.Warning($"【任务{dto.ID}】第{first.XDNo}组{first.AdTime:yyyyMMddHHmmss}时刻-信号{item.First().FreqDownMHz}MHz-未找到双星目标及参考的信号文件,跳过此组数据");
+                                    await LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-AD文件个数不为2,跳过此组数据");
                                     return;
                                 }
-                                //group:同一组不同时刻的文件
                                 var task = Task.Run(async () =>
                                 {
-                                    DateTime adTime = first.AdTime;
-                                    int No = first.XDNo;
-                                    var tarInfo = group.Where(m => m.FreqDownMHz == TarFreqDownMHz);
-                                    var refInfo = group.Where(m => m.FreqDownMHz == RefFreqDownMHz);
-                                    var tarFileInfo1 = tarInfo.FirstOrDefault(t => t.Ch == 1);
-                                    var tarFileInfo2 = tarInfo.FirstOrDefault(t => t.Ch == 2);
-                                    var refFileInfo1 = refInfo.FirstOrDefault(t => t.Ch == 1);
-                                    var refFileInfo2 = refInfo.FirstOrDefault(t => t.Ch == 2);
+                                    var tarFileInfo1 = tarItem.FirstOrDefault(t => t.Ch == 1);
+                                    var tarFileInfo2 = tarItem.FirstOrDefault(t => t.Ch == 2);
                                     if (tarFileInfo1 == null)
                                     {
-                                        await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{TarFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
+                                        await LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-未找到主星信号文件,跳过此组数据");
                                         return;
                                     }
                                     if (tarFileInfo2 == null)
                                     {
-                                        await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{TarFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
-                                        return;
-                                    }
-                                    if (refFileInfo1 == null)
-                                    {
-                                        await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{RefFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
-                                        return;
-                                    }
-                                    if (refFileInfo2 == null)
-                                    {
-                                        await LogHelper.Warning($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{RefFreqDownMHz}MHz-未找到信号文件,跳过此组数据");
+                                        await LogHelper.Warning($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-未找到邻星信号文件,跳过此组数据");
                                         return;
                                     }
                                     if (cts.IsCancellationRequested) return;
@@ -171,9 +143,6 @@ namespace X2LeoTaskServer54.Service
                                     sw.Start();
                                     string tarFile1 = await HttpHelper.UploadFileAsync(tarFileInfo1.File, baseUrl, token: cts.Token);//目标主星文件
                                     string tarFile2 = await HttpHelper.UploadFileAsync(tarFileInfo2.File, baseUrl, token: cts.Token);//目标邻1星文件
-                                    string refFile1 = await HttpHelper.UploadFileAsync(refFileInfo1.File, baseUrl, token: cts.Token);//参考主星文件
-                                    string refFile2 = await HttpHelper.UploadFileAsync(refFileInfo2.File, baseUrl, token: cts.Token);//参考邻1星文件
-
                                     DetectDto detectDto = new DetectDto()
                                     {
                                         file1 = tarFile1,
@@ -186,12 +155,12 @@ namespace X2LeoTaskServer54.Service
                                     var deteResp = await HttpHelper.PostRequestAsync<List<DetectResDto>>(baseUrl + "DetectCg/DetectCalc", detectDto, token: cts.Token);
                                     if (deteResp.code != 200)
                                     {
-                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz信号检测出错.{deteResp.msg}");
+                                        await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz信号检测出错.{deteResp.msg}");
                                         return;
                                     }
                                     var smps = deteResp.data.Select(m => new SmpPosition(m.Start, m.Length)).ToList();//怎么补0?
 
-                                    await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估开始,共{smps.Count}个突发...");
+                                    await LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估开始,共{smps.Count}个突发...");
                                     var cgDto = new CpuCgMultiDto()
                                     {
                                         dtCenter = 0,
@@ -205,33 +174,14 @@ namespace X2LeoTaskServer54.Service
                                     var result1 = await HttpHelper.PostRequestAsync<List<CpuCgResDto>>(baseUrl + "DetectCg/CpuCgMultiCalc", cgDto, token: cts.Token);
                                     if (result1.code != 200)
                                     {
-                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-目标主星邻1星CPU参估出错.{result1.msg}");
-                                        return;
-                                    }
-                                    var cpuCgDto = new CpuCgDto()
-                                    {
-                                        dtCenter = 0,
-                                        dtRange = 2000,
-                                        file1 = refFile1,
-                                        file2 = refFile2,
-                                        samplingRate = tarFileInfo1.Fs,
-                                        smpStart = 0,
-                                        smpCount = 0,
-                                        snrThreshold = 15,
-                                    };
-                                    var result2 = await HttpHelper.PostRequestAsync<CpuCgResDto>(baseUrl + "DetectCg/CpuCgCalc", cpuCgDto, token: cts.Token);
-                                    sw.Stop();
-                                    if (result2.code != 200)
-                                    {
-                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-参考主星邻2星CPU参估出错.{result2.msg}");
+                                        await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-目标主星邻1星CPU参估出错.{result1.msg}");
                                         return;
                                     }
-                                    await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
+                                    await LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-CPU参估完成,耗时{sw.ElapsedMilliseconds}ms");
                                     var data1 = result1.data;
-                                    var data2 = result2.data;
                                     if (data1.Count != cgDto.smpPositions.Count)
                                     {
-                                        await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-参估结果个数和检测结果个数不匹配");
+                                        await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-参估结果个数和检测结果个数不匹配");
                                         return;
                                     }
                                     sw.Start();
@@ -243,7 +193,7 @@ namespace X2LeoTaskServer54.Service
                                             LeoX2ParPosDto leoX2 = new LeoX2ParPosDto()
                                             {
                                                 TaskID = dto.ID,
-                                                SigTime = adTime.AddSeconds(data1[i].TimeSeconds),
+                                                SigTime = adTime.AddSeconds(data1[i].Smpstart / (double)tarFileInfo1.Fs),
                                                 MainCode = MainSatCode,
                                                 AdjaCode = Adja1SatCode,
                                                 MainX = MainXYZ[0],
@@ -261,16 +211,18 @@ namespace X2LeoTaskServer54.Service
                                                 Dto = PosDtoFactor * data1[i].Dt,
                                                 Dfo = data1[i].Df,
                                                 Snr = data1[i].Snr,
-                                                YbMainDto = 260000,
-                                                YbAdjaDto = 260000 + PosDtoFactor * data2.Dt,
-                                                YbMainDfo = 100,
-                                                YbAdjaDfo = 100 + data2.Df,
-                                                TarFreqUp = (tarFileInfo1.FreqDownMHz + 44) * 1e6,
-                                                RefFreqUp = (refFileInfo1.FreqDownMHz + 44) * 1e6,
+                                                YbMainDto = 260000 + PosDtoFactor * (0.00282418 * 1e6),
+                                                YbAdjaDto = 260000,
+                                                YbMainDfo = 100 + 11320.0568,
+                                                YbAdjaDfo = 100,
+                                                TarFreqUp = 310.85 * 1e6,
+                                                RefFreqUp = 295 * 1e6,
                                                 SatTxLon = dto.CapLon,
                                                 SatTxLat = dto.CapLat,
                                                 TarFreqDown = tarFileInfo1.FreqDownMHz * 1e6,
-                                                RefFreqDown = refFileInfo1.FreqDownMHz * 1e6,
+                                                RefFreqDown = 255 * 1e6,
+                                                RefLon = dto.RefLon,
+                                                RefLat = dto.RefLat,
                                                 CheckRes = new CheckResDto()
                                                 {
                                                     FileName = Path.GetFileName(tarFileInfo1.File),
@@ -282,7 +234,7 @@ namespace X2LeoTaskServer54.Service
                                             var result = await HttpHelper.PostRequestAsync<PosResDto>(baseUrl + "Pos/PosLeX2ParAsync", leoX2);
                                             if (result.code != 200)
                                             {
-                                                await LogHelper.Error($"【任务{dto.ID}】第{No}组-{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz 第{i + 1}个突发定位异常.{result.msg}");
+                                                await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz 第{i + 1}个突发定位异常.{result.msg}");
                                             }
                                             else
                                             {
@@ -319,8 +271,8 @@ namespace X2LeoTaskServer54.Service
                                                 sb.Append($"{leoX2.SigTime:ss}\t");
                                                 sb.Append($"{leoX2.SigTime:fff}\t");
                                                 sb.Append($"{leoX2.CheckRes.SmpCount * 1000 / tarFileInfo1.Fs:D4}\t");//信号持续时间ms
-                                                sb.Append($"{Convert.ToInt64(group.First().FreqDownMHz * 1e6):D12}\t");//下行频点
-                                                sb.Append($"{Convert.ToInt64((group.First().FreqDownMHz + 44) * 1e6):D12}\t");//上行频点
+                                                sb.Append($"{Convert.ToInt64(freq * 1e6):D12}\t");//下行频点
+                                                sb.Append($"{Convert.ToInt64(310.85 * 1e6):D12}\t");//上行频点
                                                 sb.Append($"{GetSignalType(deteResp.data[i].ModType)}\t");//信号样式(暂定有这些1:CPM,2:BPSK,4:QPSK,9:其它),
                                                 sb.Append($"{0:D4}\t");//目标序号
                                                 sb.Append($"res\t");
@@ -332,7 +284,7 @@ namespace X2LeoTaskServer54.Service
                                                 sb.Append($"{Convert.ToInt64(leoX2.Snr * 1e2):D6}\t");
                                                 sb.Append($"{Convert.ToInt64((leoX2.YbMainDto - leoX2.YbAdjaDto) * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64((leoX2.YbMainDfo - leoX2.YbAdjaDfo) * 1e2):D10}\t");
-                                                sb.Append($"{Convert.ToInt64(data2.Snr * 1e2):D6}\t");
+                                                sb.Append($"{Convert.ToInt64(32 * 1e2):D6}\t");//参考信噪比
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D10}\t");
                                                 sb.Append($"{Convert.ToInt64(0 * 1e2):D6}\t");
@@ -354,11 +306,11 @@ namespace X2LeoTaskServer54.Service
                                         }
                                         catch (Exception ex)
                                         {
-                                            await LogHelper.Error($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-时隙位置{data1[i].Smpstart}定位异常", ex);
+                                            await LogHelper.Error($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-时隙位置{data1[i].Smpstart}定位异常", ex);
                                         }
                                     }
                                     sw.Stop();
-                                    await LogHelper.Info($"【任务{dto.ID}】第{No}组{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
+                                    await LogHelper.Info($"【任务{dto.ID}】{adTime:yyyyMMddHHmmss}时刻-信号{freq}MHz-定位完成,耗时{sw.ElapsedMilliseconds}ms");
                                 }, cts.Token);
                                 listTask.Add(task);
                             }

+ 1 - 1
Service/X3LeoTaskServer54/App.config

@@ -25,7 +25,7 @@
 		<add key ="Adja1SatInfo" value="40892,4694560.4826,41891872.2374,47531.3795"/>
 
 		<!--定位时差系数-->
-		<add key="PosDtoFactor" value="-1"/>
+		<add key="PosDtoFactor" value="1"/>
 
 		<!--时差误差(单位:us)-->
 		<add key="DtoErrus" value="1"/>

+ 2 - 3
Service/X3LeoTaskServer54/Service/TaskService.cs

@@ -95,8 +95,7 @@ namespace X3LeoTaskServer54.Service
                         }
                         #endregion
 
-                        #region 第2步,扫描检测结果目录
-                        //同一个AD文件得到的不同频点的检测文件FlagNo相同
+                        #region 第2步,扫描采集文件
                         var groupFiles = Directory.EnumerateFiles(CapDir, "*.dat", SearchOption.TopDirectoryOnly).Select(p => StringToAdFile(p))
                         .GroupBy(m => m.XDNo).OrderBy(m => m.Key);
 
@@ -205,7 +204,7 @@ namespace X3LeoTaskServer54.Service
                                         LeoX1ParPosDto leoX1 = new LeoX1ParPosDto()
                                         {
                                             TaskID = dto.ID,
-                                            SigTime = adTime.AddSeconds(data1[i].TimeSeconds),
+                                            SigTime = adTime.AddSeconds(data1[i].Smpstart / (double)ch0File.Fs),
                                             MainCode = MainSatCode,
                                             Adja1Code = MainSatCode,
                                             Adja2Code = MainSatCode,