Hallo,
die SPS überträgt maximal 4 Wörter (also 4x 16bit = 64) in einer Anfrage.
das Modbus Paket für 4 Wörter hat 16 Bytes. Wenn wir das jetzt über TCP (Ethernet) übertragen sind das 30 Bytes (mit Header, etc.).
Jetzt haben wir eine maximal 10Mbit/s Verbindung (Netzwerkinterface der SPS). Das hieße also, das wir 10 Mbit/s -> 1.250.000 bytes/s auf dem Interface übertragen können. Oder anders ausgedrückt, dieses Datenpaket passt ca. 42 tausend mal auf das Interface.
Jetzt muss noch die Anfrage dazu idr. 8 bytes + Header. Also 22 bytes. Diese 30+22 bytes benötigen also ca. 41 µs. Kommt nochmal ca. 0,5µs Propagation Delay (je Hop, sagen wir für Hin+Rück bei einem Switch 4x) sowie die Switch Zeit ca. 2x 15µs. So kommen wir auf eine typische Paketlaufzeit inkl. Antwort von ca. 73µs. Wenn die SPS jetzt zum Antworten tatsächlich 1ms bräuchte (was sie vmtl nicht braucht) wären wir bei 1073µs. Du siehst, dass die Paketgröße über Netzwerk keinen entscheidenden Einfluss hat.
Die Wago 881 hat 15 gleichzeitige Modbus Zugänge. Daher kann man über weitere Interfaces noch deutlich paralellisieren. Wenn wir jetzt „wie blöde“ Anfragen an die SPS senden, könnte sie die 2. Anfrage schon gleichzeitig zur 1. Anfrage beantworten.
Dummerweise setzt Symcon die Anfragen hintereinander. Und das kleinst mögliche Paket mit Modbus ist 1 Word (denn weniger Daten kann die SPS nicht antworten, selbst wenn wir nur ein Coil Abfragen). Also wären das statt 52 Bytes noch 8 (Anfrage Modbus) + 14 (Anfrage Header) + 14 (Antwort Header) + 8 (Antwort Modbus Header) + 2 (Antwort Modbus Daten) = 45 bytes (36µs) zzgl. Netzwerkzeit + SPS dann 1068µs. Und das für nur 1 bit.
Wenn ich jetzt also die 124 bit brauche, sind das mit meiner Lösung 2 Anfragen, ohne aufeinander Warten. Also im besten fall ca. 1000µs + 2x 73µs = 1146µs. Also könnte ich theoretisch ca 870 Anfragen/Sekunde stellen.
Wenn ich das mit Coils und Symcon mache, habe ich im allerbesten Fall die Möglichkeit ca. 870 Coils/Sekunde bzw. bei 124 Stück diese 7 mal/Sekunde bzw. alle 142ms abzufragen.
Bei dieser Lösung muss ich allerdings noch Platz für Schreibanfragen, etc. über lassen. Zudem braucht Symcon Verarbeitungszeit. Ich habe in einem Produktivsystem mit Symcon und einzel Coils es nicht geschafft, unter 1600ms bei 100 Coils zu kommen.
Nachtrag: Die SPS benötigt für eine Antwort per Modbus bis zu 15ms. In einem ggf. verfügbaren Fast Modus nurnoch 1ms.
Das wären also in der normalen Methode (Coil Weise) 15068µs. ≈ 66,36 Anfragen je Sekunde. Also ca. 2 Sekunden Rundlaufzeit. -> Das deckt sich auch eher mit der o.g. Angabe, 100 Coils in 1600ms.
Bei 4 Wort je Anfrage: 15073µ ≈ 66,34 Anfragen je Sekunde. 2 Anfragen/124Bit -> 33 Anfragen -> Zykluszeit 30ms möglich. Bzw. man benötigt nurnoch 1,9% der Zeit.