1 #ifndef PID_H |
|
2 #define PID_H |
|
3 |
|
4 |
|
5 #define P_MANUAL 0 |
|
6 #define P_AUTOMATIC 1 |
|
7 #define P_DIRECT 0 |
|
8 #define P_REVERSE 1 |
|
9 |
|
10 typedef struct _pid_var { |
|
11 double Kp; /* (P)roportional Tuning Parameter */ |
|
12 double Ki; /* (I)ntegral Tuning Parameter */ |
|
13 double Kd; /* (D)erivative Tuning Parameter */ |
|
14 double dispKp; |
|
15 double dispKi; |
|
16 double dispKd; |
|
17 int Direction; /* Controller direction */ |
|
18 double *myInput; /* Input parameter */ |
|
19 double *myOutput; /* Output parameter */ |
|
20 double *mySetpoint; /* Setpoint parameter */ |
|
21 long lastTime; /* Last compute time */ |
|
22 double ITerm; |
|
23 double lastInput; |
|
24 long SampleTime; |
|
25 double outMin; |
|
26 double outMax; |
|
27 int inAuto; |
|
28 } pid_var; |
|
29 |
|
30 |
|
31 void PID_init(pid_var *, double *, double *, double *, double, double, double, int); |
|
32 void PID_setMode(pid_var *, int); |
|
33 void PID_setOutputLimits(pid_var *, double, double); |
|
34 void PID_setTunings(pid_var *, double, double, double); |
|
35 void PID_setDirection(pid_var *, int); |
|
36 void PID_setSampleTime(pid_var *, int); |
|
37 double PID_getKp(pid_var *); |
|
38 double PID_getKi(pid_var *); |
|
39 double PID_getKd(pid_var *); |
|
40 int PID_getMode(pid_var *); |
|
41 int PID_getDirection(pid_var *); |
|
42 int PID_getSampleTime(pid_var *); |
|
43 int PID_compute(pid_var *); |
|
44 |
|
45 |
|
46 #endif |
|