PLCcheck

SCL Best Practices: Namenskonventionen, Struktur und Kommentare

SCL-Programmier-Best-Practices basierend auf dem Siemens Programming Guideline. Namenskonventionen, Codestruktur, REGION-Schlüsselwort, Kommentierung, Sprachwahl und häufige Fehler.

·10 Min. Lesezeit
SCLBest PracticesNamenskonventionCodestrukturREGIONKommentareProgramming GuidelineSiemensTIA Portal

Read this article in English

SCL Best Practices: Namenskonventionen, Struktur und Kommentare

Diese Best Practices basieren auf dem Siemens Programming Guideline für S7-1200/S7-1500 (Dokument-ID 81318674) und dem zugehörigen Programming Style Guide — die offiziellen Siemens-Empfehlungen für wartbaren, portablen, qualitativ hochwertigen SCL-Code.

Namenskonventionen

Bezeichner-Regeln

Siemens empfiehlt lowerCamelCase: Anfangsbuchstabe klein, jedes neue Wort beginnt mit Großbuchstabe, keine Trennzeichen (Unterstrich, Bindestrich).

EmpfehlungBeispielVermeiden
lowerCamelCasefoerderbandGeschwFoerderband_Geschw, FOERDERBAND_GESCHW
Max. 24 ZeichenmotorTempAlarmmotorTemperaturAlarmHochNiveau
Beschreibende NamenfuellventilOffenM10_0, a, x1

Präfix-Konvention (Siemens Style Guide)

PräfixBedeutungBeispiel
(kein)StandardvariablefoerderbandGeschw
inst / InstInstanzinstMotorSteuerung
statStatische VariablestatLetzterWert
tempTemporäre VariabletempBerechnungsErg
c / CKonstantecMaxGeschwindigkeit

Baustein-Benennung

BausteintypKonventionBeispiel
FBBeschreibt die FunktionFB_MotorSteuerung
FCBeschreibt die BerechnungFC_AnalogSkalierung
DB (global)Beschreibt den DateninhaltDB_RezeptParameter
OBSiemens-Standardnamen beibehaltenMain [OB1]

Codestruktur

REGION zur Strukturierung (ab V14)

REGION in SCL ist vergleichbar mit einem Netzwerk in KOP/FUP. Erzeugt zusammenklappbare Abschnitte:

REGION Motorsteuerung
    // Start-/Stopp-Logik für Förderband
    IF startTaste AND NOT stoerung THEN
        motorLaeuft := TRUE;
    ELSIF stoppTaste OR stoerung THEN
        motorLaeuft := FALSE;
    END_IF;
END_REGION

REGION Temperaturueberwachung
    aktuelleTemp := INT_TO_REAL(rohTemp) * 100.0 / 27648.0;
    tempAlarm := aktuelleTemp > cMaxTemp;
END_REGION

Eine Funktion pro Baustein

Jeder FB oder FC sollte eine Aufgabe erfüllen. Wenn ein Baustein 10 REGIONs mit unzusammenhängender Funktionalität hat → aufteilen.

FBs für zustandsbehaftete Logik, FCs für zustandslose

Multi-Instanzen statt Einzel-Instanzen bevorzugen

Wenn ein FB innere FBs enthält (Timer, Zähler): als Multi-Instanzen in der statischen Sektion deklarieren statt separate Instanz-DBs. Hält alle Daten einer Maschinenfunktion in einem DB.

Kommentare

Was kommentieren

Immer kommentierenNie kommentieren
Zweck jedes Bausteins (Header)Offensichtliche Operationen
Warum ein bestimmter Wert gewählt wurdeJede einzelne Zeile
Nicht-offensichtliche Logik oder WorkaroundsAuskommentierter alter Code (löschen!)
Interface-Parameter (Input/Output Zweck)
REGION-Titel (sichtbar bei eingeklapptem Block)

Sprachregel

Siemens Style Guide: Keine Sprachmischung im Projekt. Wenn Projektsprache Englisch: alle Kommentare, Variablennamen und Bausteinnamen auf Englisch. Mischung erzeugt Verwirrung.

Häufige Fehler

1. Globaler Variablenzugriff in FBs/FCs

Siemens Guideline: "Tags werden nur lokal verwendet. Zugriff auf globale Daten ist in FCs und FBs nicht erlaubt." Alle Daten über die Bausteinschnittstelle übergeben.

// FALSCH: direkter Zugriff auf globalen DB
IF "DB_Global".startBefehl THEN ...

// RICHTIG: über Schnittstelle übergeben
IF #startBefehl THEN ...

2. FOR-Schleifenzähler manipulieren

Siemens verbietet ausdrücklich die Manipulation des Schleifenzählers im FOR-Schleifen-Körper. Das Verhalten ist undefiniert.

// FALSCH
FOR i := 0 TO 10 DO
    IF bedingung THEN i := i + 2; END_IF;   // UNDEFINIERT
END_FOR;

// RICHTIG: WHILE bei variabler Schrittweite
i := 0;
WHILE i <= 10 DO
    IF bedingung THEN i := i + 3;
    ELSE i := i + 1;
    END_IF;
END_WHILE;

3. Bit-Merker (M) statt globaler DBs

Auf S7-1500: Globale DBs mit optimiertem Zugriff sind schneller und sicherer als Merker. MW 10 überschreibt MB 10 und MB 11. Globale DB-Variablen sind unabhängig.

4. Fest kodierte Werte

// FALSCH
IF temperatur > 85.0 THEN alarm := TRUE; END_IF;

// RICHTIG
IF temperatur > cAlarmTempHoch THEN alarm := TRUE; END_IF;

Welche Sprache für welche Aufgabe?

AufgabeEmpfohlene SpracheBegründung
Standardbausteine, BerechnungenSCLBeste Lesbarkeit, kein Performance-Nachteil
Binäre Logik, einfache VerriegelungenKOP oder FUPEinfachere Online-Diagnose
Aufrufumgebungen (OB1-Struktur)KOP oder FUPVisuelle Baustein-Verschaltung
Sequentielle ProzesseGRAPHSpeziell für Schrittketten gebaut

Siemens Style Guide: "Die bevorzugte Programmiersprache für Standardbausteine ist SCL. Sie bietet die kompakteste Form und beste Lesbarkeit aller Programmiersprachen."


PLCcheck Pro prüft Ihre Code-Qualität

PLCcheck Pro identifiziert Namens-Inkonsistenzen, toten Code, fehlende Kommentare, fest kodierte Werte und globale Variablenzugriffe in Bausteinen — automatisch.

Code zur Qualitätsanalyse hochladen →

Teil der SCL-Referenz. Basiert auf Siemens Programming Guideline (81318674). Gepflegt von PLCcheck.ai. Keine Verbindung zu Siemens AG.

Verwandte Artikel

SPS-Code mit KI analysieren

PLCcheck Pro erklärt, dokumentiert, optimiert und migriert SPS-Code — automatisch.

PLCcheck Pro testen →
← Zurück zum Blog

Nicht verbunden mit Siemens AG. S5, S7, STEP 5, STEP 7 und TIA Portal sind Marken der Siemens AG.