The subsystem design/basis for the final project
Dependencies: mbed-rtos mbed-src pixylib
PeriodicPI.cpp
- Committer:
- balsamfir
- Date:
- 2017-04-24
- Revision:
- 19:05b8123905fb
- Parent:
- 17:47e107f9587b
File content as of revision 19:05b8123905fb:
#include "PeriodicPI.h" PeriodicPI::PeriodicPI(float periodSec, float kP, float kI) { this->kP = kP; this->kI = kI; this->periodSec = periodSec; this->integral = 0; this->output = 0; } float PeriodicPI::Run(float error, float bound) { // Avoid integrator wind up if((output >= bound)||(output <= -bound)); else { integral = integral + error * periodSec; } output = kI * (integral) + kP * error ; // Limit output to bounds if (output > bound) { output = bound; } else if (output < -bound) { output = -bound; } return output; } float PeriodicPI::GetIntegral() { return integral; } float PeriodicPI::GetOutput() { return output; } void PeriodicPI::Reset(void) { integral = 0; }