Пример #1
0
        public void WriteResults(DbAdapterContainer dbAdapterContainer, MeterDataSet meterDataSet)
        {
            CycleDataResource cycleDataResource;
            FaultDataResource faultDataResource;

            DataGroup        dataGroup;
            VICycleDataGroup viCycleDataGroup;
            FaultGroup       faultGroup;

            string rootFileName;
            string fileName;

            cycleDataResource = meterDataSet.GetResource(() => CycleDataResource.GetResource(meterDataSet, dbAdapterContainer));
            faultDataResource = meterDataSet.GetResource(() => new FaultDataResource(dbAdapterContainer));

            if (!Directory.Exists(m_resultsPath))
            {
                Directory.CreateDirectory(m_resultsPath);
            }

            for (int i = 0; i < cycleDataResource.DataGroups.Count; i++)
            {
                dataGroup = cycleDataResource.DataGroups[i];

                if (faultDataResource.FaultLookup.TryGetValue(dataGroup, out faultGroup))
                {
                    rootFileName = FilePath.GetFileNameWithoutExtension(meterDataSet.FilePath);
                    fileName     = string.Format("{0},{1:000},Line{2}.xml", rootFileName, i, dataGroup.Line.AssetKey);

                    viCycleDataGroup = cycleDataResource.VICycleDataGroups[i];
                    WriteResults(meterDataSet, dataGroup, viCycleDataGroup, faultGroup.Faults, Path.Combine(m_resultsPath, fileName));
                }
            }
        }
Пример #2
0
        public void WriteResults(DbAdapterContainer dbAdapterContainer, MeterDataSet meterDataSet)
        {
            CycleDataResource cycleDataResource;
            FaultDataResource faultDataResource;

            DataGroup    dataGroup;
            FaultGroup   faultGroup;
            List <int>   seriesIDs;
            EventDataSet eventDataSet;

            string rootFileName;
            string fileName;

            cycleDataResource = meterDataSet.GetResource(() => CycleDataResource.GetResource(meterDataSet, dbAdapterContainer));
            faultDataResource = meterDataSet.GetResource(() => new FaultDataResource(dbAdapterContainer));

            if (!Directory.Exists(m_resultsPath))
            {
                Directory.CreateDirectory(m_resultsPath);
            }

            for (int i = 0; i < cycleDataResource.DataGroups.Count; i++)
            {
                dataGroup = cycleDataResource.DataGroups[i];

                if (faultDataResource.FaultLookup.TryGetValue(dataGroup, out faultGroup))
                {
                    rootFileName = FilePath.GetFileNameWithoutExtension(meterDataSet.FilePath);
                    fileName     = string.Format("{0},{1:000},Line{2}.dat", rootFileName, i, dataGroup.Line.AssetKey);

                    seriesIDs = dataGroup.DataSeries
                                .Select(series => series.SeriesInfo.ID)
                                .ToList();

                    eventDataSet = new EventDataSet()
                    {
                        ResultsPath      = Path.Combine(m_resultsPath, fileName),
                        MeterDataSet     = meterDataSet,
                        TimeZoneOffset   = GetTimeZoneOffset(meterDataSet.Meter.TimeZone, dataGroup.StartTime),
                        DataGroup        = dataGroup,
                        VICycleDataGroup = cycleDataResource.VICycleDataGroups[i],
                        Faults           = faultGroup.Faults,
                        OutputChannels   = dbAdapterContainer.GetAdapter <FaultLocationInfoDataContext>().OutputChannels.Where(channel => seriesIDs.Contains(channel.SeriesID)).ToList()
                    };

                    WriteResults(eventDataSet);
                }
            }
        }
