Added Interlock
Fixed PID regulation functionality git-svn-id: https://svn.vbchaos.nl/svn/hsb/trunk@250 05563f52-14a8-4384-a975-3d1654cca0fa
This commit is contained in:
@@ -89,20 +89,18 @@ ErrorStatus PID_construct(struct Pid* self, int Kp, int Ki, int Kd, int iMin, in
|
||||
}
|
||||
|
||||
|
||||
int PID_calculate(struct Pid* self, int input, int error)
|
||||
int PID_calculate(struct Pid* self, int error)
|
||||
{
|
||||
int returnValue = 0;
|
||||
|
||||
int dTerm;
|
||||
int pTerm;
|
||||
|
||||
input *= PID_FIXED_POINT_FACTOR;
|
||||
error *= PID_FIXED_POINT_FACTOR;
|
||||
|
||||
if (self->initialized)
|
||||
{
|
||||
// Calculate integral
|
||||
self->iTerm += (self->Ki * error);
|
||||
|
||||
// Control integrator
|
||||
if (self->iTerm > self->iMax)
|
||||
{
|
||||
@@ -114,14 +112,14 @@ int PID_calculate(struct Pid* self, int input, int error)
|
||||
}
|
||||
|
||||
// Calculate differential
|
||||
dTerm = (input - self->input_d1) * self->Kd;
|
||||
dTerm = ((error - self->input_d1) * self->Kd);
|
||||
|
||||
// Calculate proportional
|
||||
pTerm = self->Kp * error;
|
||||
|
||||
pTerm = (self->Kp * error);
|
||||
LOGGER_WARNING(mainLog, "pTerm %d, Kp %d, error %d", pTerm, self->Kp, error);
|
||||
|
||||
returnValue = (self->iTerm + dTerm + pTerm) / PID_FIXED_POINT_FACTOR;
|
||||
self->input_d1 = input;
|
||||
self->input_d1 = error;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user