NEWS
Modbus - Erste Schritte
-
(X * 2 +1) % 2 = 1
Immer.
D.h du hast dann falsches Typ benutzt.
Es ist Little endian. 8 bit.
-
Nein, die anderen Typen funktionieren auch nicht. Es klappt NUR mit meinem Script.
-
Du verstehst aber dass
(X * 2 +1) % 2 = 1 % 2 = 1
oder?
D.h es wird immer diese Zeile aktiv:
buffer.readUInt8(offset * 2);
Und genau so eine Zeile steht bei uint8le
Das kann man sogar auf deinem Bild sehen.
D.h. dass uint8le nicht geht, oder … k. A.
-
Eben nicht. Er prüft ja erst, ob offset*2+1 Durch 2 Teilbar ist.
Wenn ja, dann
return buffer.readUInt8(offset * 2);
wenn nicht, dann
return buffer.readUInt8(offset * 2 + 1);
ich könnte natürlich bei jeder zweiten Adresse den Typ ändern (zwischen LE und BE), aber das ist ja nicht Sinn der Sache
-
Eben nicht. Er prüft ja erst, ob offset*2+1 Durch 2 Teilbar ist. `
Offset =0, 1%2 =1Offset =1, 3%2 =1
Offset =2, 5%2 =1
Offset =3, 7%2 =1
…
Muss ich weiter machen?
-
Moin Bluefox - jetzt wo ich es auf nem Blatt Papier gegenrechne hast du recht :?
Und ich habs getestet - was soll ich sagen - es klappte natürlich.
Und ich schwöre, das Szenario hatte ich vorher bestimmt schon 5x durchgehabt. Wieso sonst hätte ich mir 5-6 Stunden Zeit nehmen sollen, um meine oben präsentierte Lösung zu erarbeiten :lol:
Ich vermute das Problem in der Objektansicht im ioBroker Backend. Ich habe das Gefühl, dass sich hier die Werte manchmal einfach nicht aktualisieren. Gerade dann oder nur dann, wenn ich eben an den Typen rumspiele. Ich sehe zwar schön, wie Sie beim Neustart des Adapters grün werden, der Wert aber bleibt manchmal der gleiche. Dann muss man nen Seitenreload machen oder den Browser komplett neu starten.
Momentan passt es jedenfalls, wie du sagtest uint8le.
-
Moin Bluefox - jetzt wo ich es auf nem Blatt Papier gegenrechne hast du recht :?
Und ich habs getestet - was soll ich sagen - es klappte natürlich.
Und ich schwöre, das Szenario hatte ich vorher bestimmt schon 5x durchgehabt. Wieso sonst hätte ich mir 5-6 Stunden Zeit nehmen sollen, um meine oben präsentierte Lösung zu erarbeiten :lol:
Ich vermute das Problem in der Objektansicht im ioBroker Backend. Ich habe das Gefühl, dass sich hier die Werte manchmal einfach nicht aktualisieren. Gerade dann oder nur dann, wenn ich eben an den Typen rumspiele. Ich sehe zwar schön, wie Sie beim Neustart des Adapters grün werden, der Wert aber bleibt manchmal der gleiche. Dann muss man nen Seitenreload machen oder den Browser komplett neu starten.
Momentan passt es jedenfalls, wie du sagtest uint8le. `
Mit dem Update kann gut ein Fehler sein. Den jage ich aber noch.Gut, dass es bei dir jetzt endlich geht, weil die Entwicklung von modbus ist irgendwie zu holperig.
Und ich bin auch müde davon.
Es gibt eventuell noch Probleme mit der Wiederverbindung.
Kannst du updaten um es zu testen?
-
Mit dem Update kann gut ein Fehler sein. Den jage ich aber noch.
Gut, dass es bei dir jetzt endlich geht, weil die Entwicklung von modbus ist irgendwie zu holperig.
Und ich bin auch müde davon.
Es gibt eventuell noch Probleme mit der Wiederverbindung. `
DURCHHALTEN!!! :mrgreen: :mrgreen: :mrgreen:
Wir werden doch wohl den modbus Adapter auf 1.0.0 (RELEASE) bekommen!!! 8-) 8-) 8-)
-
klar kann ich Updaten - was genau soll ich im Anschluss testen?
Mit Verbindungsabbrüchen hatte ich bisher noch keine Probleme. Liegt vielleicht auch daran, dass er bei mir bisher noch nie konstant nen Tag durchlief (weil ich vorher wegen Änderungen immer mal neugestartet hatte :lol: )
-
Einfach Stabilität. Und vielleicht ein paar die Verbindung trennen und wiederherstellen.
-
Jupp, werde ich mal machen. Melde mich zu dem Thema dann ende der Woche. Dann kann ich dir sagen, wie stabil es bei mir läuft.
-
Also bei mir läuft er mit der Version 0.4.5 ohne einen Absturz sauber durch - bisher 8-)
-
Also bei mir läuft er mit der Version 0.4.5 ohne einen Absturz sauber durch - bisher 8-) `
Schreibst du was ab und zu oder nur lesend? -
Aktuell werden zum Test mal hin und wieder auch was von ioBroker zur Wago versendet.
Bei mir dient ioBroker aber primär als Visualisierung. Die Logik bleibt großteils in der WAGO.
-
Moin, habe heute mal diverse Adapter aktualisiert. Darunter auch den Modubs Adapter auf Version 0.4.6
Seitdem startet es leider nicht mehr.
Folgende Fehlermeldung kommt nun.
1534_bild001.png -
Moin, habe heute mal diverse Adapter aktualisiert. Darunter auch den Modubs Adapter auf Version 0.4.6
Seitdem startet es leider nicht mehr.
Folgende Fehlermeldung kommt nun. `
Der Inhaber von modbus npm modul hat fehlerhafte Dateien eingecheckt.Habe jetzt fest alte Version von diesem Paket gesetzt. Bitte noch mal updaten.
-
Perfekt, läuft
-
Hallo,
ich mache auch gerade meine ersten Gehversuche mit Modbus. Habe soeben mein Hauskraftwerk von E3DC erfolgreich angebunden.
Soll heißen, es fließen Daten in ioBroker!
Allerdings habe ich da noch ein Problemchen. Zwei Register des E3DC-Geräts sind vom Datentyp "Uint8+Uint8". Dabei handelt es sich um zwei Werte in einem Register:
Gibt es eine Möglichkeit wie ich diese Werte über den Adapter in ioBroker als separate Datenpunkte integrieren kann?Außerdem habe ich noch eine Verständnisfrage. Was hat es mit WP (Write Pulse?) und CW (Zyklisch Schreiben?) auf sich?
MfG,André
-
Hallo,
ich mache auch gerade meine ersten Gehversuche mit Modbus. Habe soeben mein Hauskraftwerk von E3DC erfolgreich angebunden.
Soll heißen, es fließen Daten in ioBroker!
Allerdings habe ich da noch ein Problemchen. Zwei Register des E3DC-Geräts sind vom Datentyp "Uint8+Uint8". Dabei handelt es sich um zwei Werte in einem Register:
Datentyp.PNG
Gibt es eine Möglichkeit wie ich diese Werte über den Adapter in ioBroker als separate Datenpunkte integrieren kann? `
Ich würde das mit dem Skript lösen.Außerdem habe ich noch eine Verständnisfrage. Was hat es mit WP (Write Pulse?) und CW (Zyklisch Schreiben?) auf sich?
wp+cw.PNG
MfG,
André `
Write Pulse: beim schreiben von true es wird automatisch nach X ms wieder auf false gesetzt.
Zyklisch Schreiben: Manche slaves wollen, dass die Werte beim jedem Zyklus alle X ms geschrieben werden. Damit kann man es machen.
-
Ich würde das mit dem Skript lösen. `
Das habe ich mir fast gedacht, dass es so geht. Leider fehlt mir dabei ein wenig das Programmierwissen. Was muss ich bei Google suchen wenn ich dazu mal ein Beispiel benötige?Und was nehme ich überhaupt für einen Datentyp damit ich einen Wert bekomme, den ich dann im Script verarbeiten kann?
Write Pulse: beim schreiben von true es wird automatisch nach X ms wieder auf false gesetzt.
Zyklisch Schreiben: Manche slaves wollen, dass die Werte beim jedem Zyklus alle X ms geschrieben werden. Damit kann man es machen. `
Danke für die Info. Wieder was gelernt.MfG,
André
Gesendet von iPad mit Tapatalk