public PidControllerOld(double proportionalGain, double integralGain, double derivativeGain, double integratorMinimumLimit, double integratorMaximumLimit) : this( PidControllerExtensions.Gains(proportionalGain, integralGain, derivativeGain), PidControllerExtensions.IntegratorLimits(integratorMinimumLimit, integratorMaximumLimit) ) { }
public double Update(double error, double processVariable) { var proportionalTerm = PidControllerExtensions.ProportionalTerm(gains.Proportional, error); var newPid = pid.IntegratorState .UpdateIntegratorState(error) .Clamp(limits) .PidWithIntegratorState(pid); var integralTerm = PidControllerExtensions.IntegralTerm(gains.Integral, newPid.IntegratorState); var derivativeTerm = PidControllerExtensions.DerivativeTerm(gains.Derivative, newPid.PreviousProcessVariable, processVariable); pid = newPid; return(proportionalTerm + integralTerm + derivativeTerm); }
public PidControllerOld(Gains gains, IntegratorLimits limits) { this.gains = gains; this.limits = limits; pid = PidControllerExtensions.Pid(); }