double PIDRegler::PID(double soll, double ist) { //Kontrolle auf Plausibilität der Eingabewerte //Methode wird mit Fehlercode beendet, wenn Eingabe außerhalb des definierten Wertebereiches liegt if(soll < 0.0 || soll > 100.0 || ist < 0.0 || ist > 100.0) { throw -201; } //Regeldifferenz bilden double regeldifferenz = differenz(soll, ist); //Proportionalanteil bilden double pAnteil = pRegler(regeldifferenz); //Integralanteil bilden double iAnteil = iRegler(regeldifferenz); //Differentialanteil bilden double dAnteil = dRegler(regeldifferenz); //Regleranteile werden addiert double regelgroesse = pAnteil + iAnteil + dAnteil; //Regelgröße auf 0 - 100% begrenzen wertebegrenzung(regelgroesse); return regelgroesse; }
void calculate(void) { char mode; int result; printf("Ihre Whale:\n"); printf("<S>umme oder <D>ifferenz? "); scanf("%c", &mode); if (strcmp(&mode, "S") == 0) { result = summe(); } else if (strcmp(&mode, "D") == 0) { result = differenz(); } printf("Ergebnis: %d\n", result); }
void berechne(void){ char rc = '\0'; do{ printf("Ihre Wahl:\n"); /* Eingabe auslesen */ rc = get_char("<S>umme oder <D>ifferenz? "); }while(rc != 'S' && rc != 'D'); if(rc == 'S'){ printf("Ergebnis: %d\n",summe()); } else if(rc == 'D'){ printf("Ergebnis: %d\n",differenz()); } }