Simple PID Controller with Integral Windup Supports creating a diagnostics message to send to a GUI
Revision 3:c169d08a9d0b, committed 2017-09-06
- Comitter:
- batchee7
- Date:
- Wed Sep 06 23:45:40 2017 +0000
- Parent:
- 2:dd64c2cf9066
- Commit message:
- Corrections to output generation
Changed in this revision
| PidController.cpp | Show annotated file Show diff for this revision Revisions of this file |
| PidController.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/PidController.cpp Tue Sep 05 05:18:52 2017 +0000
+++ b/PidController.cpp Wed Sep 06 23:45:40 2017 +0000
@@ -48,10 +48,10 @@
if (CV < minLimit){CV= minLimit;}
- if (collectDiagnostics){BuildDiagMessage(SP,PV, CV*scalar, K_p*error, IntegralAction, DerivativeAction);}
+ if (collectDiagnostics){BuildDiagMessage(SP,PV, CV, K_p*error, IntegralAction, DerivativeAction);}
//Convert from mm/s to 0-100%
- return (int)(CV*scalar)*10;
+ return (int)(CV*scalar);
}
void PidController::UpdateSettings(float Bias, float PropGain, float IntGain, float DiffGain, float OutputMin, float OutputMax, float OutputScale){
@@ -66,12 +66,18 @@
void PidController::StartDiag(void){
elapsedTime =0;
+ collectDiagnostics = true;
}
-
-void PidController::BuildDiagMessage(float SP, float PV, float PWM, float PropAction, float IntAction, float DifAction){
- sprintf(diagMsg, "P %d %0.4f, %0.4f %0.1f", // %0.4f %0.4f %0.4f\n",
- elapsedTime, SP, PV, PWM);// PropAction, IntAction, DifAction);
- elapsedTime += RATE;
- if (elapsedTime > 32000){EndDiag();}
+
+void PidController::EndDiag(void){
+ collectDiagnostics = false;
+
}
+void PidController::BuildDiagMessage(float SetPoint, float ProcessVar, float PWM, float PropAction, float IntAction, float DifAction){
+ sprintf(diagMsg, "P %d %0.4f %0.4f %0.1f %0.4f %0.4f %0.4f\n",
+ elapsedTime, SetPoint, ProcessVar, PWM, PropAction, IntAction, DifAction);
+ elapsedTime += RATE;
+ if (elapsedTime > 32000){sprintf(diagMsg, "R");}
+ }
+
--- a/PidController.h Tue Sep 05 05:18:52 2017 +0000
+++ b/PidController.h Wed Sep 06 23:45:40 2017 +0000
@@ -94,7 +94,7 @@
/** Disable Diagnostics for HMI
*/
- void EndDiag(void){collectDiagnostics = false;}
+ void EndDiag(void);
/** Build a string to send back to HMI to Graph PID
*/