Skip to content
Samet Karayoluk
Genel

SCL oder LAD im TIA Portal? Welche Sprache sollte man wann verwenden?

TIA Portal SCL ve LAD karşılaştırması

Wer mit TIA Portal programmiert, steht früher oder später vor derselben Frage:

Sollte ich LAD oder SCL verwenden?

Ich halte die Frage „Welche Sprache ist besser?“ eigentlich nicht für die richtige Herangehensweise, denn beide Sprachen haben unterschiedliche Stärken.

Wenn ich im Feld schnell nachvollziehen möchte, warum ein Motor nicht läuft, ist LAD sehr praktisch. Wenn ich dagegen beispielsweise 20 Werte in einem Array verarbeiten, Berechnungen durchführen oder dieselbe Logik mehrfach anwenden möchte, ist SCL häufig die sinnvollere Lösung.

Auch bei den aktuellen Programmierempfehlungen für S7-1200 und S7-1500 verfolgt Siemens grundsätzlich einen ähnlichen Ansatz: Die Programmiersprache sollte entsprechend der jeweiligen Aufgabe gewählt werden. LAD/FBD eignen sich besonders gut für binäre Logik, während SCL bei daten- und algorithmusorientierten Strukturen seine Stärken ausspielt.

Es geht also nicht einfach um LAD gegen SCL.

Entscheidend ist, für die jeweilige Aufgabe das richtige Werkzeug zu verwenden.

Warum ist LAD nach wie vor so praktisch?

LAD, also der Kontaktplan, orientiert sich stark an der klassischen elektrischen Steuerungslogik.

Im TIA Portal arbeiten wir dabei häufig mit Kontakten, Spulen und ähnlichen logischen Elementen.

Nehmen wir ein klassisches Beispiel.

Angenommen, wir haben einen Motor:

  • Er soll beim Betätigen des Start-Tasters anlaufen.
  • Er soll beim Betätigen des Stop-Tasters stoppen.
  • Bei einer Motorschutz- bzw. Überlaststörung darf er nicht laufen.
  • Wenn das System nicht bereit ist, darf er ebenfalls nicht laufen.

In LAD lässt sich diese Logik sehr übersichtlich darstellen.

Der große Vorteil zeigt sich insbesondere bei der Fehlersuche.

Wenn die Maschine nicht läuft, kann ich online direkt das entsprechende Netzwerk beobachten. Fehlt Bereit? Ist Thermisch_Stoerung aktiv? Fehlt das Startsignal?

Die Logik lässt sich visuell verfolgen.

LAD ist deshalb besonders praktisch bei:

  • Motoren,
  • Ventilen,
  • Sensoren,
  • Verriegelungen,
  • Freigabebedingungen,
  • einfachen Maschinensteuerungen.

Dabei gibt es jedoch ein kleines, aber wichtiges Detail:

Die Anweisungen [ ] und [/] im TIA Portal prüfen einen BOOL-Wert. Sie sollten nicht automatisch mit einem physisch verdrahteten Schließer oder Öffner gleichgesetzt werden.

Wie der physische Eingang verdrahtet ist und welche Bedeutung das PLC-Tag hat, sind zwei unterschiedliche Dinge.

Wo kommt SCL ins Spiel?

Bei Siemens steht SCL für Structured Control Language und basiert auf dem Structured-Text-Ansatz.

Anstelle von Kontakten und Spulen schreiben wir hier Programmcode.

Die oben beschriebene Motorlogik könnte beispielsweise so in SCL umgesetzt werden:

IF #Stop OR #Thermisch_Stoerung OR NOT #Bereit THEN
    #Motor := FALSE;

ELSIF #Start THEN
    #Motor := TRUE;
END_IF;

Das ist klar und übersichtlich.

Wenn ich allerdings lediglich eine einfache Motorlogik dieser Art programmieren möchte, finde ich LAD persönlich praktischer, weil sich die einzelnen Bedingungen bei der Fehlersuche im Feld schneller nachvollziehen lassen.

Der eigentliche Vorteil von SCL zeigt sich bei anderen Problemstellungen.

Beispiel: 100 ähnliche Asynchronmotoren

Stellen wir uns vor, dass sich in einer Anlage 100 ähnliche Asynchronmotoren befinden.

Für jeden Motor könnten beispielsweise folgende Signale vorhanden sein:

  • Startbefehl,
  • Betriebsfreigabe,
  • Motorschutz- oder Umrichterstörung,
  • Betriebsrückmeldung,
  • Ausgangsbefehl.

Natürlich lässt sich auch das mit LAD programmieren.

Wenn wir jedoch dieselbe Logik für 100 Motoren in einzelnen Netzwerken wiederholen, wächst das Projekt sehr schnell.

Die für Motor 1 erstellte Struktur müsste dann ähnlich für Motor 2, Motor 3 und schließlich bis Motor 100 wiederholt werden.

Mit SCL können wir die Daten der Motoren dagegen in einem ARRAY speichern und dieselbe Logik innerhalb einer Schleife auf alle Motoren anwenden.

Vereinfacht könnte das beispielsweise so aussehen:

FOR #i := 1 TO 100 DO

    IF #Motor[#i].Start
       AND #Motor[#i].Bereit
       AND NOT #Motor[#i].Stoerung THEN

        #Motor[#i].Ausgang := TRUE;

    ELSE
        #Motor[#i].Ausgang := FALSE;

    END_IF;

END_FOR;

Anstatt denselben Code einzeln für 100 Motoren zu schreiben, wenden wir dieselbe Logik auf alle Motoren innerhalb des Arrays an.

Der eigentliche Vorteil liegt dabei nicht allein in der hohen Anzahl der Motoren.

Entscheidend ist, dass dieselbe Struktur für viele gleichartige Betriebsmittel wiederholt wird.

Wenn später beispielsweise eine zusätzliche Betriebsbedingung für alle Motoren ergänzt werden soll, können wir den entsprechenden Algorithmus an einer zentralen Stelle ändern, anstatt 100 einzelne Netzwerke anzupassen.

Daher ist LAD sehr praktisch, wenn die Feldlogik eines einzelnen Motors nachvollzogen werden soll. SCL bietet dagegen deutliche Vorteile, wenn Daten und wiederkehrende Abläufe vieler ähnlicher Betriebsmittel verarbeitet werden müssen.

Ist SCL oder LAD im TIA Portal besser?

Es gibt keine Programmiersprache, die grundsätzlich besser ist.

LAD bietet Vorteile bei binärer Steuerungslogik und bei der Diagnose im Feld. SCL eignet sich dagegen besonders gut für Berechnungen, Schleifen, Arrays und Datenverarbeitung.

Kann SCL mit S7-1200 und S7-1500 verwendet werden?

Ja.

SCL kann im Siemens TIA Portal sowohl mit S7-1200- als auch mit S7-1500-Steuerungen verwendet werden. Außerdem können LAD und SCL innerhalb desselben Projekts gemeinsam eingesetzt werden.


© Samet Karayoluk. Dieser Inhalt wurde von Samet Karayoluk erstellt. Eine unerlaubte Vervielfältigung oder Wiederveröffentlichung ist nicht gestattet. Kurze Zitate sind unter Angabe der Quelle zulässig.

Mindestens 2 Zeichen eingeben.

↑↓ · Enter · Esc

Share with