S5 Absolute Addressing vs. S7 Symbolic Addressing
Why S5 uses absolute addresses (E 0.0, MW 10, DB10.DW5) and S7 prefers symbolic names (Start_Button, Temperature, Motor.Speed). Migration strategy for converting absolute to symbolic.
S5 Absolute Addressing vs. S7 Symbolic Addressing
S5 programs use absolute addresses — every operand is identified by its memory type and numeric address (E 0.0, A 4.0, MW 10, DB10.DW5). S7 programs can use both absolute and symbolic addresses, but TIA Portal is designed for symbolic programming — every address gets a name, and the program references names instead of numbers. Understanding this difference is essential for migration.
S5: Absolute Addressing
In S5, the program works exclusively with hardware addresses:
U E 0.0 // What is E 0.0? Only the symbol table or the wiring diagram knows.
U E 0.1 // Another mystery input.
= A 4.0 // And an output with no context.
The symbol table (Zuordnungsliste) assigns names to addresses, but these names are comments — the compiled program only contains the numeric addresses. If the symbol table is lost (which happens frequently with legacy systems), the program becomes very difficult to understand.
S5 Symbol Table example:
E 0.0 "Start_Button" Start pushbutton station 1
E 0.1 "Safety_Door" Safety door contact (NC)
A 4.0 "Motor_1" Conveyor motor 1
MW 10 "Speed_Setpoint" Speed setpoint from HMI
S7: Symbolic Addressing
In S7 (especially TIA Portal), the program is written with symbolic names:
IF "Start_Button" AND "Safety_Door" THEN
"Motor_1" := TRUE;
END_IF;
The symbolic names are part of the compiled program — they cannot be lost separately. The PLC tag table (successor to the S5 symbol table) is always synchronized with the program.
S7 PLC Tag Table:
Start_Button BOOL %I0.0 Start pushbutton station 1
Safety_Door BOOL %I0.1 Safety door contact (NC)
Motor_1 BOOL %Q4.0 Conveyor motor 1
Speed_Setpoint INT %MW10 Speed setpoint from HMI
Why This Matters for Migration
1. Creating a Symbol Table from Scratch
Many S5 programs have no symbol table, or the symbol table is incomplete. Before migration, you should create or complete one:
- Use the I/O list from the wiring diagrams to assign names to every input and output
- Name markers based on their function (determined by reading the code)
- Name timer and counter operands
- Name data block words
This is the most time-consuming part of migration — but also the most valuable. A properly named program is 10× easier to maintain than one with absolute addresses.
2. TIA Portal Expects Symbolic Access
TIA Portal strongly prefers symbolic programming. While you can still use absolute addresses in TIA Portal (especially in migrated code), the system is designed for symbolic access:
- Optimized data blocks require symbolic access (no absolute DB addresses)
- The compiler generates better code for symbolic access
- Diagnostics and monitoring display symbolic names
- Future Siemens features will increasingly require symbolic programming
3. The Converter Keeps Absolute Addresses
The Siemens S5→S7 converter preserves the absolute addresses from S5. It does not convert to symbolic. The result is S7 code that looks like S5 code — technically correct but hard to maintain.
Post-conversion improvement: After the basic migration works, gradually replace absolute addresses with symbolic names. Start with I/O addresses (most visible), then markers, then data block elements.
Practical Migration Strategy
Phase 1 (During Migration):
- Create a PLC tag table with meaningful names for all I/O addresses
- Let the converter keep absolute addresses in the program code
- Verify the program works with absolute addresses
Phase 2 (Post-Migration, Gradual):
- Replace absolute I/O addresses with PLC tag names
- Replace absolute marker addresses with named variables in global DBs
- Convert data block access from absolute (DBW10) to symbolic (Motor.Speed)
- Move from markers (M bits/bytes/words) to structured global data blocks
Phase 3 (Long-Term):
- Enable optimized data block access
- Eliminate all remaining absolute addresses
- Full symbolic programming
S5 "F" Notation
Some older S5 programs use the F notation (Flags) instead of M (Merker):
| S5 (F notation) | S5 (M notation) | S7 |
|---|---|---|
| F 0.0 | M 0.0 | %M0.0 or symbolic name |
| FW 0 | MW 0 | %MW0 or symbolic name |
| FY 0 | MB 0 | %MB0 or symbolic name |
The F notation does not exist in S7. Replace all F references with M (or better, with symbolic names).
Frequently Asked Questions
Must I convert all addresses to symbolic before the migration works?
No. The migrated program works with absolute addresses. Symbolic conversion is a quality improvement that can happen gradually after the system is running.
What naming convention should I use?
There is no standard, but common conventions include: inputs prefixed with "i" or "Input_", outputs with "o" or "Output_", markers with "m" or no prefix. Use underscores, not spaces. Be descriptive: "Conveyor_1_Motor_Running" is better than "M100_5".
Maintained by PLCcheck.ai. Last update: March 2026. Not affiliated with Siemens AG.
Related Articles
Optimized vs. Standard Data Blocks in S7-1500: What Every Migrator Must Know
Complete guide to optimized vs. standard (non-optimized) data blocks in S7-1500 and S7-1200. Architecture, performance, migration impact, PUT/GET compatibility, OPC UA, and when to use which.
12 min read
migration-guideS5 to S7 Migration: The Complete Guide (2026)
Step-by-step guide for migrating Siemens S5 PLC programs to S7-1500. Covers AWL→SCL conversion, timer mapping, address translation, and hardware selection.
18 min read
migration-guideHandling S5 Special Function Blocks (OB, SB) in S7
How to migrate S5 organization blocks (OB) and step blocks (SB) to S7. Covers OB number mapping, startup OBs, interrupt OBs, and SB conversion strategies.
12 min read
Analyze your PLC code with AI
PLCcheck Pro explains, documents, optimizes, and migrates PLC code — automatically.
Try PLCcheck Pro →Not affiliated with Siemens AG. S5, S7, STEP 5, STEP 7, and TIA Portal are trademarks of Siemens AG.