Wago 750-8100 e-Cockpit Modbus Register Coil Überschneidung

Bugelfips

Level-2
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

ich fang mit einem Thema an, wo ich keine Lösung finde und mir der Wago Support auch keine Lösung sagen konnte. Ich habe eine Modbus Verbindung mit einem Raspberry Openhab3 aufgebaut.
Das Funktioniert auch eigentlich sehr super schnell und zuverlässig, hatte noch keine Probleme, aber jetzt habe ich eines.

Nach dem ich bis jetzt nur An/Aus also einzelnen Coils übertragen habe, ich aber jetzt noch zusätzliche Register werte wie z.b. Dimmen übertragen möchte, bekomm ich extreme Probleme auf dem Modbus.

Wenn ich den Zahlen wert rauf dimme, dann werden teilweise die Lichter eingeschalten. Ich habe darauf das ganze mal einfach gehalten und nur ein 2 Coil werte und ein int wert versucht in dem Modbus zuschreiben. Ich habe darauf über das Modbus Tool herausgefunden, das mir in Adressen was geschrieben wird obwohl nichts konfiguriert ist (siehe Bilder). Wenn ich das int Register herausnehme, dann gibt es ein schönen Adressen verlauf.

Ich habe schon so gut wie alle Adressen Bereiche ausgewählt, trotzdem werden die Adressen immer nach den 2Coil werten beschrieben.
Ich habe darauf mal einen anderes Modbus Toll verwendet, was auch keine Lösung fand.

Dazu kommt noch, dass mir der int Zahlen wert total falsch dargestellt wird, was ich aber jetzt herausgefunden habe, mit einen andern Modbus Tool passt.
Was sagt Ihr dazu, was kann das für Ursachen haben. Liegt es an falschen Adressenberieche oder an dem Modbus Tool….
2coils.jpgcoil2 u register.jpg
Bin ziemlich ratlos gerade
 
Hast Du schon mal versucht die Bool-Werte in ein Byte zu bündeln und dann nicht mit Coil-FunctionCode abzufragen? In e!C kannst dann z.b. mit bAusgaenge.0 drauf zugreifen, oder per Union, aber dass mag ich grad nicht erklären.
 
siehe unten...
 

Anhänge

  • Ashampoo_Snap_Donnerstag, 21. Januar 2021_10h01m59s_017_.jpg
    Ashampoo_Snap_Donnerstag, 21. Januar 2021_10h01m59s_017_.jpg
    55,1 KB · Aufrufe: 59
Zuletzt bearbeitet:
schon einmal danke für die schnellen Antworten und die Ansätze. ;)Werde das genauer erforschen. Wenn ich das richtig verstanden habe, sind Register Bereiche aus 8bit. Wenn ich jetzt Register 20 auswähle, dann müsste ich das ja mal 8 nehmen um die coil Adresse zu erhalten, oder werden Register in einem separaten Bereich geschrieben.

Ich bin doch nicht der erste der Zahlen Werte und Bool-Werte in ecockpit konfiguriert. Sollte mich dann nicht ekockpit darauf hinweisen das ich in einem Bereich schreibe was nicht gut gehen kann.

 
Ergänzung: Laut Handbuch Seite 118 scheint es überhaupt keinen Coil-Zugriff zu geben. Dort sind nur Funktionscodes für Register aufgeführt.
Also wirst Du nicht umhin kommen, die Bits in Words zusammenzufassen und als HReg zu übertragen.

Anhang anzeigen 52569


