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.
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.
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.
5. Step 1 — GSDML Import in TIA Portal
- Download the GSDML from the dosing controller manufacturer portal. Example naming:
GSDML-V2.43-IFM-DOSING-20240715.xml(path is illustrative). - Open TIA Portal. From the project tree: Options → Manage general station description files (GSD).
- Select the source folder; tick the GSDML row; click Install.
- Wait for the "Installation completed" dialog. Restart of TIA Portal is not required for V17+.
- 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
- Drag-and-drop the dosing controller onto the PROFINET subnet of the CPU 1511-1 PN.
- Assign a PROFINET device name: right-click → Assign PROFINET device name. Use a structured scheme such as
skid1_dose1,skid1_dose2, …skid1_dose5. - Open the device view by double-clicking the dosing controller icon. Switch to Device view.
- Inspect the slot table (typically slots 0 = PROFINET interface, slot 1 = main process module, additional slots for diagnostics, alarms, etc.).
- 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
- 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).
- Set PN device names: Online → Accessible nodes → select dosing controllers → Assign PROFINET device name (must match configured name in project).
- Online → Go online: confirm OK (green) modules in the device view. Compare expected vs. actual topology under Online → Topology.
- Watch table: open DB_DosingCell, enable monitor, drive a 0..100 % flow at the dosing controller HMI; verify values track within 1 cycle.
-
Forcing: temporarily write
0.0too_FlowRate_Setpointand confirm the controller reacts (audible pump stop, valve closure). Restore before next steps. - 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.