Recovering S7-300 Program from MMC Without Original CPU

David Krause15 min read
S7-300SiemensTroubleshooting
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

1. Problem Statement

An S7-300 MMC (Micro Memory Card) contains the entire project state of a CPU 31x, including the user program, system data (HW Config), and—for CPUs with FW ≥ V2.0—firmware updates. When the original CPU is missing, damaged, or unavailable, engineers are frequently asked to extract the project from a standalone MMC using only a different S7-300 CPU from stock, a Field PG, or a third-party prommer.

This article documents the engineering-proven procedure to:

  • Read MMC contents without the matching CPU
  • Recover the HW Config (station configuration, bus parameters, module parameters)
  • Validate that the recovered project will download into a substitute CPU
  • Clone a working MMC for backup or migration
Critical constraint: User blocks (OB, FB, FC, DB) live in the card, but DP/PN bus parameters, module diagnostic addresses, and a portion of the HW Config are reconstructed from the original station. A bit-for-bit image of the MMC plus a properly downloaded HW Config to the substitute CPU is the only deterministic path to a working replacement.

2. S7-300 MMC Card Fundamentals

The MMC is a serial NAND flash card (not an SD card in older form factors) that plugs into the slot on the front of every CPU 31x. Siemens MMC catalog numbers include 6ES7 953-8LFxx-0AA0 (64 KB) through 6ES7 953-8LMxx-0AA0 (8 MB). The card is a passive storage medium: the CPU's loader firmware reads it during startup and writes to it during project download/online edits.

Catalog Number Capacity Usable on CPUs (examples)
6ES7 953-8LF20-0AA0 64 KB CPU 312, 314
6ES7 953-8LG11-0AA0 128 KB CPU 312, 314, 315-2 DP
6ES7 953-8LJ11-0AA0 512 KB CPU 315-2 DP/PN, 317-2
6ES7 953-8LL31-0AA0 2 MB CPU 317-2 DP/PN, 319-3 PN/DP
6ES7 953-8LM20-0AA0 4 MB CPU 319-3 PN/DP

The card is divided into three logical partitions visible only through the Siemens loader:

  1. System data partition – HW Config, CPU parameters, bus parameters for MPI/DP/PN interfaces, module parameter records
  2. User blocks partition – OB, FB, FC, DB, SFB, SFC, SDB containers (incl. SDB 0, SDB 1000–1099 for PG/PC assignment)
  3. Optional firmware partition – present on CPU 31x with FW ≥ V2.0 when FW updates were loaded to flash
Key insight: The user blocks partition can be cloned bit-for-bit to another MMC of equal or greater capacity and will boot a different CPU. The system data partition is the CPU-specific portion that the substitute CPU evaluates against its own MLFB/order number (e.g., 6ES7 315-2AH14-0AB0). Mismatched MLFBs in HW Config will trigger a download error such as "Module does not exist" or SDC generation errors.

3. Prerequisites

Before attempting MMC recovery, verify the following items are available:

Item Minimum Requirement Notes
Programming device SIMATIC Field PG M2/M3/M4/M5 with STEP 7 V5.4+ or TIA Portal V13+ Internal MMC prommer built into the Field PG
STEP 7 version V5.4 SP5 or higher (for legacy 300 projects); TIA V13+ for newer projects Match version to original project
External prommer (optional) Siemens PG 720/740/760 prommer or third-party MMC reader with STEP 7 prommer drivers Third-party readers require Siemens MMC prommer drivers; not all consumer SD card readers work
Substitute CPU Same family (e.g., CPU 315-2 DP) with FW version ≥ original if possible Same MLFB family required for HW Config compatibility
MMC of equal or greater size Same or larger capacity than source MMC Smaller capacity MMC will reject the image
Target project archive (if any) *.s7p, *.zip with original HW Config Speeds up HW Config recreation if MMC image is incomplete
Safety: Inserting or removing the MMC while the CPU is in RUN with active writes can corrupt the FAT. Always power the CPU OFF (or place in STOP) before MMC hot-swap on CPUs that do not support hot-swap. CPU 315-2 DP/PN and above support MMC removal/insertion in STOP only.

4. Reading the MMC with a Field PG Internal Prommer

The Field PG family (M2, M3, M4, M5) ships with a built-in MMC/SD prommer slot on the right side of the chassis, accessible after opening the protective cover. STEP 7 V5.x and TIA Portal both detect the slot as a standard S7 prommer and expose the contents through the file system browser.

