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
Ankündigung
Einklappen
Keine Ankündigung bisher.
- √ - Hex-IP-Telgramme-Emfangen von Moxa
Einklappen
X
-
Yes it will work, as you said yourself: Hex & Dec are only different representations of the same numberZitat 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.
@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:
-
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:
-
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:
-
NiceZitat von TobiasK Beitrag anzeigenich habe das Problem mit einer kleinen Logik gelöst.
Einen Kommentar schreiben:
-
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ß
TobiasAngehängte Dateien
Einen Kommentar schreiben:
-
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:
-
http://www.dacom-homeautomation.de/p...id=delogikentwZitat von marko Beitrag anzeigenHast du eine Anleitung zum Schreiben von Logikbausteinen ?
Hex is just a "view" to the dataZitat von marko Beitrag anzeigenNoch eine Frage zum 8Bit Kommunikationsobjekt: Bist du sicher, das dies auch Hexwerte aufnimmt ?
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:
-
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:
-
Habe einen Baustein :String mit Hexwert in Dezimal umrechnen.
Hilft dir das weiter?
Gruß Günther
Einen Kommentar schreiben:
-
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:
-
OK, fineZitat von marko Beitrag anzeigenMein Problem ist nicht, dass das Moxa falsche Daten liefert.
Indeed, I checked with the hex calculator and it is OK.Zitat von marko Beitrag anzeigenDanach folgen die einzelnen Temperaturwerte 2 Byte-weise ohne Zwischen-Bytes:
(Beispiel (siehe Debugseite : 0x0 0x92 0x1 0x52 0x1 0x99 )
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)
Yes, I agree with you.Zitat von marko Beitrag anzeigenhabe ich immer leere Felder (wahrscheinlich weil der Hexwert nicht im Bereich für Zeichen ist).
No, no, hex is just a representation (like octal, decimal or binary: the basic data is the same.Zitat von marko Beitrag anzeigenMein und 8 Bit nimmt scheinbar keine Hexwerte an.
I suggest to write a Baustein:Zitat von marko Beitrag anzeigenWie bekomme ich aus den anstehenden Daten einen 2 Byte Temperaturwert ?
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:
-
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:
-
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:
-
Haa, the joy of little endian vs big endianZitat von marko Beitrag anzeigenwobei das niederwertige Byte zuerst steht.
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:


Einen Kommentar schreiben: