Wann lohnt sich SCL statt KOP und wie unterscheidet sich SCL von ST?

Die Programmiersprache SCL (Structured Control Language) ist die textbasierte Sprache der Siemens-SIMATIC-Steuerungen. Das Programm wird dabei mit Pascal-ähnlichen Anweisungen geschrieben und nicht mit Kontakten und Spulen wie in KOP (englisch LAD). In TIA Portal entstehen in SCL Bausteine mit Berechnungen, Datenfeldern und umfangreicher bedingter Logik. Man greift dort zu ihr, wo die Kontaktplan-Darstellung länger wird als der Algorithmus selbst. Von ST aus der Norm IEC 61131-3 unterscheidet sich SCL vor allem durch Siemens-Erweiterungen.

SCL ist die Umsetzung der Sprache ST (Structured Text) aus der Norm IEC 61131-3, die Siemens für SIMATIC-Steuerungen entwickelt hat. Sie bietet die bedingten Anweisungen IF und CASE, die Schleifen FOR, WHILE und REPEAT, arithmetische Operatoren und Bausteinaufrufe, also alles, was zum Schreiben eines Algorithmus nötig ist.

Im klassischen STEP 7 für S7-300 und S7-400 war SCL ein eigenes Paket (S7-SCL), das zusätzlich zur Grundumgebung erworben wurde. In TIA Portal ist SCL einer der Editoren neben KOP, FUP, AWL und GRAPH, und die Sprache wird für jeden Baustein einzeln festgelegt: Organisationsbaustein (OB), Funktion (FC) und Funktionsbaustein (FB). Ein Projekt kann also Bausteine in mehreren Sprachen enthalten.

Die Kontaktplan-Sprache heißt bei Siemens in der deutschen Version von TIA Portal KOP (Kontaktplan), in der englischen LAD (Ladder), während die Norm IEC 61131-3 die Abkürzung LD verwendet. Einen vollständigen Überblick über die Sprachen der Norm gibt der Beitrag Welche SPS-Programmiersprachen gibt es?.

SCL ersetzt KOP dort, wo ein Baustein Daten verarbeitet und nicht nur binäre Signale verknüpft. Das Kriterium ist einfach: Braucht dasselbe Stück Logik im Kontaktplan über ein Dutzend Netzwerke mit MOVE-, ADD- und Vergleichsblöcken und passt es in SCL in wenige Zeilen, ist die Textform besser lesbar.

Typische Aufgaben für SCL:

  • Berechnungen und Umrechnungen: Skalierung analoger Signale, technologische Formeln, Mittelwerte und Messtoleranzen;
  • Datenfelder und wiederkehrende Objekte: Eine FOR-Schleife über ein Array von Strukturen (ARRAY of UDT) bedient 24 identische Palettenplätze mit einem einzigen Codeabschnitt, ohne 24 Netzwerke zu kopieren;
  • Texte und Telegramme: Zusammensetzen und Zerlegen von Zeichenketten, DMC-Codes zur Rückverfolgbarkeit der Produktion (Traceability), Kommunikationsrahmen;
  • Zustandsautomaten: Die CASE-Anweisung beschreibt die Zustände einer Anlage und die Übergänge zwischen ihnen übersichtlich;
  • Bibliotheksbausteine: wiederverwendbare FB und FC, die in vielen Maschinen und Projekten zum Einsatz kommen.

Problematisch wird es, wenn ein Algorithmus aus Gewohnheit in KOP bleibt. Das Programm wächst dann auf Hunderte Netzwerke, weitere Änderungen werden neben die alten geschrieben, und bei einer Durchsicht ist schwer zu prüfen, ob alle Plätze gleich behandelt werden. Besser ist es, die Datenverarbeitung in einen SCL-Baustein mit klar beschriebener Schnittstelle (Eingänge, Ausgänge, statische Daten) auszulagern, der einmal getestet und mehrfach aufgerufen wird.

Ändert sich die Logik eines Platzes, genügt in einem SCL-Baustein mit Schleife über das Array eine einzige Korrektur statt einer eigenen in jedem der 24 Netzwerke, und das verkürzt die Zeit für Änderungen bei der Inbetriebnahme.

Sie suchen einen erfahrenen Integrator für Siemens-Automatisierung? Sprechen Sie uns an, wir schreiben Ihr SPS-Programm in TIA Portal und nehmen die Maschine in Betrieb.

KOP bleibt die bessere Wahl für Logik, die zuerst von der Instandhaltung diagnostiziert wird: Verriegelungen, Startbedingungen, Freigaben, Meldungen und die Steuerung einzelner Antriebe. Der Kontaktplan zeigt in der Online-Ansicht den Signalfluss, sodass ein Elektriker sieht, welcher Kontakt nicht durchschaltet und warum der Zylinder nicht ausgefahren ist.

Dieselbe Bedingung in SCL muss aus dem Code herausgelesen werden, indem man die Variablenwerte Zeile für Zeile verfolgt. Für den Programmierer ist das kein Problem, für den Techniker in der Nachtschicht, der eine Station wieder zum Laufen bringen soll, kann es aber eine Hürde sein.

