You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1017 B

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AutomaticController
{
public class PIDController
{
public double Kp { get; set; }
public double Ki { get; set; }
public double Kd { get; set; }
private double _prevError;
private double _integralError;
public PIDController(double kp, double ki, double kd)
{
Kp = kp;
Ki = ki;
Kd = kd;
_prevError = 0;
_integralError = 0;
}
public double Compute(double setpoint, double actualValue, double deltaTime = 0.01)
{
double error = setpoint - actualValue;
_integralError += error * deltaTime;
double derivative = (error - _prevError) / deltaTime;
double output = Kp * error + Ki * _integralError + Kd * derivative;
_prevError = error;
return output;
}
}
}