KMtronic Ltd: Modbus/TCP 8 Relay Box, fehlerhafte Implementierung ?

Hallo,
auf der Suche nach einer Fertiglösung zum Schalten von Beleuchtung usw. bin ich auf folgendes Teil gestoßen:

LAN Ethernet IP 8 channels Modbus/TCP Relay board

Lieferung aus Bulgarien in knapp einer Woche ohne Probleme.

Anlegen der erforderlichen Komponenten in IPS (ModBus Gateway, Client Socket, 8 x ModBus Address) hab ich mit einem modifizierten Skript nach PoK_Install - Skript zum Erstellen von IPS-Objekten für den Betrieb von Pokeys erledigt (geändert, damit nur 8 ModBus Addressen angelegt werden).

Danach konnte ich auch sofort die Relais einzeln schalten mit ModBus_WriteCoil.

Allerdings - und hier besteht das Problem - bleibt das Skript immer hängen und meldet sich dann mit

Warning: Zeitüberschreitung beim Warten auf Antwort in D:\IPS\scripts\Test3.ips.php on line 6

hier das Skript zu meinem Test komplett:

<?
set_time_limit(20);
$Id = 39364  /*[Geräte\Nirwana\Relais-Boxen\RBox1 Relais 02]*/;
$Set =1;
//print(ModBus_RequestRead($Id));
ModBus_WriteCoil($Id, true);
//ModBus_WriteRegisterSmallInt ($Id, settype ($Set,"integer"));
//print(ModBus_RequestRead($Id));

?>

(Ohne set_time_limit das gleich Problem, es dauert nur länger)

39364 /[Geräte\Nirwana\Relais-Boxen\RBox1 Relais 02]/ ist eine ModBus Addresse mit Einheit Bit und Schreib- und Leseadresse 1 entsprechend der Dokumentation von KMtronic:

MODBUS Commands:
01 (0x01) Read Coils
05 (0x05) Write Single Coil
15 (0x0F) Write Multiple Coils

Coil 0000: Relay 01
Coil 0001: Relay 02
Coil 0002: Relay 03
Coil 0003: Relay 04
Coil 0004: Relay 05
Coil 0005: Relay 06
Coil 0006: Relay 07
Coil 0007: Relay 08

Frage an die Experten: mache ich da was falsch?

Ich habe nämlich den Eindruck, daß der ModBus in dieser Relais-Box fehlerhaft implementiert ist.

Denn: setze ich das Tool ein, das paresy mal empfohlen hatte ( Modbus Poll ) und löse die Aktion 5 (Write Single Coil) aus, erhalte ich folgende Nachricht:

Insufficient bytes received (The response is not the expected length)

Folgende Debug-Sessions habe ich mitgetraced im Modbus Gateway:

15.03.15 14:38:39.00 | Waiting for transmit... | 05 00 01 FF 00 
15.03.15 14:38:39.00 |          Transmitted | 05 00 01 FF 00 
15.03.15 14:38:39.00 |            BUFFER IN | 00 19 00 00 00 06 FF 05 00 
15.03.15 14:38:49.00 |           Wait Error | 05 00 01 FF 00 
15.03.15 14:38:49.00 | Waiting for transmit... | 05 00 01 FF 00 
15.03.15 14:38:49.00 |          Transmitted | 05 00 01 FF 00 
15.03.15 14:38:49.00 |            BUFFER IN | 00 1A 00 00 00 06 FF 05 00 
15.03.15 14:38:59.00 |           Wait Error | 05 00 01 FF 00 
15.03.15 14:38:59.00 | Waiting for transmit... | 05 00 01 FF 00 
15.03.15 14:38:59.00 |          Transmitted | 05 00 01 FF 00 
15.03.15 14:38:59.00 |            BUFFER IN | 00 1B 00 00 00 06 FF 05 00 
15.03.15 14:39:09.00 |           Wait Error | 05 00 01 FF 00 
15.03.15 14:39:09.00 | Waiting for transmit... | 05 00 01 FF 00 
15.03.15 14:39:09.00 |          Transmitted | 05 00 01 FF 00 
15.03.15 14:39:09.00 |            BUFFER IN | 00 1C 00 00 00 06 FF 05 00 
15.03.15 14:39:19.00 |           Wait Error | 05 00 01 FF 00 
15.03.15 14:39:19.00 | Waiting for transmit... | 05 00 01 FF 00 
15.03.15 14:39:19.00 |          Transmitted | 05 00 01 FF 00 
15.03.15 14:39:19.00 |            BUFFER IN | 00 1D 00 00 00 06 FF 05 00 
15.03.15 14:39:29.00 |           Wait Error | 05 00 01 FF 00 
15.03.15 14:39:29.00 | Waiting for transmit... | 05 00 01 FF 00 
15.03.15 14:39:29.00 |          Transmitted | 05 00 01 FF 00 
15.03.15 14:39:29.00 |            BUFFER IN | 00 1E 00 00 00 06 FF 05 00 
15.03.15 14:39:39.00 |           Wait Error | 05 00 01 FF 00 

