Configuring Dosings on S7-1500 via PROFINET in TIA Portal

David Krause14 min read
SiemensTIA PortalTutorial / How-to
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. Overview

This procedure documents how to integrate a third-party dosing controller (e.g., IFM dosing-skid controllers supporting PROFINET cloud services and TRS/OEE reporting) onto a Siemens SIMATIC S7-1500 PLC using TIA Portal as the engineering framework. The workflow covers hardware selection, GSDML import, PROFINET device configuration, I/O slot addressing, tag table mapping, and writing the exchanged process values into a Data Block (DB) for downstream application code (scaling, alarms, batching, lot records).

The reference target device is any PROFINET IO Device that exposes cyclic process data on PROFINET slots/subslots and ships with a vendor-supplied GSDML descriptor. The reference controller is a Siemens CPU 1511-1 PN (6ES7511-1AK02-0AB0 firmware 2.9.x or later). The same procedure applies to CPU 1513-1 PN, 1515-2 PN, 1516-3 PN/DP, 1517-3 PN/DP, and 1518-4 PN/DP — only the loadable I/O memory and number of supported IO Devices scale.

Engineering caveat. The dosing controller firmware version must be known before starting the GSDML import; mismatched GSDML revisions to device firmware are the most common cause of "device not found" or "revision mismatch" diagnostic alarms during commissioning.

2. Prerequisites

Item Specification Notes
Engineering workstation TIA Portal V17 or V18 (HSP updates current) TIA Portal V18 release notes
PLC SIMATIC S7-1500 CPU 1511-1 PN (or larger) S7-1500 CPU 1511-1 PN manual
Controller firmware V2.9.x or later on the S7-1500 CPU Match CPU firmware to TIA Portal compatibility list
Dosing controller PROFINET IO Device, dual-port switched Ethernet e.g., IFM dosing-skid controllers with PROFINET / OPC UA / cloud interface
Vendor GSDML GSDML-V<vendor>-<device>-<yyyyxmmxdd>.xml Download from vendor portal (registration required by IFM, Endress+Hauser, Bürkert, etc.)
PROFINET topology Linear or ring (MRP); star optional via managed switch MRP requires MRP-capable devices and PROFINET V2.3 conformance class C
Cabling Cat 5e minimum, shielded, M12 D-coded or RJ45 Industrial-rated for cabinet/floor routing

Confirm that the dosing controller supplies a latest GSDML revision; if a controller is already on a previous firmware, the GSDML must match that firmware major.minor version. Always import the GSDML bundled with the controller's own "Device Description Files" installer where one exists (IFM, Endress+Hauser, Siemens, Bürkert all publish these).

3. CPU Sizing for Five PROFINET Dosing Devices

For a typical cell with five dosing controllers — each often presenting cyclic I/O of 4 to 16 input bytes and 4 to 8 output bytes plus acyclic parameters — the CPU 1511-1 PN is comfortably sized. Quantitative sizing rules of thumb:

  • Each PROFINET IO Device occupies roughly 0.2–0.5 KB of the CPU's "Program memory for IO data" (separate from the user program) plus 0.5–1.5 KB for diagnostic buffers.
  • Cyclic I/O data are addressed in the process image and do not consume user-program work memory unless explicitly copied.
  • Retentive storage for batching/recipe data (a single dosing recipe typically 1–4 KB) is handled in user-managed DBs and must be allocated in CPU load memory separately.

Reference figures from the Siemens SIMATIC S7-1500 System Manual:

CPU Order number Program memory Data memory Retentive Bit memory Max IO Devices
CPU 1511-1 PN 6ES7511-1AK02-0AB0 500 KB 3 MB 1.5 MB 16 KB 128
CPU 1513-1 PN 6ES7513-1AL02-0AB0 900 KB 4.5 MB 3 MB 32 KB 128
CPU 1515-2 PN 6ES7515-2AM02-0AB0 1.5 MB 7.5 MB 5 MB 64 KB 256