Пример #3
0
        public void Initialize(MeterDataSet meterDataSet)
        {
            ConnectionStringParser.ParseConnectionString(meterDataSet.ConnectionString, this);

            m_disturbances = new Dictionary <DataGroup, List <Disturbance> >();

            CycleDataResource cycleDataResource = meterDataSet.GetResource <CycleDataResource>();

            int lineCount = meterDataSet.Meter.MeterLines.Count;

            for (int i = 0; i < cycleDataResource.DataGroups.Count; i++)
            {
                DataGroup        dataGroup        = cycleDataResource.DataGroups[i];
                VICycleDataGroup viCycleDataGroup = cycleDataResource.VICycleDataGroups[i];
                Range <DateTime> eventDateRange   = new Range <DateTime>(dataGroup.StartTime, dataGroup.EndTime);

                if (lineCount == 1 && dataGroup.Disturbances.Count > 0)
                {
                    ProcessReportedDisturbances(meterDataSet.Meter, dataGroup);
                }
                else
                {
                    DetectDisturbances(dataGroup, viCycleDataGroup);
                }
            }

            DataGroupsResource dataGroupsResource = meterDataSet.GetResource <DataGroupsResource>();

            foreach (DataGroup dataGroup in dataGroupsResource.DataGroups)
            {
                if (dataGroup.DataSeries.Count > 0)
                {
                    continue;
                }

                if (lineCount == 1 && dataGroup.Disturbances.Count > 0)
                {
                    ProcessReportedDisturbances(meterDataSet.Meter, dataGroup);
                }
            }
        }
Пример #4
0
        public void Initialize(MeterDataSet meterDataSet)
        {
            DataGroup         dataGroup;
            VICycleDataGroup  viCycleDataGroup;
            CycleDataResource cycleDataResource;

            ConnectionStringParser.ParseConnectionString(meterDataSet.ConnectionString, this);

            m_disturbances = new Dictionary <DataGroup, List <Disturbance> >();

            cycleDataResource = meterDataSet.GetResource <CycleDataResource>();

            for (int i = 0; i < cycleDataResource.DataGroups.Count; i++)
            {
                dataGroup        = cycleDataResource.DataGroups[i];
                viCycleDataGroup = cycleDataResource.VICycleDataGroups[i];
                DetectDisturbances(dataGroup, viCycleDataGroup);
            }
        }
        public void WriteResults(DbAdapterContainer dbAdapterContainer, MeterDataSet meterDataSet)
        {
            CycleDataResource cycleDataResource;
            FaultDataResource faultDataResource;

            DataGroup dataGroup;
            FaultGroup faultGroup;
            List<int> seriesIDs;
            EventDataSet eventDataSet;

            string rootFileName;
            string fileName;

            cycleDataResource = meterDataSet.GetResource(() => CycleDataResource.GetResource(meterDataSet, dbAdapterContainer));
            faultDataResource = meterDataSet.GetResource(() => new FaultDataResource(dbAdapterContainer));

            if (!Directory.Exists(m_resultsPath))
                Directory.CreateDirectory(m_resultsPath);

            for (int i = 0; i < cycleDataResource.DataGroups.Count; i++)
            {
                dataGroup = cycleDataResource.DataGroups[i];

                if (faultDataResource.FaultLookup.TryGetValue(dataGroup, out faultGroup))
                {
                    rootFileName = FilePath.GetFileNameWithoutExtension(meterDataSet.FilePath);
                    fileName = string.Format("{0},{1:000},Line{2}.dat", rootFileName, i, dataGroup.Line.AssetKey);

                    seriesIDs = dataGroup.DataSeries
                        .Select(series => series.SeriesInfo.ID)
                        .ToList();

                    eventDataSet = new EventDataSet()
                    {
                        ResultsPath = Path.Combine(m_resultsPath, fileName),
                        MeterDataSet = meterDataSet,
                        TimeZoneOffset = GetTimeZoneOffset(meterDataSet.Meter.TimeZone, dataGroup.StartTime),
                        DataGroup = dataGroup,
                        VICycleDataGroup = cycleDataResource.VICycleDataGroups[i],
                        Faults = faultGroup.Faults,
                        OutputChannels = dbAdapterContainer.GetAdapter<FaultLocationInfoDataContext>().OutputChannels.Where(channel => seriesIDs.Contains(channel.SeriesID)).ToList()
                    };

                    WriteResults(eventDataSet);
                }
            }
        }
