Programmsteuerung
Fluss & Ausführung
Beherrschen Sie den logischen Ablauf Ihres Programms. Von bedingten Sprüngen bis hin zu Echtzeit-Diagnosetools — optimieren Sie die Ausführungsstruktur Ihrer Steuerung.
Was ist die Programmsteuerung in TIA Portal?
Anweisungen zur Programmsteuerung ermöglichen es, die sequentielle Ausführungsreihenfolge von Netzwerken zu ändern. Sie werden verwendet, um Codeabschnitte zu überspringen (Sprünge), komplexe Verzweigungen zu erstellen (Verteiler) oder das interne Verhalten der CPU zu verwalten (Stop, Watchdog, Zeitmessung).
Diese Anweisungen sind leistungsstark, müssen aber mit Vorsicht verwendet werden, insbesondere die WAIT-Anweisung, die den Zyklus blockiert, oder Sprünge, die das Programm bei zu großer Anzahl schwer debuggbar machen können. TIA Portal bietet auch moderne Tools, um Fehler lokal in jedem Baustein abzufangen.
Sprünge und Fluss
Anweisungen zur Programmumleitung
JMP / JMPN — Bedingte Sprünge
JMPWas es macht
JMP unterbricht die sequentielle Ausführung und springt zu einer Sprungmarke (LABEL), wenn das VKE 1 ist. JMPN tut dasselbe, wenn das VKE 0 ist.
Wann man es verwendet
Überspringen eines Codeabschnitts, der in einem bestimmten Modus nicht ausgeführt werden soll, oder Erstellen einfacher Schleifen in KOP/FUP.
Profi-Tipps
Das Sprungziel (LABEL) muss sich im selben Baustein (FC oder FB) befinden.
Verwenden Sie keine Rückwärtssprünge, um Schleifen ohne Abbruchbedingung zu erstellen, da sonst eine Zykluszeitüberschreitung droht.
Verwenden Sie in SCL stattdessen IF...THEN- oder CASE...OF-Strukturen.
SWITCH — Sprungverteiler
SWITCHWas es macht
Vergleicht einen Eingangswert mit mehreren Zielwerten und springt zu dem Netzwerk, das dem ersten zutreffenden Fall entspricht. Grafisches Äquivalent zu Switch/Case.
Wann man es verwendet
Verwaltung von Maschinenzuständen (einfacher Grafcet), Auswahl von Betriebsarten oder Routen von Teilen nach einem Typcode.
Profi-Tipps
Sauberer und lesbarer als eine Reihe von hintereinandergeschalteten == Vergleichern.
Verwenden Sie den 'ELSE'-Eingang, um Fälle abzufangen, in denen kein Wert übereinstimmt.
Ideal für Menüstrukturen auf dem HMI.
RET — Rücksprung
RETWas es macht
Erzwingt das Ende der Ausführung des aktuellen Bausteins (FC/FB) und kehrt zum aufrufenden Baustein zurück.
Wann man es verwendet
Vorzeitiger Abbruch einer Funktion, wenn am Bausteinanfang ein Fehler erkannt wird oder eine Sicherheitsbedingung nicht erfüllt ist.
Profi-Tipps
Nützlich zur Optimierung der Zykluszeit, indem der Rest des Codes nicht unnötig verarbeitet wird.
Vorsicht: Noch nicht verarbeitete Bausteinausgänge behalten ihren letzten Zustand bei.
Verwenden Sie in SCL die RETURN-Anweisung.
Runtime-Steuerung
CPU-Zyklusmanagement und Leistungsmessungen
RUNTIME — Zeit messen
RUNTIMEWas es macht
Misst die Ausführungszeit eines Programmabschnitts oder des gesamten Bausteins in Mikrosekunden (µs).
Wann man es verwendet
Code-Optimierung, Diagnose rechenintensiver Netzwerke oder Leistungsberechnungen der Maschine.
Profi-Tipps
Rufen Sie RUNTIME einmal auf, um die Messung zu initialisieren, und ein zweites Mal, um das Ergebnis zu erhalten.
Verwenden Sie den Datentyp LReal, um das Messergebnis zu speichern.
Praktisch, um zu prüfen, ob eine komplexe FOR-Schleife die Watchdog-Grenzen erreicht.
WAIT — Feste Verzögerung
WAITWas es macht
Unterbricht die Programmausführung für eine angegebene Dauer in Mikrosekunden. ACHTUNG: Im Gegensatz zu einem Timer blockiert WAIT den CPU-Zyklus vollständig.
Wann man es verwendet
Warten einiger Mikrosekunden, um ein elektronisches Signal auf einer ultraschnellen E/A-Karte zu stabilisieren.
Profi-Tipps
Mit äußerster Mäßigung verwenden. Ein zu langes WAIT löst einen Watchdog-Fehler aus und stoppt die SPS.
Niemals für Prozessverzögerungen (Sekunden/Minuten) verwenden; nutzen Sie dafür TON-Timer.
Nur auf S7-1500 verfügbar.
STP — CPU-Stopp
STPWas es macht
Erzwingt den Übergang der CPU in den STOP-Zustand.
Wann man es verwendet
Fataler Fehlerzustand, in dem die Maschine nicht mehr gesteuert werden darf, oder Diagnosetest.
Profi-Tipps
Der Stopp erfolgt sofort. Zum Wiederanlauf ist ein manueller Eingriff (HMI oder Schalter) erforderlich.
Bevorzugen Sie nach Möglichkeit ein Alarmmanagement mit sicherem Rückfallwert gegenüber einem harten CPU-Stopp.
Nützlich in Inbetriebnahmeprojekten, um an einer bestimmten Stelle zu 'breaken'.
Fehlerbehandlung
Lokales Abfangen von Ausführungsfehlern
GET_ERROR / GET_ERR_ID
Was sie machen
Rufen Informationen über den ersten Fehler ab, der innerhalb eines Bausteins aufgetreten ist (z. B. Zugriff auf nicht existierenden Array-Index).
Wann man es verwendet
Machen Sie Ihre Bausteine robust, indem Sie Programmierfehler abfangen, ohne die SPS zu stoppen.
Profi-Tipps
GET_ERROR liefert eine detaillierte Struktur (ErrorStruct), GET_ERR_ID liefert nur die Fehlernummer.
Platzieren Sie diese Anweisungen am Ende Ihrer kritischen Bausteine.
Ermöglicht die Erstellung eines benutzerdefinierten Fehlerprotokolls.
Sprünge vs. Kontrollstrukturen
Welche Methode zur Programmumleitung nutzen?
| Sie benötigen... | Empfohlene Anweisung | Warum? |
|---|---|---|
| Einfacher Sprung in KOP | JMP | Netzwerk überspringen |
| Komplexe Mehrfachauswahl | SWITCH / CASE | Lesbarer als 10 JMPs |
| Interne Dauer messen | RUNTIME | Leistungsoptimierung |
| Sofortiger Stopp | STP | Kritischer Hardwarefehler |
| Sehr kurzes Warten | WAIT | Elektronische Stabilisierung |
| Lokale Diagnose | GET_ERROR | Vermeidung von CPU-STOPP |
Häufig gestellte Fragen
Was ist der Unterschied zwischen JMP und JMP_LIST?
JMP ist ein einzelner Sprung zu einem Ziel. Mit JMP_LIST kann eine Liste von Zielen definiert werden. Abhängig von einem numerischen Index springt das Programm zur 1., 2. oder N-ten Sprungmarke der Liste.
Ist die WAIT-Anweisung gefährlich?
Ja, bei falscher Anwendung. Sie unterbricht die Ausführung des GESAMTEN Anwenderprogramms. Wenn die Summe Ihrer WAITs und Ihres Codes die Watchdog-Zeit (oft 150 ms) überschreitet, geht die CPU in STOPP.
Wie misst man die gesamte Zykluszeit der SPS?
Dafür benötigen Sie die RUNTIME-Anweisung nicht. Sie können die Information direkt in den CPU-Eigenschaften online auslesen oder die Systemvariablen des OB1 nutzen.
Wo werden Sprungmarken (LABEL) platziert?
Sprungmarken können am Anfang jedes Netzwerks platziert werden. In KOP erscheinen sie über der linken Stromschiene. Ein Name einer Sprungmarke muss innerhalb des Bausteins eindeutig sein.