

ΑΝΑΠΤΥΞΗ ΡΥΘΜΙΣΤΗ PID ΣΕ C++
Παρακάτω δίνεται ο κώδικας σε C++ για την δημιουργία ενός αντικειμένου που θα παίζει το ρόλο ενός PID ρυθμιστή:
class PID
{
double Kp,Ti,Td; // παράμετροι του ρυθμιστή
double T; // περίοδος δειγματοληψίας
double E_last; // προηγούμενη τιμή του λάθους για να // υπολογιστεί η παράγωγος
double Integral; // βοηθητική μεταβλητή για να // αποθηκεύεται η τιμή του ολοκληρώματος
public:
PID(double kp, double ti, double td, double t)
{
Kp=kp;Ti=ti;Td=td;T=t;
E_last=0.0;
Integral=0.0;
}
double Step(double); // συνάρτηση που παράγει την έξοδο // του ρυθμιστή
}
double PID::Step (double error)
{
double output;
Integral+=T/Ti*error;
output=Kp*(error+Integral+Td*(error-E_last)/T);
E_last=error;
return output;
}
Αν σε μία εφαρμογή χρησιμοποιούμε έναν PID ρυθμιστή με παραμέτρους
Kp=1.2
Ti=0.5
Td=2.4
και η συχνότητα δειγματοληψίας είναι 0.005 sec τότε θα ορίσουμε μια μεταβλητή
PID pid(1.2,0.5,2.4,0.005);
Καλώντας τη συνάρτηση pid.Step(error) μπορούμε να έχουμε την έξοδο του ρυθμιστή.

Δείτε επίσης: