Resolving 'Symbol Table Does Not Exist' in STEP 7 STL Editor

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

Problem Overview

Engineers using SIMATIC STEP 7 V5.4 SP5 (component version K5.4.5.0) report a recurring defect in which, after adding an integrated WinCC Flexible 2008 HMI station to an existing S7 program, the offline STL (Statement List) editor suddenly refuses to display any symbolic addresses. Selecting View → Display with → Symbol Representation in the LAD/FBD/STL editor returns the message:

No symbols can be displayed because the S7 program does not have a symbol table.

Despite the message, the symbol table object is still visible in the S7 Program folder of the project tree, the PLC still compiles, and the integrated HMI tag picker still resolves symbols correctly. Online access to the CPU is also unaffected, because online views are assembled from the uploaded blocks and the local copy of the symbol table, not from the broken offline project database. The defect is internal to the STEP 7 project container: the integration wizard has rewritten the S7 program container in a way that detaches the offline reference to the symbol table, even though the table object itself is still present. The fix is a project-database rebuild, not a change to the user program.

Affected Versions and Environment

Component Tested Version Notes
SIMATIC Manager (STEP 7) V5.4 + SP5 (K5.4.5.0) Also reported on V5.4 SP4 (K5.4.4.0) and V5.3 SP3 with Hotfix 1
WinCC Flexible 2008 SP2, SP3, SP5 Triggered by the "Integrate HMI in STEP 7" wizard
Integration mode Integrated HMI inside the STEP 7 project Standalone WinCC Flexible 2008 projects are not affected
CPU families S7-300, S7-400, ET 200S, ET 200pro, WinAC Platform-independent; depends only on the project-database state
Editor modes STL, LAD, FBD All three offline editors lose the symbolic view; LAD/FBD show only absolute addresses
Online mode Online → Monitor/Modify Unaffected: online views use the locally cached symbol table and uploaded blocks

Reference documents: Programming with STEP 7 manual (edition 06/2008, chapter 7 "Creating and Editing Symbol Tables") and WinCC Flexible 2008 manual (edition 10/2008, chapter 5 "Configuring an HMI Station in STEP 7"), both available from Siemens Industry Online Support.

Triggering Conditions and Observed Symptoms

The defect is reproducible under the following sequence:

  1. Open an existing STEP 7 V5.4 SP5 project that has at least one S7 program with a populated symbol table.
  2. Insert a new SIMATIC HMI station (for example, an OP 277 or TP 177B) using Insert → Station → SIMATIC HMI Station.
  3. In the HMI station wizard, choose WinCC Flexible 2008 and select "Integrate HMI in STEP 7 project."
  4. Compile and save the HMI station, then close and re-open the project.
  5. Open any block of the S7 program in the STL editor and toggle View → Display with → Symbol Representation.

Symptoms include:

  • The error "No symbols can be displayed because the S7 program does not have a symbol table" appears immediately.
  • The symbol table object is still listed under S7 Program → Symbols in the project tree, and double-clicking it opens the table with all entries intact.
  • The HMI tag picker in the WinCC Flexible component still lists all symbols, including those that were edited in the S7 program after the integration.
  • Re-creating the symbol table (right-click → Object Properties → rename, then rename back) does not help.
  • Importing a symbol table from a STEP 7 V5.4 export file (*.SDF) does not help, even when the import reports success.
  • Removing the HMI station and saving does not help; the defect persists once it has occurred.

Root Cause Analysis

Each S7 program inside a STEP 7 project is stored as a compound document with an OLE-structured stream. The stream contains the program header, the source files, the compiled blocks, the system data, and a reference (an OLE object handle) to the symbol table. When the WinCC Flexible 2008 integration wizard runs, it modifies the S7 program's compound document to insert references to the HMI station's connection configuration. In STEP 7 V5.4 SP5, this modification is performed by a write operation that does not preserve the OLE link to the symbol table if the symbol table is the only object of its type in the program container at the moment the wizard runs.