Five dosing devices with 32-bit floating-point process values, scaling FB instances, recipe DBs (50 active recipes of 1 KB each), and retention typically consumes < 200 KB of program memory and ~ 1 MB of data memory on a CPU 1511-1 PN. The controller has ample headroom; the I/O memory headroom is rarely the binding constraint on a dosing cell.

Bit memory is shared with cyclic process image updates. For five dosing controllers producing 32 process bits each (status, alarms, valve feedback) plus 16 bit outputs each, allocate a non-overlapping MW range (e.g., MW100–MW199) for this cell only.

4. PROFINET Topology — Linear vs. Ring (MRP)

If each dosing controller integrates a dual-ported Ethernet switch (typical for modern PROFINET devices), the cell can be cabled linearly — controller → device 1 → device 2 → … → device 5 — without an external switch. Two practical topologies:

4.1 Linear (Recommended for commissioning simplicity)

  • CPU 1511-1 PN port 1 → dosing 1 port 1; dosing 1 port 2 → dosing 2 port 1; … dosing 5 port 2 free (panel connection).
  • Topology stored automatically by TIA Portal "Topology Editor" (compare topology & port states under Online → Accessible nodes).
  • Failure of any cable isolates downstream nodes — acceptable on a dosing skid where devices are local.

4.2 Ring (MRP — Media Redundancy Protocol)

  • Requires both ring ports declared on every MRP-capable node.
  • Configured under Properties → PROFINET interface → MRP domain → Manager on the S7-1500 CPU (the CPU acts as MRP Manager).
  • Dosing devices must support MRP Client role (CC-C). Confirm in the vendor PROFINET conformance class statement.
  • A cable break triggers RM (reconfiguration) within < 200 ms (typical 100 ms) without stopping IO data exchange — required by spec.
Switch selection. For non-deterministic PROFINET (Conformance Class A), a standard unmanaged industrial Ethernet switch (e.g., Siemens SCALANCE XB005, Phoenix Contact FL SWITCH SFNB, Weidmüller ValueLine) is acceptable. For IRT (Conformance Class C), use a managed SCALANCE XC/XB/XR with PROFINET cut-through support. Dosing controllers almost always run CC-A, so a basic switch is acceptable if a star topology is preferred.

5. Step 1 — GSDML Import in TIA Portal

  1. Download the GSDML from the dosing controller manufacturer portal. Example naming: GSDML-V2.43-IFM-DOSING-20240715.xml (path is illustrative).
  2. Open TIA Portal. From the project tree: Options → Manage general station description files (GSD).
  3. Select the source folder; tick the GSDML row; click Install.
  4. Wait for the "Installation completed" dialog. Restart of TIA Portal is not required for V17+.
  5. Open the Devices & networks view. The new device appears under Other PROFINET devices → <Vendor> → <Family>.

Verify the GSDML revision matches the controller firmware on the device label or web interface. Mismatched revision causes PROFINET IO: Device <name> reports revision error (E-1014) during startup.

6. Step 2 — Hardware Configuration & Slot Addressing

  1. Drag-and-drop the dosing controller onto the PROFINET subnet of the CPU 1511-1 PN.
  2. Assign a PROFINET device name: right-click → Assign PROFINET device name. Use a structured scheme such as skid1_dose1, skid1_dose2, … skid1_dose5.
  3. Open the device view by double-clicking the dosing controller icon. Switch to Device view.
  4. Inspect the slot table (typically slots 0 = PROFINET interface, slot 1 = main process module, additional slots for diagnostics, alarms, etc.).
  5. Each slot exposes Adresse E (Input address) and Adresse A (Output address) byte ranges under the Properties pane on the right.

The addressing convention in TIA Portal maps slot offsets into the S7-1500 process image:

Data width Symbol prefix Address sample (4-byte input)
1 byte / 8 bits %IB %IB100
2 bytes / word %IW %IW100
4 bytes / double word %ID %ID100
4 bytes / LREAL %QD (output) or %ID (input) %QD18

