protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { IList <double> rpmData = set.GetParameterOfType( PsaParameterType.EngineRpm).GetDoubles(); IList <double> injectionTimeData = set.GetParameterOfType( PsaParameterType.InjectionTime).GetDoubles(); CorrelatedMedianExtractor extractor = new CorrelatedMedianExtractor(rpmData, injectionTimeData, 5); double value = extractor.GetForBaseValue((int)rpm); if (double.IsNaN(value)) { return; } ISettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); double mark = applier.GetMarkForValue(value); if (double.IsNaN(mark)) { return; } MarksHistory[date] = mark; }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { IList <double> rpmData = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles(); IList <double> timeData = set.GetParameterOfType(PsaParameterType.InjectionTime).GetDoubles(); EngineStartupDetector detector = new EngineStartupDetector(rpmData); if (!detector.EngineStartupDetected()) { return; } IList <int> indexes = detector.GetEngineStartupPointIndexes(); double peakTime = 0; foreach (int i in indexes) { double newPeakTime = StartupRegionExtractor.Extract(i, timeData).Max(); if (newPeakTime > peakTime) { peakTime = newPeakTime; } } if (peakTime == 0) { return; } SettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); double mark = applier.GetMarkForValue(peakTime); MarksHistory[date] = mark; }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { IList <double> rpmData = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles(); IList <double> requiredData = set.GetParameterOfType(requiredParameter).GetDoubles(); EngineStartupDetector detector = new EngineStartupDetector(rpmData); if (!detector.EngineStartupDetected()) { return; } IList <int> startupIndexes = detector.GetEngineStartupPointIndexes(); foreach (int startupIndex in startupIndexes) { double peak = StartupRegionExtractor.Extract(startupIndex, requiredData).Max(); if (double.IsNaN(peak)) { continue; } SettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); double mark = applier.GetMarkForValue(peak); if (!double.IsNaN(mark)) { MarksHistory[date] = mark; } } }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { IList <double> rpmData = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles(); IList <double> pressureDeltaData = set.GetParameterOfType(PsaParameterType.FuelSystemPressureDelta).GetDoubles(); CorrelatedMedianExtractor medianExtractor = new CorrelatedMedianExtractor(rpmData, pressureDeltaData, 5); double value = medianExtractor.GetForBaseValue(Convert.ToDouble((int)Rpm)); if (double.IsNaN(value)) { return; } SettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); MarksHistory[date] = applier.GetMarkForValue(value); }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { IList <double> rpmLine = set.GetParameterOfType(PsaParameterType.EngineRpm).GetDoubles(); IList <double> chargeTimeLine = set.GetParameterOfType(requiredParameter).GetDoubles(); CorrelatedMedianExtractor exractor = new CorrelatedMedianExtractor( rpmLine, chargeTimeLine, 5); double value = exractor.GetForBaseValue((int)Rpm); if (double.IsNaN(value)) { return; } SettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); MarksHistory[date] = applier.GetMarkForValue(value); }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { // 1. get our target rpm from settings PsaParameterData rpmParameter = set.GetParameterOfType(PsaParameterType.EngineRpm); // 2. find data in the dataset PsaParameterData oxygenSensorVoltageParameter = set.GetParameterOfType(GetOxygenSensorParameter()); // 3. get base line (rpm) IList <double> baseLine = rpmParameter.GetDoubles(); // 4. get dependant line (probe voltage) IList <double> dependantLine = oxygenSensorVoltageParameter.GetDoubles(); // 5. extract correlated median for base RPM value CorrelatedMedianExtractor extractor = new CorrelatedMedianExtractor(baseLine, dependantLine, BaseValuesDifferencePercentageThreshold); CheckpointRpm rpm = GetTargetRpm(); double corellatedMedian = extractor.GetForBaseValue(Convert.ToDouble(rpm)); if (double.IsNaN(corellatedMedian)) { return; } // 6. apply atom settings SettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); double mark = Math.Round(applier.GetMarkForValue(corellatedMedian), 1); // 7. save to marks history MarksHistory[date] = mark; }
protected override void PickFromPsaParametersSet( DateTime date, PsaParametersSet set) { PsaParameterData rpm = set.GetParameterOfType( PsaParameterType.EngineRpm); PsaParameterData voltage = set.GetParameterOfType( PsaParameterType.BatteryVoltage); IList <double> startupVoltageValues = ExtractStartupVoltageValues(rpm, voltage); if (startupVoltageValues.Count == 0) { // no action - this set does not have engine start info return; } double minVoltageValue = startupVoltageValues.Min(); SettingsAtomApplier applier = new SettingsAtomApplier( Settings.SettingsMolecule.GetPriorityAtom()); double mark = Math.Round(applier.GetMarkForValue(minVoltageValue), 1); MarksHistory[date] = mark; }