und im Socket:

15.03.15 14:38:39.00 |          TRANSMITTED | 00 19 00 00 00 06 FF 05 00 01 FF 00 
15.03.15 14:38:39.00 |             RECEIVED | 00 19 00 00 00 06 FF 05 00 
15.03.15 14:38:49.00 |          TRANSMITTED | 00 1A 00 00 00 06 FF 05 00 01 FF 00 
15.03.15 14:38:49.00 |             RECEIVED | 00 1A 00 00 00 06 FF 05 00 
15.03.15 14:38:59.00 |          TRANSMITTED | 00 1B 00 00 00 06 FF 05 00 01 FF 00 
15.03.15 14:38:59.00 |             RECEIVED | 00 1B 00 00 00 06 FF 05 00 
15.03.15 14:39:09.00 |          TRANSMITTED | 00 1C 00 00 00 06 FF 05 00 01 FF 00 
15.03.15 14:39:09.00 |             RECEIVED | 00 1C 00 00 00 06 FF 05 00 
15.03.15 14:39:19.00 |          TRANSMITTED | 00 1D 00 00 00 06 FF 05 00 01 FF 00 
15.03.15 14:39:19.00 |             RECEIVED | 00 1D 00 00 00 06 FF 05 00 
15.03.15 14:39:29.00 |          TRANSMITTED | 00 1E 00 00 00 06 FF 05 00 01 FF 00 
15.03.15 14:39:29.00 |             RECEIVED | 00 1E 00 00 00 06 FF 05 00 

Wenn die Adressen gepollt werden, sieht es so aus

15.03.15 14:15:10.00 | Waiting for transmit... | 01 00 00 00 01 
15.03.15 14:15:10.00 |          Transmitted | 01 00 00 00 01 
15.03.15 14:15:10.00 |            BUFFER IN | 00 01 00 00 00 04 FF 01 01 00 
15.03.15 14:15:10.00 |             Received | 01 01 00 
15.03.15 14:15:10.00 | Waiting for transmit... | 01 00 01 00 01 
15.03.15 14:15:10.00 |          Transmitted | 01 00 01 00 01 
15.03.15 14:15:10.00 |            BUFFER IN | 00 02 00 00 00 04 FF 01 01 00 
15.03.15 14:15:10.00 |             Received | 01 01 00 
15.03.15 14:15:10.00 | Waiting for transmit... | 01 00 02 00 01 
15.03.15 14:15:10.00 |          Transmitted | 01 00 02 00 01 
15.03.15 14:15:10.00 |            BUFFER IN | 00 03 00 00 00 04 FF 01 01 00 
15.03.15 14:15:10.00 |             Received | 01 01 00 
15.03.15 14:15:10.00 | Waiting for transmit... | 01 00 03 00 01 
15.03.15 14:15:11.00 |          Transmitted | 01 00 03 00 01 
15.03.15 14:15:11.00 |            BUFFER IN | 00 04 00 00 00 04 FF 01 01 00 
15.03.15 14:15:11.00 |             Received | 01 01 00 
15.03.15 14:15:11.00 | Waiting for transmit... | 01 00 04 00 01 
15.03.15 14:15:11.00 |          Transmitted | 01 00 04 00 01 
15.03.15 14:15:11.00 |            BUFFER IN | 00 05 00 00 00 04 FF 01 01 00 
15.03.15 14:15:11.00 |             Received | 01 01 00 
15.03.15 14:15:11.00 | Waiting for transmit... | 01 00 05 00 01 
15.03.15 14:15:11.00 |          Transmitted | 01 00 05 00 01 
15.03.15 14:15:11.00 |            BUFFER IN | 00 06 00 00 00 04 FF 01 01 00 
15.03.15 14:15:11.00 |             Received | 01 01 00 
15.03.15 14:15:11.00 | Waiting for transmit... | 01 00 06 00 01 
15.03.15 14:15:11.00 |          Transmitted | 01 00 06 00 01 
15.03.15 14:15:11.00 |            BUFFER IN | 00 07 00 00 00 04 FF 01 01 00 
15.03.15 14:15:11.00 |             Received | 01 01 00 
15.03.15 14:15:11.00 | Waiting for transmit... | 01 00 07 00 01 
15.03.15 14:15:11.00 |          Transmitted | 01 00 07 00 01 
15.03.15 14:15:11.00 |            BUFFER IN | 00 08 00 00 00 04 FF 01 01 00 
15.03.15 14:15:11.00 |             Received | 01 01 00 

