Migrating from Allen-Bradley RSLogix to Siemens TIA Portal

David Krause13 min read
SiemensTechnical ReferenceTIA Portal
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

Engineers fluent in Allen-Bradley (Rockwell Automation) Logix Designer / RSLogix 5000 routinely underestimate the cognitive cost of a parallel move to Siemens SIMATIC. The two platforms solve the same automation problem but with materially different paradigms: tag-based, structured-text-friendly architecture (AB) versus data-block-bound, language-routed architecture (Siemens). The transition is not a brand-skin swap; it is a re-mapping of how memory, addressing, and execution models are conceptualized.

The most cited friction points, based on cross-vendor support telemetry from system integrators and OEM motion vendors, are:

  1. Indirect addressing inside ladder logic (a feature that exists implicitly in AB but requires STL or SCL in Siemens).
  2. The role and lifecycle of Function Blocks (FB) and their associated Instance Data Blocks (DB).
  3. Online editing workflows and download-without-stop semantics.
  4. Project navigation in TIA Portal versus the flat ACD database of Logix Designer.
  5. Tag database scoping (controller-scoped vs program-scoped vs global DB in Siemens).

This guide consolidates the mechanics that must be relearned, not the marketing comparison sheets. It assumes the reader has shipped at least one ControlLogix or CompactLogix machine and is preparing to commission a SIMATIC S7-1200, S7-1500, ET 200SP, or legacy S7-300/400 system.

Development Environment Comparison

Attribute Studio 5000 / Logix Designer TIA Portal V17 / V18
Current Version (2024) V34–V36 V18 (Update 2 / V18.2)
Project File Extension .ACD, .L5X, .L5K .ap17 / .ap18, .zap17 / .zap18
Database Model Single flat tag database scoped to controller Hierarchical: PLC tag table + DB-internal symbols
Hardware Config IO Configuration tree in ACD Devices & Networks editor (graphical)
Languages per Routine Ladder, FBD, SFC, ST, structured text LAD, FBD, GRAPH, STL, SCL (per OB/FB/FC)
Online Edit Default Finalize All Edits, Accept Pending Edits Download to device (full / delta) — different semantics for S7-1500
Cross-Reference Tool Ctrl-E, References window Cross-reference (entire project), Inspector tab
Simulation Emulate 5000 / Studio 5000 Logix Emulate S7-PLCSIM V18 (PLCSIM Advanced for V2.0 controllers)

The single most visible workflow change is that TIA Portal splits the project into a strict hierarchy: PLC station → Program blocks → System blocks → Tags. Rockwell uses a flat tag table at the controller root. Any tool or routine that depends on a single flat tag list (CSV exports, Excel add-ins, HMIs polling tag names) requires re-engineering when ported to Siemens.

Ladder Logic Paradigm Differences

Ladder in AB (Logix Designer) and LAD in Siemens (TIA Portal) look superficially identical but diverge in execution semantics.

Behavior AB Ladder Siemens LAD (S7-1500)
Scan Order Top-to-bottom per routine; routines within program execute per scheduler Top-to-bottom per network within OB; OBs priority-driven
Energized Coil Behavior OTU/OTE latches; retentive via tag properties Coil assignment uses M (memory bit) or DB bit; no dedicated OTL/OTU pair required
Compare Style CMP, EQU, GRT, LES — explicit ==, <>, >, < as box instructions
Math Style ADD, SUB, MUL, DIV with explicit destination ADD, SUB, MUL, DIV (no explicit destination — assigned via box EN/ENO)
True / False Semantics Boolean only at coil; integer at math registers BOOL, INT, DINT, REAL explicit at declaration
Subroutine Calls JSR to a Program or Routine CALL to FB/FC with optional instance DB parameter

Engineers frequently trip on the destination handling: AB's ADD(SourceA, SourceB, Dest) takes a third operand; Siemens ADD in LAD has no destination field — the result is written to an implicit operand shown on the box (typically a pre-declared tag in the interface). Forgetting to declare the tag results in a compile error rather than a runtime fault.

Indirect Addressing: The Critical Skill Gap

Indirect addressing is the single most reported blocker for AB-trained engineers stepping onto S7 platforms. AB performs indirect addressing transparently via array index syntax; Siemens LAD does not expose index notation at all, forcing the engineer into STL or SCL.

Allen-Bradley Approach (Logix Designer)

In AB, arrays are first-class tags and indexed in any language:

