/// <summary> /// Returns the nominal (Item1), min (Item2), and max (Item3) allowed HBM Peak Current to be within JS-001 specification /// </summary> /// <param name="hbmVoltage">The voltage of the HBM pulse waveform (polarity is ignored, absolute value will be used)</param> /// <returns>The nominal (Item1), min (Item2), and max (Item3) allowed HBM Peak Current to be within JS-001 specification</returns> internal static Tuple <double, double, double> HBMPeakCurrentNominalMinMax(double hbmVoltage) { double absHBMVoltage = System.Math.Abs(hbmVoltage); HBM500OhmJS001WaveformCharacteristicsSet set = HBM500OhmJS001WaveformCharacteristics.GenerateSetForHBMVoltage(absHBMVoltage); return(new Tuple <double, double, double>( DoubleRangeExtensions.CenterOfRange(set.PeakCurrent.Item1, set.PeakCurrent.Item2), set.PeakCurrent.Item1, set.PeakCurrent.Item2)); }
/// <summary> /// Calculates the Peak Current (Ips) related values /// </summary> private void CalculatePeakCurrent() { // Calculate the (absolute) Peak Current DataPoint DataPoint absolutePeakCurrentDataPoint = this.AbsoluteWaveform.Maximum(); // Convert to the signed Peak Current DataPoint this.PeakCurrentDataPoint = absolutePeakCurrentDataPoint.InvertYValueIfNegativePolarity(this.WaveformIsPositivePolarity); // Extract the Peak Current value this.PeakCurrentValue = this.PeakCurrentDataPoint.Y; // Determine the min and max allowed values for the Peak Current to be passing Tuple <double, double, double> nomMinMaxPeakCurrent = HBM500OhmJS001WaveformCharacteristics.HBMPeakCurrentNominalMinMax(this.SignedVoltage); this.PeakCurrentAllowedMinimum = nomMinMaxPeakCurrent.Item2.InvertValueIfNegativePolarity(this.WaveformIsPositivePolarity); this.PeakCurrentAllowedMaximum = nomMinMaxPeakCurrent.Item3.InvertValueIfNegativePolarity(this.WaveformIsPositivePolarity); // Determine if the Peak Current is passing this.PeakCurrentIsPassing = DoubleRangeExtensions.BetweenInclusive(this.PeakCurrentAllowedMinimum, this.PeakCurrentAllowedMaximum, this.PeakCurrentValue); }