For a typical dosing controller exchanging a 32-bit float (flow setpoint or actual totalizer), the TIA Portal default slot addresses are usually contiguous. An operator will see, e.g., Adresse E 18…21 (4 bytes input) and Adresse A 18…21 (4 bytes output) at slot 1.

7. Step 3 — Symbolic Tag Mapping

Raw I/O addresses (%IW, %ID) are global "absolute" tags. Before writing them into a DB, declare symbolic tags in the PLC tags table for clarity:

Name Data type Address Comment
i_FlowRate_Actual REAL %ID100 Instantaneous flow (L/min)
i_BatchVolume_Actual REAL %ID104 Dosed volume (L)
i_DosingStatus WORD %IW108 Bit-packed controller status
o_FlowRate_Setpoint REAL %QD200 Target flow (L/min)
o_DosingCommand BOOL %Q204.0 Start / abort command

Symbolic IO tags are auto-rebuilt by TIA Portal at compile time. Re-compile (Project tree right-click → Compile → Software) whenever slot addresses change; this triggers the Address mapping regeneration and resolves overlaps automatically.

8. Step 4 — Data Block Layout for Dosing Cell Data

Create a global DB (e.g., DB_DosingCell, number 100) with the following structure for use across the cell of five dosing controllers:

DATA_BLOCK "DB_DosingCell"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
NON_RETAIN
VAR
  SkidID : UINT := 1;       // skid number
  DeviceCount : UINT := 5;  // configured controller count
  
  // Runtime mirroring of cyclic PROFINET data
  Device    : ARRAY[1..5] OF
    STRUCT
      FlowActual    : REAL;     // L/min, scaled from %ID slot
      VolumeActual  : REAL;     // L, scaled
      Setpoint      : REAL;     // L/min, written to %QD
      StartCmd      : BOOL;     // written to %Q.x
      AbortCmd      : BOOL;     // written to %Q.x
      DeviceOK      : BOOL;     // & slot 0 diagnostics
      LifecycleSec  : UDINT;    // runtime clock increments
      RecipeName    : STRING[32];
    END_STRUCT;
  
  // Aggregated per-cell state
  CellActive       : BOOL;
  AllDevicesOnline : BOOL;
  LastAlarmCode    : INT;      // -1 = no alarm, else vendor code
END_VAR
END_DATA_BLOCK

This block is consumed by your ladder (LAD), function-block diagram (FBD), or structured text (ST) logic. Note the use of S7-optimized access; the block uses symbolic addresses only and excludes the process image. Field devices are addressed only by symbolic tag.

9. Step 5 — Reading Process Values Into the DB (LAD and ST)

9.1 Ladder example (per-device transfer)

   Network 1: Acquire cyclic flow rate from dosing 1
   |--[ MOVE ]--|
   "i_FlowRate_Actual"          // %ID100 (source, REAL)
   "DB_DosingCell".Device[1].FlowActual  // destination REAL

9.2 Structured Text example with scaling and range-checking

// Cycle (in OB1 or OB35 "Cyclic Interrupt", 100 ms typical)
FOR #i := 1 TO 5 DO
  // Read process image (symbolic tag from the i_* PLC tag set)
  #Device[#i].FlowActual   := "i_FlowRate_Actual_Device[#i]";
  #Device[#i].VolumeActual := "i_BatchVolume_Actual_Device[#i]";
  
  // Engineering unit scaling (if vendor transmits normalised 0..100 %,
  // multiply by the configured max range, e.g. 0.0..80.0 L/min)
  IF #Device[#i].FlowActual < 0.0 OR #Device[#i].FlowActual > 110.0 THEN
    #LastAlarmCode := 1000 + #i;          // out-of-range alarm
  END_IF;
  
  // Drive setpoints back out
  IF #Device[#i].RecipeName = '' THEN
    "o_FlowRate_Setpoint_Device[#i]" := 0.0;
  ELSE
    "o_FlowRate_Setpoint_Device[#i]" := #Device[#i].Setpoint;
  END_IF;
  
  // Lifecycle counter (1 tick per scan)
  #Device[#i].LifecycleSec := #Device[#i].LifecycleSec + 1;