Three internal checks fail simultaneously when the defect is present:

  1. The S7 program's symbol-table handle in the compound document points to a non-existent child object. The SIMATIC Manager silently re-renders the visible project tree, but the offline block compiler still reads the corrupted handle and reports that no symbol table is associated with the program.
  2. The WinCC Flexible component maintains its own snapshot of the symbol table that was loaded at integration time, which is why the HMI tag picker continues to work. This is a copy, not a live link.
  3. The online view of the CPU uses the symbol table downloaded to the PG/PC and is therefore unaffected.

The root cause is not a user error. It is a defect in the integration wizard shipped with STEP 7 V5.4 SP5. The fix requires rebuilding the S7 program's internal structure so that the symbol-table handle is re-established. The two procedures that achieve this without touching the user program are the Save As with Reorganization (slow) operation and the Required Software → Execute integrity check. Both are documented in the STEP 7 Online Help and in the STEP 7 V5.4 Manual Collection.

Safety warning. Before either procedure, perform a full Save As of the project to a new directory and an offline backup of the S7 program source files (export all blocks as *.AWL source and export the symbol table as *.SDF). Do not attempt either repair on the only copy of the project. A typical 200-block, single-station project requires 18 to 28 hours for the full reorganization; plan the outage accordingly.

Pre-Repair Diagnostic Checklist

Before applying the heavy reorganization procedure, run the following checks to confirm that the symbol table is intact and that only the link is broken. If the diagnostics show that the table itself is missing or corrupted, the reorganization will not help and a manual rebuild is required.

  1. In the SIMATIC Manager, expand the affected S7 program and confirm that Symbols is present and that double-clicking it opens the table with all expected entries.
  2. Right-click the S7 program → Object Properties and inspect the Symbols tab. If the path is empty or shows (none), the link is the only thing missing.
  3. Select the symbol table and choose Edit → Check Symbol Table Consistency. If the check reports "no errors," the table content is valid.
  4. From Options → Symbol Table → Export, save the table as MyTable.SDF. Re-import it under a temporary name to confirm that the import path is healthy.
  5. Compile the program (Edit → Compile All). If the compile succeeds, the user blocks are consistent with the existing symbol table.
  6. Open the Required Software tab in Project → Object Properties and note which STEP 7 and WinCC Flexible components are listed. This is the list that the Execute command will re-bind.
  7. Confirm the installed component versions with Start → SIMATIC → Information → Installed Software and verify they match the Required Software tab. A mismatch is a separate root cause and must be resolved first.

If all diagnostic checks pass, the symbol-table content is valid and the fix can be applied to the project structure only. Proceed to the primary solution.

Primary Solution: Save As with Reorganization (Slow)

The Save As with Reorganization (slow) operation rebuilds the STEP 7 project container from scratch, re-creates every OLE object handle, and re-establishes the symbol-table reference. It is the only operation in SIMATIC Manager that fully rebuilds the program's internal link table. On a project of 200 blocks and one HMI station, it may take 18 to 28 hours. Plan the outage and run the procedure on a dedicated machine, not on the engineering workstation that operators depend on. This is the procedure referenced in the Siemens FAQ on project reorganization.

  1. Close all editor windows in SIMATIC Manager and any active WinCC Flexible sessions.
  2. From File → Save As, choose a new project name and a new directory on a local drive with at least 3× the current project size in free space. Do not save to a network share; the reorganization performs thousands of small file operations and a dropped SMB link will corrupt the new project.
  3. Enable the option With reorganization (slow). The default option Save As (fast) copies the database as-is and will not repair the link.
  4. Click OK and confirm the dialog. SIMATIC Manager will spend the first few minutes building the new container, then several hours recompiling all blocks and the HMI station. The progress bar advances slowly; do not interrupt it.
  5. Disable the Windows screen saver and the disk-indexing service on the destination drive, both of which can stall the procedure at the worst possible moment.
  6. When the copy completes, open the new project, expand the affected S7 program, and open any block in the STL editor. Toggle View → Display with → Symbol Representation. The error must no longer appear and the symbolic addresses must be shown.
  7. Compare the new project against the original (block-by-block, then symbol table line-by-line). Save the new project as the master once verified.
  8. Run PLC → Compile and Download Objects on a test CPU (or PLCSIM) to confirm the user program is functionally identical to the pre-repair version.