und im Socket:

15.03.15 14:15:10.00 |          TRANSMITTED | 00 01 00 00 00 06 FF 01 00 00 00 01 
15.03.15 14:15:10.00 |             RECEIVED | 00 01 00 00 00 04 FF 01 01 00 
15.03.15 14:15:10.00 |          TRANSMITTED | 00 02 00 00 00 06 FF 01 00 01 00 01 
15.03.15 14:15:10.00 |             RECEIVED | 00 02 00 00 00 04 FF 01 01 00 
15.03.15 14:15:10.00 |          TRANSMITTED | 00 03 00 00 00 06 FF 01 00 02 00 01 
15.03.15 14:15:10.00 |             RECEIVED | 00 03 00 00 00 04 FF 01 01 00 
15.03.15 14:15:11.00 |          TRANSMITTED | 00 04 00 00 00 06 FF 01 00 03 00 01 
15.03.15 14:15:11.00 |             RECEIVED | 00 04 00 00 00 04 FF 01 01 00 
15.03.15 14:15:11.00 |          TRANSMITTED | 00 05 00 00 00 06 FF 01 00 04 00 01 
15.03.15 14:15:11.00 |             RECEIVED | 00 05 00 00 00 04 FF 01 01 00 
15.03.15 14:15:11.00 |          TRANSMITTED | 00 06 00 00 00 06 FF 01 00 05 00 01 
15.03.15 14:15:11.00 |             RECEIVED | 00 06 00 00 00 04 FF 01 01 00 
15.03.15 14:15:11.00 |          TRANSMITTED | 00 07 00 00 00 06 FF 01 00 06 00 01 
15.03.15 14:15:11.00 |             RECEIVED | 00 07 00 00 00 04 FF 01 01 00 
15.03.15 14:15:11.00 |          TRANSMITTED | 00 08 00 00 00 06 FF 01 00 07 00 01 
15.03.15 14:15:11.00 |             RECEIVED | 00 08 00 00 00 04 FF 01 01 00 

Für sachdienliche Hinweise wäre ich dankbar

Viele Grüsse
Harald

Das klingt sehr nach einem Fehler in dem Gerät. Hast du die Möglichkeit den Hersteller entsprechend zu kontaktieren und ggf. ein Firmware Update zu bekommen?

paresy

Klar, wenn man per E-Mail die Bestellung bestätigt bekommt, kann man auch Mails zurückschicken.
Die haben sogar ein Forum (Last message posted 1 month ago).:stuck_out_tongue:

… und ggf. ein Firmware Update zu bekommen?

Wohl nur durch Zurückschicken und monatelanges Hoffen auf Besserung :eek:

Das klingt sehr nach einem Fehler in dem Gerät.

