EL4014 Value Systemmanager

Snooky

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

ich habe im Systemmanager die Variable Value(INT) Verknüpft.
Ich verstehe allerdings eine Sache nicht.
Die Klemme kann eine Wert von 0..20mA ausgeben in einer Auflösung von 16Bit. Das heißt für mich, dass die Klemme nicht nur 1 oder 2 mA ausgeben kann sondern auch Werte mit Nachkommastelle z.B. 11.25 mA.
Allerdings müsste ich aus dem Programm doch dann eine Real übergeben um Nachkommastellen mit zu übergeben.
Wie mache ich das wenn ich nur nen INT als Value bei der Klemme angeben kann.

z.B.
a AT %Q* : INT;
b:REAL;(*z.b 12.25*)

a:=REAL_TO_INT(b);

Würde er mir jetzt 12.25 an der Klemme ausgeben?!

Danke für eure Infos
 
Die Sache geht so:

Ausgang = [20mA / (2^16)] * RegisterWert

Der Hintergrund ist der, dass du deine 20mA durch 65536 = 2^16 teilst, um die kleinste mögliche Einheit am Ausgang zu bekommen. Jeder Wert im Register wird dann nur noch mit dieser kleinsten möglichen Einheit multipliziert.


Wenn du dann 12mA haben willst, geht das so:

Register = 12mA / [20mA / (2^16)]

Nun hören sich 16Bit Auflösung gut an. Die Realität am Ausgang dürfte eher bei 12-14Bit liegen. Nichtlinearitäten des DA-Wandlers und Rauschen sind als Ursache anzusehen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey,

sprich Register ist wie im Beispiel a.
a AT %Q* : INT;
x:REAL;
Sollstrom:REAL:=12.25;

x =: Sollstrom / (20 / 65536);
a=: x * 65536;
Wenn ichs richtig verstanden habe dürfte der Ausgang der Klemme jetzt 12.25mA ausgeben richtig?

Oder habe ich hier noch ein Problem mit der Konvertierung da Sollstrom vom Typ REAL ist?

Danke
 
Zuletzt bearbeitet:
Du bekommst Probleme, mach es so:

Registerwert := REAL_TO_INT(sollstrom / (20.0 / 65536.0))

Du solltest Konstanten immer explizit so schreiben, dass diese nicht konvertiert werden müssen. Sonst gibt es manchmal hässliche Probleme. Hättest du geschrieben:

(20 / 65536)

kommt da nämlich 0 (INT) raus, weil die Konstanten als Ints interpretiert werden.
 
Zurück
Oben