Ich habe mal ein paar Verständnisfragen zum Modbus-Splitter.
In der Doku wird darauf nicht wirklich eingegangen und hier im Forum wurde das zwar in einigen Threads angerissen, aber irgendwie nicht so richtig abschließend beantwortet.
- Unterschied zwischen Modbus TCP und Modbus RTU über TCP
Was genau ist hier der Unterschied? So richtig erschließt sich mir das nicht. - Abfrageverzögerung
Ist nach meinem Verständnis die Verzögerung zwischen zwei beliebigen Abfragen, die über den Splitter laufen, egal ob Einzelabfragen oder Abfrage von Blöcken. Puffert der Splitter intern alle eingehenden Anfragen aller verbundenen Geräte und arbeitet sie mit dieser Verzögerung ab? Was würde theoretisch passieren, wenn mehr Abfragen eingehen als aufgrund der Verzögerung abgearbeitet werden können? - Wartezeit
Ist nach meinem Verständnis die Zeit, die der Splitter auf eine Antwort zu einer Abfrage wartet, bevor er die Antwort verwirft. Was passiert denn, wenn eine Antwort doch noch eintrifft, aber erst nach Ablauf der Zeit. Wird sie wirklich verworfen oder wird sie doch noch irgendwie an die Geräte weitergeleitet? - Verhalten bei gleichen Abfragen, deren Antwort in unterschiedlicher Reihenfolge ankommen.
Mal angenommen ich stelle alle 5 Sekunden dieselbe Abfrage und meine Wartezeit beträgt 10 Sekunden. Was passiert, wenn die Antwort der ersten Abfrage zwar noch innerhalb der Wartezeit ankommt, die Antwort der zweiten Abfrage aber vor der Antwort der ersten Abfrage eintrifft. Wird die Reihenfolge der Nachrichten erkannt und die Geräte würden die ältere Antwort dann von sich aus verwerfen oder wird dann unter Umständen ein neuerer Wert durch einen älteren überschrieben? - Interne Queue
Hat der Splitter eine interne Queue, in der er alle Abfragen aller angeschlossenen Geräte puffert und der Reihenfolge nach abarbeitet, sodass bei mehreren Geräten mit demselben Abfrageintervall trotzdem sichergestellt ist, dass jedes Gerät bedient wird oder kann es sein, dass ein Gerät öfter zum Zug kommt und das andere leer ausgeht? - Mehrere Splitter am selben I/O
Ich muss teileise über dieselbe TCP-Verbindung unterschiedliche Geräte abfragen. Das geht nur, indem ich mehrere Splitter erstelle, bei denen sich die Geräte-ID unterscheidet. Da die Abfrageverzögerung und Wartezeit auf Splitter-Ebene konfiguriert wird und die interne Queue - sofern vorhanden - auch auf Splitter-Ebene arbeiten wird, kann es sicherlich zu Problemen kommen, weil die Verzögerung zwischen den Abfragen splitter-übergreifend nicht eingehalten werden kann. Gibt es dafür irgendeinen Lösungsansatz? Macht es Sinn, die Verzögerungen zwischen den Splittern unterschiedlich zu wählen, in der Hoffnung, dass im Mittel eine passende Verzögerung über alle gesehen heraus kommt? - Welchen Nutzen hat die Blockabfrage auf Splitter-Ebene noch?
Seit der letzten größeren Überarbeitung ist die Blockabfrage ja in die Geräte-Instanzen gewandert. Im Splitter gibt es sie aber auch noch. Welchen Nutzen hat sie dort noch? Mein Eindruck ist, dass Abfragen, die von einem anderen Gerät kommen oder direkt im Splitter konfiguriert sind, nicht (mehr) an andere Instanzen weitergeleitet werden, wenn diese die gleichen Register abfragen. Kann das sein?
Ich bin immer noch dabei, diverse Modbus-Probleme (z.B. Timeouts) zu analysieren, die mal mehr, mal weniger stark ausgeprägt sind und versuche die möglichen Ursachen einzugrenzen.