Exemple #1
0
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;
}
Exemple #2
0
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);
}
Exemple #3
0
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());
	}
}