Hallo Beck,
Wie viele Millisekunden hat ein Tastimpuls eines von Hand betätigten Tasters üblicherweise?
Das dürfte etwas von der Motorik des Bedieners abhängig sein, Standard-Impulslänge definieren wird hier schwierig.
Wenn ich richtig verstanden habe, sind sowohl der DI für den Taster als auch der DO am Modbus-Slave (750-342).
Entscheidend ist dann ja, dass das Pollen des Eingangsabbildes durch den Master schnell genug erfolgt, so dass keine Zustandsänderung übersehen werden.
20ms als Intervall hätte ich auch mal gefühlsmäßig als Anforderung aus Sicht der Applikation angesetzt. Die Frage ist, ob 20ms praktisch überhaupt funktionieren.
Wir haben vor Monaten mal Tests auf einem 750-815 (Modbus Controller seriell mit 115kbps als Slave) gemacht, um die Zykluszeit für den Modbus herauszufinden.
Das zyklische Abfragen von nur 4 Registern a 16 Bit hat ca. 180 ms pro Umlauf gedauert.
Datenmenge: Request 7 Bytes ( a 11Bit) + Response 13 Bytes (a 11Bit) = 220 Bit.
Die theroretische Übertragungszeit für ein solches Telegramm liegt jedoch in der Größenordnung von nur ca. 2 ms.
Es war für uns eine völlig neue Erkenntnis, dass die Reaktionszeit des 750-815 offenbar um Größenordnungen höher ist als die eigentliche Dauer der Übertragung.
Auf eine Anfrage beim Support zur Reaktionszeit des 750-815 bekamen wir leider nur ausweichende Antworten.
Einzige Erkenntnis war, dass die Abarbeitung des Anwender-Programms im Controller einen Einfluss auf die Gesamtzykluszeit hat. - Das war uns eh' klar, eine Zahl wäre etwas greifbares gewesen.
Da unser Programm für den Test nur aus 20 Zeilen Code bestand, war dort kein Optimierungspotential zu erwarten (gemessene Zykluszeit im Programm war < 5 ms ) :wink:
Vor einigen Jahren haben wir ähnlich ernüchternde Erfahrung mit BK9000 und Modbus TCP gemacht. (Bei 8 Kopplern an einem Ethernet-Port ca. 1 Sekunde pro Umlauf).
(Der damalige AD von Wago meinte, dass die Wago Koppler schneller sind als das Modell von Beckhoff - wir haben es dann nicht weiter untersucht.)
Ein weiteres Risiko könnte ein prellender Taster sein:
Wenn das Abbild gerade während des Prellens gelesen wird und der DI ist gerade mal auf Low, dann verpasst Du in diesem Umlauf die Information über die Betätigung.
Standard-DI-Baugruppen haben Filterzeiten von 3ms, wenn ich richtig bin. Bei mechanischen Kontakten sind 3 ms nicht so üppig.
Fazit:
Modbus UDP ist sicherlich schneller als TCP, aber der Slave hat immer eine Verarbeitungszeit.
Damit wird es darauf hinauslaufen so schnell als möglich zu pollen - es sei denn eine Zeitmessung bringt andere Erkenntnisse.
Immerhin unterstützt der 750-341 ja Modbus-Funktion 0x17. Damit kann man das Lesen der DI und Schreiben der DO in einem Umlauf machen, das spart Zeit.
Auf der Seite des DO ist der Impuls mindestens so lang, wie das Intervall der Übertragungen - was aber kein Problem ist.
Sollte wieder Erwarten das Übertragungsintervall viel schneller sein, als das Eltako reagiert, läßt man den Ausgang einfach für mehrere Übertragungen an.
Dafür gibt es ja Timer, oder man zählt.
Eventuell könnte man das ganze besser anpassen, wenn der Slave ein Controller wäre, aber Du hast ja nur einen Koppler eingeplant.
PS:Es gab vor längerer Zeit mal einen Thread (ich glaube im Oscat-Forum?) zum Verhalten von E/A's an einem Koppler als Modbus-Slave.
Ich glaube mich zu Erinnern, dass es ein Problem mit Ausgabe eines Lauflichtes über die DO's am Slave gab weil die Übertragung zu langsam war.
Trotzdem Viel Spaß beim probieren.
@ Dr.MirakulixX: Leider kann der Modbus-Slave üblicherweise selber keine Nachrichten generieren.
Nur wenn der Eingang lokal am Master angeschlossen wäre könnte man ereignisorientiert was machen.
Grüße
Jörg