PLCcheck

S5 → S7 Address Converter

Convert Siemens S5 PLC addresses to S7 equivalents with detailed explanations.

Examples

Conversion Result

Enter an S5 address to see the S7 equivalent.

Deutsche Mnemonik (E/A/M/Z)Englische Mnemonik (I/Q/M/C)S5-AdresseDB10 DW 5KONVERTIERUNGSERGEBNISS7 Deutsch (AWL)DB10.DBW 10S7 Englisch (STL)DB10.DBW 10S7 SCL"DB10".DBW_10Berechnung5 × 2 = 10⚠ DW-Adressen in S7 immer mit 2 multiplizieren (Byte-Adressierung)Beispiele: E 0.0 · MW 100 · DB10 DW5 · T 1
Konvertierung: DB10 DW 5 wird in S7 zu DB10.DBW 10 — Wort-Adresse × 2 = Byte-Adresse

Why this converter?

When migrating Siemens S5 to S7, address conversion is one of the biggest sources of errors. Inputs and outputs are simple — E 0.0 stays E 0.0. But the moment data blocks come into play, the logic flips: S5 uses word addressing (DW), S7 uses byte addressing (DBW). An S5 address like DB10 DW 5 becomes DB10.DBW 10 in S7 — the value doubles. Forget even a single address and you produce silent data corruption in a running process.

This converter translates every S5 address into its S7 equivalent — with an explanation of why the value changes, what warnings to watch for, and what the matching SCL access looks like. Supported are inputs (E/I), outputs (A/Q), memory (M/MB/MW/MD), data blocks (DB/DW/DL/DR/data bits), timers (T), counters (Z/C), and peripheral I/O (PE/PA, PI/PQ). Both German and international (English) mnemonics.

The DW × 2 rule — explained

This is the single most important rule in S5→S7 address conversion. Forget it and you produce errors that only surface during commissioning — or, in the worst case, in production.

In S5, each data word (DW) is addressed as a 16-bit unit: DW 0, DW 1, DW 2, DW 3. There are 16 bits (2 bytes) between DW 0 and DW 1. Physically, DW 0 occupies bytes 0–1, DW 1 occupies bytes 2–3, DW 2 occupies bytes 4–5 — and so on. S7 accesses the same bytes, but the address is the byte address itself. That's why you must always multiply the S5 word address by 2 to get the S7 byte address.

Physische Byte-Zuordnung im DatenbausteinS5 Wort-AdressePhysisches ByteS7 Byte-AdresseDW 001DBW 0DW 123DBW 2DW 245DBW 4DW 367DBW 6DW 489DBW 8DW 51011DBW 10DW 5 × 2 = DBW 10
Jedes S5-Datenwort belegt physisch 2 Bytes — die S7-Adresse ist die erste Byte-Adresse dieses Worts
S5 AddressS7 AddressCalculation
DB10 DW 0DB10.DBW 00 × 2 = 0
DB10 DW 1DB10.DBW 21 × 2 = 2
DB10 DW 5DB10.DBW 105 × 2 = 10
DB10 DW 50DB10.DBW 10050 × 2 = 100
DB10 DW 100DB10.DBW 200100 × 2 = 200

For individual data bits, an additional rule applies: bits 0–7 sit in the low byte (odd byte address = word × 2 + 1), bits 8–15 sit in the high byte (even byte address = word × 2). Example: S5 D 3.7 becomes S7 DBX 7.7 (low byte), S5 D 3.15 becomes DBX 6.7 (high byte, bit 15 − 8 = 7).

German vs. international mnemonics

Siemens PLCs support two instruction sets that differ in their address prefixes. German mnemonics are the standard in S5; S7 accepts both. When migrating, you must decide which one to use — and stay consistent within a single project.

CategoryDEENNote
InputEIBit and word addresses identical in both notations
OutputAQA was the default notation in S5
Memory (Merker)MMIdentical in both languages
TimerTTIdentical, but IEC timers recommended
CounterZCDifferent prefix
Peripheral InputPEPIPeripheral Input
Peripheral OutputPAPQPeripheral Output
Data BlockDBDBIdentical, but DW → DBW conversion required

Real-world conversion examples

Typical addresses from real S5 programs and their S7 equivalents, in order from simple to complex:

1. Simple I/O assignment

