# Der Ausnutzer



## wero (11 Dezember 2008)

Anhang anzeigen Bus.pdf


Da ich leider nicht das grosse Genie bin, muss ich die Genie's ausnutzen. Weiss zufällig jemand, wie die oben angeführte Tafel zu interpretieren ist. Hauptsächlich die Adressierung?:TOOL:

Gruss
wero


----------



## Ralle (11 Dezember 2008)

Damit hatte ich zwar noch nichts zu tun, aber das sieht so aus, als wenn bestimmte festgelegte Einheiten über einen Code angegeben werden in diesem Byte 7/8.

Denke, man kann mit dem Protokoll Werte übermitteln und im Byte 7/8 ist dann die Einheit codiert. Steht dort also eine 05, dann sind es kWh usw.


----------



## Gerhard K (11 Dezember 2008)

aber in hex. ist von 0-9 zwar nicht von bedeutung,aber hex21(dez33) ist was anderes als dez21


----------



## Ralle (11 Dezember 2008)

Ja klar, sieht man ja auch, wird ja zusätzlich binär angegeben in der Tabelle und drüber steht Hex-Code.

Dieses Byte 7/8 scheint sich wohl auf die Bits im Byte zu beziehen.
Der VIB (Value Information Block) ist 1 Byte lang. Im höchsten Bit steht aber das sogenannte "Extension Bit", welches anzeigt, ob danach noch weitere Extensions zu diesem Thema folgen. Also werden für die Einheit 7 von 8 Bits genutzt.

Hier noch ein Link: http://www.m-bus.com/files/default.html
und: http://www.m-bus.com/files/w4b21021.pdf


----------



## Gerhard K (12 Dezember 2008)

das stimmt,aber nicht alle lesen das und dann wundern sie sich warum das nicht so funkt wie es soll.haben wir ja hier schon alles erlebt,oder?darum hab ich es nochmals erwähnt.


----------



## wero (12 Dezember 2008)

Guten Morgen,



Ralle schrieb:


> Im höchsten Bit steht aber das sogenannte "Extension Bit", welches anzeigt, ob danach noch weitere Extensions zu diesem Thema folgen. Also werden für die Einheit 7 von 8 Bits genutzt.


 
Also mein grösstes Problem ist es zu verstehen wie die ankommenten Zahlenwerte sortiert und vorallem zusammengesetzt werden.
Habe da auch ASCII Zeichen drin. Wie weiss ich nun, was sich Hinter der Nummernfolge verbirgt?

Viele Gruesse
wero


----------



## volker (12 Dezember 2008)

wero schrieb:


> Habe da auch ASCII Zeichen drin. Wie weiss ich nun, was sich Hinter der Nummernfolge verbirgt?


das lässt sich der tabelle nicht entnehmen.
durchaus möglich, dass grundsätzlich alles im ascii code vorliegt.
um was genaueres dazu zu sagen müsstes du mal den inhalt der bytes posten


----------



## Ralle (12 Dezember 2008)

Ich hab dir ja den 2. Link mit angegeben. Hab das auch nur mal kurz überflogen, weils mich interessiert hat. Aber anscheinend wird das alles in einer festen Reihenfolge hintereinanderweg hingeschrieben, ja nach Gerät. Dazu gibt es dann noch diese Extension-Bits (siehe oben), welche mit einer 1 anzeigen, daß noch eine Ergänzung angehängt ist. Steht da eine 0 drin, kommt wohl die nächste darauffolgende logische Einheit. Man muß also die richtige Reihenfolge kennen und auch die Extension-Bits beachten. Es kann natürlich auch noch sein, daß sich das nach hinten noch weiter aufsplittet, je nachdem, welche Geräte, Spezifikationen man wählt, das weiß ich nicht genau, muß man mal aus der PDF rauslesen. Da kommst du wohl nur durch, wenn du das mal von Anfang bis Ende durchließt. Falls du ein einziges feststehendes Gerät einlesen willst, mußt du dir sicher dafür die Codes alle raussuchen. Wenn unterschiedliche Geräte dranhängen, wird so eine Art Parser sinnvoll sein, in welchem man implementiert, was nach welcher Angabe in den Daten folgt.


----------



## wero (13 Dezember 2008)

Guten Morgen,

glücklicherweise konnte ich die Liste der Telegrammbytes des Herstellers auftreiben. Vielen Dank an Herrn P. der Firma S.
Die Reihenfolge gewusst, bleibt mein Problem das Zusammensetzen.
Wie bildet man nun eine Zahlenkette, aus mehreren Bytes?
Habe schon einige Threads hier gelesen, scheitere aber an meinen bescheidenen Programmierkenntnisen.

Viele Grüsse,
wero


----------



## Gerhard K (13 Dezember 2008)

stelle mal hier rein was du schon gemacht hast.dann wird dir sicher weitergeholfen.


----------



## wero (13 Dezember 2008)

Danke fuer deine Hilfe Gerhard.

Was zu posten ware meiner Meinung sinnlos, weil du im Grossen und Ganzen eh nur ein Array of Byte sehen würdest.
Ein Array mit Hexadezimalzahlen,wo ich die einzelnen Bytes zusammensetzen müsste (z.B Array[1] mit Array[5] und Array[80]).
Damit wuerde ein sinnvoler Wert rauskommen.

Viele Gruesse
wero


----------



## Ralle (13 Dezember 2008)

Entweder du überträgst das byteweise von einem Array in ein Zielarray oder du nimmst den SFC20 (Block_Move) und kannst dann beliebige Blöcke übertragen. Es gibt hier im Forum auch einen FC, der den Block_move so kapselt, daß man sich nicht mehr mit Any-Pointern befassen muß, sondern nur noch QuellDB + StartByte + Länge und ZielDB + StartByte angeben muß.


----------

