ModBus und Taster/Stromstoßrelaises

Beck

Level-1
Beiträge
64
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte einen Modbus-Feldbuskoppler (z.B. WAGO 750-342) über das CoDeSys-Modul ETHERNET_MODBUSMASTER_UDP zyklisch ansteuern und auslesen. Dazu habe ich - wie im Anwendungshinweis vorgeschlagen - den xstart-Eingang über einen TON-Baustein getaktet.
Was ist hier ein sinnvoller Taktzyklus (Zeitwert des PT-Eingangs des TON-Bausteins)?
Einerseits sollte ModBus nicht das IP-Netz zu sehr vollmüllen, andererseits muss der Zyklus kurz genug sein, um a) Tastimpluse an Digitaleingängen am Koppler zu erfassen (und nicht kurz vorher und dann schon wieder kurz nachher die Werte auslesen) und b) beim Setzen eines Ausgangs, an dem ein Stromstoßrelais hängt nicht zu lange triggern.
Dem Gefühl nach hätte ich 20ms für einen guten Wert gehalten. Dies scheint aber noch zu wenig zu sein.

Ich würde mich über jeden freuen, der seine Erfahrungswerte hier teilt.

Gruß,

Beck
 
Zuwenig um das Netz nicht zu zumüllen oder um die Funktion sicher zu stellen ?
Habe selber eine Wago in Modbus am laufen aber werte diese nur alle 15s aus da hier nur ein paar Analogwerte eingelesen werden und das da nicht wichtig ist. Du könntest (wenn nicht schon die ganze Hardware vorhanden) statt einem DI einen Zähler an den Koppler klemmen und zyklisch den Zählerstand lesen und vergleichen.
Wird der Eltako durch die Wage realisiert oder schaltet ein DO Impulsmässig einen Stromstossschalter ein bzw aus ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Stromstossschalter ist echte Hardware und wird über einen DO-Impuls angesteuert. Das möchte ich auch aus anderen Gründen eigentlich nicht ändern.
Wenn ich via Modbus "Impulse" senden möchte, haben die aber ja mindestens den Taktzyklus als Pulsbreite, oder?
Beim Einlesen wiederum muss die "Abtastrate" höher sein, als der kürzeste zu erwartende (bzw. erlaubte) Tastimpuls. Wie viele Millisekunden hat ein Tastimpuls eines von Hand betätigten Tasters üblicherweise? (Bitte keine Hinweise auf Nutzer, die auf dem Taster einschlafen....)

Gruß,

Beck
 
Hallo Beck,
In meine Augen siehst du das alles völlig richtig und ich sehe da auf die schnelle nur eine Möglichkeit so in die Richtung wenn der Taster gedrückt wird (ist der auf der Steuerungsseite) bleibt die Kommunikation bspw für 2s aufrecht und zusätzlich muss der Eltako zurückmelden "Bin gekommen / bin gegangen".
Ich weiß nicht wie sich das verhält ob man den Slave dazu überreden kan bei bestimmten Vorraussetzungen die Daten zu schicken oder holt der Server die generell nur ab ?
Ggf mit mal messen was denn ein Dauer Online an Daten verursacht.
 
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
 
Zurück
Oben