Migrating STEP 7 V5.5 FC/FB Blocks to TIA Portal V15

David Krause11 min read
SiemensTIA PortalTroubleshooting
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

Overview

Migrating a STEP 7 V5.5 project to TIA Portal V15 is the standard transition path for engineers moving S7-300/S7-400 libraries and logic onto S7-1500 CPUs. The migration toolset in TIA Portal V15 (and later) handles most STL, LAD, and FBD blocks automatically, but SCL-compiled FBs and FCs require a separate handling path. The most common failure symptom reported in field practice is a copied SCL FB showing a red crossed-out icon and the message that the block is unusable, while an equivalent LAD FB migrates without issue and supports multiple instances.

This reference documents the technical reason for that symptom, the supported recovery workflow (external SCL source, generate block from source, global library), and the verification procedure that confirms the migrated FB is functionally identical to the V5.5 original.

Engineering context: SCL (Structured Control Language) blocks are compiled objects in V5.5 with a separate source file (.scl). The compiled FB and the source file are not equivalent artifacts. TIA Portal V15 only fully understands the SCL syntax of its own compiler; the V5.5-compiled block is recognized as legacy and may be flagged incompatible if pasted into a TIA project without the source.

Migration Scope and Compatibility Matrix

The following matrix summarizes expected migration outcomes for FC/FB types typically encountered when porting a V5.5 library to TIA V15 against an S7-1500 target (Firmware V2.5 or newer recommended for full TIA V15 feature set).

V5.5 Block Source Editor in V5.5 Auto-Migrate via TIA Tool Result After Paste/Import Required Recovery
FC, pure STL STL Editor Yes Compiles in TIA None
FC, LAD/FBD LAD/FBD Editor Yes Compiles, editable None
FC, SCL (compiled) SCL Editor Partial - compiles but may flag Generally usable; some attributes lost Re-compile from source preferred
FB, pure STL STL Editor Yes Compiles, instance DB OK None
FB, LAD/FBD LAD/FBD Editor Yes Compiles, multi-instance OK None
FB, SCL (compiled) SCL Editor Fails on paste into other projects Red cross - unusable External SCL source + generate
UDT (User-Defined Data Type) Data Block Editor Yes (with minor name adjustments) Usable Re-link references
Instance DB (of migrated FB) Auto-generated Yes Usable if FB compiles Regenerate after FB is fixed

Prerequisites

  1. TIA Portal V15 (or V15.1) installed with the S7-1500 PLC support package, including the SCL compiler add-in.
  2. STEP 7 V5.5 SPx available on the engineering workstation if the original .scl source files are not already exported; you cannot decompile a V5.5 SCL block back to source without the original.
  3. The V5.5 archive (.zip) or open project, with the S7 program containers in the source archive.
  4. S7-1500 CPU (e.g., CPU 1515-2 PN, 6ES7515-2AM02-0AB0, Firmware V2.5 or later). For S7-300/400 targets within TIA V15, the same migration path applies but the SCL compiler restriction is identical.
  5. Read/write access to the TIA project directory and the global library location.
  6. Sufficient license for the SCL option in TIA Portal.

Standard V5.5 to TIA V15 Migration Workflow

For the automatic migration path that handles LAD, FBD, and STL blocks:

  1. Open TIA Portal V15 and create a new project, or open an existing target TIA project.
  2. From the project tree, right-click the PLC (e.g., PLC_1 / S7-1500 station) and select Migration > Migrate project.
  3. Browse to the STEP 7 V5.5 archive (a .zip file) and confirm.
  4. The TIA migration tool converts the S7 program, blocks, HW configuration, and symbol table. A migration log is produced under Info > Migration log.
  5. After migration, perform a project-wide Compile (right-click PLC > Compile > Software (rebuild all blocks)).

The standard migration succeeds for most LAD/FBD/STL blocks. SCL FBs/FCs in the same project may be flagged with compile warnings about obsolete attributes, multi-instance capability, or block version. Open the migration log and resolve each warning before proceeding.

SCL FB Failure Mode (Root Cause)

When a compiled SCL FB from V5.5 is copied directly into a different TIA Portal project, the following failure is observed:

  • The FB icon in the project tree shows a red crossed-out symbol.
  • The compile output reports the FB as unusable / not compilable.
  • Right-clicking the block and selecting Properties shows that the block interface is incomplete or marked invalid.
  • All references to this FB (calls in OB1, FCs, or other FBs) generate the F-code error 0x8024 / block is not available / type conflict on download.