Bevor ich beim Hersteller diffus moniere, wollte ich erst mal eine klare Diagnose mit „das und das ist falsch, siehe Modbus-Dokumentation Paragraf xyz“ haben. Das Gerät ist sicher länger als 18 Monate auf dem Markt und da wundert es mich schon, daß es dann nicht schon längst zu Beschwerden (und Verbesserung) gekommen ist.

Ich war mal Experte für T.30-Protokolle, kenne zwar nicht mehr jedes Bit persönlich, kann mich aber noch an jedes Byte im Protokollablauf erinneren und würde Fehler im Protokollablauf erkennen.

Für Modbus suche ich eben hier im Forum einen solchen Experten der mit zwei Blicken eine Diagnose abgeben kann. Das müßte z.B. der Programmierer des IPS-Objektes „ModBus Gateway“ sein.

Falls der nicht auftaucht, bleibt mir nichts anderes übrig, als selbst die Modbus-Doku zu studieren. :mad:

Viele Grüsse
Harald

Seite 17/18

Das senden wir… und genau das selbe muss laut Protokoll auch als Bestätigung zurück kommen.
05 00 01 FF 00

paresy

Danke!

Ich schreibe mir jetzt erst mal einen fehlertoleranten ModBus-Emulator, damit ich diese Brotbüchse betreiben kann (Einsatz ist bereits eingeplant).

Dann werde ich versuchen, den Hersteller über ModBus aufzuklären.

Vielleicht stimmt dann das nächste Release.

Viele Grüsse
Harald

Hallo Harald,

funktioniert das mittlerweile, ich würde mir gerne das zwei Relais-Model kaufen, jedoch nicht wenn ich es nicht mit IPS steuern kann. Über eine Rückmeldung wäre ich sehr dankbar.

LG Izack

Ich habe das „LAN Ethernet IP 8 channels Modbus/TCP Relay board (SKU: SS_MODBUS8REL_LAN)“ für €59.00 + €4.00 Versand, zusätzlich die „Clips for DIN mount rail“ zu €3.00
Meine folgende Rezension gillt also nur für 8Relais über Modbus/TCP; zum „zwei Relais-Model“ kann ich nichts sagen.

Bezahlung über PayPal, Lieferung in 6 Tagen in einem Polsterbeutel verpackt, Zollerklärung mit kyrillischem Text, deutsche Post hat ein Einschreiben daraus gemacht; die Tracking-Infos waren nicht nachvollziehbar.

Diese „Brotbüchse“ KMtronic Ltd: LAN Ethernet IP 8 channels WEB Relay board hat zwar kein C€-Zeichen, sieht aber sehr „edel“ aus (gute Verarbeitung des Gehäuses). Allerdings weiß ich immer noch nicht, wie ich die mitbestellten Hutschienen-Clips ohne Beschädigung der Innereien auf das Gehäuse schraube; Anweisung war nicht dabei.

