TestX schrieb:> Checksumme falsch berechnet ?
Ich weiß nicht was die da gemacht haben. Überall der selbe Mist.
Die haben da irgendwas durcheinander gebracht.
Habe es aber herausfinden können. Falls es noch jemand braucht.
Jan H. schrieb:> Die haben da irgendwas durcheinander gebracht.
Ja, das ist wirr.
Hier mal der Protokollaufbau:
01 ist die Geräteadresse
05 steht für Write single coil
Die nächsten zwei Bytes sind die Registeradresse (MSB first), d.h. die
Nummer Deiner Relais.
Die darauf folgenden zwei Bytes dürfen laut Protokolldefinition entweder
den Wert 00 00 (aus) oder den Wert FF 00 (an) haben.
Darauf folgt noch ein 16-Bit-CRC.
Daß hier 01 00 akzeptiert wird, ist verwunderlich.
Wobei: Hast Du mal das spezifikationskonforme FF 00 ausprobiert?
1
Relais 1 schalten: 01 05 00 00 FF 00 xx yy | ausschalten: 01 05 00 00 00 00 CD CA
(CRC magst Du gerne selbst berechnen)
Wenn Du mehrere Relais gleichzeitig schalten möchtest, kannst Du Write
multiple coils (Funktionscode 15) verwenden:
01 - Geräteadresse
0F - Write Multiple Coils
00 00 - Registernummer der ersten Coil (16 Bit)
00 04 - Anzahl der zu beschreibenden Coils (16 Bit)
01 - Anzahl der folgenden Bytes mit Bitwerten (8 Bit)
0F - Bitfeld mit Wert für die zu beschreibenden Coils, hier alle vier an
gefolgt von zwei Bytes CRC.
ich habe vor kurzem mit wago 750 Modbuskoppler gespielt
und ebenfalls viel suchen und lesen und experimentiren müssen.
Zumal die Adressen von der Aufsteckreihenfolge abhängen
und die Befehle je nach bit oder wort Zugriff sich unterscheiden.
Wenn ich Zeit habe lade ich das mal auf github hoch.
Es gibt nicht wirklich viel freie Software oder Beispiele im Netz.
Daniel -. schrieb:> Zumal die Adressen von der Aufsteckreihenfolge abhängen
Wie denn sonst ?
Gerätenummer wird normalerweise vom Hersteller festgelegt und
ins Flash geschrieben.
Adresse im Netz wird für neue Geräte vom Master zugeteilt.
Hallo,
Habe mir so eine Relaiskarte zugelegt:
https://www.amazon.de/Relaiskarte-Relaismodul-Platine-Relais-Controller/dp/B07JKZSFBG
Board-Typ:
eletechsup r421b16
Sollte ähnlich funktionieren, wie die 4er Karte von Jan.
Leider finde ich seitens des Herstelles keine Definition der Modbus-Rtu
Kommunikation (Baudrate, Start, stop, bits, ..).
Kann mir bitte wer weiterhelfen?
Bzw. gibt es eine Standard Kommunukationseinstellung für Modbus-RTU?
Michael W. schrieb:> Bzw. gibt es eine Standard Kommunukationseinstellung für Modbus-RTU?
Default ist 19200 8E1. Steht so in der Spezifikation (habe ich am 6.1.
in diesem Thread verlinkt).
Ich betreibe eine Relaiskarte aus China von Eb..
8CH dc 12V Modbus RTU RS485 Relay Switch Board for PLC Lamp LED PTZ
Camera
auf der Rückseite steht R421A08
Das Teil ist mit Funktion 6 wie folgt schaltbar:
01 Modbus Adr.
06 Write single Register
00 01 Relais Nr.
01 00 Relais "EIN" bzw. 02 00 Relais aus
XX XX CRC
Der EIN Befehl ist z.B.
01 06 00 01 01 00 D8 FA
Läuft mit 9600,8,N,1
Michael W. schrieb:> On: 01 06 00 01 01 00 D9 9A
Das widerspricht
Ralf schrieb:> 01 06 00 01 01 00 D8 FA
Die letzten beiden Bytes sind CRC des Telegramms; beide Telegramme sind
gleich, die letzten beiden Bytes aber nicht.
Irgendwas läuft hier also schief.
Da ist mir ein Fehler unterlaufen, ich habe da die CRC von einem anderem
Befehl erwischt:
On: 01 06 00 01 01 00 D9 9A
Die CRC D9 9A ist natürlich richtig.
Wie bereits geschrieben betreibe ich eine Relaiskarte aus China von Eb..
8CH dc 12V Modbus RTU RS485 Relay Switch Board for PLC Lamp LED PTZ
Camera
auf der Rückseite steht R421A08, dieses Teil scheint von der Ansteuerung
gleich mit der R421B16 zu sein.
Kann man an dem Teil die Baudrate verstellen?
Hallo,
ich habe auch so eine 4-fach Relaiskarte und bin auch gerade mangels
Beschreibung am Erforschen der Möglichkeiten. Meine Ergebnisse für
MODBUS:
1
01 06 00 01 01 XX XX XX - Relais1 EIN
2
01 06 00 01 02 XX XX XX - Relais1 AUS
3
01 06 00 01 03 XX XX XX - Relais1 TOGGLE
4
01 06 00 01 04 XX XX XX - Relais1 EIN und alle anderen AUS
5
01 06 00 01 05 XX XX XX - Relais1 1s IMPULS und alle anderen AUS
6
01 06 00 01 06 00 DB AA - Relais1 sehr kurzer IMPULS und alle anderen AUS
7
01 06 00 01 06 01 1A 6A - Relais1 1s IMPULS und alle anderen AUS
8
01 06 00 01 06 0A 5B AD - Relais1 10s IMPULS und alle anderen AUS
9
10
01 06 00 05 04 XX XX XX - alle Relais AUS (weil es Relais 5 nicht gibt)
Impulse (Byte 5=06h) funktionieren bei Relais 3 und 4 nicht (es kommt
nur ein kurzer Impuls).
Bei den Impulsen gehen immer alle anderen Relais AUS, ob das so gewollt
ist?
Für diese unter "RS485 Relay Module MODBUS & AT control remote switch"
auf eBay erhältlichen Relais-Module gibt es im AT-Modus (Dip-Switch 6
auf off, keine Adressierung über Dip-Switches 1..5) anscheinend die
nachfolgenden Kommandos.
Dabei steht:
<n> für Relaisnummer [1..x]
<tttt> für Zeit in Sekunden, 4-stellig
Anworten tut die Karte mit ["Open<n>", "Close<n>"]
"mit Verriegelung" bedeutet, dass mit dem Befehl alle anderen Relais
ausgeschaltet werden, d.h. nur jeweils ein Relais ist aktiv
1
Kommandos:
2
AT+O<n> an ("Open")
3
AT+L<n> an ("Open"), mit Verriegelung
4
AT+C<n> aus ("Close")
5
AT+T<n> umschalten
6
AT+M<n> Puls (0.5s), mit Verriegelung
7
AT+D<n>=<tttt> Puls, Dauer tttt Sekunden, mit Verriegelung
8
AT+R<n> Zustand lesen
Beispiele:
"AT+D2=0005" Puls von 5 s Dauer Relais 2, alle anderen Relais werden aus
geschaltet, Antort: "Open2"
"AT+O1" Relais 1 wird aktivieren, Antwort "Open1"
"AT+C2" Relais 2 wird deaktivieren, Antwort "Close2"
B. J. schrieb:> 01 06 00 01 06 00 DB AA - Relais1 sehr kurzer IMPULS und alle anderen> AUS> 01 06 00 01 06 01 1A 6A - Relais1 1s IMPULS und alle anderen AUS> 01 06 00 01 06 0A 5B AD - Relais1 10s IMPULS und alle anderen AUS
Kann ich so nicht ganz bestätigen.
Bei mir gehen nur die Relais 3 und 4 aus, wenn man einen Impuls auf 1
oder 2 startet
Bei Impuls auf 3 oder 4 (nur 8ms lang, unabhängig vom Längenparameter)
geht Relais 1 nicht aus.
Hi Leute!
weis jemand von euch wie ich genau diese relaiskarte in openhab
angebunden bekomme? https://www.openhab.org/addons/bindings/modbus1/
meine modbus.cfg:
serial.slave1.connection=/dev/ttyUSB0:9600:8:none:1:rtu:1000
serial.slave1.type=holding
serial.slave1.id=1
serial.slave1.start=0
serial.slave1.length=16
serial.slave1.valuetype=uint16
item:
Switch MBRelay1 "My Modbus Switch 1" {modbus="<[slave1:0],
>[slave1:0:trigger=ON, transformation=1], >[slave1:0:trigger=OFF,
transformation=2]"}
bei valuetype bin ich mir nicht sicher, und bei der transformation
ON/OFF in die command-bytes auch nicht
die karte reagiert bei den "polls" aber schonmal (led blinkt mehr
passiert nicht)
ok habs selbst hinbekommen aber für alle die mal dannach googlen:
modbus.cfg
serial.slave1.connection=/dev/ttyUSB0:9600:8:none:1:rtu:35:500
serial.slave1.type=holding
serial.slave1.id=1
serial.slave1.start=1
serial.slave1.length=16
serial.slave1.valuetype=uint16
items (bei 4 relais, ohne verzögerung):
Switch MBRelay01 "My Modbus Switch 01" {modbus="<[slave1:0],
>[slave1:0:trigger=ON, transformation=256], >[slave1:0:trigger=OFF,
transformation=512]"}
Switch MBRelay02 "My Modbus Switch 02" {modbus="<[slave1:1],
>[slave1:1:trigger=ON, transformation=256], >[slave1:1:trigger=OFF,
transformation=512]"}
Switch MBRelay03 "My Modbus Switch 03" {modbus="<[slave1:2],
>[slave1:2:trigger=ON, transformation=256], >[slave1:2:trigger=OFF,
transformation=512]"}
Switch MBRelay04 "My Modbus Switch 04" {modbus="<[slave1:3],
>[slave1:3:trigger=ON, transformation=256], >[slave1:3:trigger=OFF,
transformation=512]"}
der transformation-wert ergibt sich aus dem beiden "datenbytes" z.B. 01
00 = 256 , 02 00 = 512 von:
01 06 00 01 01 00 XX XX - Relais1 EIN
01 06 00 01 02 00 XX XX - Relais1 AUS
siehe hier
https://community.openhab.org/t/solved-modbus-and-cheap-4-relay-module-d18994/21711/5
trotzdem danke! wäre sonst ohne die infos von hier auch nicht
weitergekommen
Hallo alle zusammen,
ich habe dieses Board jetzt auch in diversen Größen, also 1, 4 und 8
Relais und stehe jetzt vor dem Problem, dass ich beim Testen gemerkt
habe, dass sich der Hersteller leider nicht wirklich Modbus
implementiert hat, sondern lediglich ein paar RS485 Kommandos.
Beispielsweise kann man die Inputs zwar mit 0x02 abfragen, aber immer
nur von 0x00 bis 0x07 gleichzeitig, nicht einzeln.
Desweiteren stellt man die Adresse des Boards ein, indem man an die
Adresse 0x00 schreibt, etc.
@da_danny hat auch schon erwähnt, dass es Debug ports gibt (3V3, DIO,
CLK und GND), außerdem gibt es nochmals einen weiteren Header mit 3V3,
RX, TX und GND. Getestet was darauf läuft bzw verfügbar ist habe ich
jedoch noch nicht.
Kam jemand schon mit einer eigenen Firmware weiter oder mit der
generellen Ansteuerung? Ich wäre auch sehr daran interessiert.
Hallo zusammen!
Habe Probleme die Eingänge zum Laufen zu bringen.
Habe Mal 3V, dann 5 V und dann 10V angelegt.
Leider immer ohne Pull-up.
Bei 3V und 5V blieben die Eingänge auf false.
Bei 10V sah ich kurz einen Funken über dem Mikrocontroller und dann
stank es... Und das trotz Optokoppler?!
Wie beschaltet Mann die Eingänge richtig?
LG
Florian
Hallo Florian,
Bei meinem Board braucht man überhaupt keine Pull-Ups.
Magst du Mal ein Foto von deinem Board Posten, gerne auch mit
verwendeter Verkabelung. Dann wird vielleicht klar wo bei dir der Fehler
gelegen haben könnte.
Hallo Marc,
ich habe so ein Board:
https://m.de.aliexpress.com/item/32704810964.html
Ich habe am In1 / GND 10V über ein externes Netzteil angelegt. Das hat
ihm nicht gepasst.
Kann jemand mit Sicherheit sagen, was die Eingänge vertragen sollten?
LG
Florian
Hallo zusammen,
bei mir läuft das Board auch soweit.
Mit einer "Einschränkung"...
Die Eingänge sind softwareseitig mit den Ausgängen verknüpft.(toggle)
Weiss jemand wie man diese Verknüpfung deaktivieren kann ?
Im Artikeltext steht nur
"8 fotoelektrisch isolierte Eingangsports (NPN ist auf niedrigem Pegel
aktiv), und die Eingabe / Ausgabe-Beziehung kann über Befehle auf
verknüpft (Standard) und nicht verknüpft eingestellt werden."
Bleibt nur die Frage nach dem WIE... ^^
Vielen Dank schon mal für eure Vorschläge ;-)
Grüße
Daniel