4.1 Procedure

  1. Power off the Field PG.
  2. Insert the source MMC into the prommer slot. The label faces up, contacts face down.
  3. Power on the Field PG and launch STEP 7 Manager (or TIA Portal).
  4. From the menu select PLC → Memory Card File Browser (STEP 7 V5.x) or Online → Card Reader/USB Prommer (TIA Portal).
  5. The browser shows two folders: \S7_JOB and \SIMATIC. The user blocks and HW Config are stored under \SIMATIC\S7.
  6. Right-click the project root and select Upload to PG. STEP 7 will reconstruct a project from the SDBs and blocks.

4.2 Expected Result

The recovered project will contain:

  • S7 Program folder with all blocks
  • Source code comments (if symbol export was enabled)
  • System data blocks (SDB) covering CPU parameters, MPI/DP/PN interface configuration, and module parameter records
Limitation: The user reported that the Field PG upload yielded only the blocks, with no HW Config visible. This is normal when the upload is performed with the SDB partition partially unreadable or when the target PG's STEP 7 version cannot parse a newer SDB revision. The fix is to upgrade STEP 7 to a version matching the original project's SDB format (e.g., SDB 0/1/2 generated by STEP 7 V5.5 SP4 or TIA V15.1), or to read the MMC image with a third-party prommer and re-parse the binary SDBs.

5. Reading the MMC with an External Prommer

When no Field PG is available, a standalone MMC prommer (e.g., Siemens 6ES7 792-0AA00-0XA0 PCMCIA adapter, or the discontinued Siemens Prommer for S7 MMC) can be used. Third-party prommer vendors that support S7 MMC include:

  • Softing S7/S5 Prommer
  • IBH Softec S7-SoftPLC reader
  • Helmholz S7-MMC USB Prommer (part number 700-972-0AA01)

5.1 Procedure

  1. Connect the prommer to the PC via USB or parallel port (driver installation per vendor manual).
  2. Launch STEP 7 and open PLC → Memory Card File Browser.
  3. Select the external prommer as the device.
  4. Browse to \SIMATIC\S7 and select the project root.
  5. Choose Upload Station to PG to perform a full station upload, or Upload Blocks Only for a partial recovery.

5.2 Binary Image Capture

For forensic recovery when STEP 7 cannot parse the card (corrupted SDB, mismatched FW), capture the raw binary image:

  1. Use a vendor utility (e.g., Helmholz PrommerTool) to read the entire MMC to a .bin file.
  2. Open the image in a hex editor and look for the SDB signatures: 0A 00 70 00 at the start of the system data partition.
  3. Decode the SDBs manually using the SDB layout in the STEP 7 Online Help (Help → S7 Reference Help → System Data Blocks).
Warning: Do not use a consumer SD card reader to read an MMC. The MMC is electrically compatible with SD at the 4-bit bus level, but Siemens cards use a custom FAT and a proprietary boot sector. Standard SD readers will report the card as unformatted and any read attempt will return garbage.

6. HW Config Recovery Procedure

Recovering the station configuration is the most failure-prone step. The forum discussion confirms that the system data blocks must accompany the user blocks for the substitute CPU to accept the download.

6.1 When Original HW Config Is Available

  1. Open the original STEP 7 project (offline archive).
  2. Open HW Config and verify the station matches the source CPU's MLFB.
  3. If the substitute CPU has a different MLFB (e.g., 6ES7 315-2EH14 instead of 6ES7 315-2AH14), right-click the CPU and select Replace Object → choose the new MLFB.
  4. Compile and save (Station → Save and Compile).
  5. Download only the HW Config to the substitute CPU: select the CPU in HW Config → PLC → Download to Target System.

6.2 When HW Config Is Not Available

Reconstruct the station by inspecting the SDBs extracted from the MMC:

  1. Open STEP 7 → PLC → Upload Station to PG against a powered substitute CPU that contains the source MMC.
  2. If upload succeeds, STEP 7 will reconstruct HW Config from the SDBs on the MMC.
  3. If upload fails with SF (System Fault) LED lit, clear the CPU first: PLC → Clear/Reset. Then reinsert the source MMC and attempt upload again.

When neither path works, manually reconstruct the station by examining the physical hardware: rack (UR/ER), CPU slot, IM, signal modules, function modules, and CP/IM interfaces. Use the device labels (MLFB stickers) to match modules in the STEP 7 hardware catalog.

7. Cloning an MMC for Backup or Migration

The simplest case is producing a backup MMC from a working card. The forum confirms that this can be done with a bit-for-bit copy when the destination card has equal or greater capacity.