END_FOR;

// Aggregate state
#AllDevicesOnline := TRUE;
FOR #i := 1 TO 5 DO
  #AllDevicesOnline := #AllDevicesOnline AND "Diagnostics[i]\".StateOk;
END_FOR;

9.3 Latch writes to a recipe DB on completion

When an o_DosingCommand.DOSE_DONE edge fires, copy the runtime accumulators from DB_DosingCell.Device[i] into a retentive DB_RecipeHistory with timestamps. Use the S7-1500 instruction RTC_T (read PLC time) for the timestamp; the S7-1500 CPU carries a hardware real-time clock accurate to ±2 s/day without external sync.

10. Step 6 — Engineering Units & Conversion

Dosing controllers rarely transmit engineering-unit floats directly; most expose a normalized 0..27648 INT (analog input style) or a 0..100 % REAL. Use the SCL NORM_X and SCALE_X library to map these to L/min, mL, or whatever the application requires.

// SCL SCALE_X — convert integer 0..27648 to engineered 0.0..MAX_FLOW
#Device[#i].FlowActual := SCALE_X(
    MIN  := 0.0, MAX := #MaxFlow[i],      // engine units
    VALUE := NORM_X(MIN := 0,   MAX := 27648,
                     VALUE := "i_FlowRate_Raw[i]") );
// Conversions for percent-based volumes
#Device[#i].VolumeActual := #Device[#i].VolumePct / 100.0 * #MaxVolume[i];

Refer to the SIMATIC S7-1500 SCL Basics reference manual for language syntax; SCALE_X is part of the IEC 61131-3 standard extension libraries.

11. Verification & Commissioning

  1. Compile and download: TIA Portal → Project tree → PLC → Compile → Software (or right-click → Compile and download). Resolve any "Address already in use" warnings (typical when two devices share an offset).
  2. Set PN device names: Online → Accessible nodes → select dosing controllers → Assign PROFINET device name (must match configured name in project).
  3. Online → Go online: confirm OK (green) modules in the device view. Compare expected vs. actual topology under Online → Topology.
  4. Watch table: open DB_DosingCell, enable monitor, drive a 0..100 % flow at the dosing controller HMI; verify values track within 1 cycle.
  5. Forcing: temporarily write 0.0 to o_FlowRate_Setpoint and confirm the controller reacts (audible pump stop, valve closure). Restore before next steps.
  6. Diagnostics buffer: Online → Diagnostics → Diagnostics buffer — confirm no new events after 10 minutes of stable operation.

12. Troubleshooting Matrix

Symptom Diagnostic anchor Likely cause Resolution
Dosing controller visible in "Accessible nodes" but red "failure" after download Project tree → right-click device → Online & diagnostics PROFINET name mismatch or GSDML revision mismatch Re-assign device name to match configured "skid1_dose1"; reinstall GSDML matching controller firmware
Inputs read zero or 7FFFh all the time Watch table on i_* tag Slot assignment swapped, or input slot 1 not selected Open device view → verify slot list and "Module active" checkbox on each used slot
Communication drops under network storm Controller HMI shows "PROFINET Watchdog expired" Unmanaged switch used with CC-C environment, or MRP not properly closed Switch to managed switch with PROFINET cut-through; close ring properly with MRP Manager = CPU
CPU memory faults after 24 hours Diagnostic buffer "Load memory load alarm" Recipe history DB retention growing Bound the recipe history buffer; roll retained data to SD card / FTP / cloud
Float read as garbage (e.g., 1.E+20) Online monitor of %ID Endian swap (Vendor uses big-endian, Siemens uses little-endian) Use SCL instruction WordToSInt/REAL_TO_REAL_SWAP, or remap to INT for cross-platform compatibility
Device "not found" despite cabling Online → Accessible nodes DCP discovery blocked, VLAN mismatch, firewall Verify VLAN config; ensure DCP frames (UDP/34964) are permitted; check PROFINET cable shield grounding
Output commands ignored Watch table on o_* tag; device status Controller in "manual" or "maintenance" mode Switch controller HMI to "Remote/Auto" mode before PLC writes setpoints

