E
Exception1
Hi Community,
ich bin zur Zeit an dabei eine Regelung eines Ventils zu erstellen.
Wie ein PID- bzw. PIDT1-Regler funktioniert ist klar.
Einen Algorithmus für einen PID-Regler habe ich bereits erstellt und getesetet, leider führt der D-Anteil zu unschönen Peaks und nun möchte ich den vorhandenen D- durch einen DT1-Anteil austauschen.
Leider habe ich nicht raus gefunden, wie ich den Algorithmus umsetzen kann.
Mein momentaner Regler:
Der Regelalgorithmus ist ja kein großes Geheimnis.
Die Gleichung des DT1-Elements lautet:
T1*(dU(t)/dt)+U(t) = Kd*(de(t)/dt)
Mir bereitet der vordere Teil Schwirigkeiten. Wie kann ich das dU(t)/dt umsetzten?
Vielleicht steh ich momentan auch einfach nur auf dem Schlauch,
ich hoffe Ihr könnt mir helfen, danke.
Gruß
Alex
ich bin zur Zeit an dabei eine Regelung eines Ventils zu erstellen.
Wie ein PID- bzw. PIDT1-Regler funktioniert ist klar.
Einen Algorithmus für einen PID-Regler habe ich bereits erstellt und getesetet, leider führt der D-Anteil zu unschönen Peaks und nun möchte ich den vorhandenen D- durch einen DT1-Anteil austauschen.
Leider habe ich nicht raus gefunden, wie ich den Algorithmus umsetzen kann.
Mein momentaner Regler:
Code:
double dPID (double dError, Parameter* PID)
{
double dPAnteil, dIAnteil, dDAnteil;
//Berechnung der einzelnen Anteile
dPAnteil = PID->KP * dError;
dIAnteil = PID->dESum * ( PID->KP / PID->TI );
//Der D-Anteil, welcher durch ein DT1-Element ersetzt werden soll
dDAnteil = ( dError - PID->dErrorOld ) * ( PID->KP * PID->TD );
//Berechnung des Stellsignals
PID->dU = dPAnteil + dIAnteil + dDAnteil;
//Alten Fehler speichern
PID->dErrorOld = dError;
return PID->dStellsignal;
}
Der Regelalgorithmus ist ja kein großes Geheimnis.
Die Gleichung des DT1-Elements lautet:
T1*(dU(t)/dt)+U(t) = Kd*(de(t)/dt)
Mir bereitet der vordere Teil Schwirigkeiten. Wie kann ich das dU(t)/dt umsetzten?
Vielleicht steh ich momentan auch einfach nur auf dem Schlauch,
ich hoffe Ihr könnt mir helfen, danke.
Gruß
Alex