Maximilian1
Level-2
- Beiträge
- 31
- Reaktionspunkte
- 7
-> Hier kostenlos registrieren
Hallo zusammen,
ich habe ein Problem mit der Skalierung eines analogen Ausgangswerts.
Ich verwende einen Lenze Frequenzumrichter, der über ein 4–20 mA Signal eine Pumpe ansteuert.
Für die Skalierung habe ich mir eine Funktion als Unterprogramm erstellt, mit der ich dann bei der Skalierung weiter rechne und die Grenzen angebe. (siehe Code)
Bei einem Ventil funktioniert das exakt wie erwartet:
Wenn ich das Ventil 0–32767 force (Variable Ventil), wird es automatisch durch den Code auf 0-100% umgerechnet (Variable Ventil_Skalliert.
Beim Frequenzumrichter funktioniert dieses Prinzip allerdings nicht.
Ich kann zwar wieder die Variable Frequenzumrichter mit 0-32767 force, bekomme aber nicht die erwartete 0–100 % Skalierung .
Ich hab auch schon probiert eine 8 Bit Auflösung zu verwenden, also die Grenzen zu verstellen, jedoch funktioniert dann GAR NICHTS mehr.
Eventuell habe ich einen Denkfehler bei der Umrechnung von 0–32767 auf 4–20 mA oder bei der Auflösung. Aber warum funktioniert dann die Ventil Skalierung?
Vielleicht hatte jemand schon ein ähnliches Problem und kann mir einen Hinweis geben.
Funktionsprogramm:
//Berechnung von k (Steigung)
k := (y_max-y_min)/(x_max-x_min);
//Berechnung von d (Offset)
d := y_min - k*x_min;
//Skalierung mithilfe einer Linearen Funktion
F_Skalieren := k*x + d;
//Begrenzung
IF F_Skalieren > y_max THEN
F_Skalieren := y_max;
END_IF
IF F_Skalieren < y_min THEN
F_Skalieren := y_min;
END_IF
Umrechnung:
//Frequenzumrichter Umrechnung
FU_Skaliert := F_Skalieren(
x:= TO_REAL(FU),
x_max:= 32767,
x_min:= 0,
y_max:= 100,
y_min:= 0);
Vielen Dank!
ich habe ein Problem mit der Skalierung eines analogen Ausgangswerts.
Ich verwende einen Lenze Frequenzumrichter, der über ein 4–20 mA Signal eine Pumpe ansteuert.
Für die Skalierung habe ich mir eine Funktion als Unterprogramm erstellt, mit der ich dann bei der Skalierung weiter rechne und die Grenzen angebe. (siehe Code)
Bei einem Ventil funktioniert das exakt wie erwartet:
Wenn ich das Ventil 0–32767 force (Variable Ventil), wird es automatisch durch den Code auf 0-100% umgerechnet (Variable Ventil_Skalliert.
Beim Frequenzumrichter funktioniert dieses Prinzip allerdings nicht.
Ich kann zwar wieder die Variable Frequenzumrichter mit 0-32767 force, bekomme aber nicht die erwartete 0–100 % Skalierung .
Ich hab auch schon probiert eine 8 Bit Auflösung zu verwenden, also die Grenzen zu verstellen, jedoch funktioniert dann GAR NICHTS mehr.
Eventuell habe ich einen Denkfehler bei der Umrechnung von 0–32767 auf 4–20 mA oder bei der Auflösung. Aber warum funktioniert dann die Ventil Skalierung?
Vielleicht hatte jemand schon ein ähnliches Problem und kann mir einen Hinweis geben.
Funktionsprogramm:
//Berechnung von k (Steigung)
k := (y_max-y_min)/(x_max-x_min);
//Berechnung von d (Offset)
d := y_min - k*x_min;
//Skalierung mithilfe einer Linearen Funktion
F_Skalieren := k*x + d;
//Begrenzung
IF F_Skalieren > y_max THEN
F_Skalieren := y_max;
END_IF
IF F_Skalieren < y_min THEN
F_Skalieren := y_min;
END_IF
Umrechnung:
//Frequenzumrichter Umrechnung
FU_Skaliert := F_Skalieren(
x:= TO_REAL(FU),
x_max:= 32767,
x_min:= 0,
y_max:= 100,
y_min:= 0);
Vielen Dank!