S5 STL
U E 0.0
=  A 4.0
S7 STL / SCL
A "Start_Button"   // E 0.0 / I 0.0
=  "Motor_ON"       // A 4.0 / Q 4.0

I/O addresses stay numerically identical. With English mnemonics: I 0.0 / Q 4.0.

2. Copy a memory word

S5 STL
L MW 100
T MW 200
S7 STL / SCL
L MW 100          // unchanged
T MW 200

Memory (M) addresses are numerically identical between S5 and S7. No conversion needed.

3. Read a data word — the classic trap

S5 STL
A  DB 10
L  DW 5
S7 STL / SCL
L  "Recipe".DBW 10   // was DW 5 → × 2 = 10

S5 address DW 5 becomes DBW 10 in S7. This is where most migration errors happen.

4. Set an individual data bit

S5 STL
A  DB 20
S  D 3.7
S7 STL / SCL
S  "Status".DBX 6.7  // DW 3 bit 7 → byte 6 (low), bit 7

Bits 0–7 sit in the low byte (odd byte = word×2+1). Bit 7 stays bit 7.

5. High-byte bit (bit 8–15)

S5 STL
A  DB 20
U  D 3.15
S7 STL / SCL
A  "Status".DBX 7.7  // DW 3 bit 15 → byte 7 (high), bit 7

Bits 8–15 sit in the high byte. The S7 bit number is bit minus 8: here 15 − 8 = 7.

6. Timer in S7 SCL

S5 STL
U  E 1.0
L  KT 030.2
SD T 1
S7 STL / SCL
"Timer_Delay"(
    IN := "StartCondition",
    PT := T#30s
);

Timer number stays the same, but the S5 timer instructions (SI/SE/SD/SS/SA) are replaced by IEC blocks (TP/TON/TOF). See the timer calculator for details.

Common mistakes in address migration

Five mistakes that show up over and over in S5→S7 migrations — and how to avoid them:

Mistake 1: DW addresses not doubled

The classic. DW 5 in S7 is NOT DBW 5, it's DBW 10. Forget this and S7 reads data from a completely different memory area — without any compiler warning. The plant appears to start up normally, but setpoints no longer match actual values.

Mistake 2: Byte addresses (DL/DR) mapped incorrectly

DL (data word left) is the high byte, DR (right) is the low byte. In S7 byte addressing: DL → even byte address (word × 2), DR → odd byte address (word × 2 + 1). Swap left and right and you write payload data to the wrong location.

Fix: Mnemonic: DL (left) = even byte address, DR (right) = odd byte address.

Mistake 3: Timer numbers match, but timer behavior doesn't

T 1 in S5 and T 1 in S7 share the same number, but on TIA Portal / S7-1500 the classic S5 timer instructions (SI/SE/SD/SS/SA) are no longer supported. Convert just the address and ignore the timer type, and you produce code that won't run.

Fix: Always migrate the timer type to IEC timers (TP/TON/TOF) along with the address.

Mistake 4: Forgetting BCD-vs-INT counter conversion

S5 counters store values BCD-encoded. S7 counters (including the legacy variant) use INT. During migration, counter values cached in data blocks must be reformatted — otherwise HMI/SCADA systems will display wrong values.

Fix: Use IEC counters (CTU/CTD/CTUD) — they work natively with INT.

Mistake 5: Overlooking memory-byte suffixes

S5 had the syntax FY (flag byte), FW (flag word), FD (flag double word). In S7 these become MB, MW, MD. A find-and-replace migration that ignores these suffixes will miss byte accesses entirely.

Fix: Always also search for FY/FW/FD in the source code and migrate them to MB/MW/MD.

Related tools and references

Quick Reference

S5S7 (DE)S7 (EN)Notes
E 0.0E 0.0I 0.0Identical
EW 0EW 0IW 0Identical
A 4.0A 4.0Q 4.0Identical
M 10.0M 10.0M 10.0Identical
F 0.0M 0.0M 0.0F → M
FY 10MB 10MB 10FY (byte) → MB
T 1T 1T 1Use IEC timers!
Z 3Z 3C 3Z → C (EN)
DB10 DW5DB10.DBW 10DB10.DBW 10DW × 2 = DBW
DB10 DL5DB10.DBB 10DB10.DBB 10High byte (×2)
DB10 DR5DB10.DBB 11DB10.DBB 11Low byte (×2+1)
DB10 D5.3DB10.DBX 11.3DB10.DBX 11.3Bit 0–7 → low byte
DB10 D5.8DB10.DBX 10.0DB10.DBX 10.0Bit 8–15 → high byte
PEW 128PEW 128PIW 128Identical