7.1 Step-by-Step Cloning Procedure

  1. Insert the source MMC into the Field PG's prommer slot.
  2. Open Start → Programs → STEP 7 → Memory Card File Browser.
  3. Select the source MMC. Note the project name and size.
  4. Insert a destination MMC of equal or greater capacity.
  5. From the menu, select Card → Copy MMC to MMC (or use the right-click context menu on the source card).
  6. Confirm the operation. STEP 7 reads the source, formats the destination, and writes the image.
  7. Verify by reading the destination MMC back and comparing block checksums.
Capacity rule: A 2 MB image cannot be written to a 512 KB MMC. STEP 7 will reject the operation with error 0x001F ("Memory card capacity insufficient"). If the source card uses a larger-capacity partition than the destination, the image must be rewritten via STEP 7 to fit.

8. Uploading to a Substitute CPU

Once the project is recovered and HW Config is reconstructed, download to the substitute CPU:

  1. Connect the Field PG to the substitute CPU's MPI/DP/PN port (MPI for first download, PN/DP if MPI is configured for a different subnet).
  2. Set the PG/PC interface to PC Adapter (MPI) → Local (or appropriate interface).
  3. Open SIMATIC Manager and the recovered project.
  4. Select the CPU in the project tree → PLC → Download to Target System.
  5. If STEP 7 prompts "Do you want to overwrite the existing system data?", click Yes to load the recovered HW Config.
  6. Wait for the download to complete. The CPU will perform an overall reset and enter STOP.

8.1 Common Download Errors

Error Code Message Cause Resolution
0x0019 Online: The module does not exist HW Config CPU MLFB differs from physical CPU Use Replace Object in HW Config to match the actual CPU
0x0023 System error in module SDB in MMC is corrupt or version mismatch Reconstruct HW Config offline; download blocks only
0x002D Memory card capacity insufficient Target MMC smaller than source Use larger MMC or trim project size
0x0033 No license for this S7 block Protected runtime block (e.g., F-library) without license Install license on MMC or remove protected block
0x00A1 Connection to PLC broken MPI/DP/PN cable or address mismatch Verify PG/PC interface and baud rate (default MPI 187.5 kbps)

9. STEP 7 V5.x vs TIA Portal Considerations

The project format on the MMC is the same regardless of which tool generated it. However, blocks generated in TIA Portal V15+ use SCL source format that STEP 7 V5.4 cannot parse. If the project was last saved in TIA Portal, you must use TIA Portal to upload from the MMC. The reverse is generally not true—V5.x projects upload cleanly into TIA Portal as legacy V5 projects.

Source Tool Upload Tool Required Readback Tool Block Format
STEP 7 V5.4 SP5 STEP 7 V5.4 SP5+ STEP 7 V5.x or TIA V13+ Compiled STL blocks
STEP 7 V5.5 SP4 STEP 7 V5.5 SP4+ STEP 7 V5.5+ or TIA V13+ Compiled STL blocks with extended SDBs
TIA Portal V13 TIA Portal V13+ TIA Portal V13+ Compiled blocks, SCL sources included
TIA Portal V15.1 TIA Portal V15.1+ TIA Portal V15.1+ Know-how-protected blocks require password on upload
Know-how protection: Blocks with know-how protection (Block Protection via password) cannot be opened or even viewed as STL after upload without the password. The compiled code is uploaded; the source is not. Plan for this in advance by keeping the source project archive.

10. Verification Procedure

After download to the substitute CPU, perform the following verification steps before placing the system in RUN:

  1. Diagnostic buffer: Open PLC → Diagnostics/Settings → Diagnostic Buffer. Confirm no SDC errors or SDB generation errors.
  2. Module status: Right-click the CPU → PLC → Module Information. Verify all configured modules are detected and report OK.
  3. Force table: If the original project used force values, reapply them via PLC → Force only after confirming safe I/O states.
  4. Watch table: Open the original watch table and verify tag values match the original process state.
  5. Cross-reference: Run Options → Reference Data → Display and confirm all symbols resolve to the same addresses.
  6. Run/stop test: Switch the CPU to RUN. Monitor the BR LED and OB1 cycle time. Cycle time should match the original within ±5%.
Safety gate: Never enter RUN on a recovered project without first verifying the I/O behavior in a controlled state. If the original process had active outputs, those outputs will re-energize on the substitute CPU in the same state they were in when the original CPU last executed OB1. Use PLC → Clear/Reset followed by a controlled restart to ensure safe output initialization.

11. Troubleshooting Matrix

