PLCcheck

S5→S7 Zähler-Formate: BCD vs. INT — Konvertierungsreferenz

Referenz zum Verständnis und zur Konvertierung zwischen S5/S7-Legacy-Zähler-BCD-Format und IEC-Zähler-INT-Format. BCD-Struktur, Konvertierungsbefehle (BTI, ITB, BTD, DTB) und Migrationsfallen.

·8 Min. Lesezeit
S5S7ZählerBCDINTBTIITBKonvertierungCTUMigrationFormat

Read this article in English

S5→S7 Zähler-Formate: BCD vs. INT — Konvertierungsreferenz

S5- und S7-Legacy-Zähler speichern ihre Werte im BCD-Format (Binary-Coded Decimal). IEC-Zähler (CTU, CTD, CTUD) speichern Werte als INT. Die Verwechslung dieser Formate ist einer der häufigsten Migrationsfehler — das Programm kompiliert fehlerfrei, liefert aber für Zählwerte über 9 falsche Ergebnisse.

Wie S5/S7-Legacy-Zähler Werte speichern

Beim Laden eines Zählwerts in AWL (L Z n) legt die CPU den Wert in zwei Formaten im Akkumulator 1 ab:

In KOP/FUP haben Zähler zwei Ausgänge:

BCD-Format-Struktur (16-Bit-Zählwort)

Bit:  15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0
       0  0  0  0 | Hunderter | Zehner  | Einer
                   |  (BCD)    | (BCD)   | (BCD)

Bereich: 0 bis 999 (drei BCD-Ziffern, je 0–9)

Die Falle: Für Werte 0–9 sind BCD und binär identisch. Ab 10 unterscheiden sie sich:

ZählwertBCD (hex)Binär (hex)Binär (dezimal)
50x00050x00055
100x00100x000A10
990x00990x006399
1000x01000x0064100
9990x09990x03E7999

Wenn Sie einen BCD-Zählwert laden und ohne Konvertierung Integer-Arithmetik durchführen, ist das Ergebnis für Werte ≥ 10 falsch. BCD 0x0010 ist nicht dezimal 16 — es repräsentiert den Dezimalwert 10.

Konvertierungsbefehle (AWL)

BCD → Integer

BefehlVon → NachBereichBeschreibung
BTIBCD Wort → INT-999 bis +9993-stelliges BCD in AKKU 1 → 16-Bit-Integer
BTDBCD DWort → DINT-9999999 bis +99999997-stelliges BCD → 32-Bit-Integer

Beispiel:

L  Z 1         // Zähler 1 laden (BCD im AKKU 1)
BTI            // BCD nach INT konvertieren
T  MW 20       // Als Integer speichern — jetzt sicher für Arithmetik

Integer → BCD

BefehlVon → NachBereich
ITBINT → BCD Wort-999 bis +999
DTBDINT → BCD DWort-9999999 bis +9999999

Überlauf: Überschreitet der Wert den BCD-Bereich (>999 für BTI/ITB), werden OV und OS gesetzt.

SCL-Konvertierungsfunktionen

// BCD Wort nach INT
intWert := BCD_TO_INT(bcdWort);

// INT nach BCD Wort
bcdWort := INT_TO_BCD(intWert);

IEC-Zähler: Kein BCD — Immer INT

IEC-Zähler (CTU, CTD, CTUD) auf S7-1200/1500 speichern den Zählwert als INT (oder DINT auf S7-1500). Keine BCD-Darstellung. Der CV-Ausgang ist ein reiner Integer.

ZählertypCV-DatentypBereich
S5 Legacy (Z n)BCD (3-stellig)0–999
S7 Legacy (S_CU, S_CD)BCD + binär0–999
IEC (CTU, CTD, CTUD)INT-32768 bis +32767
IEC auf S7-1500DINT möglich±2.147.483.647

Migrations-Checkliste: Zählerformat

  1. BTI/ITB-Befehle entfernen — IEC-Zähler geben INT direkt aus
  2. Vergleichslogik anpassen — S5 U Z n testet CV > 0; IEC CTU.Q testet CV ≥ PV
  3. Arithmetik prüfen — wenn das alte Programm ohne BTI rechnete, war es für Werte ≥ 10 möglicherweise still falsch
  4. HMI/SCADA-Schnittstellen aktualisieren — Datentyp von BCD auf INT ändern

Häufig gestellte Fragen

Warum zeigt mein Zähler nur über 9 falsche Werte?

Wahrscheinlich Integer-Arithmetik auf BCD-Wert ohne Konvertierung. BCD und binär sind für 0–9 identisch. BTI-Befehl nach dem Laden des Zählers einfügen.

Kann ich Legacy-Zähler (S_CU, S_CD) auf S7-1500 verwenden?

Ja, im Emulationsmodus. Siemens empfiehlt IEC-Zähler (CTU, CTD, CTUD) für jede Neuentwicklung.


Zählercode automatisch konvertieren

PLCcheck Pro erkennt Legacy-Zähler-Zugriffsmuster, identifiziert fehlende BCD-Konvertierungen und erzeugt korrekte IEC-Zähler-Äquivalente.

Code zur Zähleranalyse hochladen →

Teil der Adress-Mapping-Referenz. 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.