S7-300 CPU 315-2AF03-0AB0 Upload: Recovering Symbol Table

David Krause17 min read
S7-300SiemensTechnical Reference
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

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, DB rather 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.
Important: This behavior is not a STEP 7 bug and is not specific to the 6ES7315-2AF03-0AB0. It applies to every S7-300, S7-400, WinAC, and ET 200S CPU that is loaded through "Upload Station to PG". Symbol information is part of the engineering project, not part of the CPU firmware.

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:

  1. 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.
  2. 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.
  3. Physical access to the MMC. Identify whether the program was archived to the MMC (a S7_JOB.S7S, *.S7P, or *.ARCV file) or only compiled blocks were loaded.
  4. Process documentation: electrical drawings, P&ID, instrument list, I/O list, motor list, valve list, and any prior printout of the symbol table.
  5. 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.
  6. Cross-reference data generated from the uploaded program. This is the master index from which symbols are reconstructed.
Tip: The PG should be set to the same MPI address as the CPU (default 2). Use Options → Set PG/PC Interface → PC Adapter (MPI) → Properties and confirm the transmission rate (default 187.5 kbit/s for S7-300 MPI).

5. Step-by-Step: Upload Station to PG

  1. Open SIMATIC Manager and select the project root.
  2. From the menu choose PLC → Upload Station to PG (German: PC übertragen).
  3. In the dialog "Select target station", pick the target subnet or "Accessible Nodes".
  4. SIMATIC Manager reads the CPU type (6ES7315-2AF03-0AB0), the rack/slot (typically slot 2), and the online blocks.
  5. 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.
  6. Open S7 Program → Symbols to confirm: only system symbols are present, the user table is empty.
  7. 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

  1. Open the S7 program in SIMATIC Manager.
  2. Choose Options → Reference Data → Generate and wait for completion (typically a few seconds for a 128 KB program, minutes for large installations).
  3. 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.
  4. 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

  1. 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).
  2. Build a 4-column table: Absolute addressDrawing tagDescriptionSymbol (12 chars max for S7-300 ASCII symbols).
  3. Maintain a 1:1 mapping for every I, IB, IW, ID, Q, QB, QW, QD operand. Do not invent names; if a signal cannot be reconciled, mark it UNKNOWN_nn for later follow-up.
Symbol length limit: The S7-300 ASCII symbol table limits each symbol to 24 characters and each comment to 40 characters. The OEM convention is usually 8-12 characters in upper case (e.g. MTR_PMP_01, VLV_ISO_03). Always respect the original OEM convention if a sister project exists.

6.3 Populate the symbol table

  1. Right-click SymbolsOpen Object. The Symbol Editor opens in a tabular grid.
  2. Enter the symbols row-by-row. Recommended column order: Symbol, Address, Data type (e.g. BOOL, INT, REAL), Comment.
  3. Sort by Address to verify completeness against the cross-reference. Every IB x, QB x, MW x, DB n that appears in the program should appear exactly once in the symbol table.
  4. 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

  1. Stop the CPU (RUN-STOP-STOP key on the front panel, or PLC → Stop from the PG with the correct privilege).
  2. Remove the MMC from the CPU slot.
  3. Insert the MMC into a Siemens PG with an integrated MMC slot or into a USB MMC reader supported by STEP 7.
  4. Open Windows Explorer (or SIMATIC Manager's file view) and browse the MMC root directory.
  5. 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

  1. Copy the archive file (e.g. PROJECT_A.ARCV) from the MMC to the PG hard drive.
  2. In SIMATIC Manager, choose File → Retrieve → STEP 7 Projects and select the archive file.
  3. Choose a destination directory (avoid paths longer than 80 characters; STEP 7 has legacy 8.3 limitations on some installations).
  4. 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:

  1. Open the project in SIMATIC Manager.
  2. Select the S7 program (or the SIMATIC 300 station).
  3. Choose PLC → Download to Memory Card (German: PC → Memory Card).
  4. STEP 7 prompts for the target MMC (size, slot). Select the MMC that is currently in the CPU, or a replacement.
  5. Confirm the download. The complete project (blocks, symbols, HW Config, source files, comments) is written to the card.
MMC capacity check: "Download to Memory Card" validates that the project fits. If the MMC is too small, STEP 7 aborts with the dialog "Memory card does not have enough free space". The required size equals the project size after archiving; see section 8 for sizing.

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:

  1. Symbol uniqueness: Symbol Table → Save will reject duplicate addresses and duplicate symbol names. Address any error before continuing.
  2. Cross-reference consistency: Re-generate the cross-reference (Options → Reference Data → Generate). All I/O signals should now resolve to the new symbols.
  3. Block check: PLC → Check Block Consistency (or Edit → Check Block Consistency) verifies that all referenced blocks are present and interface-compatible.
  4. 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.
  5. 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.
Safety: Never perform a download test on a running production line without explicit operator sign-off. Use a controlled test cell, or at minimum, place the controlled process in a safe state and have the operator confirm the safe state before the CPU is restarted.

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.

  1. 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.
  2. Match MMC size to project size. Use the 3x rule of thumb for the full archived project, not just the block size.
  3. Store the source files. Generate STL sources (File → Generate Source) and store the .SCL / .AWL sources in the project. Sources survive in the STEP 7 project but not on the MMC; back them up on the network drive.
  4. 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 .S7P is lost.
  5. 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.
  6. 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

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.

Back to blog