#include class PIDRegler { private: double kp; // Proportional-Gain double ki; // Integral-Gain double kd; // Derivative-Gain double prev_error; double integral; public: PIDRegler(double kp, double ki, double kd) : kp(kp), ki(ki), kd(kd), prev_error(0), integral(0) {} double regeln(double setpoint, double ist_temperatur) { // Berechne den Fehler double error = setpoint - ist_temperatur; // Proportionaler Anteil double P = kp * error; // Integraler Anteil integral += error; double I = ki * integral; // Differenzierter Anteil double D = kd * (error - prev_error); // Aktualisiere den Fehler prev_error = error; // Rückgabe der Gesamtregelgröße return P + I + D; } }; int main() { // Definiere die PID-Parameter double kp = 0.2; double ki = 0.05; double kd = 0.01; // Erstelle den PID-Regler PIDRegler regler(kp, ki, kd); // Definiere den Sollwert double setpoint = 22.0; // 22 Grad Celsius // Simuliere das Heizsystem double ist_temperatur = 15.0; // Anfangstemperatur for(int i = 0; i < 100; i++) { // Laufzeit: 100 Zeiteinheiten // Simuliere eine Heizung double regelung = regler.regeln(setpoint, ist_temperatur); // Die Heizung erhöht die Temperatur basierend auf der Regelgröße ist_temperatur += regelung * 0.05; // Anpassungsfaktor std::cout << "Zeit: " << i << ", Temperatur: " << ist_temperatur << std::endl; } return 0; }