Beruflich komme ich von der SPS-Seite und dort gibt es überwiegend eine zyklische Programmabarbeitung. Diese hat gerade bei umfangreichen Verknüpfungen / Verriegelung Vorteile gegenüber der Ereignissteuerung. Man braucht keine Semaphoren, spart Hilfsvariabeln und ähnliches.
Wäre es möglich in IPS eine Funktion einzubauen, die ein Script z.B. alle 200ms aufruft und es ermöglicht in PHP ähnlich einer SPS zu programmieren?
Erstelle ein Skript, welches alle 1s läuft und dort 5x per IPS_RunScript + 200ms warten dein Loop-Skript aufruft. Trotzdem würde ich überlegen, ob du das, was du machen willst, nicht ereignisorientiert machen kannst. Spart viele Ressourcen.
Das „hilft“ mir nicht weiter.
Die Eventsteuerung wird ab einer bestimmten Anzahl von Aktionen / Scripts einfach unübersichtlich. Dies ist nicht nur bei IPS so, sondern auch bei „Profisystemen“ für 20000€ und mehr.
Hier hat eine klassische Verknüpfungssteuerung wie bei SPS eben Vorteile. Ich denke Michael und paresy wissen was ich meine.
Und eigentlich braucht es auch nicht viel um in IPS verknüfungsorientiert zu scripten. Ein zyklisch aufrufbares Script im 100ms oder 200ms sollte schon genügen.
Dinge wie Prozessabbild sind nicht unbedingt nötig.
Vielleicht kannst Du Deine Wünsche, die hinter der Forderung nach einer Endlos-Schleife mal formulieren?
Ich kenne SPS nicht, hatte anfangs aber auch in dieser Richtung gedacht, leider geht das nicht - oder wenn, dann nur (paresy hatte da mal auf einen Thread von mir geantwortet) via Modul, das ich glaube in Delphi, geschrieben wird und dann den Funktionsumfang erweitert.
Eigentlich ist aber das, was Du machen willst, aber durch IPS schon da: IPS ist „die Endlosschleife“.
Statt dass Du nun die Logik (wann muss ich was machen, Register ausliest etc.) definierst Du ausgelöste Events, die auf irgendetwas reagieren dann Scripte aufrufen
Das entspricht woanders dem permanenten Polling eines Registers, um dann bei einer eingetretenen Änderung eine Routine laufen zu lassen.
Da Du Events auf alles setzen kannst, was „sich bewegt“, sollte eigentlich - in gewissem Rahmen - vieles möglich sein, was in einer SPS ziemlich viel Grundlagenarbeit erfordern würde …
jwka
ps. habe keine Ahnung, wie der Daumen runter da oben rein kommt … muss versehentlich auf das Icon gekommen sein!
Eventhandling und Zyklische Bearbeitung sind in der Automatisierungstechnik unterschiedliche Programmierweisen.
Ein einfaches Beispiel anhand eines simplen Lichtschalters und einer Lampe:
Bei Eventsteuerung:
Schalter Ein -> Event -> Lampe Ein
Schalter Aus -> Event -> Lampe Aus
Bei Verknüpfungsteuerung:
Lampe := Schalter
Bei der Verknüpfungsteuerung wird eben mit logischen Verknüpfungen gearbeitet. Dies ist eben ein Unterschied zur typischen Windows-Programmierung.
Bei IPS gab es mal einen Ansatz mit sogenannten Bricks. Dies war wohl ähnlich.
Und Dein Hinweis mit der Übersichtlichkeit bei vielen Events ist komplett richtig, besonders, wenn sehr viele Events (oder im schlimmsten Fall praktisch alle) auf dasselbe Script weisen (z.B. weil man mitprotokollieren will)
Ich hatte auch schon als Feature Request vorgeschlagen, dass es einen „Superevent“ geben sollte, der IMMER usgelöst wird, wenn etwas los ist. Das wäre evtl. noch mit einem „Masterevent-pro-Modul“ zu verfeinern und würde Dir vielleicht auch helfen …
Die Antwort auf deine Frage lautet schlichtweg: „Weil Windows“. Eine SPS ist auf zügige Ablaufsteuerung optimiert. Windows ist auf animierte, bunte Oberflächen optimiert. :rolleyes:
Wenn es okay wäre, dass die CPU bei 100% stünde und die grafische Oberfläche nur noch arg träge bis garnicht mehr reagiert, ja.
Also sorry, wir reden hier nicht von harten Echtzeitbedingungen :rolleyes:
Und nicht an allem und jedem hat Windows die Schuld.
Ich denke hier ist es eher eine Frage des Schedulers / Eventmanagers von IPS.