NEWS
Modbus - Erste Schritte
-
Ich habe es sowohl bei den Eingangsregistern, als auch Holdingregistern mit den Typen Signed/Unsigned 16 Bit (Big & Little) getestet. `
Bitte um Wireshark -
Langsam simmer ja geübt ;.)
ich habe den Wert 30 an der Adresse 12342 über ioBroker abgesetzt.
1534_image_1.png -
Langsam simmer ja geübt ;.)
ich habe den Wert 30 an der Adresse 12342 über ioBroker abgesetzt. `
Das sieht verdammt richtig aus.Und wie sieht es aus mit Little endian 16?
-
Habe ich ja unter anderem auch getestet.
Komisch ist eben das o.g. Verhalten.
Ich habe gerade noch mal was getestet und per Wireshark aufgezeichnet.
Bild 1 geht nicht (eingegeben 255) , Bild 2 geht (eingegeben 23070).
Ankommen soll 255 in der Wago (bei zweitem kommt es auch als 255 an)
EDIT: Wenn ich das Gerade so sehe, ist das Problem bei allen Registern. DWORDs z.B. kann nur auf gleiche Art und Weise überschreiben.
1534_bild001.png
1534_bild002.png -
Komisch, dass die Adresse 12343 ist.
Bei mir geht es.
48_2016-10-19_21_44_00-iobroker.admin.png -
In dem Fall habe ich es auch auf 12343 getestet, da ich sonst meiner Lebensgefährtin im Wohnzimmer das Licht ausgemacht hätte :mrgreen:
Die Adresse stimmt, der Wert nur nicht. Evtl. erwartet hier die Wago wieder was anderes. Vielleicht ähnlich wie mit den anderen SWAP Typen, die du neu angelegt hast?
-
In dem Fall habe ich es auch auf 12343 getestet, da ich sonst meiner Lebensgefährtin im Wohnzimmer das Licht ausgemacht hätte :mrgreen:
Die Adresse stimmt, der Wert nur nicht. Evtl. erwartet hier die Wago wieder was anderes. Vielleicht ähnlich wie mit den anderen SWAP Typen, die du neu angelegt hast? `
Swap bei int16 gibt es nicht. Nur big oder little endian.Du musst schon die richtige Adresse nehmen 12342. Und dann vermutlich little endian.
Kannst du so eine aufzeichnen?
-
Die Adresse ist doch egal?! Es ist bei allen Adressen das gleiche Problem.
Aber hier für die Adresse 12342
Ich gebe 30 in ioBroker ein, er macht daraus 7680. In der Wago kommt 0 an (bzw. ein Wert > 255)
Ich klicke noch mal auf 7680 und klicke woanders hin, sodass der Wert wieder gesendet wird, 30 kommt bei der Wago an.
-
Sieht aus als ob die Bytes geswappt sind:
1E00 = 7680
001E = 30
Wago interpretiert aber
1E00 = 30
001E = 7680
Du schickst: 001E an Wago,
Wago empfängt die 001E und da du ein BYTE definiert hast nimmt Wago nur die 00, es steht aber tatsächlich 001E
in der Wago drin, d.h. wenn iobroker beim nächsten Poll den Wert liest, bekommt er die 7680 zurückgeliefert,
somit kriegst du dann die 7680 angezeigt.
Jetzt schickst du nochmal, und zwar die 7680 (1E00), die kommt bei der Wago an, wird als 1E00 gespeichert,
Wago interpretiert das erst BYTE und du hast 30.
Beim nächsten Pollen liefert dann die Wago die 30 zurück und die bekommst du dann angezeigt…
Hast du mit BigEndian probiert? Geht es damit
-
Jepp, habe ich, siehe:
Ich habe es sowohl bei den Eingangsregistern, als auch Holdingregistern mit den Typen Signed/Unsigned 16 Bit (Big & Little) getestet. `
-
Kannst du auf der "Wago" Seite die Adresse mit einem Projektierungstool einsehen und da
evtl den Typ dynamisch ändern? Also z.B. von Byte auf Word? Wie werden denn dann die Werte angezeigt?
Sorry, kenne Wago nicht im Detail, sind alles nur Vermutungen…
-
Ja ich kann mit Codesys die Wago entsprechend programmieren.
Ich kann leider nur die Adresse nicht ändern, da danndie Typen nicht stimmen und auf die Adresse noch andere Variablen mit dem Typ drauf zugreifen.
Aber ich könnte ja eine Word Adresse der Wage nehmen und in ioBroker als Byte (16Bit Little Endian) definieren und wieder versuchen?! Müsste dem Ergebnis doch gleich kommen.
-
Sieht aus als ob die Bytes geswappt sind:
1E00 = 7680
001E = 30
Wago interpretiert aber
1E00 = 30
001E = 7680
Du schickst: 001E an Wago,
Wago empfängt die 001E und da du ein BYTE definiert hast nimmt Wago nur die 00, es steht aber tatsächlich 001E
in der Wago drin, d.h. wenn iobroker beim nächsten Poll den Wert liest, bekommt er die 7680 zurückgeliefert,
somit kriegst du dann die 7680 angezeigt.
Jetzt schickst du nochmal, und zwar die 7680 (1E00), die kommt bei der Wago an, wird als 1E00 gespeichert,
Wago interpretiert das erst BYTE und du hast 30.
Beim nächsten Pollen liefert dann die Wago die 30 zurück und die bekommst du dann angezeigt…
Hast du mit BigEndian probiert? Geht es damit `
Es sieht nach ein Fehler bei Iob im Adapter. Weil wenn er LE eingestellt hat und 30 sendet, Es darf im wireshark kein 001E auftauchen, sondern 1E00 -
ja stimmt
ich hab noch zu wenig kaffee heut morgen :oops:
-
Konnte das Problem fixen. Bitte updaten.
-
Irgendwie lässt sich nun der Adapter nicht mehr aus dem Admin updaten.
Ich mache eigentlich nichts anders, als die letzten Tage :?
ioBroker läuft auf einer Windows Kiste
1534_bild003.png -
Stop mal Adapter vom update
-
Die Fehlermeldung sagt es doch in der letzten Zeile:
Als Administrator ausführen!
Gruß
Rainer
-
Die Fehlermeldung sagt es doch in der letzten Zeile:
Als Administrator ausführen!
Gruß
Rainer `
Bin gerade dran, die Console vom Server aus durchlaufen zu lassen. Ich habe mich nur gewundert, dass es nun plötzlich aus dem Admin raus nicht mehr geht.Edit: Update ist durch und was soll ich sagen - sieht SEHR gut aus 8-)
-
bei DWORDs scheint das Problem
http://forum.iobroker.net/viewtopic.php?p=37534#p37534
auch da zu sein.
Ich benutze Signed 32 Bit (Big Endian Word Swap)
Brauchst du wieder WiresharK?