PLCcheck

S5-AWL-Code lesen und verstehen: Praxisleitfaden

Lernen Sie Siemens S5 AWL-Code von Grund auf zu lesen. Akkumulator-Modell, Bitverknüpfungen, Laden/Transferieren, Timer, Zähler, Sprünge und Datenbausteine mit echten Codebeispielen und zeilenweiser Erklärung.

·16 Min. Lesezeit
S5AWLAnweisungslisteCode lesenverstehenVKEAkkumulatorSiemensLegacySPS

Read this article in English

S5-AWL-Code lesen und verstehen: Praxisleitfaden

S5 AWL (Anweisungsliste) ist eine maschinennahe Textsprache, in der jede Zeile eine Anweisung ist, die auf einem Einzelbit-Ergebnis (VKE) oder den 16-Bit-Akkumulatoren arbeitet. Um AWL-Code zu lesen, müssen Sie drei Dinge verstehen: wie das VKE Bitverknüpfungen verkettet, wie die zwei Akkumulatoren Wort-/Ganzzahl-Operationen verarbeiten, und wie Sprünge den Programmfluss steuern.

AWL ist die häufigste Programmiersprache in S5-Altanlagen. Selbst wenn das Programm ursprünglich in KOP (Kontaktplan) oder FUP (Funktionsplan) geschrieben wurde, ist das gespeicherte Format oft AWL.

Die zwei Kernkonzepte

Konzept 1: Das VKE (Verknüpfungsergebnis)

Das VKE ist ein einzelnes Bit, das das Ergebnis aller Bitverknüpfungen hält. Stellen Sie es sich als eine laufende WAHR/FALSCH-Antwort vor, die mit jeder Bit-Anweisung aktualisiert wird.

U     E 0.0        // VKE = Zustand von E 0.0 (WAHR wenn Eingang EIN)
U     E 0.1        // VKE = bisheriges VKE UND E 0.1
UN    M 10.0       // VKE = bisheriges VKE UND NICHT M 10.0
=     A 4.0        // VKE an Ausgang A 4.0 schreiben

Gelesen: "WENN E 0.0 UND E 0.1 UND NICHT M 10.0, DANN A 4.0 = EIN."

VKE-Regeln:

Konzept 2: Die Akkumulatoren (AKKU1 und AKKU2)

Die S5-CPU hat zwei 16-Bit-Register. Alle Wort-Operationen (Laden, Transferieren, Rechnen, Vergleichen) nutzen diese zwei Register.

L     MW 10       // MW10 in AKKU1 laden (bisheriger AKKU1 rutscht nach AKKU2)
L     MW 12       // MW12 in AKKU1 laden (MW10 ist jetzt in AKKU2)
+F                // AKKU1 = AKKU2 + AKKU1 = MW10 + MW12
T     MW 20       // AKKU1 nach MW20 transferieren

Kernregel: Jedes L schiebt den bisherigen AKKU1-Inhalt nach AKKU2 und lädt den neuen Wert in AKKU1. So kommen zwei Operanden in die zwei Akkumulatoren für Rechnung oder Vergleich.

Bitlogik lesen: Die Selbsthaltung

Das häufigste Muster in jedem S5-Programm:

      U     E 0.0        // Starttaster gedrückt?
      S     M 10.0       // Ja → Merker setzen (einrasten)
      U     E 0.1        // Stopptaster gedrückt?
      R     M 10.0       // Ja → Merker rücksetzen (ausrasten)
      U     M 10.0       // Merker gesetzt?
      =     A 4.0        // Ja → Motor-Ausgang einschalten

Klartext: "Starttaster (E 0.0) drücken schaltet den Motor (A 4.0) ein. Er bleibt an, bis der Stopptaster (E 0.1) gedrückt wird." Das ist das SPS-Äquivalent einer Relais-Selbsthalteschaltung.

Timer-Anweisungen lesen

      U     E 0.0        // Startbedingung
      L     KT 030.2     // Timer-Wert laden: 30 × 1s = 30 Sekunden
      SD    T 1           // Einschaltverzögerung T1 starten
      U     T 1           // Timer 1 abgelaufen?
      =     A 4.0        // Ja → Ausgang einschalten

So liest man KT 030.2: Die Zahl vor dem Punkt (030) ist der Wert. Die Zahl nach dem Punkt (2) ist die Zeitbasis. Zeitbasen: 0 = 10ms, 1 = 100ms, 2 = 1s, 3 = 10s. Also KT 030.2 = 30 × 1s = 30 Sekunden.

Timer-Typen:

Nutzen Sie unseren S5-Timer-Rechner zum Entschlüsseln jedes KT-Werts.

Sprungbefehle lesen

      U     E 0.0        // Eingang prüfen
      SPB   M001         // WENN WAHR → zu Marke M001 springen
      L     KF +0        // (wird ausgeführt wenn E 0.0 FALSCH)
      T     MW 20        // MW20 = 0
      SPA   DONE         // Über den WAHR-Zweig springen
