ΑΝΑΠΤΥΞΗ ΡΥΘΜΙΣΤΗ 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) μπορούμε να έχουμε την έξοδο του ρυθμιστή.

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

Άσκηση