Risiken bei zu breitem Einsatz von SCL:

  • längere Störungsdiagnose, weil die Ursache in einem logischen Ausdruck statt in einem sichtbaren Strompfad verborgen ist;
  • Abhängigkeit des Werks vom Programmierer bei kleinen Störungen, die die Instandhaltung in KOP selbst finden würde;
  • Abweichung von der Spezifikation des Auftraggebers, wenn ein Konzernstandard die Sprache für einen bestimmten Bausteintyp vorgibt.

Die Sprache eines Bausteins richtet sich danach, wer ihn in der Halle lesen wird, und nicht nur nach dem Komfort des Programmierers, denn davon hängt ab, wie schnell die Produktion nach einer Störung wieder läuft.

Die häufigste Aufteilung sieht so aus: Maschinenlogik und Verriegelungen in KOP, Datenverarbeitung in FB und FC, die in SCL geschrieben sind. Ein SCL-Baustein erscheint in einem KOP-Netzwerk als einzelnes Element mit Ein- und Ausgängen, sodass der Techniker sieht, mit welchen Parametern er aufgerufen wurde und was er zurückgegeben hat, ohne in den Code zu gehen.

In den Steuerungen S7-1200 und S7-1500 kann man in einen KOP- oder FUP-Baustein auch ein einzelnes SCL-Netzwerk einfügen, zum Beispiel für eine kurze Berechnung. Umgekehrt geht es nicht: Ein SCL-Baustein nimmt kein KOP-Netzwerk auf. Solche Einschübe eignen sich für wenige Zeilen Berechnung, längerer Code gehört besser in einen eigenen Baustein mit eigener Schnittstelle.

Für Maschinenabläufe gibt es außerdem GRAPH, in dem Schritte und Übergänge grafisch dargestellt werden. Konzernstandards kombinieren diese Sprachen nach eigenen Regeln. Im VASS-Standard wird von Programmierern zum Beispiel die Kenntnis von SCL und S7-Graph verlangt, und die Aufteilung des Programms in Bausteine ergibt sich aus seinen Bibliotheken.

Die Aufteilung auf die Sprachen legt man am besten vor dem Schreiben des Codes fest und hält sie in den Projektvorgaben fest: welche Bausteintypen in KOP entstehen, welche in SCL, wie Variablen benannt und wie Code kommentiert wird. Ohne das wird in einem Projekt mit mehreren Programmierern dieselbe Aufgabe mitunter in drei verschiedenen Stilen gelöst.

SCL ist eine Umsetzung von ST, daher sehen die Steueranweisungen (IF, CASE, FOR, WHILE), Operatoren und Zuweisungen genauso aus wie in anderen Umgebungen nach IEC 61131-3. Die Unterschiede betreffen die Deklaration von Variablen, den Zugriff auf Daten und die Elemente, die Hersteller ergänzt haben. Am häufigsten wird SCL mit ST in CODESYS verglichen, auf dem auch TwinCAT 3 von Beckhoff basiert.

ElementSCL (TIA Portal)ST (z. B. CODESYS)
Lokale Variablenmit dem Präfix #, z. B. #Zaehlerohne Präfix
Globale DatenDatenbaustein in Anführungszeichen: "Pumpe_DB".Sollglobale Variablenliste (GVL), z. B. gvlPumpe.Soll
VariablendeklarationSchnittstellen-Editor des Bausteins (Input, Output, InOut, Static, Temp)Abschnitte VAR_INPUT, VAR_OUTPUT, VAR im Text
Gruppierung von CodeREGION ... END_REGIONPragma {region}
Spezifische Datentypenu. a. VARIANT, S5TIMEu. a. POINTER TO, REFERENCE TO
Objektorientierte Programmierungkleinerer UmfangMethoden, Schnittstellen und Vererbung aus Edition 3 der Norm

Für ein Projekt bedeutet das: Ein Algorithmus lässt sich fast unverändert zwischen den Plattformen übertragen, ganze Bausteine dagegen nicht. Eine in ST für CODESYS geschriebene Bibliothek erfordert in TIA Portal den Umbau der Schnittstellen, der Verweise auf globale Daten und der Codeabschnitte mit Zeigern. In der Gegenrichtung ist es ähnlich: SCL-Code mit VARIANT-Typen oder Verweisen auf Siemens-Datenbausteine muss neu geschrieben werden.

Bei der Aufwandsschätzung für die Übertragung einer ST-Bibliothek zwischen Plattformen muss man den Umbau von Schnittstellen und Datenzugriff einplanen und nicht nur das Kopieren des Programmtextes.

Sie möchten das Programm einer Maschine mit Siemens S7 anpassen? Als Integrator passen wir Ihr bestehendes Programm an oder übertragen es auf eine neue Steuerung.

  • IEC 61131-3 „Programmable controllers – Part 3: Programming languages”, Edition 3.
  • Siemens, Dokumentation zu STEP 7 / TIA Portal und Beschreibung des Pakets S7-SCL.
  • Otomakeit, „Codesys ST Through SCL Eyes – The Language Differences That Catch You First”: https://otomakeit-website.pages.dev/blog/codesys-st-through-scl-eyes/
Nach oben scrollen