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:
- Indirect addressing inside ladder logic (a feature that exists implicitly in AB but requires STL or SCL in Siemens).
- The role and lifecycle of Function Blocks (FB) and their associated Instance Data Blocks (DB).
- Online editing workflows and download-without-stop semantics.
- Project navigation in TIA Portal versus the flat ACD database of Logix Designer.
- 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
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.
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.
Training Path and Recommended Sequence
For a productive Siemens TIA Portal engineer inside 6 to 10 weeks:
- 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.
- 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.
- 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).
- 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.
- 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.
- Week 6–8: Online commissioning. Use S7-PLCSIM V18 / PLCSIM Advanced. Practice online edits and demonstrate the limitations when adding new program blocks.
- 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
- Compile project in TIA Portal with full build; resolve all warnings (many warnings are real bugs, especially "Implicit tag conversion").
- Run S7-PLCSIM simulation against the exact firmware version of the physical CPU. Firmware mismatch invalidates diagnostic bit behavior.
- Download full project (not delta) on first commissioning. Verify CPU is in STOP during hardware config download.
- After download, run "Compare online/offline" — values that diverge from the offline project indicate parameter-overlap or IP conflicts.
- 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.
- Verify PROFINET device names via TIA Portal "Assign PROFINET device name" step.
- Verify retentive tag behavior by powering off the CPU (or simulating via PLCSIM) and confirming that retentive markers and retain DB areas retain values.
- 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:
- SIMATIC S7-1500 Automation System Manual — covers OB/FB/DB model and PROFINET configuration (Siemens Support entry 109817183).
- TIA Portal Programming and Operating Manual — covers cross-reference, libraries, and online edit semantics (Siemens Support entry 81318674).
- Logix Designer Application Programming Manual — for cross-checking AB tag/array semantics (Rockwell Automation Literature Library).
- AVEVA InTouch / ArchestrA System Configuration Guide — for ArchestrA galaxy and template model (AVEVA Documentation).
- Emerson GE Proficy iFix Reference — for alarm, scripting, and PDB comparison (Emerson GE Digital iFix product page).
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.