// User-defined tag (controller scope)
Recipe[0..99] : DINT;      // array of 100 DINTs
Index : DINT;              // runtime index

// Ladder rung
COP(Recipe[0], DestArray[0], 50);   // bulk copy 50 DINTs
MOV(Recipe[Index], TempValue);      // indexed read
Recipe[Index] := 1234;              // indexed write (ST routine)

The [Index] token resolves at runtime. No special language or compiler directive is required.

Siemens STL Approach (Step 7 Classic / TIA Portal STL)

STL is the only place where pure indirect addressing in the spirit of L D [AR1, P#0.0] exists. Two 32-bit address registers, AR1 and AR2, hold the base pointer; offset is added via P#<bytes>.<bits>.

// STL fragment - Siemens S7-1200/1500
// Assume AR1 was loaded with the DB number earlier
LAR1  P##RecipeArray         // load pointer to symbol RecipeArray
L     D [AR1, P#0.0]         // load DINT at offset 0
T     "DB_Temp".Value       // transfer to temp storage

// Loop with index in MD100 (DINT)
L     MD100                  // load index
SLD   2                      // shift left 2 (DINT = 4 bytes)
LAR1                         // load AR1 with index * 4
L     DB [DB_NO], D [AR1, P#0.0]  // indexed load using DB register
T     DB [DB_NO], D [AR2, P#4.0]  // write to next slot
Field note: The L D [AR2, P#0.0] syntax is the canonical pattern; the P#0.0 offset uses byte.bit notation where bits are 0–7. Misalignment (DINT at P#0.1 instead of P#0.0) produces wrong values without raising a PLC fault, making the bug invisible until trend review.

Siemens SCL Approach (Modern Recommendation)

For S7-1200 and S7-1500, SCL makes indirect addressing trivial and is the recommended path for any code ported from AB:

// SCL in TIA Portal V18
FOR #i := 0 TO 99 BY 1 DO
    "Recipe"[#i] := "Source".value;
END_FOR;

IF ("Recipe"[#index] > 1000) THEN
    "Alarm" := TRUE;
END_IF;

The ARRAY[*] of ANY data type and the VARIANT pointer are also available for fully generic data access in SCL V17+ — useful when porting AB AOI parameter blocks.

Function Block Architecture and Data Blocks

AB and Siemens both implement reusable code blocks, but the term "FB" carries different lifecycle semantics.

Concept Allen-Bradley (AOI / Routine) Siemens (FB / Instance DB)
Reusable Code Unit Add-On Instruction (AOI) Function Block (FB)
Static State Storage Internal tag cache inside AOI instance Instance Data Block (DB) created per FB call
Multi-Instance Multiple AOI references in same program, each owns tags Multiple instance FBs sharing one parent DB
Parameter List Input, Output, InOut, Local tags Input, Output, InOut, Static, Temp (in interface)
Versioning AOI import/export via L5X file FB type via TIA Portal libraries (global / project)
Library Master User-defined AOI libraries on disk Master copies library + types versioned independently of project

Siemens FB must have an associated DB to retain state. Calling an FB without supplying or auto-generating an instance DB is a compile-time error. AB AOIs do not have this binding — internal tags are scoped to the AOI's local instance automatically. Engineers who forget to assign instance DBs when porting code will see "DB not generated" errors on the first download.

Pitfall: When upgrading a Siemens library FB (changing its interface), TIA Portal offers "Update Instance DB" with several conflict-resolution modes. Selecting the wrong mode (especially "Actual values override" versus "Initial values override") can wipe commissioning-setpoint values in production DBs. Always export instance DB contents before library FB updates.

Online/Offline Editing Workflows

The two vendors approach live modification very differently. Logix Designer has the concept of "pending edits" with a final-accept/assemble step; TIA Portal on S7-1500 supports online editing with a "Download to device" dialog that exposes delta vs full download modes.

Scenario AB Logix Designer TIA Portal (S7-1500)
Edit running program Edit in online mode, pending edit list grows Online edit creates a session; auto-commit on download
Single routine modify Accept Pending Edit → Test → Finalize All Edits Download to device → RunMode (without stop)
Add new tag online Yes, immediately visible to HMI Yes, but HMI tag DB may need re-compile if it polls by name
Add new program / FB Requires Finalize / Test / Assemble cycle Full download required — S7-1500 cannot add new program blocks online
Stopping the CPU Optional unless new task / new IO module added Often required for hardware config changes; not for code-only edits

For S7-300/400 controllers, online edits have stricter constraints: most code changes require STOP. The S7-1500 platform (firmware V2.5+) is the first Siemens controller to deliver robust online code modification without stop.

Industrial Network Protocol Considerations

Profinet (Siemens) and EtherNet/IP (Rockwell) are functionally similar at the application layer but differ sharply in configuration burden.

Attribute EtherNet/IP (AB) Profinet (Siemens)
Configuration Editor IO Configuration tree with EDS / AOP files Devices & Networks, GSDML file import
CIP / I/O Model Connection-based, RPI-driven cyclic Slot-based, IO cycle configured per device
Diagnostic Depth Good for AB devices; thin for third-party Strong for Siemens devices; varies for third-party
Implicit Messaging Class 1 connection, schedule via RPI Real-time (RT) and IRT classes
Explicit Messaging CIP MSG instruction PUT / GET (S7 comm) or open UDP/TCP via TSEND/TRCV
Protocol Stack Code Size Compact CIP stack ~80 KB Profinet stack ~280 KB on small PLCs (smaller platforms)

The Profinet stack footprint is a real constraint on S7-1200 firmware V4.x: complex Profinet configurations with many IO devices can exhaust the work memory of the CPU. Engineering rule of thumb: S7-1214C has ~50 KB of user program space after Profinet loads; S7-1511 has substantially more headroom.

SCADA Migration: iFix to Wonderware InTouch / AVEVA

The HMI/SCADA side of the move is independent of the PLC brand change, but commonly happens in the same project. GE Proficy iFix (Emerson) and Wonderware InTouch (AVEVA, formerly Schneider Electric) are the two most-encountered SCADA platforms in US-based plants.

Feature iFix 6.x / 7.x Wonderware InTouch 2020 / AVEVA
Architecture Standalone SCADA + Workspace ArchestrA (Galaxy Repository) + InTouch WindowViewer
Tag Database PDB (Process Database) or OPC-DA bridge ArchestrA attributes; InTouch tagname dictionary
Scripting Language VBA (Workspace), Fix32 script, .NET assemblies QuickScript, InTouch scripts, .NET wrappers
Alarm Subsystem Built-in alarm priority / filtering Wonderware Alarm DBMS (SQL-backed)
Historian Proficy Historian (IndustrialSQL lineage) Wonderware Historian (InSQL lineage), AVEVA PI adapter
Redundancy iFix Space SCADA redundancy InTouch with redundant I/O servers (AppServer, SuiteVoyager)
Web Client iFIX WebSpace / Proficy Webspace InTouch OMI / AVEVA Web Client

Engineers moving from iFix to InTouch report the steepest ramp in the ArchestrA object model: Area, Equipment, Template, Instance hierarchy. iFix is configuration-flat; ArchestrA is template-instanced. A single template change in ArchestrA propagates to all instances; in iFix, a screen change requires manual edits across all pictures.

Practical guidance: Do not try to mechanically translate iFix databases to InTouch scripts. Redo the alarm and script logic against ArchestrA's derived attributes and QuickScript-anchored object methods — the inverted inheritance model will pay back within the first major drawing rebuild.

Training Path and Recommended Sequence

For a productive Siemens TIA Portal engineer inside 6 to 10 weeks:

  1. Week 1–2: Environment and OB model. Understand OB1 (cyclic), OB35 (cyclic interrupt), OB82/OB86 (diagnostic), OB100 (warm restart), OB101 (hot restart), OB102 (cold restart). Map them against Logix Designer's periodic task / continuous task / fault handlers.
  2. Week 2–3: Tag and DB scoping. Practice creating global PLC tags, instance-DB-tagged FB calls, and multi-instance FB blocks. Migrate three AB AOIs to equivalent Siemens FBs in SCL.
  3. Week 3–4: Indirect addressing mastery. Reimplement five AB routines that rely on indexed array reads in both SCL and STL. Compare line count and runtime cost (SCL compiles to STL anyway, but readability matters for maintenance).
  4. Week 4–5: Hardware configuration. Build a PROFINET topology with a SIMATIC ET 200SP station, drive (Sinamics G120), and HMI (Comfort Panel TP1500). Cross-reference GSDML versions with firmware — mismatched GSDML is the top cause of station-not-found faults.
  5. Week 5–6: Library and versioning. Build a global library with versioned FB master copies. Practice the "Update Instance DB" workflow on a backup project to see each conflict-resolution mode.
  6. Week 6–8: Online commissioning. Use S7-PLCSIM V18 / PLCSIM Advanced. Practice online edits and demonstrate the limitations when adding new program blocks.
  7. Week 8–10: HMI integration. Wire WinCC Professional or WinCC Comfort to a SIMATIC HMI, then progress to a TIA-integrated SCADA pattern. For multi-vendor SCADA, integrate via OPC UA rather than vendor-native drivers.

Common Pitfalls and Field-Tested Workarounds

Pitfall Symptom Workaround
Calling FB without instance DB Compile error: "Instance DB does not exist" Right-click FB in program → "Generate Instance DB"; check "Multi-instance" to nest in a parent FB
Bit offset misaligned in STL pointer Reads stale or neighboring data; no PLC fault Audit all P#byte.bit references against the data type width (BOOL=0–7, BYTE=0, WORD=0, DWORD=0, LWORD=0)
DB changes wipe setpoints on download HMI shows commissioning values reset Use "Snapshot of actual values" before DB download; or store setpoints in retentive M / retain DB
Tag name case mismatch on OPC UA SCADA reads NULL Siemens OPC UA server is case-sensitive; HMI tag DB must match case exactly
Online edit blocked for new program block "Download not possible" dialog Use TIA Portal V18 with S7-1500 firmware V2.9+ for enhanced online edit; otherwise schedule a STOP window
PROFINET device won't come up Station fault, diagnostic buffer entry Verify GSDML version matches device firmware; check device name assignment (PROFINET requires DCP name)
Cross-vendor archive script fails on date format WinCC local time vs AB UTC mismatch Standardize on ISO 8601 timestamps at the SCADA tag export boundary
InTouch QuickScript inheritance break Derived attribute returns wrong value Avoid script overrides at instance level — derive at template or use script-side UDA overrides carefully

Verification Checklist Before First Commissioning

  1. Compile project in TIA Portal with full build; resolve all warnings (many warnings are real bugs, especially "Implicit tag conversion").
  2. Run S7-PLCSIM simulation against the exact firmware version of the physical CPU. Firmware mismatch invalidates diagnostic bit behavior.
  3. Download full project (not delta) on first commissioning. Verify CPU is in STOP during hardware config download.
  4. After download, run "Compare online/offline" — values that diverge from the offline project indicate parameter-overlap or IP conflicts.
  5. Force each FB instance DB and confirm values in the Inspector / Watch table. Spot-check at least three FBs that the engineering team frequently uses.
  6. Verify PROFINET device names via TIA Portal "Assign PROFINET device name" step.
  7. Verify retentive tag behavior by powering off the CPU (or simulating via PLCSIM) and confirming that retentive markers and retain DB areas retain values.
  8. Run the HMI offline simulation against the PLC project; confirm alarm prioritization and screen-to-tag resolution.

Documentation References

Primary resources to keep within reach:

FAQ

Is indirect addressing possible in Siemens LAD (ladder)?

No. Siemens LAD does not expose indexed addressing. You must use SCL (recommended for readability and S7-1200/1500 projects) or STL with AR1/AR2 address registers and the L D [AR1, P#0.0] syntax.

What is the closest Siemens equivalent to an Allen-Bradley Add-On Instruction (AOI)?

A Function Block (FB) with its associated Instance Data Block (DB). Each FB call creates or references an instance DB that holds the block's static variables; this is the unit of state that an AOI encapsulates internally in AB.

Can I add a new program block to a running S7-1500 online?

On S7-1500 firmware V2.5+ with TIA Portal V17+, most code-only online edits (adding new FBs/FCs, new tags) work without stop. Adding new hardware or new OB types still requires CPU STOP. S7-1200 and S7-300/400 require STOP for almost all program-block additions.

How does iFix scripting compare to Wonderware InTouch scripting?

iFix uses VBA inside the Workspace environment and command-line Fix32-style scripts in the legacy picture level. InTouch uses QuickScript (object-script anchored) plus .NET extension assemblies on the Application Server. ArchestrA objects layer QuickScript on top of templates, so script maintenance scales differently — fix the template and instances inherit, whereas iFix edits often require per-picture updates.

Does Profinet require more memory than EtherNet/IP on small controllers?

Yes. The Profinet stack on S7-1200 controllers consumes a meaningful share of work memory, and complex topologies with many IO devices can exhaust the user program space. As a rule, verify the projected IO device count against the CPU's available work memory before committing to an S7-121x for a Profinet-heavy machine.

Back to blog