Esempio n. 1
0
        public void processFile(DateTime date, int DiffHour, bool fillData)
        {
            Date = date.ToString("dd.MM.yyyy HH:00");
            Hour = date.Hour + 1;
            GG   = blockData.BlockNumber;
            utc  = String.Format("{0}-{1}", date.AddHours(-DiffHour).ToString("HH"), date.AddHours(-DiffHour + 1).ToString("HH"));
            string        fn   = "";
            List <string> data = FTPClass.ReadFile(date.AddHours(-DiffHour), blockData.BlockNumber, out fn);

            FileName = fn;

            if (fillData)
            {
                TextFile = string.Join("\r\n", data);
            }


            Data = new Dictionary <DateTime, Record>();
            List <Record> dataS = new List <Record>();

            double prevP = 10e6;
            double prevF = 10e6;

            cntPower    = 0;
            cntBadPower = 0;
            cntFreq     = 0;
            cntBad      = 0;
            List <double> prevPperv = new List <double>();
            List <double> prevPplan = new List <double>();
            List <double> prevPzvn  = new List <double>();

            int cntRptFreq  = 0;
            int cntRptPower = 0;

            foreach (string str in data)
            {
                Record rec = new Record(date, str, blockData.PNom, blockData.FNom, ref prevPperv, ref prevPplan, ref prevPzvn);
                dataS.Add(rec);
                if (fillData)
                {
                    Data.Add(rec.Date, rec);
                }
                else
                {
                    if (rec.F_gc > 49.8)
                    {
                        DataSDay[blockData.BlockNumber].Add(rec);
                    }
                }


                double diffP = Math.Abs(rec.P_fakt - prevP);
                double diffF = Math.Abs(rec.F_gc - prevF);

                if (diffP > 0 && diffP <= blockData.PNom * 0.01)
                {
                    cntPower++;
                }

                if (diffF > 0 && diffF <= 0.001)
                {
                    cntFreq++;
                }


                if (diffP < 10e-6)
                {
                    cntRptPower++;
                }
                else
                {
                    if (cntRptPower >= 10)
                    {
                        TRepeatPower += cntRptPower;
                    }
                    cntRptPower = 0;
                }

                if (diffF < 10e-6)
                {
                    cntRptFreq++;
                }
                else
                {
                    if (cntRptFreq >= 10)
                    {
                        TRepeatFreq += cntRptFreq;
                    }
                    cntRptFreq = 0;
                }

                double df   = Math.Abs(rec.F_gc - 50);
                double minP = blockData.PMin + 0.07 * blockData.PNom - 0.01 * blockData.PNom;
                double maxP = blockData.PMax - 0.07 * blockData.PNom + 0.01 * blockData.PNom;

                if (df < 0.02)
                {
                    if (rec.P_fakt < minP)
                    {
                        TNoRezerv++;
                    }
                    if (rec.P_fakt > maxP)
                    {
                        TNoRezerv++;
                    }
                }

                if (rec.BadQ > 0)
                {
                    cntBad++;
                }

                if (rec.P_fakt > rec.P_max || rec.P_fakt < rec.P_min)
                {
                    cntBadPower++;
                }

                prevP = rec.P_fakt;
                prevF = rec.F_gc;
            }

            //RHO = calcRHO(dataS);
            calcReact(dataS, fillData);
            NoAutoComment = calcNoAuto(dataS);
            calcKoleb(dataS, fillData);
        }
Esempio n. 2
0
        private async Task <bool> LoadFiles()
        {
            DateTime date = clndDate.SelectedDate.Value;

            FTPData  = new Dictionary <string, DateTime>();
            DiffHour = Int32.Parse(txtDiffHour.Text);

            List <RecordHour> hoursData = new List <RecordHour>();

            RecordHour.DataSDay = new Dictionary <string, List <Record> >();
            RecordHour prev = null;
            SortedList <string, EDSReportRequestRecord> EDSData = new SortedList <string, EDSReportRequestRecord>();
            EDSReport report = null;

            if (chbNPRCHMaket.IsChecked.Value)
            {
                try
                {
                    EDSClass.Disconnect();
                }
                catch { }
                EDSClass.Connect();
                report = new EDSReport(date.AddHours(-DiffHour + 5), date.AddHours(-DiffHour + 5 + 24), EDSReportPeriod.hour);

                foreach (KeyValuePair <string, BlockData> de in SettingsNPRCH.BlocksDict)
                {
                    int    gg   = Int32.Parse(de.Key);
                    string iess = String.Format("MC_NPRCH_GG{0}.EDS@CALC", gg);
                    EDSReportRequestRecord rec = report.addRequestField(RecordHour.EDSPoints[iess], EDSReportFunction.val);
                    EDSData.Add(de.Key, rec);
                }
                bool ok = await report.ReadData();
            }
            for (int hour = 0; hour <= 23; hour++)
            {
                foreach (KeyValuePair <string, BlockData> de in SettingsNPRCH.BlocksDict)
                {
                    StatusText = "Загрузка " + hour.ToString();
                    DateTime dt     = date.AddHours(hour);
                    bool     ok     = FTPClass.CheckFile(dt.AddHours(-DiffHour), de.Key);
                    string   header = String.Format("ГГ{3} {0} [{1} UTC] {2}", dt.ToString("dd.MM HH"), dt.AddHours(-DiffHour).ToString("dd.MM HH"), ok, de.Key);
                    FTPData.Add(header, dt);
                    if (ok)
                    {
                        StatusText = "Обработка " + hour.ToString();
                        RecordHour rh = new RecordHour(de.Value);
                        rh.Header = header;
                        rh.processFile(dt, DiffHour, false);
                        if (chbNPRCHMaket.IsChecked.Value)
                        {
                            double val = report.ResultData[report.DateStart.AddHours(hour)][EDSData[de.Key].Id];
                            rh.NPRCHMaket = val > 0 ? "+" : " ";
                        }
                        hoursData.Add(rh);

                        prev = rh;
                    }
                }
                System.Threading.Thread.Sleep(10);
            }
            //hoursData.Last().NoReactComment = "";
            //hoursData.Last().calcReact(RecordHour.DataSDay["10"],false);
            //RecDay.calcRHO();
            // StatusText = RecDay.RHO.ToString();
            lbHours.ItemsSource       = FTPData;
            lbHours.DisplayMemberPath = "Key";
            grdDayData.ItemsSource    = hoursData;
            tabDay.IsSelected         = true;

            btnLoadFiles.IsEnabled = true;
            return(true);
        }