/// <summary> /// Updates the measurement and calculates the new control output. /// </summary> public double UpdateMeasurement(AnalogItem<double> source) { Range range = source.EURange; m_measurement.Value = source.Value; // clamp the setpoint. if (range != null) { if (m_setPoint.Value > range.High) { m_setPoint.Value = range.High; } if (m_setPoint.Value < range.Low) { m_setPoint.Value = range.Low; } } // calculate error. m_controlOut.Value = m_setPoint.Value - m_measurement.Value; if (range != null) { m_controlOut.Value /= range.Magnitude; if (Math.Abs(m_controlOut.Value) > 1.0) { m_controlOut.Value = (m_controlOut.Value < 0)?-1.0:+1.0; } } // return the new output. return m_controlOut.Value; }
/// <summary> /// Returns the value as a percentage of the range. /// </summary> private double GetPercentage(AnalogItem <double> value) { double percentage = value.Value; Range range = value.EURange; if (range != null) { percentage /= Math.Abs(range.High - range.Low); if (Math.Abs(percentage) > 1.0) { percentage = 1.0; } } return(percentage); }
/// <summary> /// Updates the measurement and calculates the new control output. /// </summary> public double UpdateMeasurement(AnalogItem <double> source) { Range range = source.EURange; m_measurement.Value = source.Value; // clamp the setpoint. if (range != null) { if (m_setPoint.Value > range.High) { m_setPoint.Value = range.High; } if (m_setPoint.Value < range.Low) { m_setPoint.Value = range.Low; } } // calculate error. m_controlOut.Value = m_setPoint.Value - m_measurement.Value; if (range != null) { m_controlOut.Value /= range.Magnitude; if (Math.Abs(m_controlOut.Value) > 1.0) { m_controlOut.Value = (m_controlOut.Value < 0)?-1.0:+1.0; } } // return the new output. return(m_controlOut.Value); }
/// <summary> /// Returns the value as a percentage of the range. /// </summary> private double GetPercentage(AnalogItem<double> value) { double percentage = value.Value; Range range = value.EURange; if (range != null) { percentage /= Math.Abs(range.High - range.Low); if (Math.Abs(percentage) > 1.0) { percentage = 1.0; } } return percentage; }