Пример #6
0
        public void Parse(string filePath)
        {
            Schema schema = Parser.Schema;

            Meter meter = new Meter();

            meter.MeterLocation = new MeterLocation();
            meter.Channels      = new List <Channel>();
            meter.AssetKey      = schema.DeviceID;
            meter.Name          = schema.DeviceID;
            meter.ShortName     = schema.DeviceID.Substring(0, Math.Min(schema.DeviceID.Length, 50));

            MeterLocation meterLocation = meter.MeterLocation;

            meterLocation.Meters = new List <Meter>()
            {
                meter
            };
            meterLocation.AssetKey    = schema.StationName;
            meterLocation.Name        = schema.StationName;
            meterLocation.ShortName   = schema.StationName.Substring(0, Math.Min(schema.StationName.Length, 50));
            meterLocation.Description = schema.StationName;

            foreach (AnalogChannel analogChannel in schema.AnalogChannels)
            {
                Channel channel = ParseSeries(analogChannel);
                channel.Meter = meter;

                DataSeries dataSeries = new DataSeries();
                dataSeries.SeriesInfo = channel.Series[0];

                meter.Channels.Add(channel);

                while (MeterDataSet.DataSeries.Count <= analogChannel.Index)
                {
                    MeterDataSet.DataSeries.Add(new DataSeries());
                }

                MeterDataSet.DataSeries[analogChannel.Index] = dataSeries;
            }

            foreach (DigitalChannel digitalChannel in schema.DigitalChannels)
            {
                Channel channel = ParseSeries(digitalChannel);
                channel.Meter = meter;

                DataSeries dataSeries = new DataSeries();
                dataSeries.SeriesInfo = channel.Series[0];

                meter.Channels.Add(channel);

                while (MeterDataSet.Digitals.Count <= digitalChannel.Index)
                {
                    MeterDataSet.Digitals.Add(new DataSeries());
                }

                MeterDataSet.Digitals[digitalChannel.Index] = dataSeries;
            }

            try
            {
                while (Parser.ReadNext())
                {
                    for (int i = 0; i < schema.AnalogChannels.Length; i++)
                    {
                        int    seriesIndex = schema.AnalogChannels[i].Index;
                        string units       = schema.AnalogChannels[i].Units.ToUpper();
                        double multiplier  = (units.Contains("KA") || units.Contains("KV")) ? 1000.0D : 1.0D;
                        MeterDataSet.DataSeries[seriesIndex].DataPoints.Add(new DataPoint()
                        {
                            Time = Parser.Timestamp, Value = multiplier * Parser.PrimaryValues[i]
                        });
                    }

                    for (int i = 0; i < schema.DigitalChannels.Length; i++)
                    {
                        int valuesIndex = schema.TotalAnalogChannels + i;
                        int seriesIndex = schema.DigitalChannels[i].Index;
                        MeterDataSet.Digitals[seriesIndex].DataPoints.Add(new DataPoint()
                        {
                            Time = Parser.Timestamp, Value = Parser.Values[valuesIndex]
                        });
                    }
                }
            }
            catch (InvalidOperationException ex)
            {
                Log.Warn(ex.Message, ex);
            }

            MeterDataSet.Meter = meter;

            string infFilePath = Path.ChangeExtension(filePath, "inf");

            if (File.Exists(infFilePath))
            {
                IniFile    infFile    = new IniFile(infFilePath);
                INFDataSet infDataSet = new INFDataSet(infFile);
                MeterDataSet.GetResource(() => new BreakerRestrikeResource(infDataSet));
            }
        }
Пример #7
0
        public void WriteResults(DbAdapterContainer dbAdapterContainer, MeterDataSet meterDataSet)
        {
            CycleDataResource cycleDataResource;
            FaultDataResource faultDataResource;

            DataGroup dataGroup;
            VICycleDataGroup viCycleDataGroup;
            FaultGroup faultGroup;

            string rootFileName;
            string fileName;

            cycleDataResource = meterDataSet.GetResource(() => CycleDataResource.GetResource(meterDataSet, dbAdapterContainer));
            faultDataResource = meterDataSet.GetResource(() => new FaultDataResource(dbAdapterContainer));

            if (!Directory.Exists(m_resultsPath))
                Directory.CreateDirectory(m_resultsPath);

            for (int i = 0; i < cycleDataResource.DataGroups.Count; i++)
            {
                dataGroup = cycleDataResource.DataGroups[i];

                if (faultDataResource.FaultLookup.TryGetValue(dataGroup, out faultGroup))
                {
                    rootFileName = FilePath.GetFileNameWithoutExtension(meterDataSet.FilePath);
                    fileName = string.Format("{0},{1:000},Line{2}.xml", rootFileName, i, dataGroup.Line.AssetKey);

                    viCycleDataGroup = cycleDataResource.VICycleDataGroups[i];
                    WriteResults(meterDataSet, dataGroup, viCycleDataGroup, faultGroup.Faults, Path.Combine(m_resultsPath, fileName));
                }
            }
        }