nachdem mir das MODBUS Gerät nicht reicht (brauche weitere Register), hätte ich versucht die HEX Codes zum Steuern der MODBUS Geräte über CSCK_SendText zu realisieren.
Das CSCK_SendText nutzt dann das ClientSocket, welches mit dem MODBUS Gerät verbunden ist.
Ich habe im Wireshark mal nachgesehen, jedoch finde ich den gesendeten Code nicht in der Aufzeichnung. Was muss ich beachten, dass ich ggf. Pakete mit dem Protokoll Modbus verschicke?
dies ist die Relaisplatine, die ich gerne einrichten möchte.
Im Wiki des Produkts (https://www.waveshare.com/wiki/Modbus_POE_ETH_Relay) sieht man,
dass auch mehrere Relais angesteuert werden können. Leider funktioniert dies nicht mit dem Modbus Gerät von IPS, somit hätte ich gerne diesen HEXCODE 01 05 00 00 FF 00 8C 3A (Gerät
wird eingeschaltet) direkt über das Modbus Protokoll übertragen (dies geht auch über das Modbus
Gerät von IPS) und im Anschluß folgende weitere HEXCODEs getestet:
All relays 1: 01 0F 00 00 00 08 01 FF BE D5
All relays 0: 01 0F 00 00 00 08 01 00 FE 95
1-2 ON;4-8 O0: 01 0F 00 00 00 08 01 03 BE 94
Dies kann ich aber in IPS so nicht einstellen oder mache ich etwas falsch?
Oder brauchst du unbedingt diese etwas speziellen Befehle? Dann reicht dir definitiv der Client Socket aus. Du musst aber die Daten binär übertragen. Also z.B.
Ich habe es eben probiert, aber es tut sich nichts. Über den Wireshark schaue ich mir den Netzwerkverkehr von IPS (10.0.0.3) zu der Platine (10.0.1.111) an.
Wenn ich über das Modbus Device von IPS schicke, dann kann ich im Wireshark „Write Single Coil“ lesen, dagegen zum Befehl (CSCK_SendText(51085, hex2bin(„010F000000080100BED5“)) geht kein Modbus Code raus. Ich habe mal die Screenshots von Wireshark angehängt. Auch hängt an diesem Client Socket kein Modbus Gateway / Modbus Device dran.
Meine Frage jetzt, wie soll IPS vom Versand (CSCK_SendText(51085, hex2bin(„010F000000080100BED5“)) wissen, dass der Code über das Modbus Protokoll verschickt werden soll? Es wird doch nur das Client Socket angesprochen.
Komischerweise wird die Platine im Sekundentakt abgefagt (Read Coils), sobald das Client Socket damit verbunden ist. Ist das normal? Kann ich das unterbinden?
Egal welchen HEX Code ich schicke, es müsste doch das Paket als „Modbus/TCP“ und „Write Single Coil“ in Wireshark zu lesen sein oder sehe ich das falsch?
Das weiß der Client Socket auch gar nicht. Wenn aber die 010F000000080100BED5 eine korrekte ModBus Sequenz ist, dann würde es Wireshark anzeigen. Zeigt Wireshark denn überhaupt was an? Denn egal ob es jetzt gültiges ModBus ist oder nicht, sollte was in Wireshark zu sehen sein. Wir senden es ja raus Schau auch gerne im Debug vom Client Socket, was dort bei TRANSMITTED steht.
Das passiert nur, wenn du eine Instanz dran hast und das Interval/Poller auf >0 steht. Wenn du es überall deaktivierst, sollte Ruhe sein.
Nur, wenn es auch wirklich ModBus ist. Wenn Wireshark das nicht „erkennen“ kann, dann wird es vermutlich kein echtes ModBus sein.
Was ich nicht verstehe, warum IPS eine andere Sequenz als in der Anleitung der Relaiskarte schickt? Nun kann ich die Karte ansprechen.
Ich hatte es mit IP-Symcon 6.4, Windows (amd64), 01.06.2023, 9aaa5e71e494 und es verhält sich komischerweise komplett anders als IP-Symcon 7.0, Windows (amd64), 22.12.2023, 46a9cbf76ddb. Ich kann im ModBus Device egal welche Zeit einstellen (standard wäre 5000ms) und das Gerät wird im Sekundentakt abgefragt. Gleiches gilt, wenn ich 0ms einstelle. Bei Version 7.0 funktioniert es problemlos. Leider kann ich den Befehl "ModBus_WriteCoil(ID, True oder False) nicht mehr verwenden. Ich bekomme als Fehlermeldung „Warning: Instance does not implement this function in C:\ProgramData\Symcon\scripts\34805.ips.php on line 4“ zurück bei Version 6.4 ging das noch. Auch wenn ich im ModBus Device über „Befehle testen“ → Experte bin, wird mir diese Funktion nicht mehr angeboten (ModBus_RequestRead und diverse ModBus_UI… werden noch angezeigt). Wie kann ich in Version 7 ein ModBus Device wie früher ansteuern?
Ich habe es eben probiert, aber es tut sich nichts. Über den Wireshark schaue ich mir den Netzwerkverkehr von IPS (10.0.0.3) zu der Platine (10.0.1.111) an.
In Deiner verlinkten Seite sind die IP-Adressen anders, müssten Die nicht erst einmal im selben Rahmen sein? 10.0.0.3 und 10.0.0.111 oder 10.0.1.3 und 10.0.1.111 ? Port stimmt?
nein, die IP Adresse ist korrekt, da die Subnetmask 8 Bit hat / 255.0.0.0
Ich kann ja auch das einzelne Relais über das Modbus Device steuern.
Auch kann ich nun über das Client Socket das einzelne Relais ansteuern.
Aktuell hänge ich an der Ansteuerung aller Relais über das Register.
Laut der Überschrift auf den Screenshots sind es beide ModBus Geräte. Schau es dir nochmal an.
Es gibt noch Coil. Scheinbar haben sich die Bezeichnungen geändert.
Welche dem Namen aus dem Objektbaum nutzt und nicht den Typ der Instanz anzeigt.
Den siehst du aber im Objektbaum.
Das frühere Modbus Device sind jetzt Modbus Adresse. Das neue Modbus Gerät kann mehrere Adressen verarbeiten. Die die Instanz Modbus Adresse nur eine.
Beide haben auch unterschiedliche Konfigurationen.
Was aber beide, und auch das Modbus Gateway haben, sind Intervalle um Daten abzurufen.
Also aufpassen das man hier nichts vermischt oder gar den Intervall im Gateway und der Adresse aktiv hat. Hier wird auch dein eines Problem liegen: