Changeset 10259 in ntrip


Ignore:
Timestamp:
Nov 27, 2023, 3:58:48 PM (5 months ago)
Author:
stuerze
Message:

changes regarding PPP

Location:
trunk/BNC
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/scripts/Bnc.pm

    r10233 r10259  
    493493    my $epochSec     = 0;
    494494    my $epochDiff    = 0;
    495     my ( @hlp, @N, @E, @U, %SATNUM, @TRPs, @G_CLKs, @R_CLKs, @E_CLKs, @C_CLKs );
    496     my ( @EPOCHs, @EPOCHs_G_CLK, @EPOCHs_R_CLK, @EPOCHs_E_CLK, @EPOCHs_C_CLK);
     495    my ( @hlp, @N, @E, @U, %SATNUM, @TRPs, @CLKs,   @OFF_GLOs, @OFF_GALs, @OFF_BDSs);
     496    my ( @EPOCHs, @EPOCHs_CLK, @EPOCHs_OFF_GLO, @EPOCHs_OFF_GAL, @EPOCHs_OFF_BDS );
    497497    my ( %AMB,        %RES,            %ELE,            %ION, %BIA );
    498498    my ( $station,    $lki,            $sys,            $sat, $amb );
     
    584584            push @{ $BIA{$lki}{$sys}{DATA} },  $hlp[4] + $hlp[5];
    585585        }
    586         elsif ( $ln =~ /\bREC_CLK  G\b/ ){
    587             push ( @EPOCHs_G_CLK, $epochSec);
    588                 push ( @G_CLKs, $hlp[3] + $hlp[4] );
    589         }
    590         elsif ( $ln =~ /\bREC_CLK  R\b/ ){
    591             push ( @EPOCHs_R_CLK, $epochSec);
    592                 push ( @R_CLKs, $hlp[3] + $hlp[4] );
    593         }
    594         elsif ( $ln =~ /\bREC_CLK  E\b/ ){
    595             push ( @EPOCHs_E_CLK, $epochSec);
    596                 push ( @E_CLKs, $hlp[3] + $hlp[4] );
    597         }
    598         elsif ( $ln =~ /\bREC_CLK  C\b/ ){
    599             push ( @EPOCHs_C_CLK, $epochSec);
    600                 push ( @C_CLKs, $hlp[3] + $hlp[4] );
     586        elsif ( $ln =~ /\bREC_CLK\b/ ) {
     587            push ( @EPOCHs_CLK, $epochSec );
     588            push ( @CLKs,       $hlp[2] + $hlp[3] );
     589        }
     590        elsif ( $ln =~ /\bOFF_GLO\b/ ) {                # 2015-08... OFF_GLO 52.6806 -3.8042 +- 9.0077
     591            push ( @EPOCHs_OFF_GLO, $epochSec );
     592            push ( @OFF_GLOs,       $hlp[2] + $hlp[3] );
     593        }
     594        elsif ( $ln =~ /\bOFF_GAL\b/ ) {                # 2015-08... OFF_GAL 52.6806 -3.8042 +- 9.0077
     595            push ( @EPOCHs_OFF_GAL, $epochSec );
     596            push ( @OFF_GALs,       $hlp[2] + $hlp[3] );
     597        }
     598        elsif ( $ln =~ /\bOFF_BDS\b/ ) {                # 2015-08... OFF_BDS 52.6806 -3.8042 +- 9.0077
     599            push ( @EPOCHs_OFF_BDS, $epochSec );
     600            push ( @OFF_BDSs,       $hlp[2] + $hlp[3] );
    601601        }
    602602        elsif ( $ln =~ /\bSATNUM\b/ ) {     # 2015-09... SATNUM G  8
     
    620620           . ", TRPs:"
    621621           . scalar @TRPs
    622            . ", GPS CLKs:"
    623            . scalar @G_CLKs
    624            . ", GLO CLKs:"
    625            . scalar @R_CLKs
    626            . ", GAL CLKs:"
    627            . scalar @E_CLKs
    628            . ", BDS CLKs:"
    629            . scalar @E_CLKs
    630622           );
    631     if ( $nof_epochs != scalar @N )                    { LOGDIE "number of epochs and residuals not equal\n" }
    632     if ( $nof_epochs != scalar @TRPs )                 { LOGDIE "number of epochs and TRPs not equal\n" }
    633     if ( @G_CLKs && scalar @EPOCHs_G_CLK != scalar @G_CLKs ) {LOGDIE "number of epochs and G_CLKs not equal\n";}
    634     if ( @R_CLKs && scalar @EPOCHs_R_CLK != scalar @R_CLKs ) {LOGDIE "number of epochs and R_CLKs not equal\n";}
    635     if ( @E_CLKs && scalar @EPOCHs_E_CLK != scalar @E_CLKs ) {LOGDIE "number of epochs and E_CLKs not equal\n";}
    636     if ( @C_CLKs && scalar @EPOCHs_C_CLK != scalar @C_CLKs ) {LOGDIE "number of epochs and C_CLKs not equal\n";}
     623    if ( $nof_epochs != scalar @N )                                { LOGDIE "number of epochs and residuals not equal\n" }
     624    if ( $nof_epochs != scalar @TRPs )                             { LOGDIE "number of epochs and TRPs not equal\n" }
     625    if ( @CLKs     && scalar @EPOCHs_CLK != scalar @CLKs )         { LOGDIE "number of epochs and CLKs not equal\n" }
     626    if ( @OFF_GLOs && scalar @EPOCHs_OFF_GLO != scalar @OFF_GLOs ) { LOGDIE "number of epochs and OFF_GLOs not equal\n" }
     627    if ( @OFF_GALs && scalar @EPOCHs_OFF_GAL != scalar @OFF_GALs ) { LOGDIE "number of epochs and OFF_GALs not equal\n" }
     628    if ( @OFF_BDSs && scalar @EPOCHs_OFF_BDS != scalar @OFF_BDSs ) { LOGDIE "number of epochs and OFF_BDSs not equal\n" }
     629
    637630    if ( !$station ) { WARN "could not grep stationname from file: $file\n" }
    638631
     
    644637                 SATNUM     => \%SATNUM,
    645638                 TRPs       => \@TRPs,
    646                  G_CLKs  => \@G_CLKs,
    647                  R_CLKs  => \@R_CLKs,
    648                  E_CLKs  => \@E_CLKs,
    649                  C_CLKs  => \@C_CLKs,
     639                 CLKs      => \@CLKs,
     640                 OFF_GLOs  => \@OFF_GLOs,
     641                 OFF_GALs  => \@OFF_GALs,
     642                 OFF_BDSs  => \@OFF_BDSs,
    650643                 RES        => \%RES,
    651644                 AMB        => \%AMB,
  • trunk/BNC/scripts/pppPlot.pl

    r10233 r10259  
    107107    my ( $station, $file ) = Bnc::parsePPPLogfile( $file, $sampling );
    108108    my $EPOCHS       = $file->{'EPOCHS'};
    109     my $EPOCHS_G_CLK = $file->{'EPOCHS_G_CLK'};
    110     my $EPOCHS_R_CLK = $file->{'EPOCHS_R_CLK'};
    111     my $EPOCHS_E_CLK = $file->{'EPOCHS_E_CLK'};
    112     my $EPOCHS_C_CLK = $file->{'EPOCHS_C_CLK'};
     109    my $EPOCHS_OFF_GLO = $file->{'EPOCHS_OFF_GLO'};
     110    my $EPOCHS_OFF_GAL = $file->{'EPOCHS_OFF_GAL'};
     111    my $EPOCHS_OFF_BDS = $file->{'EPOCHS_OFF_BDS'};
     112    my $EPOCHS_CLK     = $file->{'EPOCHS_CLK'};   
    113113    my %AMB            = %{ $file->{'AMB'} };
    114114    my %RES            = %{ $file->{'RES'} };
     
    212212        $png->image( $pdf->image_png($pngName), $x, $y, $width, $height );
    213213
    214         ######### GPS CLK #####################
    215         if ( scalar @{ $file->{'G_CLKs'} } < 1 ) {
    216           DEBUG "No GPS CLKs found";
     214        ######### CLK #####################
     215        if ( scalar @{ $file->{'CLKs'} } < 1 ) {
     216            DEBUG "No CLKs found";
    217217        }
    218218        else {
    219           DEBUG "Plot GPS CLKs";
    220           $pngName = sprintf ( "%s_CLK_G.png", $station );
    221           my $chartCLK = newChart($station);
    222           $chartCLK->set( output => $pngName );
    223           $chartCLK->set( ylabel => "CLK [m]" );
    224 
    225           $dataset = Chart::Gnuplot::DataSet->new(
    226                                                    xdata   => $EPOCHS_G_CLK,
    227                                                    ydata   => $file->{'G_CLKs'},
    228                                                    title   => "GPS Receiver clock",
    229                                                    timefmt => '%s',
    230                                                    style   => "points",
    231           );
    232           $chartCLK->plot2d($dataset);
    233           $y = $y - $dy;
    234 
    235           if ( $y < 30 / mm ) {
    236               $page = $pdf->page();
    237               $page->mediabox('A4');
    238               $y = $y0;
    239           }
    240           $png = $page->gfx();
    241           LOGDIE("Unable to find image file: $!\n") unless -e $pngName;
    242           $png->image( $pdf->image_png($pngName), $x, $y, $width, $height );
    243         }
    244          ######### GLONASS CLK #####################
    245         if ( scalar @{ $file->{'R_CLKs'} } < 1 ) {
    246           DEBUG "No GLONASS CLKs found";
    247         }
    248         else {
    249           DEBUG "Plot GLONASS CLKs";
    250           $pngName = sprintf ( "%s_CLK_R.png", $station );
    251           my $chartCLK = newChart($station);
    252           $chartCLK->set( output => $pngName );
    253           $chartCLK->set( ylabel => "CLK [m]" );
    254 
    255           $dataset = Chart::Gnuplot::DataSet->new(
    256                                                    xdata   => $EPOCHS_R_CLK,
    257                                                    ydata   => $file->{'R_CLKs'},
    258                                                    title   => "GLONASS Receiver clock",
    259                                                    timefmt => '%s',
    260                                                    style   => "points",
    261           );
    262           $chartCLK->plot2d($dataset);
    263           $y = $y - $dy;
    264 
    265           if ( $y < 30 / mm ) {
    266               $page = $pdf->page();
    267               $page->mediabox('A4');
    268               $y = $y0;
    269           }
    270           $png = $page->gfx();
    271           LOGDIE("Unable to find image file: $!\n") unless -e $pngName;
    272           $png->image( $pdf->image_png($pngName), $x, $y, $width, $height );
    273         }
    274          ######### Galileo CLK #####################
    275         if ( scalar @{ $file->{'E_CLKs'} } < 1 ) {
    276           DEBUG "No Galileo CLKs found";
    277         }
    278         else {
    279           DEBUG "Plot Galileo CLKs";
    280           $pngName = sprintf ( "%s_CLK_E.png", $station );
    281           my $chartCLK = newChart($station);
    282           $chartCLK->set( output => $pngName );
    283           $chartCLK->set( ylabel => "CLK [m]" );
    284 
    285           $dataset = Chart::Gnuplot::DataSet->new(
    286                                                    xdata   => $EPOCHS_E_CLK,
    287                                                    ydata   => $file->{'E_CLKs'},
    288                                                    title   => "Galileo Receiver clock",
    289                                                    timefmt => '%s',
    290                                                    style   => "points",
    291           );
    292           $chartCLK->plot2d($dataset);
    293           $y = $y - $dy;
    294 
    295           if ( $y < 30 / mm ) {
    296               $page = $pdf->page();
    297               $page->mediabox('A4');
    298               $y = $y0;
    299           }
    300           $png = $page->gfx();
    301           LOGDIE("Unable to find image file: $!\n") unless -e $pngName;
    302           $png->image( $pdf->image_png($pngName), $x, $y, $width, $height );
    303         }
    304 
    305         ######### Beidou CLK #####################
    306         if ( scalar @{ $file->{'C_CLKs'} } < 1 ) {
    307           DEBUG "No BDS CLKs found";
    308         }
    309         else {
    310           DEBUG "Plot BDS CLKs";
    311           $pngName = sprintf ( "%s_CLK_C.png", $station );
    312           my $chartCLK = newChart($station);
    313           $chartCLK->set( output => $pngName );
    314           $chartCLK->set( ylabel => "CLK [m]" );
    315 
    316           $dataset = Chart::Gnuplot::DataSet->new(
    317                                                    xdata   => $EPOCHS_C_CLK,
    318                                                    ydata   => $file->{'C_CLKs'},
    319                                                    title   => "BDS Receiver clock",
    320                                                    timefmt => '%s',
    321                                                    style   => "points",
    322           );
    323           $chartCLK->plot2d($dataset);
    324           $y = $y - $dy;
    325 
    326           if ( $y < 30 / mm ) {
    327               $page = $pdf->page();
    328               $page->mediabox('A4');
    329               $y = $y0;
    330           }
    331           $png = $page->gfx();
    332           LOGDIE("Unable to find image file: $!\n") unless -e $pngName;
    333           $png->image( $pdf->image_png($pngName), $x, $y, $width, $height );
     219            DEBUG "Plot CLKs";
     220            $pngName = sprintf ( "%s_CLK.png", $station );
     221            my $chartCLK = newChart($station);
     222            $chartCLK->set( output => $pngName );
     223            $chartCLK->set( ylabel => "CLK [m]" );
     224
     225            $dataset = Chart::Gnuplot::DataSet->new(
     226                                                     xdata   => $EPOCHS,
     227                                                     ydata   => $file->{'CLKs'},
     228                                                     title   => "Receiver clock",
     229                                                     timefmt => '%s',
     230                                                     style   => "linespoints",
     231            );
     232            $chartCLK->plot2d($dataset);
     233            $y = $y - $dy;
     234
     235            if ( $y < 30 / mm ) {
     236                $page = $pdf->page();
     237                $page->mediabox('A4');
     238                $y = $y0;
     239            }
     240            $png = $page->gfx();
     241            LOGDIE("could not find image file: $!\n") unless -e $pngName;
     242            $png->image( $pdf->image_png($pngName), $x, $y, $width, $height );
     243        }
     244
     245
     246        ######### OFF_GLO #####################
     247        if ( grep ( $_ eq "ALL", @plotTypes ) ) {
     248            if ( scalar @{ $file->{'OFF_GLOs'} } < 1 ) {
     249                DEBUG "No OFF_GLOs found";
     250            }
     251            else {
     252                DEBUG "Plot OFF_GLOs";
     253                my $pngName  = sprintf ( "%s_OFF_R.png", $station );
     254                my $chartOFF_GLO = newChart($station);
     255                $chartOFF_GLO->set( output => $pngName );
     256                $chartOFF_GLO->set( ylabel => "Offset GLONASS [m]" );
     257
     258                $dataset = Chart::Gnuplot::DataSet->new(
     259                                                         xdata   => $EPOCHS_OFF_GLO,
     260                                                         ydata   => $file->{'OFF_GLOs'},
     261                                                         title   => "Receiver Offset GLONASS",
     262                                                         timefmt => '%s',
     263                                                         style   => "linespoints",
     264                );
     265                $chartOFF_GLO->plot2d($dataset);    #system ("display $pngName&");
     266                $y = $y - $dy;
     267
     268                if ( $y < 30 / mm ) {
     269                    $page = $pdf->page();
     270                    $page->mediabox('A4');
     271                    $y = $y0;
     272                }
     273                $png = $page->gfx();
     274                LOGDIE("could not find image file: $!\n") unless -e $pngName;
     275                $png->image( $pdf->image_png($pngName), $x, $y, $width, $height );
     276            }
     277        }
     278
     279        ######### OFF_GAL #####################
     280        if ( grep ( $_ eq "ALL", @plotTypes ) ) {
     281            if ( scalar @{ $file->{'OFF_GALs'} } < 1 ) {
     282                DEBUG "No OFF_GALs found";
     283            }
     284            else {
     285                DEBUG "Plot OFF_GALs";
     286                my $pngName  = sprintf ( "%s_OFF_E.png", $station );
     287                my $chartOFF_GAL = newChart($station);
     288                $chartOFF_GAL->set( output => $pngName );
     289                $chartOFF_GAL->set( ylabel => "Offset Galileo [m]" );
     290
     291                $dataset = Chart::Gnuplot::DataSet->new(
     292                                                         xdata   => $EPOCHS_OFF_GAL,
     293                                                         ydata   => $file->{'OFF_GALs'},
     294                                                         title   => "Receiver Offset Galileo",
     295                                                         timefmt => '%s',
     296                                                         style   => "linespoints",
     297                );
     298                $chartOFF_GAL->plot2d($dataset);    #system ("display $pngName&");
     299                $y = $y - $dy;
     300
     301                if ( $y < 30 / mm ) {
     302                    $page = $pdf->page();
     303                    $page->mediabox('A4');
     304                    $y = $y0;
     305                }
     306                $png = $page->gfx();
     307                LOGDIE("could not find image file: $!\n") unless -e $pngName;
     308                $png->image( $pdf->image_png($pngName), $x, $y, $width, $height );
     309            }
     310        }
     311
     312        ######### OFF_BDS #####################
     313        if ( grep ( $_ eq "ALL", @plotTypes ) ) {
     314            if ( scalar @{ $file->{'OFF_BDSs'} } < 1 ) {
     315                DEBUG "No OFF_BDSs found";
     316            }
     317            else {
     318                DEBUG "Plot OFF_BDSs";
     319                my $pngName  = sprintf ( "%s_OFF_C.png", $station );
     320                my $chartOFF_BDS = newChart($station);
     321                $chartOFF_BDS->set( output => $pngName );
     322                $chartOFF_BDS->set( ylabel => "Offset Beidou [m]" );
     323
     324                $dataset = Chart::Gnuplot::DataSet->new(
     325                                                         xdata   => $EPOCHS_OFF_BDS,
     326                                                         ydata   => $file->{'OFF_BDSs'},
     327                                                         title   => "Receiver Offset Beidou",
     328                                                         timefmt => '%s',
     329                                                         style   => "linespoints",
     330                );
     331                $chartOFF_BDS->plot2d($dataset);    #system ("display $pngName&");
     332                $y = $y - $dy;
     333
     334                if ( $y < 30 / mm ) {
     335                    $page = $pdf->page();
     336                    $page->mediabox('A4');
     337                    $y = $y0;
     338                }
     339                $png = $page->gfx();
     340                LOGDIE("could not find image file: $!\n") unless -e $pngName;
     341                $png->image( $pdf->image_png($pngName), $x, $y, $width, $height );
     342            }
    334343        }
    335344
  • trunk/BNC/src/PPP/pppClient.cpp

    r10256 r10259  
    4949//////////////////////////////////////////////////////////////////////////////
    5050t_pppClient::t_pppClient(const t_pppOptions* opt) {
     51  _running = true;
    5152  _output   = 0;
    5253  _opt      = new t_pppOptions(*opt);
     
    7576//////////////////////////////////////////////////////////////////////////////
    7677t_pppClient::~t_pppClient() {
     78  _running = false;
    7779  delete _log;
    7880  delete _opt;
     
    279281  }
    280282
    281   while (true) {
     283  while (_running) {
    282284    Matrix BB(numBancroft, 4);
    283285    int iObs = -1;
     
    319321    // Check Blunders
    320322    // --------------
    321     const double BLUNDER = 200.0;
     323    const double BLUNDER = 100.0;
    322324    double   maxRes      = 0.0;
    323325    unsigned maxResIndex = 0;
     
    402404        offGlo = 0.0;
    403405      }
    404       if (fabs(maxRes) > OPT->_aprSigClkOff) {
    405         LOG << "t_pppClient::cmpOffGR outlier " << maxResPrn.toString() << " " << maxRes << endl;
     406      if (fabs(maxRes) > 100.0) {
     407        LOG << "t_pppClient::cmpOffGlo outlier " << maxResPrn.toString() << " " << maxRes << endl;
    406408        delete obsVector.at(maxResIndex);
    407409        obsVector.erase(obsVector.begin() + maxResIndex);
     
    455457      }
    456458
    457       if (fabs(maxRes) > OPT->_aprSigClkOff) {
    458         LOG << "t_pppClient::cmpOffGE outlier " << maxResPrn.toString() << " " << maxRes << endl;
     459      if (fabs(maxRes) > 100.0) {
     460        LOG << "t_pppClient::cmpOffGal outlier " << maxResPrn.toString() << " " << maxRes << endl;
    459461        delete obsVector.at(maxResIndex);
    460462        obsVector.erase(obsVector.begin() + maxResIndex);
     
    509511      }
    510512
    511       if (fabs(maxRes) > OPT->_aprSigClkOff) {
    512         LOG << "t_pppClient::cmpOffGC outlier " << maxResPrn.toString() << " " << maxRes << endl;
     513      if (fabs(maxRes) > 100.0) {
     514        LOG << "t_pppClient::cmpOffBDS outlier " << maxResPrn.toString() << " " << maxRes << endl;
    513515        delete obsVector.at(maxResIndex);
    514516        obsVector.erase(obsVector.begin() + maxResIndex);
  • trunk/BNC/src/PPP/pppClient.h

    r10256 r10259  
    3939  double              offGal() const {return _offGal;}
    4040  double              offBds() const {return _offBds;}
     41  void                resetOffGlo() {_offGlo = 0.0;}
     42  void                resetOffGal() {_offGal = 0.0;}
     43  void                resetOffBds() {_offBds = 0.0;}
    4144
    4245  std::ostringstream& log() {return *_log;}
     
    8184  bool                      _pseudoObsIono;
    8285  QMap<char, int>           _usedSystems;
     86  bool                      _running;
    8387};
    8488
  • trunk/BNC/src/PPP/pppFilter.cpp

    r10257 r10259  
    372372        }
    373373
    374         // Check Pre-Fit Residuals => switched off, because after a millisecond receiver clock jump, a cycle slip is detected for all satellites
     374        // Check Pre-Fit Residuals
     375        //=> switched off, because after a millisecond receiver clock jump, a cycle slip is detected for all satellites
    375376        /* -----------------------
    376377
  • trunk/BNC/src/PPP/pppParlist.cpp

    r10256 r10259  
    497497  // GLONASS Clock Offset
    498498  // --------------------
    499   if (OPT->useSystem('R')) {
     499  if ( _usedSystems.contains('R')  &&
     500      (_usedSystems.contains('G') || _usedSystems.contains('E') || _usedSystems.contains('C'))) {
    500501    required.push_back(new t_pppParam(t_pppParam::offGlo, t_prn(), t_lc::dummy));
     502  }
     503  else {
     504    PPP_CLIENT->resetOffGlo();
    501505  }
    502506
    503507  // Galileo Clock Offset
    504508  // --------------------
    505   if (OPT->useSystem('E')) {
     509  if (_usedSystems.contains('E') && _usedSystems.contains('G')) {
    506510    required.push_back(new t_pppParam(t_pppParam::offGal, t_prn(), t_lc::dummy));
     511  }
     512  else {
     513    PPP_CLIENT->resetOffGal();
    507514  }
    508515
    509516  // BDS Clock Offset
    510517  // ----------------
    511   if (OPT->useSystem('C')) {
     518  if (_usedSystems.contains('C')  && (_usedSystems.contains('G') || _usedSystems.contains('E'))) {
    512519    required.push_back(new t_pppParam(t_pppParam::offBds, t_prn(), t_lc::dummy));
     520  }
     521  else {
     522    PPP_CLIENT->resetOffBds();
    513523  }
    514524
  • trunk/BNC/src/pppMain.cpp

    r10257 r10259  
    528528    opt->_aprSigAmb       = 10000.0;
    529529    opt->_aprSigClk       = 300000.0;
    530     opt->_aprSigClkOff    = 100000.0;
     530    opt->_aprSigClkOff    = 1000.0;
    531531    opt->_aprSigIon       = 1000.0;
    532532    opt->_noiseIon        = 100.0;
Note: See TracChangeset for help on using the changeset viewer.