Beiträge anzeigen

Diese Sektion erlaubt es ihnen alle Beiträge dieses Mitglieds zu sehen. Beachten sie, dass sie nur solche Beiträge sehen können, zu denen sie auch Zugriffsrechte haben.


Themen - Andy

Seiten: [1]
1
Bestehende Module / Existing Modules / Geht FADE verkehrt herum?
« am: 11. Dezember 2008, 10:59:44 »
Hallo,

laut Doku (und auch Bausteinbeschreibung) soll IN1 aktiv sein, wenn F = FALSE und IN2 wenn F = TRUE. Scheint aber andersherum zu sein. Außerdem ist in der Doku F als REAL angegeben.

Gruß
Andreas

2
Bestehende Module / Existing Modules / Wann ONTIME zurückgesetzt?
« am: 08. Dezember 2008, 19:33:28 »
Hallo,

da ich nie weiß, wann ich ONTIME resettet habe, wäre ein Ausgang für den Zeitpunkt des letzten Resets interessant. Ist das sinnvoll?

Gruß
Andreas

3
Hallo,

wollte gerade SCALE_D verwenden und hab festgestellt, daß er mit Werten <> 0 für I_LO und O_LO nicht richtig rechnet, geschweige denn, mit absteigenden Werten. Ich habe z.B. einen Eingang für einen NTC Widerstand, welcher bei einem Eingangswort von 2970 -15°C entspricht und bei 1390 +20°C entspricht.
Anbei der Code, der die Funktion universell macht:

IF I_LO > I_HI THEN;
Value := LIMIT(I_HI,X,I_LO);
ELSE;
Value := LIMIT(I_LO,X,I_HI);
END_IF;
SCALE_D := O_LO + DWORD_TO_REAL(ABS(I_LO - Value)) * ABS(O_LO -O_HI) / DWORD_TO_REAL(ABS(I_LO - I_HI));

Gruß
Andreas

4
Bestehende Module / Existing Modules / Stoßfreie Umschaltung
« am: 11. November 2008, 11:02:57 »
Hallo,

ist es nicht möglich, den Reglern (zB CTRL_PID eine stoßfreie Umschaltung mitzugeben. Mich stört manchmal, daß bei der Umschaltung von Hand auf Automatik der Regler je nach Reset-Eingang den Ausgang auf 0 oder den aktuellen Integratorwert setzt, anstatt von der aktuellen Position weiterzurechnen? Auf den ersten Blick würde ich sagen, daß man den Reset-Wert von oben zum Integrator runterreichen müßte, um die Funktion zu erreichen. Mit Reset dann nach Bedarf von der übergeordneten Funktion entweder auf 0 (default) oder Y setzen.

Gruß
Andreas

5
Bestehende Module / Existing Modules / Nochmal Actuator_3P
« am: 01. September 2008, 14:08:01 »
Hallo,

ich verwende den Actuator_3P nach einem PID-Regler zur Ansteuerung meines Heizkreismischers. Dieser hat keinen Endschalter. Selbst bei einer cal_runtime von 2 Minuten hat er sich schon mehrmals festgefahren (pos 0 der 1 erreicht, obwohl physikalische Endlage noch nicht erreicht war). Die cal_time noch weiter runterzusetzen widerstrebt mir doch. Dann wird ja ständig die ach so schöne Regelung durcheinandergewürfelt.
Ich habe jetzt den Baustein um eine 'Auto_Cal'-Funktion erweitert. Diese beruht unter Umgehung der bereits eingebauten Cal und Diag_funktion darauf, daß bei einem In-Wert von 0 oder 1 grundsätzlich der jeweilige Ausgang mit max_runtime angesteuert wird. Dieser Vorgang wird aber durch einen erneuten In-Wert 0>in<1 wieder unterbrochen.
Für Anwendungen, bei denen es auf die absolute Stellung ankommt, ist das sicher nicht geeignet, aber bei einem vorgeschalteten stetigen Regler halte ich das für sinnvoll.
Bei Interesse, kann ich die Änderung hier reinstellen.

Gruß
Andreas

6
Bestehende Module / Existing Modules / 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

Seiten: [1]