Frequently Asked Questions

How do I convert S5 DB addresses to S7?
S5 uses word addressing (DW 0, DW 1, DW 2…), while S7 uses byte addressing (DBW 0, DBW 2, DBW 4…). Multiply the S5 word address by 2 to get the S7 byte address: DW 5 → DBW 10. This applies to all DB access types (DW → DBW, DL → DBB even, DR → DBB odd).
What is the difference between DW and DBW addressing?
DW (Data Word) is the S5 word-based address within a data block. DBW (Data Block Word) is the S7 byte-based address. Since each word occupies 2 bytes, the conversion is: DBW address = DW address × 2. Example: DW 5 occupies bytes 10–11, so it becomes DBW 10.
How do S5 timers differ from S7 timers?
While the timer numbers (T 1, T 2, etc.) transfer directly, S5 and S7 legacy timers differ in retriggering behavior, time format (S5 uses BCD-coded S5TIME), and available timer types. For new S7 projects, always use IEC timers: TON (on-delay), TOF (off-delay), TP (pulse).
What happened to the F (Flag) addresses from S5?
In S5, memory bits were called 'Flags' with the prefix F (e.g., F 0.0, FW 100). In S7, these are called 'Merker' (Memory) with the prefix M. The addresses are numerically identical: F 0.0 = M 0.0, FW 100 = MW 100. Note: FY (flag byte) becomes MB.
Do I need to change I/O addresses when migrating S5 to S7?
Input and output addresses (E/A or I/Q) are numerically identical between S5 and S7. E 0.0 stays E 0.0 (or I 0.0 in English). However, you must verify the hardware configuration in TIA Portal matches your physical I/O layout, especially when using distributed I/O (ET 200).
Why does DW 5 become DBW 10 instead of DBW 5?
S5 uses word addressing (each DW is 16 bits), while S7 uses byte addressing (each DBW starts at a byte position). An S5 data word physically occupies 2 bytes. DW 0 sits on bytes 0–1, DW 1 on bytes 2–3, and DW 5 on bytes 10–11. The S7 DBW address is the byte address itself — that's why you always multiply the S5 word address by 2.
How do I convert individual data bits from S5 to S7?
For bit 0–7 (low byte): S7 address = DBX [word × 2 + 1].[bit]. For bit 8–15 (high byte): S7 address = DBX [word × 2].[bit − 8]. Example: S5 D 3.7 → S7 DBX 7.7 (low byte, bit 7). S5 D 3.15 → S7 DBX 6.7 (high byte, bit 15 − 8 = 7).
What is the difference between DL and DR?
DL stands for data word left (high byte), DR for data word right (low byte). DL maps to the even byte address (word × 2), DR to the odd one (word × 2 + 1). In S7 byte addressing: S5 DL 5 → S7 DBB 10, S5 DR 5 → S7 DBB 11.
Do I need to convert timer and counter addresses?
No, the numbers stay the same. T 1 in S5 is T 1 in S7. However, the timer instructions themselves (SI/SE/SD/SS/SA) are no longer supported on the S7-1500 — you must use IEC timers (TP/TON/TOF) instead. The same applies to counters: replace ZV/ZR with the IEC counters CTU/CTD/CTUD.
What about indirect addressing like DO FW or LIR?
These S5 instructions have no direct S7 equivalent. They must be restructured manually — typically using pointer variables, AR1/AR2 registers (S7 Classic), or ARRAY accesses in SCL (S7-1500). This is the most common reason why the Siemens S5/S7 converter cannot migrate code automatically.
Is there a difference between E and I in the mnemonics?
Only visually. E is the German notation for input, I is the international notation for input. Both address the same physical input. E 0.0 and I 0.0 are identical. In S5, E was the standard; in S7, both notations are valid. What matters is consistency within a single project.

Need to migrate an entire S5 program?

PLCcheck Pro converts complete S5 programs to S7 — all addresses, timers, counters, DB structures, and function blocks — with full documentation and I/O mapping.

Try PLCcheck Pro →

Not affiliated with Siemens AG. S5, S7, STEP 5, STEP 7, and TIA Portal are trademarks of Siemens AG.