Ich wüsste nicht wirklich, wie ich die folgende Situation ohne jetzt Mannwochen in ein eigens dafür entwickeltes Subsystem sonst sinnvoll abbilden sollte:
Teilnehmer: Eine bzw. mehrere S7 SPS, ein Server, N Clients
Unser Serversprogramm pollt ständig Informationen aus der SPS, und speichert Werte in die
SQL DB. (Welche Werte wann wo in welche Tabellen sollen ist wiederum in einer Tabelle hinterlegt.) Unter diesen Daten befinden sich alle möglichen Dinge: Anlagenzustände, Behälterfüllstände, Rezept-Daten, Analogmesswerte (z.B: Temperaturen, Drücke), Wägedaten, einfach alles, was in einer industriellen Produktionsanlage so anfällt.
Die Clients haben die Aufgabe, diese Daten in eine für die Bediener sinnvolle Form zu bringen und darzustellen. Darunter sind visuelle Komponenten zur Anzeige von Zuständen, und auch eine ganze Latte an Tabellen. Konkret geht es mir hier besonders um die Behälter-Tabelle, in der alle Behälter gelistet sind, mitsamt ihren Füllständen, aktuellen Stoffen und anderen ihnen zugehörigen Randdaten, von denen sich einige stets ändern.
Wenn der Bediener jetzt diese Tabelle offen hat, und etwas im Prozess passiert, oder ein anderer Client ändert etwas, so muss auch ein gerade woanders betrachtetes Grid diese Änderungen unbedingt wiederspiegeln. Die einzige Stelle, an der die Änderung passiert ist, ist die Datenbank, und diese muss Maßgeblich bleiben, weil sich auch Routinen im Server darauf beziehen. Und
MySQL bietet
imho kein Eventsystem, also muss ich das, so glaube ich zu wissen, doch pollen. Und selbst mit Eventsystem: Die Änderungen würden ebenfalls oft genug (öfter sogar) statt finden, und beim Refresh wieder das Problem beim scrollen verursachen.
Ein ähnliches Eventsystem habe ich im Server für die visuellen Komponenten gebaut: Es wird nur bei Änderungen in die
DB geschrieben, und an die Clients via
TCP mitgeteilt in welcher Tabelle sich bei welchen SatzIDs etwas geändert hat. Nur das hilft mir ja auch nicht weiter, da ich im Grid ja nicht nur einzelne Zeilen updaten kann.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)