If the reorganization is interrupted by power loss or a Windows crash, the new project is unusable and the original project is unchanged. Simply restart the procedure; the original is intact. Do not attempt to merge the partial copy with the original.

Secondary Solution: Execute Required Software Check

If the project is too large for a full reorganization (for example, multi-station projects exceeding 24 hours), use the Required Software → Execute integrity check. This command scans the S7 programs for broken OLE handles and re-binds them against the installed STEP 7 and WinCC Flexible components. It is significantly faster than a full reorganization but does not always repair all defects. The procedure is documented in the Siemens FAQ on required software.

  1. Close all editor windows and the WinCC Flexible component.
  2. In the SIMATIC Manager, right-click the project root (the icon at the top of the project tree) and select Object Properties.
  3. Open the tab Required Software. The list should show the exact versions of STEP 7, WinCC Flexible, and any optional packages that the project uses.
  4. If any version is marked as not available or differs from the installed version, install the missing component first. The Execute command will fail silently if a referenced component is not installed.
  5. Click Execute. SIMATIC Manager reads the project container, identifies the S7 programs with broken symbol-table handles, and re-establishes the references. The procedure typically completes in 10 to 60 minutes for a single-station project.
  6. When the dialog closes, save the project, close SIMATIC Manager, and re-open the project.
  7. Open the S7 program in the STL editor and verify the symbol representation as in the previous procedure.

The Execute command leaves the project structure unchanged apart from the repaired handles, so it is significantly faster than Save As with Reorganization (slow). However, it does not always repair all defects; if the symbol-table error persists, fall back to the primary solution.

Alternative Recovery Methods

If the primary and secondary solutions do not repair the link, the following methods can be applied. They are more invasive and should be attempted in order.

Method A: Re-create the S7 program from source

  1. Export all blocks of the affected S7 program as STL source: select the Sources folder, right-click → Insert New → STL Source, then Insert → Block → STL Source for each block, or use the Generate Source from Blocks command.
  2. Export the symbol table as *.SDF via Options → Symbol Table → Export.
  3. Create a new S7 program in a fresh project: Insert → Program → S7 Program.
  4. Import the symbol table into the new program and verify that the import path is correct.
  5. Compile the STL sources into blocks in the new program. The new program will have a fresh compound document and a correct symbol-table link.
  6. Copy the S7 program back into the original project (drag-and-drop in the project tree, choose Rewrite).

Method B: Repair the WinCC Flexible connection references

The defect is sometimes accompanied by broken connection references in the WinCC Flexible component. Re-establish the connection by opening the HMI station, deleting the existing S7 connection, and re-creating it with the same parameters. The new connection will rebuild the cross-reference table and may repair the symbol-table link as a side effect.

Method C: Re-install STEP 7 and WinCC Flexible

If the defect appears in multiple projects on the same PG/PC, the local STEP 7 installation may be corrupted. Re-install STEP 7 V5.4 SP5 from the original media and apply SP5 again. A clean re-install of WinCC Flexible 2008 SP5 is also recommended. After re-installation, test with a minimal project that contains one S7 program and one HMI station before opening the production project.

Method D: Request a Siemens Support ticket

If the defect persists in a project that is under warranty or covered by a support contract, open a ticket at Siemens Industry Online Support and attach the project after ZIP-compression. Siemens Technical Support can repair the project container manually using internal tools that are not shipped with the product. Always provide the exact STEP 7 component version (K5.4.5.0) and the WinCC Flexible service pack in the ticket, as the support team uses these to identify the matching repair tool.

Verification Procedure

After any of the above procedures, verify the repair against the following checklist:

  1. Open the S7 program in the SIMATIC Manager and confirm that Symbols is listed. Double-click it to open the table; all entries must be present and identical to the pre-repair state.
  2. Open each block in the STL editor. The view must default to symbolic representation. If it defaults to absolute representation, open the editor menu View → Display with → Symbol Representation and confirm the toggle works without error.
  3. Open the cross-reference (F11) for any block. The cross-reference window must list every usage of every symbol, including the symbols used in the WinCC Flexible HMI tags.
  4. Open the WinCC Flexible component, open the HMI tag editor, and confirm that the PLC symbol table is still selected as the tag source. The tag list must be fully populated.
  5. Compile the S7 program (Edit → Compile All) and the HMI station (Project → Compiler → Check Consistency). Both compilations must complete without warnings.
  6. Download the project to a test CPU (or a PLCSIM instance) and verify that the user program runs identically to the pre-repair version. Pay particular attention to the HMI tags, which were most affected by the defect.
  7. Compare the block checksums: PLC → Compare Blocks between the online and offline views. Any mismatch indicates a block that was modified during the repair and must be re-compiled.
  8. Run PLC → Check Block Consistency on the S7 program. The check must report no errors and no warnings.

