-> Hier kostenlos registrieren
Hallo zusammen,
ich möchte über M-Bus mehrere Stromzähler auslesen. Prinzipiell geht das ganze ja über die von WAGO bereitgestellten Bibliotheken recht einfach. Jetzt hat der Zähler, den ich auslesen möchte, aber die Werte etwas "unkonventionell" gespeichert. Es handelt sich um einen Eltako DSZ12DM. Die M-Bus Beschreibung ist unter folgendem Link zu finden:
http://www.eltako.com/fileadmin/dow...tromzaehler_Technische_Daten_Einlernhilfe.pdf
Auf Seite 2 (3 im laufenden Dokument) ist ja beschrieben, in welchem Byte welche Info steckt. Nun werten aber alle Funktionsblöcke, die ich in den M-Bus Bibliotheken von WAGO gefunden habe, maximal die ersten 20 Datensätze aus. Jetzt würde ich einfach den "FbMbus_RawDevice" Baustein nehmen, um das ganze Telegramm abzufangen. Scheint auch relativ einfach zu gehen, die Spannung auf den einzelnen Phasen lässt sich auch ohne Umwandlung auslesen, da die ~230V ja problemlos in ein Byte passen. Die einzige Hilfe die ich bräuchte, wäre das Umwandeln der anderen Werte. Also wie mache ich z.B. aus Byte 23-26 "4 b.BCD" einen Double, um die Energiemenge mit Kommazahl zu bekommen? Hat da jemand eine Idee? Ich hatte es über folgende Funktion versucht:
Da kommt aber nichts sinnvolles bei raus. Hat vielleicht jemand einen Lösungsansatz?
Viele Grüße
ich möchte über M-Bus mehrere Stromzähler auslesen. Prinzipiell geht das ganze ja über die von WAGO bereitgestellten Bibliotheken recht einfach. Jetzt hat der Zähler, den ich auslesen möchte, aber die Werte etwas "unkonventionell" gespeichert. Es handelt sich um einen Eltako DSZ12DM. Die M-Bus Beschreibung ist unter folgendem Link zu finden:
http://www.eltako.com/fileadmin/dow...tromzaehler_Technische_Daten_Einlernhilfe.pdf
Auf Seite 2 (3 im laufenden Dokument) ist ja beschrieben, in welchem Byte welche Info steckt. Nun werten aber alle Funktionsblöcke, die ich in den M-Bus Bibliotheken von WAGO gefunden habe, maximal die ersten 20 Datensätze aus. Jetzt würde ich einfach den "FbMbus_RawDevice" Baustein nehmen, um das ganze Telegramm abzufangen. Scheint auch relativ einfach zu gehen, die Spannung auf den einzelnen Phasen lässt sich auch ohne Umwandlung auslesen, da die ~230V ja problemlos in ein Byte passen. Die einzige Hilfe die ich bräuchte, wäre das Umwandeln der anderen Werte. Also wie mache ich z.B. aus Byte 23-26 "4 b.BCD" einen Double, um die Energiemenge mit Kommazahl zu bekommen? Hat da jemand eine Idee? Ich hatte es über folgende Funktion versucht:
Code:
FUNCTION DoubleByteToReal : REAL
VAR_INPUT
b1 : BYTE;
b2 : BYTE;
END_VAR
VAR
ar : ARRAY[0..1] OF BYTE;
pR : POINTER TO REAL;
END_VAR
Code:
ar[0] := b1;
ar[1] := b2;
pR := ADR(ar);
DoubleByteToReal := pR^;
Da kommt aber nichts sinnvolles bei raus. Hat vielleicht jemand einen Lösungsansatz?
Viele Grüße