NEWS
Modbus Relais mit Modbus Adapter - aber wie?
-
Re: Frage zu Modbus
Hallo zusammen,
ich habe hier schon die Suche bemüht, allerdings bin ich blöd oder stehe auf dem Schlauch:Habe ein 16-Kanal Relais mit Modbus-unterstützung gekauft. In freudiger Erwartung, es über ioBroker und den Modbus-Adapter steuern zu können.
Der Hersteller hat mir auch eine ausführliche Doku mitgeliefert, hier ein kleiner Auszug:9600 Baud ,8N1 Slave ID: 1 Beispiele: Channel 1 Open : 01 06 00 01 01 00 D9 9A Channel 1 Close : 01 06 00 01 02 00 D9 6A Channel 1 Toggle: 01 06 00 01 03 00 D8 FA Channel 1 Latch: 01 06 00 01 04 00 DA CA Channel 2 Open : 01 06 00 02 01 00 29 9A Channel 2 Close : 01 06 00 02 02 00 29 6A Channel 2 Toggle :01 06 00 02 03 00 28 FA Channel 2 Latch : 01 06 00 02 04 00 2A CA ...
Die Logik von Modbus bzw. wie die Befehle für das Relais aufgebaut sind erschließen sich mir schon.
Byte 1: Addresse (Slave ID)
Byte 2: "Typ" (06 für Command?)
Byte 3&4: Register-Adresse
Byte 5: Kommando (01=öffnen, 02=schließen, ...)
Byte 6: Delay
Byte 7&8: CRC ChecksumNur:
Wo soll ich das im Modbus-Adapter eintragen?
Diskrete Ausgänge? Holding Register?
Als Adresse einfach die 1?
Und wie schalte ich dann die Relais?bitte einmal für Dumme
Danke vielmals vorab!
-
also, ich habe vieles probiert, vieles gelesen.
ich bekomme das Relais auch über das Tool "ModbusPoll" angesprochen (über Windows PC und meinen RS485-to-USB Adapter).Aber ich kann der Doku des Adapters im github leider wirklich nicht die notwendige Info entnehmen, wo/wie die Steuerbefehle im Adapter eingetragen werden müssten.
@Bluefox, kannst Du mir vielleicht hier einfach einen Schubs in die richtige Richtung geben?
Oder gibt es jemanden, der ebenfalls ein Relais über den Adapter steuert und einen Screenshot machen könnte.
Ich glaube, viel mehr brauch ich nicht..Danke!
-
Hier habe ich mal die Doku hochgeladen, die vom Verkäufer mitgeleifert wurde.
Mitsamt Video, wie er das über "Modbus Poll" steuert. genau so habe ich es auch zum Laufen gebracht.
Aber - wie gesagt - ich habe immer noch keinen blassen Schimmer, wie ich die Steuerbefehle in den Adapter eintragen sollhttps://www.dropbox.com/sh/mx7wn5hpnwfv940/AABeftE_QS4KWlnBJV-2_nAza?dl=0
-
habe mal meinen Müll lieber gelöscht bevor er jemanden verwirrt
-
Also diese Platine habe ich jetzt nicht aber habe schon viel mit Modbus rum gebastelt.
Bei dem Adapter ist es wichtig die richtige adresse zu haben wenn es die falsche ist wird der rot und geht danach nur noch mit neustart wieder. Leider muss man die genaue adresse haben das ist aber etwas modbus Spezifiches. Was sich da zusammen setzt gerade bei serial sehr tricki.
Ich würde es über die Holding register versuchen. Es kann sein das die platine mit einer Deziaml zahl arbeitet sprich. 1= eingang 1, 2=eingang 2, 3=eingang 1 und 2 geschaltet, usw. dafür habe ich mal ein script gebaut um das umzurechnen. Byte-rechner.json nach dem was ich in der anleitung überflogen habe könnte das so passen. Also über ein Holdin register und den den rest mit der ganzzahl. -
@thabam Hallo ThaBam, es hat funktioniert. Nachdem ich die Adressen 40001- 400018 als State angelegt habe, wurden einige Werte angezeigt. Viele sind auf 0 aber der wichtigste war dabei. Bei meinem Teil wird im Register 40002 addiert:
Relais 1 on= 1
Relais 2 on=2
Relais 3 on= 4
Relais 1+3 on, 2 off = 5Dummerweise kann aber nur der Status abgefragt werden. Versucht man zu schreiben, kommt die Fehlermeldung "(16900) Cannot write [1]: {"err":"timeout","timeout":5000}". In den Einstellungen auf "Do not use Write multiple Registers" kann zwar angeklickt werden, ist aber nach dem Abspeichern und erneuten Aufrufen wieder weg. Der Tip aus link text hat auch nicht funktioniert.
Vielen Dank für die Hilfe, so hatte ich wenigstens ein Erfolgserlebnis mit Modbus. Du schreibst, du hast schon viel damit rumgebastelt. Läuft bei dir etwas mit Modbus oder war es zu instabil o.ä.?
[0_1618077144263_Bildschirmfoto von 2021-04-10 19-37-58.png](Uploading 100%) -
Das klingt doch schon mal gut und wäre ein Ansatz für das Schreiben auch hin zu bekommen ich kann nachher evtl. Noch mal schauen ob ich was finde.
Ja bei mir läuft modbus. Ich kommuniziere mit einer easy von eaton. Hatte da die gleichen Probleme weil die Register usw. Nicht wirklich gut beschrieben sind. Und diese ja weit aus mehr zu Verfügung stellt.
Wollte auch immer mal mit Serien was machen und mit einem Frequenzumrichter über modbus kommunizieren aber dafür fehlte mir bisher die Zeit.
(Übrigens selbst der eaton Support wusste erst nicht wie man das macht) -
@thabam Hej, ich habe es geschafft. Es funktioniert. Man sollte manchmal auch einen Schritt weiterdenken. Wenn der Entwickler 18 Register für acht Relais vorsieht aber nur in vier davon Werte vorhanden sind, sollte man sich fragen, wofür die anderen da sind.
Wenn man dann noch in die Anleitung schaut und sich die HEX- Adressen ansieht, dann darüber nachdenkt, was man in den letzten Tagen über Modbus etc. gelernt hat (hatte noch nie damit zu tun), haut man mit dem Kopf auf den Tisch und das mehrmals.
Ich denke, es wird für das Board von Kanonidom ähnlich sein. Für meins funktioniert es so:- als erstes die Holdingregister 40001- 40018 anlegen
40001 = Anzahl der Relais auf dem Board (bei mir acht Stück)
40002 = Status der Relais (nur read)
40003 = Eingabe des Dezimalcodes zur Steuerung der Relais (write)
Staus wird berechnet durch Addition der Werte
Relais 1= 1
Relais 2= 2
Relais 3= 4
Relais 4= 8
usw.Wenn z.B. Relais 1 und 4 on sind, steht dort eine 9
Relais schalten: (Register 4003)
Eigentlich ganz einfach wenn man es weiß
Dies sind die Werte für das 8CH Dingtian IoT Relay. Multi- Register- Werte dürften dann in dem folgenden Register eingetragen werden, da muss ich noch schauen.Vielen Dank für die Unterstützung, jetzt kommt der Versuch, mit einem zweiten Teil als Slave.
Viele Grüße
Henning
- als erstes die Holdingregister 40001- 40018 anlegen
-
@henning-0 Danke für das Teilen der Information.
Ist das eine Serielle Modbus Karte?
Hast du mal einen Link und/oder weisst du ob es die auch als TCP/IP Variante gibt?
-
@wendy2702 Hallo Wendy. man sucht ja selbst immer alle möglichen Infos und freut sich, wenn diese jemand zur Verfügung gestellt hat
Ich habe dafür einen USB- RS485 Konverter vom Händler unseres Vertrauens benutzt AliexpressIndustrie Grade USB zu RS485 Kommunikation Modul Konverter Serial Port Linie Konverter TVS Schutz C90DDa man seriell im IOBroker nur ein Modbus- Client ansprechen kann (soweit ich gelesen habe), versuche ich es jetzt mit einer TCP- Variante (Elfin-EW11), bis jetzt aber erfolglos.
Das Relaisboard selbst ist sehr flexibel und eigentlich braucht man gar kein Modbus. Die kann so ungefähr fast alles. (Modbus MQTT TCP UDP Web HTTP Zeitplan Aufgabe CAN- Bus RS485 CoAP) inkl. Wifi auf Wunsch. MQTT lief auch sofort, den Rest habe ich, bis auf Modbus, noch nicht getestet. Ethernet Relais Netzwerk Wifi Schalter Modbus MQTT TCP UDP Web HTTP Zeitplan Aufgabe KANN RS485 CoAP Domoticz Timer Modul
-
@henning-0 Danke für die Info.
-
Das ist doch super das es jetzt geklappt hat. Manchmal muss man einfach so lange probieren bis man es hat.
Kannst du denn den byte-rechner von mir gebrauchen dafür? -
@thabam Manchmal benötigt man beim probieren einfach den Schups in die richtige Richtung. Mit dem Byte- Rechner habe ich mich noch nicht auseinandergesetzt, kopiert habe ich ihn natürlich schon
Dafür bin ich jetzt übermütig geworden und habe das zweite Board via Modbus hinter das erste geklemmt, die Einstellungen bei den Geräten geändert und siehe da, es funktioniert über die serielle Anbindung. Beide Geräte können mit dem Modbus- Adapter über den USB- RS485- Adapter angesprochen und gesteuert werden. Jetzt warte ich noch auf die Post für die nächsten Geräte (sollen vier Stück werden) und starte gleich mal die Bestellung für irgendwelche anderen Dinge (Temperaturfühler usw.). Getestet habe ich natürlich ohne Netzwerkverbindung zu den beiden Releaisboards
Jetzt noch den Byterechner und die Multiregister testen.
Hier sind meine Einstellungen für den Mehrgerätebetrieb:
-
Wenn du es erfolgreich geschafft hast wäre es super wenn du es der Community bereitstellen würdest: https://forum.iobroker.net/topic/44510/aufruf-sammlung-an-modbus-anbindungen
-
@kanonidom Hallo Kanonidom, ich habe das selbe Relais hier und bis jetzt ebenfalls nicht herausgefunden, wie ich es in der modbus Instanz angelegt bekomme. Bist Du hier inzwischen weiter gekommen? lg Crampl
-
@henning-0 Hi,
habe mir ein 4 Kanal Relais besorgt.
Das Auslesen der Zustände per Modbus funktioniert bei meiner Version allerdings kann ich den Status der Relais nicht über den Adapter ändern.
Mit ModbusPoll kann ich beim Schreiben des Registers 2 das entsprechende Relais schalten, versuche ich das über den Adapter funktioniert es nicht.
Hast du das zum laufen bekommen bei der TCP Variante?
EDIT: Habe es gerade hinbekommen.
Sieht bei mir jetzt so aus:
Hier noch zu erwähnen das "Bestätigt" nicht ausgwählt werden darf