Libs for using Nucleo STM32F411 periphery
PIDControl Class Reference
#include <PIDControl.h>
Public Member Functions | |
PIDControl (bool P_usr, float KP_usr, bool I_usr, float KI_usr, bool D_usr, float KD_usr) | |
~PIDControl () | |
int16_t | ctrltask (int16_t wsoll, int16_t yist, uint16_t time) |
bool | setKP (bool P_usr, float KP_usr) |
bool | setKI (bool I_usr, float KI_usr) |
bool | setKD (bool D_usr, float KD_usr) |
bool | setAWU (float awu_gain_usr) |
void | setUlimits (int16_t u_max_usr, int16_t u_min_usr) |
void | setIlimits (bool integrallimiter_usr, int16_t i_max_usr, int16_t i_min_usr) |
void | lock () |
void | unlock () |
uint8_t | getStatus () |
void | setERFFCT (void(*CTRL_HANDLER)(void)) |
Protected Attributes | |
bool | P |
Aktiviert den Proportional-Anteil. | |
bool | I |
Aktiviert den Integral-Anteil. | |
bool | D |
Aktiviert den Differnetial-Anteil. | |
float | KP |
Verstärkung für den Proportional-Anteil. | |
float | KI |
Verstärkung für den Integral-Anteil. | |
float | KD |
Verstärkung für den Differnetial-Anteil. | |
int16_t | u_max |
Maximale Führungsgröße. | |
int16_t | u_min |
Minimale Führungsgröße. | |
int16_t | i_max |
Maximaler Integralanteil. | |
int16_t | i_min |
Minimaler Integralanteil. | |
float | awu_gain |
Anti-Windup Verstärkung. | |
uint8_t | status |
Detailed Description
Diese Klasse erstellt einen PID-Regler. die einzelnen Regeranteile können bei der Initialisierung seperat einsgestellt werden. Bei der Initialisierung des Reglers bzw. der Klasse wird der Statusvektor resettet und die einzelnen Anteile werden auf null gesetzt und gesperrt. Solange die Variable Lock nicht wahr ist, kann über die Funktionen setKP(), setKI() und setKD() der Regler parametriert werden. Es ist zudem möglich die Regelgrenzen des Regelers festzulegen. Bei Überschreiten der Regelgrenzen wird ein Eintrag in dem Statusvektor erzeugt. Bei einer Änderung im Statusvektor kann eine externe Funktion aufgerufen werden, die dann den Statusvektor auswertet. Der Regeltask ctrltask sollte in regelmäßigen Abständen aufgerufen werden. Wichtig dabei ist eine Stänige Übergabe des Ist und Soll-Werts sowie die Regelzeit.
Schematischer Regleraufbau ohne Statusvektoren und Fehlermeldungen
#include "mbed.h" #include "PIDControl.h" int16_t ist_value; // Ist-Wert der Strecke int16_t soll_value; // Soll-Wert der Strecke int16_t stell_value; // Stell-Wert der Strecke uint8_t statusvektor; // Statusvektor des Reglers int main() { PIDControl PIregler(1,50.8,1,0.5,0,0); // PI-Regler mit KP = 50,8 und KI = 0,5 PIregler.setIlimits(1,6000,1000); // Aktivierung der maximale und minimale Größe des I-Anteils PIregler.setAWU(5); // Die Differenz zwischen I-Anteil und Limit wird mit // Verstärkung zurückgeführt PIregler.setUlimits(7000,500); // Limitierung der Stellgröße PIregler.lock(); // Sperrt weitere Einstellung an dem Regler while(1){ stell = PIregler.ctrltask(ist, soll, 1000); // Die Schleife wiederholt sich alle 1kHz statusvektor = PIregler.getStatus(); // Status des Reglers wird ausgelesen wait(0.001); // Regler wird alle 1kHz aufgerufen } }
Definition at line 49 of file PIDControl.h.
Constructor & Destructor Documentation
PIDControl | ( | bool | P_usr, |
float | KP_usr, | ||
bool | I_usr, | ||
float | KI_usr, | ||
bool | D_usr, | ||
float | KD_usr | ||
) |
Konstruktor zum Erstellen einer Instanz mit einer vom User festgelegten Größe
- Parameters:
-
P P-Anteil Aktivert den P-Anteil, wenn der Wert 1 ist KP P-Anteil Verstärkung des P-Anteils I I-Anteil Aktivert den I-Anteil, wenn der Wert 1 ist KI I-Anteil Verstärkung des I-Anteils D D-Anteil Aktivert den D-Anteil, wenn der Wert 1 ist KD D-Anteil Verstärkung des D-Anteils
Definition at line 8 of file PIDControl.cpp.
~PIDControl | ( | ) |
Destruktor entfernt den Regler
Definition at line 65 of file PIDControl.h.
Member Function Documentation
int16_t ctrltask | ( | int16_t | wsoll, |
int16_t | yist, | ||
uint16_t | time | ||
) |
Reglerprozess. Rückgabewert ist die Führungsgröße
- Parameters:
-
usoll SOLL-Wert Soll-Wert der Regelstrecke yist IST-Wert Ist-Wert der Regelstrecke time Zeitkonstatnte vergangene Zeit seit dem letzen Regeltask in ganzen Mirkosekunden (1ms = 1000µs)
Definition at line 32 of file PIDControl.cpp.
uint8_t getStatus | ( | ) |
Liest den Status des Reglers aus
Definition at line 207 of file PIDControl.cpp.
void lock | ( | ) |
Sperrt den Zugriff auf die Reglerparameter
Definition at line 197 of file PIDControl.cpp.
bool setAWU | ( | float | awu_gain_usr ) |
Ermöglich Zugriff auf den Anti-Windup zum begrenzen des I-Anteils
- Parameters:
-
awu_gain Anti-Windup Verstärkung Rückführung der Differenz zwischen Stellgröße und Begrenzung mit einer Verstärkung in den I-Anteil
Definition at line 166 of file PIDControl.cpp.
void setERFFCT | ( | void(*)(void) | CTRL_HANDLER ) |
Setzt eine Routine die verwendet wird, wenn ein schwerwiegender Fehler im Statusvektor gesetzt wird.
- Parameters:
-
BUFFER_HANDLER Adresse zur weiteren Routine
Definition at line 212 of file PIDControl.cpp.
void setIlimits | ( | bool | integrallimiter_usr, |
int16_t | i_max_usr, | ||
int16_t | i_min_usr | ||
) |
Setzt die Limits des Integralanteils
- Parameters:
-
integrallimiter Aktiviert den Limiter aktiviert eine seperate Begrenzung des I-Anteils i_max maximales Limit maximaler I-Anteil i_min minimsler Limit minimaler I-Anteil
Definition at line 178 of file PIDControl.cpp.
bool setKD | ( | bool | D_usr, |
float | KD_usr | ||
) |
Ermöglich Zugriff auf die Reglerparameter des D-Anteils. Rückgabe Wert ist eins, wenn die Reglerwerte gespeichert worden sind.
- Parameters:
-
D D-Anteil Aktivert den D-Anteil, wenn der Wert 1 ist KD D-Anteil Verstärkung des D-Anteils
Definition at line 152 of file PIDControl.cpp.
bool setKI | ( | bool | I_usr, |
float | KI_usr | ||
) |
Ermöglich Zugriff auf die Reglerparameter des I-Anteils. Rückgabe Wert ist eins, wenn die Reglerwerte gespeichert worden sind.
- Parameters:
-
I I-Anteil Aktivert den I-Anteil, wenn der Wert 1 ist KI I-Anteil Verstärkung des I-Anteils
Definition at line 138 of file PIDControl.cpp.
bool setKP | ( | bool | P_usr, |
float | KP_usr | ||
) |
Ermöglich Zugriff auf die Reglerparameter des P-Anteils. Rückgabe Wert ist eins, wenn die Reglerwerte gespeichert worden sind.
- Parameters:
-
P P-Anteil Aktivert den P-Anteil, wenn der Wert 1 ist KP P-Anteil Verstärkung des P-Anteils
Definition at line 124 of file PIDControl.cpp.
void setUlimits | ( | int16_t | u_max_usr, |
int16_t | u_min_usr | ||
) |
Setzt die Limits der Stellgröße U bzw. des Ausgangs des Reglers
- Parameters:
-
u_max maximales Limit maximale Ausgangsgröße u_min minimales Limit minimale Ausgangsgröße
Definition at line 187 of file PIDControl.cpp.
void unlock | ( | ) |
Erlaubt den Zugriff auf die Reglerparameter
Definition at line 202 of file PIDControl.cpp.
Field Documentation
float awu_gain [protected] |
Anti-Windup Verstärkung.
Definition at line 205 of file PIDControl.h.
bool D [protected] |
Aktiviert den Differnetial-Anteil.
Definition at line 187 of file PIDControl.h.
bool I [protected] |
Aktiviert den Integral-Anteil.
Definition at line 185 of file PIDControl.h.
int16_t i_max [protected] |
Maximaler Integralanteil.
Definition at line 201 of file PIDControl.h.
int16_t i_min [protected] |
Minimaler Integralanteil.
Definition at line 203 of file PIDControl.h.
float KD [protected] |
Verstärkung für den Differnetial-Anteil.
Definition at line 194 of file PIDControl.h.
float KI [protected] |
Verstärkung für den Integral-Anteil.
Definition at line 192 of file PIDControl.h.
float KP [protected] |
Verstärkung für den Proportional-Anteil.
Definition at line 190 of file PIDControl.h.
bool P [protected] |
Aktiviert den Proportional-Anteil.
Definition at line 183 of file PIDControl.h.
uint8_t status [protected] |
8-Bit Statusvektor:
- [7] Regelgrenze max überschritten (EXTFCT)
- [6] Regelgrenze min unterschritten (EXTFCT)
- [5] Fehler bei der Berechnung (EXTFCT)
- [4] aktueller IST-Wert < Soll-Wert
- [3] aktueller IST-Wert > Soll-Wert
- [2] Regelabweichung ist null
- [1] I-Anteil Limit erreicht
- [0] Reglertask aktiv
Bei schwerwiegenden Fehlern wird eine externe Routine (EXTFCT) aufgerufen, falls diese angegeben wurde.
Definition at line 219 of file PIDControl.h.
int16_t u_max [protected] |
Maximale Führungsgröße.
Definition at line 197 of file PIDControl.h.
int16_t u_min [protected] |
Minimale Führungsgröße.
Definition at line 199 of file PIDControl.h.
Generated on Wed Jul 13 2022 17:06:12 by 1.7.2