public override void Execute(MeterDataSet meterDataSet) { CycleDataResource cycleDataResource; DataGroup dataGroup; VIDataGroup viDataGroup; VICycleDataGroup viCycleDataGroup; cycleDataResource = CycleDataResource.GetResource(meterDataSet, m_dbAdapterContainer); m_breakerCurrents = new HashSet <string>(cycleDataResource.DataGroups .Where(dg => dg.Line.AssetKey.StartsWith("BR")) .SelectMany(dg => dg.DataSeries) .SelectMany(ds => ds.SeriesInfo.Channel.BreakerChannels) .Select(ch => ch.BreakerNumber)); for (int i = 0; i < cycleDataResource.DataGroups.Count; i++) { dataGroup = cycleDataResource.DataGroups[i]; viDataGroup = cycleDataResource.VIDataGroups[i]; viCycleDataGroup = cycleDataResource.VICycleDataGroups[i]; IdentifyBreakerOperations(dataGroup, viDataGroup, viCycleDataGroup); } m_meterDataSet = meterDataSet; }
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)); } } }
public override void Execute(MeterDataSet meterDataSet) { CycleDataResource cycleDataResource; EventClassificationResource eventClassificationResource; Log.Info("Executing operation to load event data into the database..."); cycleDataResource = CycleDataResource.GetResource(meterDataSet, m_dbAdapterContainer); eventClassificationResource = meterDataSet.GetResource(() => new EventClassificationResource(m_dbAdapterContainer)); LoadEvents(meterDataSet, cycleDataResource.DataGroups, cycleDataResource.VICycleDataGroups, eventClassificationResource.Classifications); LoadDisturbances(meterDataSet, cycleDataResource.DataGroups); m_meterDataSet = meterDataSet; }
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); } } }
public override void Execute(MeterDataSet meterDataSet) { CycleDataResource cycleDataResource = CycleDataResource.GetResource(meterDataSet, m_dbAdapterContainer); SagDataResource sagDataResource = SagDataResource.GetResource(meterDataSet, m_dbAdapterContainer); SwellDataResource swellDataResource = SwellDataResource.GetResource(meterDataSet, m_dbAdapterContainer); InterruptionDataResource interruptionDataResource = InterruptionDataResource.GetResource(meterDataSet, m_dbAdapterContainer); DisturbanceTableAdapter disturbanceAdapter = m_dbAdapterContainer.GetAdapter <DisturbanceTableAdapter>(); DisturbanceDataTable disturbanceTable = disturbanceAdapter.GetDataByFileGroup(meterDataSet.FileGroup.ID); SystemInfoDataContext systemInfo = m_dbAdapterContainer.GetAdapter <SystemInfoDataContext>(); m_disturbanceSeverityTable = new DisturbanceSeverityDataTable(); foreach (VoltageEnvelope envelope in systemInfo.VoltageEnvelopes) { foreach (DisturbanceRow disturbance in disturbanceTable) { IEnumerable <VoltageCurvePoint> points = envelope.VoltageCurves.Select(curve => curve.VoltageCurvePoints .Where(p => p.DurationSeconds <= disturbance.DurationSeconds) .OrderBy(p => p.LoadOrder) .LastOrDefault()); IEnumerable <int> severityCodes = points.Select(point => ((object)point != null) ? (int)((1.0D - disturbance.PerUnitMagnitude) / (1.0D - point.PerUnitMagnitude)) : 0); int maxSeverityCode = severityCodes .DefaultIfEmpty(0) .Max(); if (maxSeverityCode < 0) { maxSeverityCode = 0; } else if (maxSeverityCode > 5) { maxSeverityCode = 5; } m_disturbanceSeverityTable.AddDisturbanceSeverityRow(envelope.ID, disturbance.ID, maxSeverityCode); } } }
public void Initialize(MeterDataSet meterDataSet, DbAdapterContainer dbAdapterContainer) { DataGroup dataGroup; VICycleDataGroup viCycleDataGroup; CycleDataResource cycleDataResource; ConnectionStringParser.ParseConnectionString(meterDataSet.ConnectionString, this); m_disturbances = new Dictionary <DataGroup, List <Disturbance> >(); cycleDataResource = CycleDataResource.GetResource(meterDataSet, dbAdapterContainer); for (int i = 0; i < cycleDataResource.DataGroups.Count; i++) { dataGroup = cycleDataResource.DataGroups[i]; viCycleDataGroup = cycleDataResource.VICycleDataGroups[i]; DetectDisturbances(dataGroup, viCycleDataGroup); } }
public override void Execute(MeterDataSet meterDataSet) { CycleDataResource cycleDataResource; DataGroup dataGroup; VIDataGroup viDataGroup; VICycleDataGroup viCycleDataGroup; cycleDataResource = CycleDataResource.GetResource(meterDataSet, m_dbAdapterContainer); for (int i = 0; i < cycleDataResource.DataGroups.Count; i++) { dataGroup = cycleDataResource.DataGroups[i]; viDataGroup = cycleDataResource.VIDataGroups[i]; viCycleDataGroup = cycleDataResource.VICycleDataGroups[i]; IdentifyBreakerOperations(dataGroup, viDataGroup, viCycleDataGroup); } m_meterDataSet = meterDataSet; }
public override void Execute(MeterDataSet meterDataSet) { FaultDataResource faultDataResource = meterDataSet.GetResource(() => new FaultDataResource(m_dbAdapterContainer)); CycleDataResource cycleDataResource = CycleDataResource.GetResource(meterDataSet, m_dbAdapterContainer); FaultGroup faultGroup; Log.Info("Executing operation to load fault location data into the database..."); m_faultSummarizer = new FaultSummarizer(m_systemFrequency); m_faultSummarizer.MeterDataSet = meterDataSet; foreach (DataGroup dataGroup in cycleDataResource.DataGroups) { if (!faultDataResource.FaultLookup.TryGetValue(dataGroup, out faultGroup)) { continue; } // Generate summary rows for the fault to be entered into the database m_faultSummarizer.DataGroup = dataGroup; m_faultSummarizer.FaultGroup = faultGroup; m_faultSummarizer.SummarizeFault(); } }