-Menü

Beiträge anzeigen

Dieser Abschnitt erlaubt es Ihnen, alle Beiträge anzusehen, die von diesem Mitglied geschrieben wurden. Beachten Sie, dass Sie nur Beiträge sehen können, die in Teilen des Forums geschrieben wurden, auf die Sie aktuell Zugriff haben.

Beiträge anzeigen-Menü

Beiträge - ja

#1
Hallo zusammen,

ich probiere gerade einen PI-Regler mit dem FB FT_PI ans Laufen zu bringen. Dabei fällt auf, dass beim Signalwechsel am Eingang RST von FALSE auf TRUE der Ausgang Y in die Höhe schießt. Verantwortlich dafür ist der Ausgang Y des FT_INT. Der I-Regler zieht den Ausgang zwar dann wieder runter, aber für den Prozess kann ich so ein Verhalten nicht gebrauchen. Das Verhalten ist unabhängig von der Einstellung der Regelparameter Kp und Ki. Ich habe auch sehr kleine Einstellungen probiert.

Meiner Meinung nach liegt das an einem Fehler im FT_INT. Während "RST = TRUE" ist wird die Instanz "integ" von INTEGRATE nicht aufgerufen. Deshalb wird dort drin nicht mehr "last := tx" ausgeführt. Beim ersten Zyklus mit "RST = FALSE" wird die neue Systemzeit "tx" gelesen und in der Berechnung davon "last" abgezogen: Y := (X + X_LAST) * 0.5E-3 * DWORD_TO_REAL(tx-last) * K + Y
Erst danach wird wieder "last := tx" ausgeführt. Die Differenz in diesem ersten Zyklus ist also ungültig.
Bitte berichtigt mich, wenn ich das falsch lese.

Mein Baustein sieht so aus:
FUNCTION_BLOCK INTEGRATE
VAR_INPUT
   E : BOOL := TRUE;
   X : REAL;
   K : REAL := 1.0;
END_VAR
VAR_IN_OUT
   Y : REAL;
END_VAR
VAR
   X_last : REAL;
   init: BOOL;
   last: DWORD;
   tx: DWORD;
   fp : BOOL;
END_VAR

tx := T_PLC_MS();
IF NOT init THEN
   init := TRUE;
   X_last := X;
   fp := FALSE;
ELSIF E AND NOT fp THEN
   fp := TRUE;
ELSIF E AND fp THEN
   Y := (X + X_LAST) * 0.5E-3 * DWORD_TO_REAL(tx-last) * K + Y;
   X_last := X;
ELSE
   fp := FALSE;
END_IF;
last := tx;

Bitte um Kommentare.
Danke.
#2
Hallo peewit,
da bin ich wieder. Ich würde die CodeSys Variante brauchen. Allerdings bin ich durch deine Antwort darauf aufmerksam geworden, dass es keine OSCAT Network Library für S7 gibt. Damit wird es wieder uninteressant. Ich möchte eine S7 und zwei Lenze EL1800S miteinander kommunizieren lassen. Dazu kommen zwei Labledrucker, die aus den EL1800S mit Daten versorgt werden müssen. Ich dachte, dass ließe sich auf diesem Wege etwas vereinheitlichen. Den ganzen Overhead wie FTP, Wetterbericht, usw. brauche ich nicht.

#3
beides ;)
#4
Die Datei "OSCAT Network Text Version:1.21" ist mit diesem Text verlinkt:

"neue Funktionen und Änderungen in oscat_network 1.21:
neue Netzwerk-Variablen Bausteine für (PCWORX,CODESYS,BECKHOFF)
Verbesserung des Datenlogger-Paketes mit neuen XML und HTML Logger
Optimierung der IP_CONTROL Bausteine
Automatischer Reconnect bei Server-Bausteinen
Bausteine zur Standardisierung der Wetterdaten
Grafiken zur Visualisierung (Wetter,Mond,Windrichtung)"

Ich vermute, hier sollte eigentlich der Plain Text kommen, oder?