#include #include int main() { // Anfangswerte und konstante Werte double yI = 30; double x = 15; double w = 20; // Reglerparameter double KPR = 8; double Tn = 0; int T = 5; // Streckenparameter double KPS = 0.5; double T1 = 20; // Zählparameter int i = 0; // Regelabweichung und Stellgröße double e = 0; double y = 0; // Einlesen von Tn printf("Tn = ... min. Bitte eingeben.\n"); scanf("%lf", &Tn); // Fortsetzung Reglerparameter double KI = KPR / Tn; printf("\n\nAktuelle Parametrierung:\n"); printf("T1 = %.2f min, KPS = %.2f, KPR = %.2f, ", T1, KPS, KPR); printf("Tn = %.2f min, KI = %.2f 1/min, T = %d min\n\n", Tn, KI, T); for(i = 0; i <= 20; i++) { // Regler e = w - x; yI += KI * T * e; y = yI + KPR * e; // Ausgabe der Werte printf("Zeit: %d min,\t", i * T); printf("x = %.2f °C, \t", x); printf("yI = %.2f °C, \t", yI); printf("y = %.2f °C\n", y); // Strecke (Wert der Regelgröße für einen (deswegen Argument 'T' in 'exp', // d.h. den nächsten) Abtastschritt) x += (KPS * y - x) * (1 - exp(-T / T1)); } return 0; }