Root cause: The V5.5 SCL block is stored as a compiled container with embedded metadata that ties it to a specific V5.5 compiler version and the S7-300/400 target. TIA V15's SCL compiler reads the SCL source, not the legacy compiled binary. Without the original .scl source, the block cannot be re-parsed by the TIA compiler. In contrast, an FB written in LAD is stored as a graphical network representation that TIA can read directly, which is why LAD blocks survive a copy/paste without issue.

Field note: A LAD/FBD FB that was originally created in the V5.5 graph editor and that internally calls a V5.5 SCL FC will also have its interface parsed correctly by TIA, because the call structure is what is stored - the SCL FC will be the element flagged unusable when reused.

Resolution: External SCL Source Workflow

The supported recovery path uses the SCL source file (.scl) rather than the compiled block. The .scl is a plain-text representation of the FB/FC body and is regenerated as a fully TIA-native block via the Generate block from source command.

Step A - Export the SCL Source from STEP 7 V5.5

  1. In STEP 7 V5.5, open the S7 program that contains the FB.
  2. Open the SCL Editor for the FB (e.g., FB100).
  3. Use File > Generate Source File (German: Datei > Quellen generieren) to write the FB to a source container.
  4. Select the destination Sources object in the S7 program and confirm generation. The .scl source is now under S7 Program > Sources as a text source.
  5. Drag the source file out of the project workspace to a Windows folder (e.g., C:\Migrate\FB100.scl). Alternatively, use Source > Export to External Source File.

Step B - Import the Source into TIA Portal V15

  1. In TIA Portal V15, expand the target PLC's Program blocks folder.
  2. Right-click External source files and select Add new external file (or Import if the .scl is already on disk).
  3. Browse to FB100.scl and open it. TIA places the file in the External source files node.

Step C - Generate the Block from Source

  1. Right-click the imported FB100.scl in the External source files node.
  2. Select Generate block from source. TIA invokes the SCL compiler and writes a native FB100 into Program blocks.
  3. Open the new FB100; confirm the interface (IN, OUT, IN_OUT, STAT, TEMP) matches the V5.5 original.
  4. Repeat for any FC, FB, and UDT that was authored in SCL.

Global Library Best Practice for Migrated Blocks

Once a block is generated in TIA from source, the engineer should promote it into a Global Library so it can be reused across multiple TIA projects without copy/paste fragility. The library also stores the master version of instance DBs and types.

  1. Open Libraries > Global libraries in the project tree.
  2. Create a new library (e.g., Lib_V5_Legacy_Blocks) with New global library.
  3. Drag FB100 (and any related UDTs, instance DBs) from Program blocks into the Master copies folder of the library.
  4. For each new consumer project, open the library, drag the master copy into the target PLC's Program blocks. The block is now version-tracked and not dependent on copy/paste integrity.
Tip: A global library copy preserves the block's family (FB/FC), interface, and properties. If the master copy is updated later, the consumer project can be updated with right-click > Update instances. This avoids the red-cross unusable FB condition entirely on subsequent copies.

Instance DB and Multi-Instance Behavior

After the FB is regenerated from source, all existing instance DBs in the consumer project must be either regenerated or made consistent with the new interface:

  • Single-instance DBs (DB100 of FB100) are recreated automatically by a full project compile, but the original DB contents (initial values) may be reset to the FB defaults. Note any non-default initialization values before regenerating.
  • Multi-instance declarations (FB200 with FB100 as a multi-instance inside its STAT section) re-compile cleanly because the FB interface is now valid.
  • Instance DBs from the V5.5 source must be re-imported only after the FB is fixed; otherwise the DB references a non-existent interface and itself becomes unusable.

FC Migration Considerations

FCs authored in SCL follow the same external-source workflow as FBs. Two additional items apply:

  1. TEMP variable behavior: V5.5 SCL FCs may rely on implicit initialization of TEMP variables that TIA V15's SCL compiler no longer performs. Add explicit initialization in the SCL source to avoid unpredictable runtime values.
  2. VOID return: SCL FCs in TIA are declared with FUNCTION <name> : VOID. If the V5.5 source declares a return type other than VOID, change the FUNCTION header to VOID before regenerating, or convert to an FB if a return value is required.

Verification Procedure

