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