FT_PID geändert?

Begonnen von Andy, 05. Dezember 2007, 15:52:02

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 9 Gäste betrachten dieses Thema.

Andy

Hallo,

bin neu hier, deshalb erstmal danke für die Lib.
Habe mich gestern gleich frisch auf die 240 gestürtzt und bei meinem gerade werdenden Projekt schnell mal die Regler ausgetauscht. Seitdem 'hängt' sich der Regler auf, wenn er an die Limits stößt. Arbeitet dann offensichtlich nur noch als P-Regler.
Wenn ich mir den neuen Quellcode ansehe ist das auch klar - aber auch Absicht?
IF ABS(diff) <= int_band AND NOT overflow AND TN > 0 THEN
      (* integrator is within int_band and needs to be run *)
      integ(in := diff, K := 1/TN, run := TRUE, rst := FALSE, out_min := int_limit_L, out_max := int_limit_H);
      (* check if integrator has reached its limits and set overflow *)
      IF integ.Out >= int_limit_H OR integ.Out <= int_limit_L THEN overflow := TRUE; END_IF;
   ELSE
      (* int_band is exceeded, integrator needs to be cleared *)
      integ(rst := TRUE);
   END_IF;

Ich könnte natürlich den overflow permanent auf rst schreiben aber wo ist der Mehrwert?

Danke für Aufklärung
Gruß
Andreas