Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Hex-IP-Telgramme-Emfangen von Moxa

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • marko
    antwortet
    Hallo,
    ich habe es geschafft ! Im Homeserver werden die gelieferten Daten richtig angezeigt. Es war ein steiniger Weg und ohne eure Hilfe hätte ich es nie hinbekommen. Vielen Dank an alle die geholfen haben.
    Hier noch mal ein paar Fehler, die ich gefunden habe:
    Die Behandlung von Kommunikationsobjekten im Homeserver habe ich falsch interpretiert.. Die Datenlänge beim Moxa war falsch eingestellt. Die Defininition des Webempfang war falsch. Bei der Logik habe die falschen Bausteine gewählt bzw. gesucht. Der größte Fehler war jedoch das Interface der Solaranlage. Bei der Analyse habe ich festgestellt das einige Daten schon falsch oder manchmal gar nicht aus der Solaranlage kommen und dass die Schnittstellenbeschreibung einige Fehler hat. Ich werde beim Hersteller eine fehlerfreie Beschreibung anfordern. Vielen Dank nochmals.
    Gruß Marko

    Einen Kommentar schreiben:


  • Gaston
    antwortet
    Zitat von Warichet Beitrag anzeigen
    @TobiasK:
    Nice! but I wonder if it will work. This Baustein works for decimal input (base 10). The input data is in hex (base 16) makes a big difference on a 2 byte value.
    Yes it will work, as you said yourself: Hex & Dec are only different representations of the same number

    @marko

    Leider gibt es in meinen Augen zur Zeit keine Möglichkeit mit dem HS eine solche Abfrage (generell) sauber und sicher zu bewerkstelligen.

    In dem Beispiel des Protokolls hier sind die ersten Bytes bekannt somit startet die Abfrage wohl damit. Wenn aber zufälliger weise mal die Werte im Telegram genauso stehen was dann ?

    Gut, in den meisten Fällen dürfte es funktionieren (habe es jetzt auch nicht für das Beispiel hier durchgespielt, denn schon eine Änderung im Moxa kann alles ändern), aber wenn mal ganz komische Werte rauskommen, könnte dies die Ursdache sein.

    Gruss,
    gaston

    Einen Kommentar schreiben:


  • Warichet
    antwortet
    Hi,

    By re-reading the thread, I noticed 2 things.

    @Michel:
    This Baustein will convert from Dec to Hex.
    But, imho, Marko needs the opposite, from Hex to Dec, as his source is in hex, as can be seen in the Debug.

    @TobiasK:
    Nice! but I wonder if it will work. This Baustein works for decimal input (base 10). The input data is in hex (base 16) makes a big difference on a 2 byte value.

    Einen Kommentar schreiben:


  • günneib
    antwortet
    Hallo Marko

    Ein Problem liegt noch an der auswertung vom Moxa.In der DEBUG Seite steht nicht das ganze Protokoll in einer Zeile,sondern in 2-3.Das kannst Du beim Moxa einstellen.Wenn Du alles in einer Zeile stehen hast,kannst Du es mit dem Baustein auswerten.
    Gruß Günther

    Einen Kommentar schreiben:


  • Warichet
    antwortet
    Zitat von TobiasK Beitrag anzeigen
    ich habe das Problem mit einer kleinen Logik gelöst.
    Nice

    Einen Kommentar schreiben:


  • TobiasK
    antwortet
    Hallo Marko,

    ich habe das Problem mit einer kleinen Logik gelöst.

    Ich lese jedes Byte einzeln in Hilfswerte (1Byte 0..255) ein und rechne dann in dieser kleinen Logik (s. Anhang) um - funktioniert eigentlich ganz gut.

    Gruß
    Tobias
    Angehängte Dateien

    Einen Kommentar schreiben:


  • marko
    antwortet
    Hallo Raymond,
    an diese Mailadresse habe ich geschrieben, nur leider keine Antwort erhalten.
    Die Abhängigkeit ist mir bekannt, ich wusste nur nicht ob dies auch für den Homeserver gilt.
    Gruß Marko

    Einen Kommentar schreiben:


  • Warichet
    antwortet
    Zitat von marko Beitrag anzeigen
    Hast du eine Anleitung zum Schreiben von Logikbausteinen ?
    http://www.dacom-homeautomation.de/p...id=delogikentw

    Zitat von marko Beitrag anzeigen
    Noch eine Frage zum 8Bit Kommunikationsobjekt: Bist du sicher, das dies auch Hexwerte aufnimmt ?
    Hex is just a "view" to the data
    Let's take a concrete example: a 1 byte data containing ASCII character "A"
    So in ASCII it is "A"
    in hex it is 41
    in decimal it is 65
    in octal it is 101
    in binary it is 1010 1010

    Einen Kommentar schreiben:


  • marko
    antwortet
    Hallo Günther,
    es wäre schön, wenn du mir den Baustein mailen könntes, dann würde ich es ausprobieren.
    Gruß Marko

    Einen Kommentar schreiben:


  • günneib
    antwortet
    Habe einen Baustein :String mit Hexwert in Dezimal umrechnen.
    Hilft dir das weiter?
    Gruß Günther

    Einen Kommentar schreiben:


  • marko
    antwortet
    Hallo Raymond,

    ich habe leider keine Beschreibung wie Logikbausteine geschrieben werden. Ich habe schon zweimal versucht diese Informationen von Dacom zu erhalten, aber leider keine Antwort erhalten. Ich habe auch keinen Baustein gefunden, der Hex in Dec umwandelt. Die Umwandlung von LSB und MSB ist ja nur eine Multiplikation und eine Addition. Hast du eine Anleitung zum Schreiben von Logikbausteinen ?

    Noch eine Frage zum 8Bit Kommunikationsobjekt: Bist du sicher, das dies auch Hexwerte aufnimmt ?

    Gruß Marko

    Einen Kommentar schreiben:


  • Warichet
    antwortet
    Zitat von marko Beitrag anzeigen
    Mein Problem ist nicht, dass das Moxa falsche Daten liefert.
    OK, fine

    Zitat von marko Beitrag anzeigen
    Danach folgen die einzelnen Temperaturwerte 2 Byte-weise ohne Zwischen-Bytes:
    (Beispiel (siehe Debugseite : 0x0 0x92 0x1 0x52 0x1 0x99 )
    Indeed, I checked with the hex calculator and it is OK.

    So, your problem is to put the 2 byte temp data in reversed form.
    As I mentionned before, you need a Baustein to do this (I think it doesn't exist, at least I haven't found it)

    Zitat von marko Beitrag anzeigen
    habe ich immer leere Felder (wahrscheinlich weil der Hexwert nicht im Bereich für Zeichen ist).
    Yes, I agree with you.

    Zitat von marko Beitrag anzeigen
    Mein und 8 Bit nimmt scheinbar keine Hexwerte an.
    No, no, hex is just a representation (like octal, decimal or binary: the basic data is the same.

    Zitat von marko Beitrag anzeigen
    Wie bekomme ich aus den anstehenden Daten einen 2 Byte Temperaturwert ?
    I suggest to write a Baustein:
    as input the LSB & MSB Byte of your data (temp)
    as ouput MSB & LSB Byte
    Concatenate those 2 bytes in a 16 bit value
    Convert the resulting hex value to decimal (3 decimal places (I've never seen a temp with 3 decimal places ) ) as suggested by Michel.
    Then it will work in the Visu.

    Easy to say, but maybe hard to do.

    Einen Kommentar schreiben:


  • marko
    antwortet
    Hallo,
    ich versuche es noch mal in Deutsch.
    Mein Problem ist nicht, dass das Moxa falsche Daten liefert. Sondern dass ich die ankommenden Daten nicht richtig verarbeitet bekomme.
    Erst werden folgende Daten geliefert \xFC\x1F\x0B\x01. Danach folgen die einzelnen Temperaturwerte 2 Byte-weise ohne Zwischen-Bytes:
    (Beispiel (siehe Debugseite : 0x0 0x92 0x1 0x52 0x1 0x99 )
    LSB 0x0 HSB 0x92 = x9200 = 37,376 °C
    LSB 0x1 HSB 0x52 = x5201 = 20,593 °C
    LSB 0x1 HSB 0x99 = x9901 = 39,169 °C

    Ich habe folgende Abfragen probiert:
    Wert als Klartext K-Objekt: 14 Byte Text,
    Wert als Binärdaten K-Objekt: 8Bit(0-255),
    Text/Wert mit fester Länge K-Objekt: 14 Byte Text.

    Wenn ich die Kommunikationswerte in der Viso anzeigen will, habe ich immer leere Felder (wahrscheinlich weil der Hexwert nicht im Bereich für Zeichen ist).
    Mit 14 Byte Text kann ich nicht rechnen und 8 Bit nimmt scheinbar keine Hexwerte an.

    Wie bekomme ich aus den anstehenden Daten einen 2 Byte Temperaturwert ?

    Gruß Marko

    Einen Kommentar schreiben:


  • Warichet
    antwortet
    Also....

    Once you are so far, and have the Telnet working, you could do
    telnet -f <file name> <moxa> 4001
    i.e. telnet -f mylog.txt moxa 4001
    Let it run for a while
    Abort the Telnet session
    Now have a look at the log file mylog.txt

    To have a closer look at it, specially the hex control characters, use a hex editor. I use the good old Debug , as it is free and supplied in all versions of DOS & Windows. I know, it's a tool from the "stone age"

    Suppose you were in C:\Temp, then at the Cmd prompt, type:
    Debug mylog.txt
    > (the debug prompt)
    d (dump, in the left pane you see the data from the Moxa in Hex form, in the right pane you see the ASCII equivalent. Notice that the non-printable characters are NOT shown in the right pane, but you can easily locate them in the left pane)
    <your data is here>
    d (dump)
    <your data is here>
    d (dump)
    <your data is here>
    .
    .
    .
    q (quit)

    Once you've clearly identified your data, and found the adequate delimeters (in my case, it was STX, ETX) you can fine tune your HS Web analyse to get exactly the data you need and put it in a HS variable.
    From there on, you are free to cut the data in meaningfull pieces with an ad-hoc Baustein.

    This is the procedure I've used with the EDF electricity teller and the Moxa 5110. I can send more screenshots if needed.

    Einen Kommentar schreiben:


  • Warichet
    antwortet
    Zitat von marko Beitrag anzeigen
    wobei das niederwertige Byte zuerst steht.
    Haa, the joy of little endian vs big endian
    I guess you have to write a Baustein to put that right

    But, as an aside, I suggest you open a CMD prompt and do:
    Telnet <moxa ip addr> 4001
    You should see the data scrolling across your display.
    When you've got some data, click anywhere in the display to freeze the display and examine the data

    Einen Kommentar schreiben:

Lädt...
X