S7-300 to S7-1500 Migration: Complete Guide
Step-by-step guide for migrating Siemens S7-300 PLC programs to S7-1500 using TIA Portal. Covers hardware mapping, software migration wizard, optimized data blocks, AWL→SCL conversion, and common pitfalls.
S7-300 to S7-1500 Migration: Complete Guide
Migrating from S7-300 to S7-1500 requires two parallel transitions: hardware (S7-300 rack and I/O → S7-1500 with ET200SP/MP) and software (STEP 7 V5.x → TIA Portal). The TIA Portal migration wizard handles approximately 90% of the software conversion automatically. The remaining 10% — optimized data blocks, AWL/STL code on S7-1500, hardware-specific modules, and communication blocks — requires manual work. This guide covers both parts.
Why Migrate Now?
The S7-300 is entering its end-of-life phase. The PM410 product family (267+ assemblies) had its production stop on 01.10.2025. Siemens guarantees spare parts for approximately 10 years after production end, meaning S7-300 spare parts from Siemens will become unavailable around 2033–2035.
The S7-1500 is the designated successor. It offers faster processing (up to 10× compared to equivalent S7-300 CPUs), larger memory (data blocks up to 10 MB vs. 64 KB), integrated PROFINET, a built-in web server, and integrated security features.
For the full end-of-life analysis, see our S7-300 End-of-Life planning guide.
Step 1: Inventory Your S7-300 System
Before starting any migration, document your current system completely:
Hardware inventory:
- CPU model and firmware version (e.g., CPU 315-2 PN/DP, FW V3.3)
- All signal modules with order numbers (DI, DQ, AI, AQ)
- Communication modules (CP 343-1, CP 342-5)
- Function modules (FM 350, FM 355)
- Power supply model
- Number of racks and rack configuration
Software inventory:
- STEP 7 project version
- Number of blocks (OB, FB, FC, DB, SFB, SFC)
- Programming languages used per block (AWL/STL, KOP/LAD, FUP/FBD, SCL)
- System functions used (SFC/SFB numbers)
- Communication blocks (BSEND/BRCV, PUT/GET, AG_SEND/AG_RECV)
- HMI connections (ProTool, WinCC flexible, WinCC)
I/O mapping:
- Complete I/O address list
- Which addresses are used in the program
- Peripheral addresses (PEW/PAW)
Step 2: Select S7-1500 Hardware
CPU Selection
| S7-300 CPU | Typical S7-1500 Replacement | Notes |
|---|---|---|
| CPU 312 / 314 | CPU 1511-1 PN | Small applications |
| CPU 315-2 PN/DP | CPU 1513-1 PN | Medium applications |
| CPU 317-2 PN/DP | CPU 1515-2 PN | Large applications |
| CPU 319-3 PN/DP | CPU 1516-3 PN/DP | Very large applications |
| CPU 315F-2 PN/DP | CPU 1513F-1 PN | Safety (F-CPU) |
| CPU 317F-2 PN/DP | CPU 1515F-2 PN | Safety (F-CPU) |
Important: Always select an S7-1500 CPU with equal or greater work memory. The S7-1500 typically needs more memory than the equivalent S7-300 due to optimized data blocks storing additional type information.
I/O Modules
S7-300 signal modules (SM 321, SM 322, SM 331, SM 332) are not compatible with S7-1500. You have two options:
Option A: Centralized I/O replacement. Replace S7-300 signal modules with S7-1500 signal modules (DI 32×24VDC, DQ 32×24VDC, AI 8×U/I, etc.) in the S7-1500 rack. This requires re-wiring.
Option B: Distributed I/O with ET200SP/MP. Keep the I/O in the field cabinet and connect via PROFINET to the S7-1500 CPU. ET200SP is the standard choice for most applications. This option can reduce re-wiring significantly.
Adapter cables: Siemens offers adapter cables (6ES7922-5 series) that connect S7-300 front connectors to S7-1500/ET200 modules, minimizing re-wiring effort.
Communication
| S7-300 Module | S7-1500 Replacement |
|---|---|
| CP 343-1 (Ethernet) | Integrated in CPU (PROFINET) |
| CP 343-1 Lean | Integrated in CPU |
| CP 342-5 (PROFIBUS) | CP 1542-5 or CM 1542-5 |
| CP 340/341 (Serial) | CM 1241 (RS232/RS422/RS485) |
Step 3: Software Migration with TIA Portal
Prerequisites
- STEP 7 V5.5 or V5.6 (to archive the project)
- TIA Portal V18 or later (recommended for best migration support)
- TIA Portal STEP 7 Professional license
Migration Procedure
3.1: Archive the S7-300 project. In SIMATIC Manager: File → Archive. This creates a .zip archive of the complete project. This is your input for TIA Portal.
3.2: Import into TIA Portal. In TIA Portal: Project → Migrate project. Select the archived .zip file.
3.3: Hardware configuration. The migration wizard offers to include or exclude hardware configuration. Recommendation: Exclude hardware and configure manually. S7-300 hardware modules rarely have 1:1 equivalents in S7-1500, and including them creates many warnings that need manual resolution anyway.
3.4: CPU replacement. After import, the CPU appears as "unspecified" (white icon). Right-click → "Migrate to S7-1500" → Select your target CPU from the catalog.
3.5: Add signal modules manually. Add S7-1500 or ET200SP signal modules matching your I/O requirements. Adjust I/O addresses to match the original S7-300 addressing if you want to minimize program changes.
3.6: Compile and resolve errors. The first compilation will show errors and warnings. Common issues:
| Error Type | Cause | Solution |
|---|---|---|
| Unspecified CPU | CPU not yet selected | Select target S7-1500 CPU |
| Missing signal modules | Hardware not configured | Add modules manually |
| Data type mismatch | Optimized vs. standard DB | Set DB to "Standard" access (see below) |
| SFB/SFC not available | S7-300-specific system functions | Replace with S7-1500 equivalents |
| AWL/STL warnings | AWL runs in emulation on S7-1500 | Convert to SCL (recommended) |
Step 4: Handle Optimized Data Blocks
This is the single biggest difference between S7-300 and S7-1500 programming.
S7-300 (Standard access): Data block elements are accessed by absolute address (DB10.DBW0, DB10.DBD4). The memory layout is fixed — you control exactly where each variable sits.
S7-1500 (Optimized access, default): Data block elements are accessed by name (DB10.Temperature, DB10.Pressure). The memory layout is managed by the system. You cannot use absolute addresses.
Why this matters: If your S7-300 program uses absolute DB addressing (which most do), you must either:
Option A (Quick): Set all DBs to "Standard" access. In TIA Portal: Open DB properties → Attributes → Uncheck "Optimized block access." This preserves the S7-300 behavior. The program works without changes, but you lose the performance benefits of optimized access.
Option B (Better, more work): Convert to symbolic access. Replace all absolute DB addresses (DBW0, DBD4) with symbolic names (Motor_Speed, Setpoint_Temperature). This is more work upfront but makes the code maintainable and enables optimized access.
Recommendation: For the initial migration, use Option A to get the system running quickly. Convert to symbolic access gradually during subsequent maintenance windows.
Step 5: Convert AWL/STL to SCL
AWL (Anweisungsliste / Statement List) runs on S7-1500 only in emulation mode. It works, but:
- Performance is reduced compared to native SCL
- Siemens may remove AWL support in future S7-1500 firmware versions
- New S7-1500 features are only available in SCL, KOP, and FUP
For a detailed AWL→SCL conversion guide, see our AWL to SCL conversion guide.
Practical approach: Convert AWL blocks to SCL during the migration if time allows. If not, leave them in AWL emulation mode for now and convert during future maintenance.
Step 6: Test and Commission
Simulation first: Use PLCSIM Advanced to simulate the S7-1500 program before deploying to hardware. This catches most logic errors without risking production equipment.
Side-by-side comparison: Compare the number of blocks, network count per block, and instruction count between the original STEP 7 project and the migrated TIA Portal project. Discrepancies indicate migration errors.
I/O test: After hardware installation, test every input and output systematically. Verify that physical signals match the expected PLC addresses.
Staged commissioning: Start with manual mode, verify basic functions, then enable automatic sequences one at a time.
Common Pitfalls
1. I/O address shifts. If S7-1500 modules are inserted in different slots than the S7-300 modules, I/O addresses change. Always verify and adjust the hardware configuration to preserve original addresses where possible.
2. Communication block changes. S7-300 uses AG_SEND/AG_RECV for Ethernet communication. S7-1500 uses TSEND_C/TRCV_C. These must be replaced manually.
3. System function differences. Not all S7-300 SFBs/SFCs exist on S7-1500. Common replacements: SFC 14/15 (DPRD_DAT/DPWR_DAT) → DPRD_DAT/DPWR_DAT (same name, different implementation). SFB 52/53 (BSEND/BRCV) → BSEND/BRCV (compatible but check parameters).
4. HMI migration. If you use ProTool or WinCC flexible, you must also migrate the HMI project to WinCC (TIA Portal). This is a separate migration step with its own set of issues.
5. Safety programs. F-CPU programs require additional validation after migration. Safety function blocks must be recompiled and the safety program re-accepted.
How PLCcheck Pro Helps
PLCcheck Pro accelerates the S7-300→S7-1500 migration:
- Code analysis: Identify all AWL blocks that need SCL conversion
- DB access analysis: Find all absolute DB accesses that need symbolic conversion
- Communication block inventory: List all AG_SEND/BSEND/PUT/GET calls
- Documentation: Generate block documentation for the migrated program
Frequently Asked Questions
Can I reuse S7-300 I/O modules with S7-1500?
No. S7-300 and S7-1500 use different backplane bus systems. The signal modules are not interchangeable. You must replace with S7-1500 modules or use ET200SP/MP distributed I/O. Siemens adapter cables (6ES7922-5 series) can reduce re-wiring effort.
Does the TIA Portal migration wizard handle everything automatically?
Approximately 90% of the software migration is automatic. Hardware configuration, optimized data blocks, communication blocks, and AWL code on S7-1500 typically require manual intervention.
Can I keep my AWL/STL code on S7-1500?
Yes, AWL runs in emulation mode on S7-1500. But performance is reduced, and Siemens recommends converting to SCL. The S7-1200 does not support AWL at all, so conversion is the long-term direction.
How long does a typical S7-300→S7-1500 migration take?
Small systems (1 CPU, <50 blocks): 1–2 weeks. Medium systems (1–2 CPUs, 50–200 blocks): 3–6 weeks. Large systems (3+ CPUs, 200+ blocks, safety): 2–6 months.
Maintained by PLCcheck.ai. Last update: March 2026. Not affiliated with Siemens AG.
Related Articles
STEP 7 Classic to TIA Portal: What Changes for the Programmer
A practical guide for experienced STEP 7 Classic programmers moving to TIA Portal. Covers the 15 most important differences in daily workflow: editor, tags, DBs, compilation, online access, debugging, and gotchas.
12 min read
migration-guideSTL/AWL Deprecation in S7-1500: Why You Must Convert to SCL
Why AWL/STL runs only in emulation mode on S7-1500, what that means for performance and maintainability, and how to convert your STL code to SCL. Includes conversion strategy and code examples.
10 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
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.