Autor Thema: FT_PID geändert?  (Gelesen 4991 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Andy

  • Newbie
  • *
  • Beiträge: 14
    • Profil anzeigen
FT_PID geändert?
« am: 05. Dezember 2007, 15:52:02 »
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