@@ -60,44 +60,49 @@ bool PID::Compute(unsigned long now) {
60
60
outputSum += (ki * error);
61
61
62
62
/* Add Proportional on Measurement, if P_ON_M is specified*/
63
- if (pOn == P_ON_M)
63
+ if (pOn == P_ON_M) {
64
64
outputSum -= kp * dInput;
65
+ }
65
66
66
- if (outputSum > outMax)
67
+ if (outputSum > outMax) {
67
68
outputSum = outMax;
68
- else if (outputSum < outMin)
69
+ } else if (outputSum < outMin) {
69
70
outputSum = outMin;
71
+ }
70
72
71
73
/* Add Proportional on Error, if P_ON_E is specified*/
72
74
double output;
73
- if (pOn == P_ON_E)
75
+ if (pOn == P_ON_E) {
74
76
output = kp * error;
75
- else
77
+ } else {
76
78
output = 0 ;
79
+ }
77
80
78
81
/* Compute Rest of PID Output*/
79
82
output += outputSum - kd * dInput;
80
83
81
- if (output > outMax)
84
+ if (output > outMax) {
82
85
output = outMax;
83
- else if (output < outMin)
86
+ } else if (output < outMin) {
84
87
output = outMin;
88
+ }
85
89
*myOutput = output;
86
90
87
91
/* Remember some variables for next time*/
88
92
lastInput = input;
89
93
lastTime = now;
90
94
return true ;
91
- } else
92
- return false ;
95
+ }
96
+ return false ;
93
97
}
94
98
95
99
// This function allows the controller's dynamic performance to be adjusted.
96
100
// it's called automatically from the constructor, but tunings can also
97
101
// be adjusted on the fly during normal operation
98
102
void PID::SetTunings (double Kp, double Ki, double Kd, PIDProportionalOn POn) {
99
- if (Kp < 0 || Ki < 0 || Kd < 0 )
103
+ if (Kp < 0 || Ki < 0 || Kd < 0 ) {
100
104
return ;
105
+ }
101
106
102
107
pOn = POn;
103
108
@@ -139,21 +144,24 @@ void PID::SetSampleTime(int NewSampleTime) {
139
144
// want to clamp it from 0-125. who knows. at any rate, that can all be done
140
145
// here.
141
146
void PID::SetOutputLimits (double Min, double Max) {
142
- if (Min >= Max)
147
+ if (Min >= Max) {
143
148
return ;
149
+ }
144
150
outMin = Min;
145
151
outMax = Max;
146
152
147
153
if (mode == AUTOMATIC) {
148
- if (*myOutput > outMax)
154
+ if (*myOutput > outMax) {
149
155
*myOutput = outMax;
150
- else if (*myOutput < outMin)
156
+ } else if (*myOutput < outMin) {
151
157
*myOutput = outMin;
158
+ }
152
159
153
- if (outputSum > outMax)
160
+ if (outputSum > outMax) {
154
161
outputSum = outMax;
155
- else if (outputSum < outMin)
162
+ } else if (outputSum < outMin) {
156
163
outputSum = outMin;
164
+ }
157
165
}
158
166
}
159
167
@@ -174,10 +182,11 @@ void PID::SetMode(PIDControllerMode Mode) {
174
182
void PID::Initialize () {
175
183
outputSum = *myOutput;
176
184
lastInput = *myInput;
177
- if (outputSum > outMax)
185
+ if (outputSum > outMax) {
178
186
outputSum = outMax;
179
- else if (outputSum < outMin)
187
+ } else if (outputSum < outMin) {
180
188
outputSum = outMin;
189
+ }
181
190
}
182
191
183
192
// The PID will either be connected to a PIDControllerDirection::DIRECT acting
@@ -196,8 +205,8 @@ void PID::SetControllerDirection(PIDControllerDirection Direction) {
196
205
// Just because you set the Kp=-1 doesn't mean it actually happened. these
197
206
// functions query the internal state of the PID. they're here for display
198
207
// purposes. this are the functions the PID Front-end uses for example
199
- double PID::GetKp () { return dispKp; }
200
- double PID::GetKi () { return dispKi; }
201
- double PID::GetKd () { return dispKd; }
208
+ double PID::GetKp () const { return dispKp; }
209
+ double PID::GetKi () const { return dispKi; }
210
+ double PID::GetKd () const { return dispKd; }
202
211
PIDControllerMode PID::GetMode () { return mode; }
203
212
PIDControllerDirection PID::GetDirection () { return controllerDirection; }
0 commit comments