Prevention and Engineering Best Practices

The following practices reduce the likelihood of triggering the defect and shorten the recovery time when it does occur. They are derived from the Siemens FAQ on symbol-table management and from the STEP 7 V5.4 Project Engineering guideline.

  • Always perform a Save As with reorganization (slow) immediately after integrating a WinCC Flexible HMI station into an existing STEP 7 V5.4 SP5 project. The first reorganization after HMI integration takes a few hours and pre-emptively repairs the link before the defect can manifest.
  • Maintain the project under a version-control system (SVN, TFS, or Git with binary diff support). Tag every release and every HMI integration step. This allows you to roll back to a known-good project in minutes rather than hours.
  • Document the installed STEP 7 and WinCC Flexible versions in the project header. Mismatched versions are the most common secondary cause of the defect.
  • Avoid running the WinCC Flexible integration wizard on a live project. Test the integration on a copy first, verify the symbol table is intact, and only then apply the change to the live project.
  • Export the symbol table to *.SDF at the end of every engineering session. The export is a portable backup that can be re-imported in seconds.
  • Schedule a quarterly Save As with reorganization (slow) as preventive maintenance. The procedure keeps the project container healthy and catches OLE corruption before it manifests as a symbol-table error.
  • Configure the Windows disk-indexing service and the antivirus on-access scanner to exclude the STEP 7 project directories. Both services lock files during scan, which can corrupt the OLE container mid-write and trigger the same defect.
  • If the project is migrated to TIA Portal, the symbol-table defect does not occur; the TIA Portal project container is structurally different from the STEP 7 V5.4 container. Plan the migration as a long-term mitigation, but be aware that it requires re-creating the HMI station and re-importing the symbol table.
  • Keep the engineering workstation on a UPS. A power loss during the Save As with Reorganization (slow) operation leaves the new project unusable; a UPS allows the procedure to complete or to roll back cleanly.

Frequently Asked Questions

Does the symbol-table error affect the PLC at runtime?

No. The error is a defect in the offline STEP 7 project container. The online view of the CPU uses the symbol table that has been downloaded to the PG/PC or that is shipped with the offline blocks, and the runtime behavior of the user program is unchanged. The defect is purely an editor and engineering-tool issue.

Why does the HMI tag picker still work when the STL editor does not?

The WinCC Flexible component maintains its own snapshot of the symbol table that was loaded at integration time. The HMI tag picker reads this snapshot, not the symbol-table object inside the S7 program. The STL editor, on the other hand, reads the offline symbol table directly from the S7 program container and is therefore affected by the broken OLE link.

How long does 'Save As with reorganization (slow)' take?

For a project of approximately 200 blocks and one integrated HMI station, the procedure takes 18 to 28 hours on a typical PG/PC. Larger projects with multiple stations and extensive documentation may take two to three days. Plan the outage and use a dedicated machine for the reorganization.

Is the defect fixed in STEP 7 V5.5 or later?

STEP 7 V5.5 with its service packs includes additional integrity checks in the HMI integration wizard, and the defect is reported less frequently on V5.5 SP4 and later. However, the underlying project container structure is the same as V5.4, so a preventive reorganization is still recommended. Migrating to TIA Portal eliminates the defect entirely.

Can I prevent the defect by avoiding 'Integrate HMI in STEP 7' mode?

Yes. If you create the WinCC Flexible project as a standalone project and connect it to the STEP 7 project through a tag pointer, the HMI integration wizard is bypassed and the symbol-table link is preserved. The trade-off is that the HMI tag picker no longer reads the PLC symbol table live; you must export and re-import the symbol table whenever the PLC program changes.

Back to blog