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.
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).
| Empfehlung | Beispiel | Vermeiden |
|---|---|---|
| lowerCamelCase | foerderbandGeschw | Foerderband_Geschw, FOERDERBAND_GESCHW |
| Max. 24 Zeichen | motorTempAlarm | motorTemperaturAlarmHochNiveau |
| Beschreibende Namen | fuellventilOffen | M10_0, a, x1 |
Präfix-Konvention (Siemens Style Guide)
| Präfix | Bedeutung | Beispiel |
|---|---|---|
| (kein) | Standardvariable | foerderbandGeschw |
inst / Inst | Instanz | instMotorSteuerung |
stat | Statische Variable | statLetzterWert |
temp | Temporäre Variable | tempBerechnungsErg |
c / C | Konstante | cMaxGeschwindigkeit |
Baustein-Benennung
| Bausteintyp | Konvention | Beispiel |
|---|---|---|
| FB | Beschreibt die Funktion | FB_MotorSteuerung |
| FC | Beschreibt die Berechnung | FC_AnalogSkalierung |
| DB (global) | Beschreibt den Dateninhalt | DB_RezeptParameter |
| OB | Siemens-Standardnamen beibehalten | Main [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
- FB: Hat Instanz-DB der Werte zwischen Aufrufen speichert. Für Motoren, Ventile, Sequenzen.
- FC: Kein Instanz-DB, keine gespeicherten Werte. Für Berechnungen, Konvertierungen, Skalierung.
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 kommentieren | Nie kommentieren |
|---|---|
| Zweck jedes Bausteins (Header) | Offensichtliche Operationen |
| Warum ein bestimmter Wert gewählt wurde | Jede einzelne Zeile |
| Nicht-offensichtliche Logik oder Workarounds | Auskommentierter 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?
| Aufgabe | Empfohlene Sprache | Begründung |
|---|---|---|
| Standardbausteine, Berechnungen | SCL | Beste Lesbarkeit, kein Performance-Nachteil |
| Binäre Logik, einfache Verriegelungen | KOP oder FUP | Einfachere Online-Diagnose |
| Aufrufumgebungen (OB1-Struktur) | KOP oder FUP | Visuelle Baustein-Verschaltung |
| Sequentielle Prozesse | GRAPH | Speziell 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
S7-300 auf S7-1500 migrieren: Kompletter Leitfaden
Schritt-für-Schritt-Anleitung zur Migration von Siemens S7-300 auf S7-1500 mit TIA Portal. Hardware-Zuordnung, Migrations-Assistent, optimierte Datenbausteine, AWL→SCL-Konvertierung und typische Fallstricke.
15 Min. Lesezeit
migration-guideAWL-Abkündigung bei S7-1500: Warum SCL Pflicht wird
Warum AWL auf S7-1500 nur im Emulationsmodus läuft, was das für Performance und Wartbarkeit bedeutet, und wie Sie Ihren AWL-Code nach SCL konvertieren.
10 Min. Lesezeit
migration-guideS5 auf S7 migrieren: Der komplette Leitfaden (2026)
Schritt-für-Schritt-Anleitung für die Migration von Siemens S5 SPS-Programmen auf S7-1500. AWL→SCL-Konvertierung, Timer-Umrechnung, Adressumsetzung und Hardware-Auswahl.
18 Min. Lesezeit
SPS-Code mit KI analysieren
PLCcheck Pro erklärt, dokumentiert, optimiert und migriert SPS-Code — automatisch.
PLCcheck Pro testen →Nicht verbunden mit Siemens AG. S5, S7, STEP 5, STEP 7 und TIA Portal sind Marken der Siemens AG.