...
ich kenne die Multitaskingfähigkeit aus der Robotiksteuerung.
...
Wie Deltal bereist erwähnt hat sind die gängigen Roboter Programmierungen nicht mit dem gängigen Grundkonzept einer SPS vergleichen.
Bei Robotern programmiert man gerade für die Bewegungen einen Ablauf und das Programm verharrt an dieser Stelle bis die Aktion (z.B. Bewegung vollendet wurde). Dieses Programm wird aufgerufen und abgearbeitet und eventuell später wieder aufgerufen und abgearbeitet.
SPS Programme werden meistens Zyklisch bearbeitet sprich das ist eine Endlosschleife und der entsprechende Task dem das Programm zugeordnet ist wird darauf hin meisten sogar noch überwacht (Watchdog) um Zykluszeit Überschreitungen erkennen zu können.
Natürlich braucht man bei SPSen auch Abläufe, hier hat sich das Konzept der Schrittkette durchgesetzt. Diese ermöglicht einen Ablauf Schrittweise abzuarbeiten ohne das der Task-Zyklus angehalten wird.
Ein Beispiel wo ich die Multitaskingfähigkeit von
CoDeSys einmal gebraucht habe war der bereits angesprochene Fall das ich eine Datei auf dem Filesystem öffen, beschreiben und wieder schließen musste. Dieser Task durfe dann von dem eigentlichen SPS Task (PLC_PRG) unterbrochen werden der mit einer fest eingestellten Zeit von 10ms vor sich hin brummen durfte. Der Task der sich um das Dateihändling gekümmert hat durfte ruhig einige Sekunden benötigen.
Ich bestreite ja nicht das es schick ist eine Multitaskingfähige SPS zu haben. Bei einigen Dingen führt auch kein Wegdaran vorbei aber für den eigentlichen Programm Ablauf sollte man bedenken:
...
es relativ Aufwenig ist die Tasks zu synchronisieren, (Stehen alle Informationen an der richtigen Stelle zur richtigen Zeit zu verfügung?) ...
Wenn man da unvorsichtig ist kann es zu ganz seltsamen Effekten kommen die man fast nicht bzw. nur sehr schwer debuggen kann.