S7-300 CPU 315-2AF03-0AB0 Upload: Recovering the Symbol Table
When a STEP 7 project is uploaded from a SIMATIC S7-300 CPU 315-2AF03-0AB0, the resulting offline project on the programming device (PG/PC) is missing the symbol table, the symbol comments, the network titles, and the block/OB comments. The program logic is fully recovered, but the symbolic names referenced inside the blocks (e.g. I 0.0 "Motor_Start") are reduced to absolute addresses (e.g. I 0.0). For a maintenance engineer who has to keep the machine running, the uploaded program is functionally complete but practically unreadable.
This reference explains the technical reason for the missing symbols, the procedure to upload a 6ES7315-2AF03-0AB0 station with STEP 7 V5.x, and the field-proven methods to reconstruct the symbol table, including the use of an archived copy on the MMC (Micro Memory Card) per Siemens Support entry 15399111.
1. Problem Statement
Symptoms observed after PLC → Upload Station to PG on a 6ES7315-2AF03-0AB0:
- Blocks (OB, FB, FC, DB, SFB, SFC, SDB) are present in the offline S7 program.
- The Symbols editor shows no rows or only system symbols; user-defined symbols are gone.
- Block and network comments are empty.
- Cross-references (Options → Reference Data → Display) work because they are generated from the absolute addresses in the loaded blocks, but every entry appears as
I,Q,M,DBrather than as the operator-friendly name originally authored. - The PCS 7 / WinCC tag references that were mapped to absolute addresses continue to work, but any external documentation tied to the original symbol table is now broken.
2. Root Cause: Why Symbols Are Missing After Upload
The S7-300 stores only the compiled machine code and configuration data on the MMC. The following items are kept in the engineering project (the .S7P file on the PG/PC) and are never transferred to the CPU:
| Item | Stored in CPU / MMC? | Stored in STEP 7 project? |
|---|---|---|
| Compiled block code (OB, FB, FC, DB, SFB, SFC) | Yes | Yes (recovered on upload) |
| System data (SDB) - HW Config, net parameters, PID tuning | Yes | Partially (HW Config reconstructed on upload) |
| Symbol table (user-defined names) | No | Yes (lost on upload) |
| Symbol comments | No | Yes (lost on upload) |
| Block title and block comment | No (block headers may contain a short comment) | Yes (lost on upload) |
| Network title and network comment | No | Yes (lost on upload) |
| Variable declaration table (IN, OUT, STAT, TEMP names) | No | Yes (lost on upload) |
| STL source files (if generated) | No | Yes (lost on upload) |
The technical reason is firmware-level: the S7-300 system software loads blocks into the work memory (RAM) and writes them back to the load memory (MMC). The on-MMC image is the system block container, not the project container. The symbol table is a feature of the STEP 7 editor and is not compiled into the load image. Therefore, the upload path "PLC → PG" by design delivers only what is physically on the MMC plus what the online view can reconstruct from runtime structures.
3. Hardware Reference: 6ES7315-2AF03-0AB0
The 6ES7315-2AF03-0AB0 is a SIMATIC S7-300 CPU from the 315-2 DP series. The relevant specifications for the upload and symbol-recovery workflow are listed below.
| Parameter | Value |
|---|---|
| MLFB | 6ES7315-2AF03-0AB0 |
| Product family | SIMATIC S7-300, CPU 315-2 DP |
| Work memory (integrated) | 128 KB code + 128 KB data (depending on firmware) |
| Load memory | |
| Bit memory | 2048 bytes |
| S7 timers / counters | 256 / 256 |
| Integrated interfaces | 1x MPI (X1), 1x PROFIBUS DP master/slave (X2) |
| MMC slot | Required for operation; size selected by application |
| Supported MMC sizes | 64 KB, 128 KB, 256 KB, 512 KB, 1 MB, 2 MB, 4 MB, 8 MB |
| Programming tool | STEP 7 V5.1 SP3 or higher (recommended V5.5 + SPx for current service packs) |
| Firmware (typical at time of manufacture) | V2.x (V2.6 common) |
Because the 6ES7315-2AF03-0AB0 is MMC-only, the entire user program lives on the removable card. Pulling the MMC from a stopped CPU and reading it with a Siemens PG field programmer (e.g. Field PG M, or a standard PG with the MMC adapter) is often the most reliable path to recover an archived project - if one was ever written there.
4. Prerequisites for Symbol Table Recovery
Before starting, assemble the following inputs:
- STEP 7 V5.x installation with the appropriate Service Pack. Use the same STEP 7 version (or a newer compatible one) that originally generated the project. The STEP 7 version on the PG can be higher than the one on the PG that wrote the program; STEP 7 reads older project formats without re-compilation.
- Online connection to the CPU via MPI cable (PC-Adapter USB A2 / TS Adapter) or PROFIBUS DP. The PG must be able to run PLC → Accessible Nodes and see the 6ES7315-2AF03-0AB0.
-
Physical access to the MMC. Identify whether the program was archived to the MMC (a
S7_JOB.S7S,*.S7P, or*.ARCVfile) or only compiled blocks were loaded. - Process documentation: electrical drawings, P&ID, instrument list, I/O list, motor list, valve list, and any prior printout of the symbol table.
- Reference machine (if available) of the same model on a sister line. The symbol table from a sister project is a strong starting point; symbols are typically identical for the same OEM build state.
- Cross-reference data generated from the uploaded program. This is the master index from which symbols are reconstructed.
5. Step-by-Step: Upload Station to PG
- Open SIMATIC Manager and select the project root.
- From the menu choose PLC → Upload Station to PG (German: PC übertragen).
- In the dialog "Select target station", pick the target subnet or "Accessible Nodes".
- SIMATIC Manager reads the CPU type (6ES7315-2AF03-0AB0), the rack/slot (typically slot 2), and the online blocks.
- It creates a new offline project with the same name as the online station (or as configured) and a single S7 program containing the loaded blocks.
- Open S7 Program → Symbols to confirm: only system symbols are present, the user table is empty.
- Open S7 Program → Blocks and double-check that all OBs, FBs, FCs, DBs, SFBs, SFCs, and SDBs are present. Missing FBs/FCs from libraries (e.g. standard library) will be re-inserted when the S7 program is opened the first time, provided the matching library is installed.
6. Step-by-Step: Rebuilding the Symbol Table
The goal is to repopulate Symbols → Symbol Table with meaningful names. The approach below is a deterministic, signal-by-signal reconstruction that uses the uploaded program as the source of truth.
6.1 Generate the cross-reference baseline
- Open the S7 program in SIMATIC Manager.
- Choose Options → Reference Data → Generate and wait for completion (typically a few seconds for a 128 KB program, minutes for large installations).
- Open Options → Reference Data → Display. The cross-reference (German: Querverweisliste) lists every absolute operand - input, output, memory bit, timer, counter, DB, FB/FC call parameters - and the block / network / instruction in which it is used.
- Export the cross-reference as a CSV via View → Export. Sort by operand (e.g.
IB 0,QB 4,M 10.0) to obtain a flat list of I/O signals that must be named.
6.2 Reconcile with the I/O list
- Take the exported cross-reference and align it with the project's I/O list (terminal strip drawings, ET 200 station list, drawing reference like EL-A1-401-001).
- Build a 4-column table: Absolute address ↔ Drawing tag ↔ Description ↔ Symbol (12 chars max for S7-300 ASCII symbols).
- Maintain a 1:1 mapping for every
I,IB,IW,ID,Q,QB,QW,QDoperand. Do not invent names; if a signal cannot be reconciled, mark itUNKNOWN_nnfor later follow-up.
MTR_PMP_01, VLV_ISO_03). Always respect the original OEM convention if a sister project exists.6.3 Populate the symbol table
- Right-click Symbols → Open Object. The Symbol Editor opens in a tabular grid.
- Enter the symbols row-by-row. Recommended column order: Symbol, Address, Data type (e.g. BOOL, INT, REAL), Comment.
- Sort by Address to verify completeness against the cross-reference. Every
IB x,QB x,MW x,DB nthat appears in the program should appear exactly once in the symbol table. - Save with Table → Save (Ctrl+S). STEP 7 validates duplicate addresses and duplicate symbol names.
6.4 Rebuild block and network comments
Open each block in LAD/FBD/STL editor and add the original comments back. For a large program, prioritize the OBs and the FBs/FCs that are referenced from the cross-reference hot-spots. A pragmatic approach is to print the cross-reference to PDF and annotate the printout with the original block descriptions, then type them back into the editor.
7. Step-by-Step: Using an Archived MMC for Recovery
If the original engineering team archived the STEP 7 project (not just the blocks) to the MMC, the symbol table can be recovered without any reconstruction work. The procedure is documented in Siemens Support entry 15399111 "How do you copy a STEP 7 project to an MMC and how do you load it back from the MMC?"
7.1 Detect whether the MMC holds an archive
- Stop the CPU (RUN-STOP-STOP key on the front panel, or PLC → Stop from the PG with the correct privilege).
- Remove the MMC from the CPU slot.
- Insert the MMC into a Siemens PG with an integrated MMC slot or into a USB MMC reader supported by STEP 7.
- Open Windows Explorer (or SIMATIC Manager's file view) and browse the MMC root directory.
- Look for the files listed in the table below:
| File / pattern | Meaning | Symbol table present? |
|---|---|---|
S7_JOB.S7S |
System job file generated by PLC → Download to Memory Card | No (blocks only) |
*.S7P or *.ZIP archive |
STEP 7 project archived onto the MMC | Yes |
*.ARCV |
STEP 7 archive format containing the full project | Yes |
Only block files (*.bin, *.sd) |
Compiled blocks only | No |
7.2 Restore the archived project
- Copy the archive file (e.g.
PROJECT_A.ARCV) from the MMC to the PG hard drive. - In SIMATIC Manager, choose File → Retrieve → STEP 7 Projects and select the archive file.
- Choose a destination directory (avoid paths longer than 80 characters; STEP 7 has legacy 8.3 limitations on some installations).
- Open the retrieved project and verify that Symbols is populated.
7.3 Download the recovered project to the MMC
After verifying the recovered project is functional, write it back to the MMC so the next engineer has the same advantage:
- Open the project in SIMATIC Manager.
- Select the S7 program (or the SIMATIC 300 station).
- Choose PLC → Download to Memory Card (German: PC → Memory Card).
- STEP 7 prompts for the target MMC (size, slot). Select the MMC that is currently in the CPU, or a replacement.
- Confirm the download. The complete project (blocks, symbols, HW Config, source files, comments) is written to the card.
8. MMC Sizing for Archived STEP 7 Projects
The MMC must hold the entire STEP 7 project, not just the blocks. The dominant factors are block size, source files, and project overhead.
| Project size (compiled blocks only) | Recommended MMC size | Notes |
|---|---|---|
| < 64 KB blocks | 256 KB MMC | Small machine, single OB1, few FBs |
| 64 - 256 KB blocks | 1 MB MMC | Typical 6ES7315-2AF03-0AB0 line |
| 256 KB - 1 MB blocks | 2 MB MMC | Multiple ET 200 stations, recipes |
| 1 - 4 MB blocks | 4 MB MMC | Larger process cells, many DBs |
| > 4 MB blocks | 8 MB MMC | Consider archiving sources in addition |
The rule of thumb for the archived project (with symbols, comments, sources) is to allocate 3x the block footprint on the MMC. A 256 KB block set typically requires a 1 MB MMC when the full project is archived. The MMC size is configured in HW Config under the CPU properties; a too-small card is rejected at download time.
MMC part numbers (Siemens catalog, current at the time of writing):
| MLFB | Size |
|---|---|
| 6ES7953-8LF00-0AA0 | 64 KB |
| 6ES7953-8LG00-0AA0 | 128 KB |
| 6ES7953-8LJ00-0AA0 | 256 KB |
| 6ES7953-8LL00-0AA0 | 512 KB |
| 6ES7953-8LM00-0AA0 | 1 MB |
| 6ES7953-8LP00-0AA0 | 2 MB |
| 6ES7953-8LR00-0AA0 | 4 MB |
| 6ES7953-8LT00-0AA0 | 8 MB |
Reference: Siemens entry 15399111 - Copy STEP 7 project to MMC.
9. Program Documentation Through Block and Network Comments
Even when the symbol table is missing, the following items survive the upload and are immediately useful:
- Block interface (IN/OUT/STAT/TEMP) survives only in the variable declaration table; the names are lost but the data types and the order are preserved. Match them with the call sites in the program to infer original parameter names.
- System blocks (SFB/SFC) keep their Siemens default comments because the comments are part of the STEP 7 library, not the project.
- Block header - the first 8 bytes of every block contain a 8-byte ASCII "author/family/version/hash" stamp that the firmware writes. STEP 7 reads it but does not display it by default. It is occasionally useful for forensic identification.
- Diagnostic buffer - PLC → Diagnostic Buffer shows the last 100 diagnostic events with timestamps; this can identify the OEM (if the OB1 source shows a recognizable company name in the diagnostic entries).
10. Verification of the Rebuilt Symbol Table
After symbols are entered, validate the work with a four-step check:
- Symbol uniqueness: Symbol Table → Save will reject duplicate addresses and duplicate symbol names. Address any error before continuing.
- Cross-reference consistency: Re-generate the cross-reference (Options → Reference Data → Generate). All I/O signals should now resolve to the new symbols.
- Block check: PLC → Check Block Consistency (or Edit → Check Block Consistency) verifies that all referenced blocks are present and interface-compatible.
- Online / offline comparison: With the PG online, select the S7 program and run PLC → Compare Online/Offline. The blocks should match. The only permitted differences are timestamp/footer differences in blocks you have annotated without changing logic.
- Download test (cold): With the user's authorization, perform a STOP → download → RUN cycle on the 6ES7315-2AF03-0AB0 and confirm process behavior matches the original. This is the only absolute verification that the rebuilt symbol table is operationally identical to the lost project.
11. Best Practices for Future Projects
To prevent the next engineer from facing the same problem, the following procedure should be applied at every project handover.
-
Archive to MMC at commissioning. Use PLC → Download to Memory Card on the final commissioned build. Verify on the MMC that the archive file (
*.S7P,*.ZIP, or*.ARCV) is present. - Match MMC size to project size. Use the 3x rule of thumb for the full archived project, not just the block size.
-
Store the source files. Generate STL sources (File → Generate Source) and store the
.SCL/.AWLsources in the project. Sources survive in the STEP 7 project but not on the MMC; back them up on the network drive. -
Print the symbol table to PDF at handover and archive the PDF with the project. The printout is the fastest recovery resource when the original
.S7Pis lost. -
Use a version-controlled directory on a network share (e.g.
\\plant-server\plc_projects\LINE_03\) and commit every release with a date and an SVN/Git tag. - Document the I/O list cross-reference in a single spreadsheet that links absolute addresses to drawing tags to functional descriptions. This is the single most valuable recovery artifact and is also useful for commissioning and I/O checkout.
12. Troubleshooting Matrix
| Symptom | Cause | Remedy |
|---|---|---|
| Upload completes but no blocks appear in offline project | CPU is in RUN with a password that blocks read access to all blocks | Use PLC → Access Rights with the correct password, or request the OEM to provide it |
| Upload hangs at "Reading blocks..." | PG/PC interface is set to TCP/IP but the cable is MPI | Set PG/PC interface to PC Adapter (MPI) at 187.5 kbit/s |
| Some FBs/FCs missing from uploaded program | Standard library version mismatch | Install the matching STEP 7 Service Pack; the library types are re-resolved when the S7 program is opened |
| Symbol table present after upload | CPU is on STEP 7 V13+ (TIA Portal) with active symbol download (since V14) | Confirm the S7-300 was originally programmed in TIA Portal, not STEP 7 V5.x; symbols in TIA Portal are part of the offline project only, same restriction as V5.x |
| MMC shows only S7_JOB.S7S, no archive | Engineer used "Download to Memory Card (RAM to ROM)" rather than "Download Project to Memory Card" | Recovery is not possible from this MMC; reconstruct the symbol table from documentation |
| STEP 7 reports "Memory card does not have enough free space" | Project is larger than the MMC | Use a larger MMC (next size up from the 3x rule) |
| Cross-reference generation aborts with internal error | Corrupt block on MMC (rare, after a power loss during write) | Pull the MMC, re-write from a known-good offline project; do not run the CPU with a corrupt MMC |
13. Reference Documentation
- Siemens Support entry 15399111 - How do you copy a STEP 7 project to an MMC and how do you load it back from the MMC?
- Siemens Support entry 12996906 - Tips and tricks for the S7-300/400 symbol table
- Siemens Support entry 8859629 - STEP 7 - Difference between "Download to Target Device" and "Download to Memory Card"
Why does the S7-300 CPU 315-2AF03-0AB0 upload not bring the symbol table back?
The S7-300 stores only compiled blocks and system data on the MMC. The symbol table, block comments, network comments, and the variable declaration table are part of the STEP 7 project on the engineering PG and are never downloaded to the CPU. PLC → Upload Station to PG can only return what is physically on the MMC, so the symbol table is lost on every upload, regardless of CPU model or firmware.
How can I tell if the symbol table is recoverable from the MMC?
Stop the CPU, remove the MMC, and read it with a Siemens PG or a supported USB MMC reader. If the MMC contains an archive file (typically *.S7P, *.ZIP, or *.ARCV), the symbol table is intact and can be restored with File → Retrieve → STEP 7 Projects. If only the system job file S7_JOB.S7S and compiled blocks are present, the symbol table is not recoverable from the MMC and must be reconstructed from process documentation.
What MMC size is required to archive a STEP 7 project for a 6ES7315-2AF03-0AB0?
Apply the 3x rule of thumb: the MMC must hold approximately three times the compiled block footprint. A 6ES7315-2AF03-0AB0 with 256 KB of blocks typically requires a 1 MB MMC (MLFB 6ES7953-8LM00-0AA0) for a full project archive. Use PLC → Download to Memory Card from STEP 7 V5.5 and let the tool validate the size; it will reject an undersized MMC at download time.
Can I rebuild the symbol table automatically from the uploaded program?
No - the absolute addresses survive in the blocks, but the symbolic names and comments are not encoded anywhere in the CPU firmware or in the MMC. The reconstruction is manual: generate the cross-reference (Options → Reference Data → Generate), align it with the I/O list and electrical drawings, and enter the symbols in the Symbol Editor. A sister project from the same OEM is a strong starting point because most of the I/O tags are identical for the same machine model.
Does TIA Portal behave differently with respect to the symbol table on upload?
No. The TIA Portal (STEP 7 V13 and later) keeps the symbol table as part of the offline project, just like STEP 7 V5.x. Uploading a program from a 6ES7315-2AF03-0AB0 in TIA Portal returns the blocks and HW Config but not the symbol table. The same recovery procedure - reconstructing symbols from cross-references and the I/O list, or restoring from an archived project on the MMC - applies.