Relais-Spezifikation gabs mal hier: Relays Datasheet: kmtronic.com/manuals/RAS.pdf
Das Teil gibt es in mindestens 3 Versionen (ModBus, UDP, Web) zum selben Preis und ich verstehe nicht, weshalb man das nicht per Web-Oberfläche umschaltbar gemacht hat (vielleicht aus Speichermangel, drin ist ein PIC18F66J60 siehe http://www.microchip.com/wwwproducts/Devices.aspx?product=PIC18F66J60 , der ist wohl etwas speicher-schwach).

Dummerweise ist das Teil bei Lieferung auf eine feste IP-Adresse gestellt; nach den üblichen Problemen (IP-Adresse eines PCs an die Netzstruktur der Box anpassen) kann man auf einer schlichten Webseite auf DHCP umschalten.

Die Box läuft bei mir seit ca. 2 Monaten problemlos an IPS über ein Skript, das wg. der fehlerhaften Modbus-Implementierung (siehe vorhergende Posts) den Modbus emuliert. Kein Problem, da nur Coils geschaltet werden müssen.

Trotz des ersten guten Eindrucks und dem problemfreien Betrieb kann ich das Produkt aus folgenden Gründen nicht weiterempfehlen:

1. Die Modbus-Implementierung ist fehlerhaft und das Gerät über Standard Modbus-Treiber nur mit starken Einschränkungen betreibbar

Beim Betrieb über das „ModBus Gateway“ von IPS kommt nach jedem Schaltbefehl eine Warnung nach einem time-out, weil die Box einen unvollständigen Respond zurückschickt. Unter IPS muß man sich einen fehlertoleranten ModBus-Emulator schreiben, der das berücksichtigt; in Systemen, die keinen solchen Eingriff erlauben, gibt es keine Abhilfe.

Auf meine diesbezüglichen Hinweise hat die Marketing-Abteilung von KMTRONIC LTD nur wissen wollen „either you want to refund your payment or send a replacement?“. Da ich mich auf eine Rückabwicklung nicht einlassen wollte, hat man mir nach wiederholter Nachfrage mit Verbesserungsvorschlagen zu Soft- und Hardware versichert „Our company will consider your suggestions for the next production of this product“. Weiter hab ich nichts gehört, ich weiß also nicht, was für eine Version bei jetziger Bestellung geliefert wird.

2. Die Box hat keine C€-Kennzeichnung, geschweige denn VDE- und/oder GS-Zeichen

Und das aus gutem Grund!
Das Platinen Design hat ein Problem: weil die interne Relais-Reihe breiter ist als die Reihe der lückenlos verwendeten 3poligen Anschlussklemmen, können die Leiterbahnen nicht gerade durchgezogen werden; durch das Verziehen kommen sich manche Leiterbahnen gefährlich nahe.

Bei den Relais 1 und 2 sowie 7 und 8 sind die Leiterabstände unter einem halben mm.
Bei 3 und 6 sind die internen Abstände o.k., aber die Abstände zu den Nachbarrelais 2 sowie 7 auch unter einem halben mm.
Bleiben für das sichere Schalten von Hochspannung nur Relais 4 und 5 übrig, da sind die Abstände 2mm, der Abstand zwischen 4 und 5 ist auch nur 1 mm.
Ich plane jetzt, die Relais 4 und 5 für das Schalten von Beleuchtung zu verwenden und die restlichen Relais für Kleinspannungen, LED-Beleuchtung und Ansteuerung anderer Relais.

Viele Grüsse
Harald

Wenn ihr basteln könnt, günstig, aber trotzdem eine sichere Geschichte haben wollt, dann kann ich euch das Pokeys57E Modul und meine Erweiterungen dazu empfehlen.

Mit den Koppelrelais mit CE und VDE-Zeichen seit ihr immer auf der sicheren Seite.

@Izack, Du wohnst ja auf meiner Ecke, kannste gerne mal leihen, hab’ auch noch was ganz Neues, allerdings 1polig als WiFi-UDP-Gerät, Info kommt demnächst.

Gruß Helmut

Nein, basteln kann ich leider nicht :smiley:
aber zum Rechnen reichts noch:

PoKeys57E no terminals für 52€ + Platine + Bastelaufwand + Gehäuse + SV + 8 VDE-Relais

dürfte teurer sein als

KMTRONIC Relay board im Gehäuse für 59€ + SV + 8 VDE-Relais

Wenn man „nur“ ein paar Schaltvorgänge realisieren will und kein 1wire-Bus braucht und auch auf Input-Signale verzichten kann, sind die PoKeys eben etwas zu hoch gegriffen.

Anders sähe so eine Lösung mit dem Raspi aus, weil man darauf IPS laufen lassen könnte und der dann nebenbei auch noch andere Dinge erledigen könnte wie Bluetooth scannen, Kamera, die Logik für die Relais usw.

Wenn Du da eine Platine hättest für die Adaptierung der GPIO-Pins an die VDE-Relais…

Viele Grüsse
Harald

Hallo Harald,
mein Augenmerk war der CE und VDE-gerechte Aufbau bzw die Sicherheit. Ohne weiter zu suchen, I2C an Raspi gibt es.

Habe diese Erweiterung bei Pollin gesehen.

Wenn Du von einer meiner Spielerein das ESP-WiFi Modul abziehst und an die I2C-Pins ran gehst, kannst Du mit meiner 16-OptoIN 16 ULNOUT - Platine die VDE gerechten Koppelrelais übern Raspi nutzen.

Aber mit dem verbautem preiswerten ESP8266 WiFi-Modul hätte ich so eine preiswerte Geschichte, näheres wenn die verbesserten Platinen da sind, guggst Du:

Gruß Helmut

Nachtrag: goggel mal nach DVK512, ist günstiger.

Danke für die vielen Informationen, das KMtronics ist für mch gestorben, genauso wie das Lan Relais von Saintsmart. Bei dem Ding kann man auch die IP-Adresse nur schwer ändern. Das mit dem Pokey finde ich interessant, aber dann nicht nur fürs schalten.

LG Izack

PS: @ Helmut werde dich bei Gelegheit mal kontaktieren, aber erst in der schlechten Jahreszeit. :smiley:

@Izack,
immer gerne. Bin jeden ersten Mittwoch im Quartal bei euch im Ort und knabber fettige Sachen :wink:

Kommst Du mit WiFi in den Fahrradschuppen?
Gruß Helmut

Hallo Helmut,

was hälts Du von der Relaiskarte DAYPOWER RB-8/5V, 8-Kanal bei Pollin?
„8-Kanal Relaismodul zum Schalten von großen Strömen mit schwachen Signalen (z.B. Logik- oder LED-Ausgänge von Mikrocontrollern). Ideale Erweiterung zum Raspberry Pi, ARDUINO, ODROID usw.“, Schaltbild eines einzelnen Kanals in der Beschreibung.

Viele Grüsse
Harald

Wenn man unter 60Volt damit schaltet, der Strom nicht zu hoch ist, vollkommen ok.
Gruß Helmut

Hallo Helmut,

ich war so begeistert von der im Schaltplan mit Optokopplern dargestellten galvanischen Trennung zwischen Raspi und den Relais, dass ich total übersehen habe, dass die nur für 30V ausgelegt sind:mad:

Jetzt hab ich nochmal gesucht, und ein Relais-Board gefunden, das ausdrücklich für den Raspi konstruiert sein soll: SainSmart 8 Channel DC 5V Relay Module for Arduino Raspberry Pi:
„This is a 5V 8-Channel Relay interface board, Be able to control various appliances, and other equipments with large current. It can be controlled directly by Micro-controller (Raspberry Pi, Arduino , 8051, AVR, PIC, DSP, ARM, ARM, MSP430, TTL logic)“

Das im Tutorial-Reiter downloadbare Diagram: How to wire a Raspberry Pi to a Sainsmart 5V relay module zeigt, dass man sogar ein gemeinsames Netzteil für Raspi und Board verwenden kann.
Allerdings ist die Trennung zwischen Raspi und den Relais nicht so kofortabel ausgelegt (siehe 8 solid relay.pdf im Archiv 8 solid relay.rar).

Wie beurteilst Du denn diese Schaltung?

Viele Grüsse
Harald

:wink:
Ich kritisiere diese Geschichten nicht wegen der Anbindung, die ist sicher und gut gemacht.

Ich bemängele die Möglichkeit 230Volt~ zu schalten. Die Abstände der Klemmen, die Kontaktbelastbarkeit.

Zum Teil klemmt man, bei 3 Phasen Aufteilung mal 2 Phasen nebeneinander auf Klemmen. Dann sind da 400V~ !!!

Schaue Dir mal die solide Relaisplatine von BerndJ , ein Forumsmitglied an. Das ist ok, könnte auch noch Fräsungen und verstärkte Leiterbahnen (auf beiden Seiten) haben, ist aber von der Belastbarkeit gut, hat aber auch kein VDE oder CE-Zeichen.
Wenn ich auf die versicherungsfeste Erstellung Wert lege, dann kommen nur Koppelrelais in Frage, meine Meinung.

Ist ja nicht so, dass ich sowas noch nicht gemacht habe, Vergussmasse hilft, aber bei jemanden anders würde ich es nicht einbauen

Gruß Helmut