121 3.14 Die Programmieroberfläche Programmierung Besonderheiten Die Oberflächen der einzelnen Quellen (3S, KW-Software, Siemens-TIA-Portal, logi.cad 3, PAS4000) sind in sich unterschiedlich. Aber auch die Anwender, z. B. von 3S (Codesys 2.3) haben Anpassungen und Änderungen durchgeführt. Dennoch bieten diese Hersteller gleiche Möglichkeiten und Menüpunkte (wie eine TASK- Verwaltung). 3.14.1 Arbeiten mit einer Task Programme einer realen Applikation können aus unterschiedlichen Gründen ablaufen bzw. gestartet werden: zyklisch (ständig) Haupt-Task zeitgesteuert Hintergrund-Task schnelle Task (bevorrechtigte Task) wenn ein Ereignis eingetreten ist wenn ein Interrupt durch ein Ereignis erkannt wurde (konfigurierter Eingang, Anforderung aus einer Baugruppe Positionierachse u. v. m.) wenn ein Spannungsausfall an der Steuerung erkannt wurde Die Abarbeitungszeiten einer Steuerung sind stets ein wichtiges Kriterium bei der Auswahl eines Steuerungssystems und die häufigste Quelle von Problemen und Fehlern bei Inbetriebnahmen. Die Berechnungen erforderlicher Reaktionen sind eine Hauptaufgabe des Programmierers und werden in der Regel mit den Konstrukteuren und Projektverantwortlichen festgelegt. 3.14.1.1 Task-Verarbeitung der einzelnen Systeme 3.14.1.1.1 Task-Verarbeitung bei Codesys 2.3 Die Möglichkeiten der Taskverarbeitung unter Codesys 2.3 hängen von dem vorgesehenen Prozessortyp ab (hier Beispiel Eaton). In dem unteren Beispiel wurde eine easycontrol verwendet. Damit steht eine Haupt-Task zur Verfügung und es können zusätzlich System-Task definiert werden.
122 3 Die Sprache ST bzw. SCL im Detail Bild 3 28: Taskverwaltung bei Codesys 2.3 In dem Menüpunkt System-Ereignisse können Programme definiert werden, die aufgerufen werden, wenn: das Programm startet, ein Kaltstart erfolgt, ein Warmstart erfolgt, das Programm gerade stoppt, unterschiedliche Reaktionen auf Ereignisse der Hardware (I/O) oder Software (Counter oder Timer) auftreten. Für die Haupt-Task kann in diesem Menüpunkt eine Watchdog-Zeit definiert werden. Sobald ein anderer Prozessor (z. B. XC- oder XV-Steuerung) des Herstellers angewählt wird, können weitere Tasks unter unterschiedlichen Ereignissen festgelegt werden. 3.14.1.1.2 Task-Verarbeitung im TIA Portal Für die S7-1200 werden die OB -Strukturen bzw. Organisationsbausteine, wie sie seit der Generation der S5-Steuerungen erprobt sind, übernommen. Dabei kommt dem OB1 besondere Bedeutung zu, da unter diesem Baustein das Hauptprogramm abläuft. Der Einsteiger in dieses Thema sollte es damit zunächst belassen und die
123 ersten Beispiele in dem OB ablaufen lassen. Details werden in dem speziellen Kapitel zum Thema S7-1200 beschrieben. Bild 3 29: Die Organisationsbausteine der S7-1200 Damit stehen in der S7-1200 folgende Tasks zur Verfügung: Programm cycle -- zyklische Task (Hauptprogramm) Startup Task aufgerufen beim SPS-Start Time delay interrupt -- Interrupt-Task zeitgesteuert Cyclic interrupt zyklisch aufgerufene Task interruptgesteuert Hardware interrupt Task aufgerufen durch Hardware-Interrupt Time error interupt Taskaufruf durch Watchdog-Überschreitung Diagnostic error interrupt Diagnosefehler gemeldet durch die Steuerung Diese werden traditionell (seit der S5-Generation) mit den Organisationsbausteinen realisiert. Die Zuordnung zu einem Organisationsbaustein kann automatisch oder durch den Anwender durchgeführt werden. 3.14.1.1.3 Task-Verarbeitung bei PC Worx/Express Das im Einsteiger-Set vorhandene VX Worx Express lässt keine Task-Organisation zu. Es ist nur eine Task zugänglich. Für den Einsteiger sollte das kein Nachteil sein, da
124 3 Die Sprache ST bzw. SCL im Detail die Arbeit mit unterschiedlichen Tasks nicht unbedingt zu Beginn einer Einarbeitung stehen sollte. Wenn dennoch eine Task-Verwaltung für ein Projekt erforderlich ist, besteht die Möglichkeit eines Upgrades auf eine Vollversion des VX Worx. Bild 3 30: Taskverwaltung bei PC Worx Da jedoch in diesem Buch das kostenlose PC Worx Express die Basis bildet, soll auf die Task-Verwaltung für die ICL 130 nicht weiter eingegangen werden. Es werden in allen Beispielen die Haupt-Task Main verwendet. Von hier aus werden die unterschiedlichen Funktionen oder Funktionsbausteine aufgerufen. 3.14.1.2 Allgemeine Übersicht möglicher Task herstellerunabhängig Die angebotenen Tasks bei den einzelnen Herstellern können sehr unterschiedlich sein und sollen im Folgenden herstellerunabhängig beschrieben werden. 3.14.1.2.1 Zyklische Task In der Regel wird der Anwender sein Hauptprogramm in die zyklische Task hineinlegen. Die Einstellung wird je nach dem verwendeten Prozessor und dem zu steuernden Prozess zwischen 15 ms und 50 ms liegen. Ob mit der kürzesten oder mit einer eingestellten Aufrufzeit gearbeitet wird, hängt wiederum von den Anforderungen des zu steuernden Prozesses ab. 3.14.1.2.2 Schnelle Zeitgesteuerte Task Schnelle Vorgänge werden verwendet, wenn kurze Reaktionszeiten notwendig sind, um Antriebe genau zu stoppen oder Bremsvorgänge von Bewegung exakt einzuleiten und zu überwachen.
125 3.14.1.2.3 Ereignisgesteuerte Task Wenn ein Programm selten ablaufen muss, vielleicht nur in einem bestimmten Schritt eines Prozesses, dann kann diese Möglichkeit angewendet werden, um die Haupt-Task zeitlich zu entlasten. 3.14.1.2.4 Netzausfall-Task Um mögliche Werte und Zustände bei Netzausfall abspeichern zu können, bieten die Hersteller diese Möglichkeit bei Erkennung eines Spannungseinbruchs. 3.14.1.2.5 Interrupt-Task Aufgrund eines Ereignisses wird die Abarbeitung des Programms unmittelbar unterbrochen, alle Register und Zustände automatisch vom System gespeichert und das Interrupt-Programm abgearbeitet. Nachdem das Interrupt-Programm beendet ist, kehrt der Prozessor wieder an den Abarbeitungspunkt zurück (Rücksprungadresse), lädt die Register bzw. Rechen-Akkumulatoren mit den gespeicherten Daten und führt die Abarbeitung des unterbrochenen Programms (besser Task) weiter aus. 3.14.1.2.6 Task Hinweise Mit den Möglichkeiten der Task-Verwaltung sollte sehr sorgfältig umgegangen werden. Jeder Interrupt verzögert eine schnelle Task, damit wird diese immer häufiger aufgerufen. Damit bleibt immer weniger Zeit die Haupt-Task abzuarbeiten, das führt dazu, dass immer mir Programmteile der Haupt-Task in eine schnellere Task ausgegliedert werden. Am Schluss kollabiert das System. Es sollten folgende Regeln eingehalten werden: So wenige Interrupte wie möglich, schnelle Task in der Zeit nicht kürzer einstellen als unbedingt nötig, wann immer vertretbar, Programmteile aus der Haupt-Task bzw. in eine langsamere Hintergrund-Task auslagern (Kommunikation, Datenaufbereitung, Initialisierungen usw.).