13. Cloud & TRS/OEE Extensions (Optional)

Modern dosing skids (such as IFM's dosing systems) support native cloud connectivity for OEE and TRS notifications by email. The PLC integration pattern remains the same: the dosing controller becomes the data hub, exporting both to the PLC (via PROFINET, described above) and to the cloud (MQTT/HTTPS). On the PLC side, mirror critical KPIs (consumption, alarm rates, batch success rate) into the SCADA via OPC UA on the S7-1500 with the OPC UA server license (article number 6ES7822-1AA05-0YA5 or the bundled "OPC UA S7-1500 runtime" option).

14. Field-Proven Notes

  • Maintain a PROFINET device-name label on every dosing controller chassis. The label must reflect the configured name in TIA Portal; PROFINET device-name management is the #1 commissioning pitfall.
  • Always pin a watchdog. The dosing controller expects a cyclic heartbeat with the configured watchdog time; if scan time exceeds this, the controller enters fall-back state (e.g., closes valve). Configure S7-1500 OB1 cycle to under 1/3 of the controller's PROFINET watchdog (typical: set 20 ms update, 60 ms watchdog).
  • Retain a hardwired emergency-stop circuit independent of PROFINET. No software path can substitute for SIL-rated PLe emergency stop wiring.
  • After every GSDML upgrade (e.g., controller vendor ships a feature update), recompile and rebind slot addresses. Auto-rebind preserves tag names, but reserved slot numbers shift occasionally.

15. FAQ

How much memory does an S7-1500 CPU 1511-1 PN need to communicate with five PROFINET dosing controllers?

A CPU 1511-1 PN (6ES7511-1AK02-0AB0) offers 500 KB of program memory and 3 MB of data memory. Five PROFINET devices with recipe DBs and diagnostics typically consume under 200 KB of program memory and under 1 MB of data memory, leaving ample headroom on the CPU 1511-1 PN.

Where do I find the cyclic I/O addresses (%IW / %ID) for a dosing controller in TIA Portal?

In the device view, double-click the controller image, switch to the "Vue des appareils" (Device view). Each module shows columns "Adresse E" (input) and "Adresse A" (output). A 32-bit process value defaults to %ID, while a 16-bit value maps to %IW, as assigned by TIA Portal automatically after Compile.

Do I need a managed PROFINET switch between the CPU and the dosing controllers?

For non-IRT PROFINET (Conformance Class A, typical for dosing controllers), a standard industrial unmanaged switch (e.g., Siemens SCALANCE XB005) is sufficient. For IRT (Conformance Class C) or MRP ring redundancy, use a managed switch (SCALANCE XC/XB/XR) supporting PROFINET cut-through. Most dosing cells need only a basic switch if a star topology is preferred over the controller's integrated daisy-chain ports.

Why does the dosing controller drop on PROFINET after a cable break in the daisy chain?

A linear PROFINET chain does not survive cable breaks; downstream nodes stop exchanging data. To gain ring-level resilience, enable Media Redundancy Protocol (MRP) on the CPU and configure every device as an MRP Client — reconfiguration occurs within 200 ms.

Can I copy cyclic values directly into a DB, or do I need a separate tag table?

You can copy raw %ID / %QD values directly into a DB, but the recommended practice is to declare symbolic PLC tags first (e.g., i_FlowRate_Actual), then move from these into the DB. This separates hardware addressing from application logic, enabling easy GSDML-driven address remapping without restructuring every block.

Why does the PLC read garbage values for what should be a 32-bit flow value?

Most non-Siemens PROFINET controllers transmit REAL values in big-endian byte order, while the S7-1500 is little-endian. Either swap the byte order in the controller or use Siemens SCL byte-swap conversion instructions (e.g., DB_ANY_TO_REAL with explicit concatenation) on the PLC side. Always confirm with the device GSDML documentation.

Back to blog