TwinCat Analogwert verarbeiten

spiegelkabinett

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

Wie kann ich bei Twincat Analogwerte umwandeln?
Ich suche etwas um aus einem Analogwert ein mA-signal bzw. den Druck des Sensors zu bestimmen.

Der Analogwert wird als UINT aufgenommen.
Ziel: 11750 -> xx.x mA bzw. xx.x bar
4mA müssten ja dem Analogsignal 0 entsprechen, 65535 = 20mA

Wie ließe es sich das umsetzen? gibt es evtl ne Funktion dafür?
Wie kann ich Kommazahlen erzeugen?

Vielen Dank im Voraus!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

also eine einfache Messwert-Anpassung bekommst Du mit folgender Formel:

(<Messwert des Analogeingangs> : <Maximaler Messwert des Analogeingangs>)*<Mögliche Messspanne>

Bei einem 0-20mA Eingang:

(32767,5 (50%, gemessene 10mA) : 65535)*20mA = 10mA

Für Deinen 4-20mA Eingang wäre das dann:

(32767,5 (50%, gemessene 8mA) : 65535)*16mA = 8mA

Wenn Du den Messwert direkt in z.B. Druck skalieren willst, musst Du die <Mögliche Messspanne> durch die Werte Deines Drucksensors ersetzen. Z.B. 1bar bei einem Drucksensor 0-1bar.

Ich hoffe, Dir damit ein bisschen geholfen zu haben.

Christian
 
jo, klar.
ne funktion hätte ich auch gerne genommen. Ich erhalte ja so immer nur ganzzahlige Werte.

Var01_IN:REAL;
Var01 AT %I* :UINT;

Var01_IN := 4+(Var01*(20/65535)); //der Wert von Var01_IN ist immer 4. Brauch aber auch die Nachkommastellen... =(
 
Wenn du Ethercat-Klemmen (EL...) einsetzt, ist eine Anwenderskalierung in der Analogklemme möglich. Dann sparst Du Dir die Rechnerei im Zyklus.
Als REAL geben die dann auch direkt den Spannungs/Stromwert aus.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Versuch mal

Var01_IN:REAL;
Var01 AT %I* :UINT;

Var01_IN := 4+(UINT_to_REAL(Var01)*20/65535);


oder

Var01_IN := 4.0+(Var01*20.0/65535.0);

Kann sein, das der Compiler nicht erkennt, was Du willst, wenn in der Formel nicht mindestens ein REAL drin ist.
 
ja, ich benutze eine Ethercat-Klemme (EL3024). Dannach habe ich auch schon gesucht. Leider kann cih die Einstellung dafür nicht finden =(
Kannst du mir sagen wo?
 
Reiter CoE im Systemmanager für die Klemme

(DATENBLATT LESEN, mittelprächtig erläutert in der .chm-Datei)

Wenn Du dann die Änderungen der CoE-Objekte unter dem Reiter Startup hinzufügst, überleben diese auch einen Klemmentausch ohne Neukonfiguration.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
0x80n0:1 wäre die Freigabe der Anwenderskalierung
0x80n0:11 Userscale Offset
0x80n0:12 Userscale Gain

n steht für den Kanal der Klemme, in Deinem Fall 0...3

Edit: Index geändert, hab mich verguckt
 
Zuletzt bearbeitet:
genau, zum probieren bist Du hier richtig.
Wenn es funzt, dann auf Startup nochmal das gleiche eintragen.
Korrektur Real ist als Value der Klemme nicht verfügbar.

GAIN 3600
Offset 400
ergibt etwa 2000 für 20.00 mA
und 400 für 4.00 mA
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Einen Screenshot kann ich jetzt leider nicht machen. Probier Dich durch. Es geht m.E. nix dabei kaputt. Die Klemme hat ein Restore-Objekt, mit der Du sie auf Werkseinstellung zurücksetzten kannst.
 
Hallo,

einen einfachen Skalierungsbaustein hast du ja gleich geschrieben. Ist nicht mehr als eine Geradengleichung y=kx+d!

Grüße
 
Zurück
Oben