GOTO in ST

Folgendes steht im Buch "SPS-Programmierung mit IEC 61131-3" über den GOTO Befehl:

ST kennt keine Sprunganweisung (GOTO). Dies stellt zwar keine funktionelle Einschränkung dar, zumal Sprunganweisungen zu unstrukturierten Programmen verführen. Jeder bedingte Sprung kann auch über eine IF-Abfrage programmiert werden. Durch die besondere Umgebung der SPS, wie ihre Echtzeitanforderung, könnten Sprünge allerdings zur Effizienzsteigerung beitragen, um z.B. nach der Feststellung einer Fehlerbedingung stark verschachtelte Anweisungen schnell verlassen zu können.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hatte bis her noch nicht das Bedürfnis einen GOTO Sprung in ST zu verwenden. Vielleicht schreibst Du mal an welcher Stelle Du diesen für Notwendig erachten würdest.

Um z.b. Suchschleifen und ähnliche Schleifen nicht unnötig lange laufen zu lassen benutze ich z.B. den EXIT Befehl.

Bei Case und ELSIF braucht man auch eher kein GOTO.


PS: Soweit ich mich erinnere bietet Siemens in seinem SCL den GOTO Befehl an.
 
Converter

Ich hatte bis her noch nicht das Bedürfnis einen GOTO Sprung in ST zu verwenden. Vielleicht schreibst Du mal an welcher Stelle Du diesen für Notwendig erachten würdest.


Es geht um das Schreiben eines Converter Programms für die automatische Umsetzung von einigen Zehn Tausend Zeilen proprietären AWL Codes nach ST. Dient zur Rettung von Legacy Code einer SPS, die nicht mehr unterstützt wird.
 
Okey, jetzt macht deine Frage natürlich Sinn!
Hmm, wie wäre es mit einer CASE-Struktur in einer REPEAT-Schleife, so kannst du beliebig oft Vor- und Rückwärts springen, bis du fertig "gesprungen" bist...
Die AWL-Sprungmarken kannst du ja direkt als ENUM übernehmen und in der CASE-Struktur verwenden...
Es wird klar sein, dass Dead-Locks und Zykluszeitüberschreitungen bei REPEAT/WHILE-Schlaufen eine latente Gefahr sind!
Bin gespannt auf deine Lösung...;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Professionelle Programme

Zum Glück sind es Professionelle Programme, d.h. Rücksprünge waren wegen Codier Richtlinien nicht erlaubt.

Wahrscheinlich ist es aber einfacher AWL -> AWL zu convertieren.
 
Danke für die Erläuterung für was Du GOTO in ST verwenden möchtest. In dem Fall ist die Sachlage natürlich ganz klar.



Ich denke auch das eine Übersetzung von AWL in AWL (IL) deutlich leichter umzusetzen ist.

Das Rücksprünge in AWL "unprofessionell" sein sollen, geht mir dann doch etwas zu weit.
Schleifen und Suchroutinen bedienen sich nun mal diesem Mittel.
 
Zurück
Oben