Analogwerte in der CoDeSys skalieren

lafu31

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe hier schon einiges über Analogwertskalierung gelesen, aber die ulitivmative Antwort für mein Problem, war da noch nicht dabei.

Also: ich habe mehrere Drucksensoren gleichen Typs. Deren Werte gelangen mittels 4-20mA Signal in eine WAGO-Steuerung, also CoDeSys Programmierung. Diese IntegerWerte sollen dann als bar-Wert visualisiert werden.

Das Problem: bei 4mA bekomm ich Integerwerte um die 4000 (4088, 4058, 4060, 3570,...ist von Sensor zu Sensor unterschiedlich). Einige schwanken auch ständig zwischen z.B. 4088 und 4048
Wenn ich die Werte nun mit dem AI-Skalierbaustein in einem Bereich von 0 bis 50bar skalieren will, denkt der Baustein der Wert bei Null bar wäre schon irgendein Druck von z.B. 5bar.
Wie kann ich dass Problem einfach und schnell lösen? Einfach vom Aktualwert denn 4000er-Wert bei Null subtrahieren? oder gibts da noch eine bessere Lösung?

Gruß Lars
 
Hallo
Ich denke, dass dein Geber 4-20mA ausgibt, aber dein Analogeingang 0-20mA wandelt. Prüf doch mal die Parametrierung deiner Hardware.

Gruß
Andreas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

hab ich schon geprüft. Die Karten sind alle auf 4-20mA eingestellt. Konnte vorhin noch in Erfahrung bringen, dass die AI-Karten die genutzt werden bei 4mA eigentlich 4096 als Integerwert haben müssten und nicht Null, wie ich ursprünglich angenommen habe (WAGO 750-473).

Gruß
 
Gemäss meine Buch heisst es "Gleichung der Geraden" auf Deutsch :confused:, währe dass eine Lösung ?
Ich habe diese Beispiel Gefunden.
(*****************************************************************************************************)
FUNCTION StraightLineEqv : REAL
VAR_INPUT
rInputValue: REAL;
rMinInputValue: REAL;
rMaxInputValue: REAL;
rMinOutputValue: REAL;
rMaxOutputValue: REAL;
END_VAR
VAR
rSlope: REAL;
rOffset: REAL;
END_VAR
_______________________________________________________
rSlope:=(rMaxOutputValue-rMinOutputValue)/(rMaxInputValue -rMinInputValue);
rOffset:=rMaxOutputValue-(rSlope*rMaxInputValue);
StraightLineEqv:=rSlope * rInputValue+rOffset;
(******************************************************)
__PROGRAM MAIN
VAR
rMaxInputValue: REAL := 32767;(* Max Out to PLC*)
rMinInputValue: REAL := 0;
rMaxOutputValue: REAL := 20.00;(* 20.00 mA*)
rMinOutputValue: REAL:=4.00; (*4 mA*)
rInputValue: REAL;
rScaledValue: REAL;
KL3021_1_In AT %I*: INT; (*Globale Var*)
END_VAR
____________________________________________________________________________
IF KL3021_1_In =0 THEN
rScaledValue:=0.00;
RETURN;
END_IF
rScaledValue :=StraightLineEqv(
rInputValue:=INT_TO_REAL(KL3021_1_In),
rMinInputValue,
rMaxInputValue,
rMinOutputValue,
rMaxOutputValue);
(***********************************************************************************************************)
BjornF
 
die karte für 0-20mA gibt bei param4-20mA 4096 als 0-Wert aus, wenn die Karte trotzdem 0 ausgibt ist das Erdungskonzept/Potenzialsystem evtl. nicht ausreichend umgesetzt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Analogwert scalieren

Hallo lafu31,
die Karte 750-473 liefert bei 4mA die INT-Zahl 4096 und bei 20 mA die Zahl 20480.
Mit diesen Werten ergibt sich (wenn 20mA bei dir 50bar entsprechen!) als Formel:
P = 0,003051757 * EWx -12,5
MfG
eNDe
 
Zurück
Oben