Forum: Mikrocontroller und Digitale Elektronik SML: wie Scaler und Value definiert


von Robert Delfs (Gast)


Lesenswert?

Hi,

ich habe eine Frage zu Smart Message Language (SML). Wo ist definiert, 
wie die Werte von Scaler und Value zu interpretieren sind? Ich habe 
schon einige Dokumente durchforstet, aber noch keine entsprechende 
Listen gefunden. Es wäre nett, wenn mir jemand die Infos geben könnte.

Ich habe bislang nur die Zuordnung der Einheiten gefunden:
* 0 -> not defined
* 1 -> Wh
* 2 -> W
* 3 -> V
* 4 -> A
* 5 -> Hz
* 6 -> varh
* 7 -> var
* 8 -> VAh
* 9 -> VA

von Martin R. (mme)


Lesenswert?

Die Zuordnungen der Einheiten, die Du gefunden hast, sind falsch.

Richtig ist:
* 0x1e ist Wh
* 0x01 ist W

Ich finde aber gerade nicht die Liste dazu.

von Peter R. (peter_r689)


Lesenswert?

Hallo,

hier die Zuordnungen für SML-Codierte Zählerwerte:
#define Watt 0x1b
#define Watt/h 0x1e
#define var 0x1d
#define var/h 0x20
#define Ampere 0x21
#define Voltage 0x23
#define Herz 0x2c

Scaler:
0x00 -> keine Potenz, Wert = Zahl * Einheit
0x01 -> 10^1, Wert = Zahl *10^1 * Einheit
0x0x -> 10^x, Wert = Zahl *10^x * Einheit
0xFF -> 10^-1, Wert = Zahl *10^-1 * Einheit
0xFE -> 10^-2
0xFD -> 10^-3
0xFC -> 10^-4
usw.

Oder gucke auch hier:
Beitrag "Digitale Stromzähler auslesen und in DB speichern"

Gruß Peter

von DerEgon (Gast)


Lesenswert?

Peter R. schrieb:
> #define Watt/h 0x1e

Ganz sicher nicht "Watt pro Stunde". Das ist eine Nonsenseinheit.

von Achim S. (Gast)


Lesenswert?

Eine vollständige Übersicht der Einheiten findest du auch ab S. 47 von

https://www.dlms.com/files/Blue-Book-Ed-122-Excerpt.pdf

von Georg G. (df2au)


Lesenswert?

Peter R. schrieb:
> #define var/h 0x20
Blindarbeit ist Varh

> #define Voltage 0x23
Spannung ist Volt

> #define Herz 0x2c
Der Kollege schreibt sich Hertz

: Bearbeitet durch User
von Achim S. (Gast)


Lesenswert?

Robert Delfs schrieb:
> wie die Werte von Scaler und Value zu interpretieren sind?

ah, Moment: du hattest ja nach Scaler und Value gefragt, erklärt wurden 
bisher Scaler und Einheit.

Der Value ist entweder eine singed Zahl (im Zweierkomplement) oder eine 
unsigned Zahl. Welches von beiden entscheidet sich im ersten Byte des 
Eintrags, dem sog. Type-Length Feld.

Dessen oberen vier Bit geben den Datentyp an (6 steht für unsigned, 5 
für signed). Die unteren 4 Bit geben die Länge des Eintrags an 
(inklusive des Type-Length Bytes). Die vollständige Auflistung findest 
du ab S. 42 von
https://www.bsi.bund.de/SharedDocs/Downloads/DE/BSI/Publikationen/TechnischeRichtlinien/TR03109/TR-03109-1_Anlage_Feinspezifikation_Drahtgebundene_LMN-Schnittstelle_Teilb.pdf?__blob=publicationFile&v=1

Ein Beispiel eines Werts:
  69 00 00 00 28 df 78 18 a2
Der Eintrag beginnt mit 69, ist als ein unsigned Wert (6) mit 9 Byte 
Länge. Das erste Byte ist das Type-Length Byte, die folgenden 8 Byte 
gehören zum eigentlichen Wert. Der ist also 0x00000028df7818A2, was 
umgerechnet in Dezimal den Wert 175547881634 ergibt.

Der Wert muss mit der Einheit und 10^(scaler) multipliziert werden.

Ein vollständiges Beispiel dafür:

  62 1e --unsigned Einheit 30: Wh
  52 fc --signed Scaler: 0xfc entspricht -4 -> 10^-4
  69 00 00 00 28 df 78 18 a2 --unsigned Wert 175547881634

ergibt 175547881634 * 10^-4 * Wh = 17554,7881634 kWh

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.