After regenerating SCL blocks and storing them in a global library, perform the following checks to confirm functional equivalence with the V5.5 original.

  1. Project-wide compile: Right-click the PLC > Compile > Software (rebuild all blocks). Zero errors and zero warnings expected.
  2. Cross-reference: Right-click the regenerated FB > Cross-references. All call sites from the V5.5 program must appear; any missing reference indicates an incomplete migration.
  3. Block consistency check: From the online menu, perform Online > Block consistency to confirm offline and online signatures match after download.
  4. Download to PLCSIM: Use S7-PLCSIM V15 to load the project; place the CPU in RUN. Monitor the instance DB and confirm the input/output values match the V5.5 trace.
  5. Monitor/Modify: Use the watch table to force the FB's input parameters and verify the output matches the V5.5 reference value within tolerance.

Migration Process Flow

STEP 7 V5.5: SCL FB compiled Copy/paste FB into TIA V15 Red cross - unusable FB Export .scl from V5.5 source Import as External Source File Generate block from source Place in Global Library Compile OK

Troubleshooting Matrix

Symptom Likely Cause Resolution
FB shows red cross after copy/paste Compiled SCL binary not recognized by TIA compiler Regenerate from .scl source via External source files > Generate block from source
Compile error: Block is not compilable Missing/incorrect SCL source for the FB/FC Re-export the .scl from V5.5; do not paste compiled blocks between TIA projects
Instance DB shows wrong interface DB generated before FB was regenerated Recompile all blocks; regenerate the instance DB
Multi-instance call fails in OB1 Calling FB still flagged unusable Apply the External Source workflow to the called FB first, then to callers
Symbol references lost after migration V5.5 absolute addressing vs. TIA symbolic Re-link symbols via the symbol table; check I/O addressing on S7-1500
Compile warning: Attribute <...> obsolete V5.5 SCL attributes not supported in TIA Edit the .scl source; remove or replace obsolete attributes (e.g., {S7_tasklist:=})
FC runs with random TEMP values Implicit init removed in TIA SCL Add explicit initialization to all TEMP variables in the .scl source
FB cannot be re-used across projects Block not promoted to global library Drag the working FB into a global library master copy, then reuse via library

Standards and Documentation Anchors

The migration workflow is documented by Siemens in the Siemens Support entry "Migration of STEP 7 V5.x projects to the TIA Portal" and the TIA Portal V15 online help under Migration > Migrating STEP 7 projects. The SCL language definition used by the TIA V15 SCL compiler is described in the S7-SCL V15 programming and operating manual. Block interface and instance DB rules are defined in the S7-1500 programmable controller system manual.

Why does an SCL FB copied from V5.5 to TIA V15 show a red cross and become unusable while a LAD FB migrates fine?

The SCL FB is stored as a compiled binary tied to the V5.5 SCL compiler. TIA V15's SCL compiler cannot re-parse that binary and flags the block as unusable. LAD FBs are stored as graphical networks that TIA reads directly, so they survive copy/paste. The fix is to re-export the original .scl source from V5.5, import it as an External Source File in TIA, and use Generate block from source.

Can I recover a V5.5 SCL FB if the original .scl source is lost?

No. The compiled SCL block does not contain a re-parseable source. Recovery requires the original .scl text file from the V5.5 Sources container. If the source is not available, the FB must be re-authored manually in TIA V15 SCL using the compiled block's documented interface and behavior.

Does this workflow apply to S7-300/S7-400 targets inside TIA V15, or only S7-1500?

It applies to both. The SCL compiler limitation is the same regardless of the target CPU family. For S7-300/400 targets, also confirm the CPU's FW version is supported by TIA V15; some older S7-300 CPUs require the legacy STEP 7 V5.5 environment.

Is it better to use the TIA V15 migration tool or to manually rebuild the project?

For projects with many LAD/FBD/STL blocks, the TIA migration tool is the faster path. For projects with significant SCL content, a hybrid approach is recommended: run the migration tool, then use the External SCL Source workflow for each SCL FB/FC. Manually rebuilding from scratch is only justified when the V5.5 sources are not available or the project will undergo major redesign.

How do I prevent the red-cross unusable FB condition when copying blocks between TIA projects?

Use a Global Library. Place the working FB into a global library master copy and drag it into each consumer project. The library copy preserves the block family and interface and avoids the binary mismatch that triggers the unusable state on direct copy/paste.

Back to blog