Symptom Probable Root Cause Corrective Action
Field PG cannot read MMC Card inserted upside down or contacts dirty Reinsert with label up; clean contacts with isopropyl alcohol
Card shows as unformatted Consumer SD reader used; not Siemens MMC Use only Siemens-compatible prommer
Upload returns only blocks, no HW Config STEP 7 version too old to parse SDBs Upgrade STEP 7 to V5.5 SP4 or TIA V15.1+
Substitute CPU does not accept download MLFB mismatch between HW Config and physical CPU Use Replace Object in HW Config
DP slaves not coming up Bus parameters lost during upload Recompute DP bus parameters in HW Config; download station
PN devices not reachable IP address/subnet in system data differs from physical network Edit PN interface properties; reassign IP via PLC → Ethernet → Assign IP
SF LED lit, BF LED blinking Distributed I/O fault due to wrong PROFIBUS address or baud rate Verify DP slave addresses against the physical installation
Cycle time doubled Substitute CPU is older FW; longer OB1 execution Update substitute CPU to FW ≥ original
Know-how protected block cannot be opened Password not in project archive Customer must provide password; block code is unrecoverable otherwise
Card copy fails midway Destination MMC worn or counterfeit Use genuine Siemens MMC; replace with catalog-numbered part

12. Field-Proven Caveats

Engineers who routinely recover S7-300 MMC projects should keep the following facts in mind:

  • Bus parameters are not always inside the system data block set that the Field PG extracts. PROFIBUS bus parameters, in particular, are calculated at download time and are stored in SDB 1000–1099. If the upload tool fails to parse these, the substitute CPU will fall back to default DP bus parameters, which may not match the timing of the original network.
  • Symbolic names are stored in the offline project, not on the MMC. The uploaded blocks reference absolute addresses only. To restore the symbol table, the offline project archive must be available.
  • Password protection for the CPU (CPU password, not block know-how protection) must be removed before the substitute CPU will accept a download. Default password is CPU 300 if not customized.
  • MMC wear: Siemens MMC cards have a write-cycle limit of approximately 100,000 cycles per block. Recovery operations that involve multiple read/write passes should use a sacrificial card, not the production card.
  • Firmware updates stored on MMC: CPU 31x with FW ≥ V2.0 may have a firmware image in the \FIRMWARE directory. If the substitute CPU has older FW and the project expects features of the newer FW, the CPU will fault. Strip the firmware directory before download or update the substitute CPU's FW first.
Final recommendation: When the original CPU is missing, prefer the recovery path of upload via Field PG with STEP 7 V5.5 SP4 or TIA V15.1 over third-party prommer readers. The Field PG internal prommer is the only tool guaranteed by Siemens to produce a parseable SDB extract. If the project archive is unavailable, the substitute CPU is correctly matched, and the diagnostic buffer is clean, you have a deterministic recovery.

FAQ

Can I read an S7-300 MMC with a regular SD card reader?

No. Consumer SD card readers will report the MMC as unformatted or corrupt. Use only a Siemens Field PG internal prommer, the Siemens 6ES7 792-0AA00-0XA0 PCMCIA adapter, or a vendor prommer that ships with the Siemens MMC driver (e.g., Helmholz 700-972-0AA01).

Why does my Field PG upload return blocks but no HW Config?

The upload only succeeded for the user blocks. The system data blocks (SDBs) failed to parse, usually because the STEP 7 version on the PG is older than the project. Upgrade to STEP 7 V5.5 SP4 or TIA Portal V15.1+ and re-upload. If the SDBs are physically corrupted, you must reconstruct HW Config from the physical hardware layout.

Can I clone an MMC to a smaller-capacity card?

No. STEP 7 will reject the operation with error 0x002D. The destination MMC must have equal or greater capacity. To shrink a project, open it in STEP 7, remove unused blocks, and download the trimmed project to the new MMC.

Will a CPU 315-2 DP program run on a CPU 315-2 PN/DP if I just swap the MMC?

Yes, if the HW Config on the MMC was originally generated for the target CPU's MLFB or if you perform a Replace Object in HW Config before download. The MMC contents are evaluated against the CPU's MLFB at startup; mismatches trigger an SDC fault and prevent RUN.

How do I get a STEP 7 project back from a CPU that is missing or dead?

Power the CPU down, remove the MMC, and read it with a Field PG prommer or compatible external prommer. Use PLC → Upload Station to PG for a full station upload, or Memory Card File Browser to manually extract the \SIMATIC\S7 folder. If the CPU is also dead but you still have the MMC, the same procedure applies—the MMC is a passive storage device and does not require the CPU to be functional for reading.

Back to blog