M001: L     KF +100      // (wird ausgeführt wenn E 0.0 WAHR)
      T     MW 20        // MW20 = 100
DONE: NOP   0            // Programm weiter

Sprungarten:

Lesetipp: SPBN SKIP gefolgt von Code und dann SKIP: NOP 0 bedeutet: "Führe den Code zwischen SPBN und SKIP nur aus wenn die Bedingung WAHR ist."

Datenbaustein-Zugriff lesen

      A     DB 10        // Datenbaustein 10 aufschlagen
      L     DW 5         // Datenwort 5 aus DB10 laden
      T     MW 20        // In MW20 speichern

A DB (Aufschlagen) öffnet einen Datenbaustein. Er bleibt offen bis ein anderer A DB oder C DB kommt. Alle folgenden DW-Zugriffe beziehen sich auf den aktuell geöffneten DB.

Häufige Falle: Wenn Sie L DW 5 ohne vorhergehendes A DB im selben Netzwerk sehen, schauen Sie rückwärts — der DB wurde früher geöffnet, möglicherweise in einem vorherigen Netzwerk.

Konstantenformate lesen

FormatBedeutungBeispielWert
KFFestkomma-IntegerKF +100Ganzzahl 100
KHHexadezimalKH 00FFHex 00FF = 255
KMBitmuster (16 Bit)KM 1111 0000 1111 0000Binäre Maske
KCZeichen (2 Zeichen)KC ABASCII "AB"
KTZeitwertKT 030.230 Sekunden
KZZählwertKZ 100Zählerstand 100
KYZwei BytesKY 10,20Byte1=10, Byte2=20

Praxisbeispiel: Ein komplettes Netzwerk lesen

      U     E 1.0        // Näherungssensor: Teil vorhanden
      FP    M 20.0       // Steigende Flanke erkennen (Teil gerade angekommen)
      SPB   M010         // WENN Flanke erkannt → zu M010 springen
      SPA   M020         // SONST → zu M020 springen
M010: L     Z 1          // Zähler Z1 laden
      L     KF +1        // Konstante 1 laden
      +F                 // Addieren: Zähler + 1
      T     MW 100       // Neuen Zählerstand speichern
      L     MW 100       // Zählerstand neu laden
      L     KZ 050       // Sollwert 50 laden (Charge voll)
      !=F                // Vergleich: Zählerstand == 50?
      S     M 30.0       // Ja → "Charge fertig"-Merker setzen
M020: NOP   0            // Weiter

Klartext: "Jedes Mal wenn ein neues Teil ankommt (steigende Flanke an E 1.0), Zähler in MW 100 um 1 erhöhen. Bei 50 Teilen den Charge-Fertig-Merker M 30.0 setzen."

Kurzreferenz: Häufigste S5-Anweisungen

AnweisungWas sie tut
U / UNUND / UND NICHT (Bitverknüpfung)
O / ONODER / ODER NICHT (Bitverknüpfung)
S / RSetzen / Rücksetzen (Selbsthaltung)
=VKE auf Operand zuweisen
L / TIn AKKU1 laden / AKKU1 an Adresse transferieren
+F / -FGanzzahl addieren / subtrahieren
!=F / >F / <FVergleich gleich / größer / kleiner
SPB / SPBNSprung wenn wahr / wenn nicht wahr
SPAUnbedingter Sprung
SD / SA / SI / SE / SSTimer-Typen
ZV / ZRVorwärts / Rückwärts zählen
A DBDatenbaustein aufschlagen
BEBausteinende

PLCcheck Pro erklärt jeden AWL-Code verständlich. Laden Sie Ihr S5-Programm hoch und erhalten Sie eine vollständige Zeile-für-Zeile-Erklärung. Jetzt testen →

Häufig gestellte Fragen

Was bedeutet VKE in AWL?

VKE = Verknüpfungsergebnis. Ein einzelnes Bit, das das laufende Ergebnis aller Bitverknüpfungen (U, O, UN, ON) hält. Es ist das AWL-Äquivalent zur "Stromschiene" im Kontaktplan.

Warum hat AWL zwei Akkumulatoren?

Weil Rechen- und Vergleichsoperationen zwei Operanden brauchen. Das erste L lädt einen Wert in AKKU1. Das zweite L schiebt den ersten Wert nach AKKU2 und lädt den neuen in AKKU1. Jetzt stehen beide Operanden für +F, !=F usw. bereit.

Was ist der Unterschied zwischen SPB und SPBN?

SPB (Sprung bedingt) springt WENN das VKE WAHR ist (=1). SPBN (Sprung bedingt NICHT) springt WENN das VKE FALSCH ist (=0).

Woher weiß ich, welcher Datenbaustein geöffnet ist?

Schauen Sie im Code rückwärts nach der letzten A DB- oder C DB-Anweisung. Der DB bleibt offen bis ein anderer geöffnet wird.


Gepflegt von PLCcheck.ai. Letztes Update: März 2026. 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.