ach ok, habe dieses Diagramm nicht so wörtlich genommen. Weshalb gibt es dann die Auswahl coil??:-(
 
sorry was meinst du mit weißen Bereich :rolleyes:
ganz rechte Spalte... hab nur die direkte Beschriftung neben den farblichen Kästen gelesen.

Je mehr ich mir diese Grafik ansehe, desto mehr glaube ich, daß es wieder mal so ist, daß WAGO hier den Coil-Bereich mit in den HReg-Bereich gelegt hat.
Das bedeutet, daß die ersten Wörter sowohl als HReg als auch als Coil beschrieben werden können.

Ich würde jetzt mal vermuten wollen, daß bei Modubus-IN die ersten 2047 Worte (HRegs) ebenso über Coils (Bits) beschrieben werden können.
Danach hast Du 29952 HRegs, für reinen Wort-Zugriff.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
da bin ich voll bei dir, so hab ich das auch verstanden, dann sollte es doch aber kein problem darstellen wenn ich von 0 - 2047 theoretisch coil ung HReg beschreibe. Wenn ich auf nummer sicher gehe (siehe Bild) also coil Adresse 32001 und 32002 und int in Register 1.

Die Wago darstellung ist verwirent dargestellt oder ich kapiert es nicht ganz.
PFC-Out Register berreich = 0 bis 31999
PFC-OUT Coil berreich = 0 bis 32767 = also reiner coil berreich 31999 bis 32767

Wie man sieht ohne erfolg :sad::sad::sad::sad::sad:

coil2 u register 2.jpgcoil2 u register 3.jpg
 
Da die Coils ja Bits sind, gehe ich davon aus, daß 16 Coils = 1 HReg-Adresse bilden.

Deshalb schrieb ich, daß vermutlich die ersten 2047 HRegs gleichzeitig Coils sind.
Also ab HReg 2048, solltest Du einen reinen puren HReg-Zugriff haben.

Wir quälen uns auch jedes Mal, speziell bei den Kopplern, mit der Darstellung von WAGO herum... das ist suboptimal von denen gelöst.

Ich würde jetzt versuchen, die Coils 0..x zu beschreiben.
Analogwerte dann ab HReg 2048 aufwärts.
 
gesagt getan, :D ich habe das ganze mal probiert und na ja kann keine Besserung feststellen, ich sag mal so ich teste es ja momentan im Kleinen (wie auf den Bildern zu sehen) soll heißen das es zwei Coil Werte und ein Register wert ist.

Kann es sein das ecockpit eine coil Definierung in ein Register schreibt (so wie du auch schon gesagt hast) und die restlichen Register auf true setzt?? Wie auf dem Bild zu sehen ist, werden immer nach dem definierten Coil Adresse vier Werte auf true gesetzt.

Versteh die Logik dahinter nicht, vor allem das dieses Phänomen nur auftritt wenn ich ein Register mit Implementiere.

coil2 u register 3.jpg
 
Also ich habe zwar mit eCockpit sehr wenig Erfahrung, aber bei CS 2.3 ist es bei Modbus auch so, dass man z.B. die Adresse 12288 also Coil ansprechen kann und auch als Register.
Wenn die beiden gleichzeitig angesprochen werden, kommt nix gescheites dabei raus.
Das ist jedesmal ne Qual mit dem Modbus.
Ich mache es immer so, ich fange mit Coil an, also reserviere ich mir z.B. 1000 Stück und danach kommt nur noch Word und Dword, ich reserviere mir quasi immer so viele das es sicher reicht.
Dann muss ich nichts zwischen rein packen was definitiv irgandwann zu überschneidungen führt.

Bestes Beispiel: Die Lichter schalten in Abhängigkeit von Raumtemperatur
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute, sorry für die späte Rückmeldung,

es gibt auf jedenfalls Neuigkeiten….
Ich hatte Kontakt mit dem Wago Support, ich Zitiere einfach mal die Aussage vom Wago
[FONT=&quot] [/FONT]
"[FONT=&quot]wenn ich es richtig verstehe erhalten Sie jetzt auch auf verwendeten Modbus Datenpunkten falsche Werte.
Falls Sie noch keine aktuelle Firmware verwenden, könnten Sie eine Aktualisierung versuchen.

Generell könnten Sie auch die Bibliothek WagoAppPlcModbus verwenden.[/FONT] " (Wago Support)[FONT=&quot][/FONT]
[FONT=&quot] [/FONT]
[FONT=&quot]Ich habe die Aktualisierung jetzt aus zeitlichen Gründen noch nicht probiert, aber ich habe gestern netterweise von jemand eine Programmierung erhalten, wo der oben genannte WagoAppPlcModbus Baustein Anwendung findet. Wie Ihr Wisst bin ich Anfänger, wo täglich dazulernt. Mir war nicht bewusst, dass in eCockpit der Mobus auch so ausgeführt werden kann. Das erleichtert vieles, da viel durch copy and paste geschrieben werden kann.[/FONT]
[FONT=&quot] [/FONT]
[FONT=&quot]Ich werde das ganze Mal probieren, bin aber ganz zuversichtlich das es funktioniert.;)[/FONT]

[FONT=&quot]Werde berichten, wenn ich genaueres weiß.[/FONT]
[FONT=&quot] [/FONT]

[FONT=&quot]Danke Leute, für die Unterstützungen…[/FONT]
 
So ich durfte mich nun auch mit dem Thema rumschlagen.
Erstmal danke an JSEngineering für die gute Erklärung / Vorarbeit.
Der Wago Modbus-Konfigurator ist schon etwas gewöhnungsbedürftig.
Um Überschneidungen zu vermeiden habe ich mich an die 2048 zwischen Discrete Inputs - Inputregistern und Coils - Holdingregistern gehalten.
Also:
  • Discrete Input (Eingang) Ab Coil 0 (Read Only)
  • Inputregister (Eingang) ab Register 2048 (Read Only)
  • Coil (Ausgang) ab Coil 32768 (Read / Write)
  • Holdingregister (Ausgang) ab Register 34048 (Read / Write)

Bei vielen Mastern hat man einen Adressversatz von 1. Also Register 34048 wird mit 34049 im Master angesprochen.
Aber das hat man bei Modbus öfter.

Was mir auch noch aufgefallen ist:
Ich hatte die Ein- und Ausgänge als Array of Bool definiert.
Übergibt man diese Variable im Nodbus-Konfigurator, dann wird ein Array of Byte daraus.
Also hab ich die Ein- und Ausgänge einzeln angelegt. Damit funktioniert es.
Aber das Thema Bit / Byte hat man bei Codesys auch an anderer Stelle.

Also Wago würde hier wirklich gut daran tun, wenn sie die Doku bei den PFCs ergänzen würden.
Eine Grafik mit den Adressen ist schon sehr mau. Das geht deutlich besser.

Gruß
Blockmove
 
Hallo Blockmove,

ich würde gerne mitreden können und meine Erfolge bzw. Misserfolge euch mitteilen. Leider finde ich die Zeit nicht dazu.

Danke schon mal für die einfach gehaltene Beschreibung trotzdem sehr informativ.
Fragen habe ich trotzdem, wo werden denn deines Coils, Register empfangen (openhab)?
Ich überwache den Modbus mit einem Modbus Scanner, wenn ich Online gehe werden werte überschieben wo gar nicht definiert sind. vielleicht sollte ich das auch mal mit deiner Methode probieren, sprich Array of Bool.
 
Zurück
Oben