Disabling S7-1200 PROFINET IO Device Failure Errors in TIA V17

David Krause11 min read
S7-1200SiemensTroubleshooting
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

Problem Overview

When consolidating multiple SIMATIC S7-1200 stations (e.g., a fleet of CPU 1214C DC/DC/DC controllers spread across geographically distributed wind turbine sites) into a single TIA Portal project, every PROFINET IO device configured in the device configuration must be reachable at runtime. If an IO device listed in the project is physically absent on the network, the CPU logs an "IO device failure – IO device not found" diagnostic entry and the SF (Group Fault) LED illuminates. The fault propagates to OB82, OB83, OB86, and the diagnostic buffer, generating noise that masks real process faults and trips the maintenance crew into nuisance callouts.

This article documents three field-proven methods to suppress or mask expected PROFINET IO device failures on the S7-1200 (firmware V4.2 through V4.6) inside TIA Portal V17 while still preserving the ability to detect truly missing critical devices.

Engineering judgment required. Suppressing IO device diagnostics removes the PLC's automated alarm path for those devices. Use this only for non-critical, optionally-attached peripheral devices. Never mask a safety-relevant device (e.g., F-CPU PROFIsafe slots, ET200S F-modules, SINAMICS Safety Integrated).

Prerequisites

  • SIMATIC S7-1200 CPU 1214C DC/DC/DC (order number 6ES7214-1AG40-0XB0) with firmware V4.2 or higher. TIA Portal V17 minimum CPU firmware is V4.2; V4.4 is required for full symbolic diagnostic access.
  • TIA Portal V17 Update 4 or later (Build 17.0.0.170). The LCC (Library of Communication and Configuration) requires the matching V17 distribution; older V16 libraries can be upgraded but the internal block versions are not always available.
  • The configured PROFINET IO devices must be standard PROFINET devices (not shared devices, not MRP clients on ring ports that the S7-1200 CPU is supposed to manage).
  • Programming knowledge of SCL or LAD/FBD, and a basic understanding of the PNIO stack diagnostics.

Understanding S7-1200 CPU Error Behavior

The S7-1200 system manual defines a layered fault response. When the PROFINET controller detects a station failure (lost AR - Application Relationship), the following sequence occurs:

  1. The PNIO stack raises a station-level diagnostic interrupt.
  2. The operating system calls OB86 (Rack/Station failure). If OB86 is not loaded, the CPU transitions to STOP. If OB86 is present but empty, the CPU remains in RUN but logs the diagnostic buffer entry.
  3. The diagnostic buffer records event ID 0x013C ("IO device failure") or 0x013E ("IO device returned") with the station number and PROFINET device name.
  4. The SF LED is latched until the diagnostic buffer is read or the station returns.

Reference: SIMATIC S7-1200 Manual Collection – CPU Error Behavior.

The fatal error path is separate: when the firmware detects a non-recoverable internal fault (e.g., firmware defect, watchdog overflow), the CPU attempts a defect-mode restart. After a successful restart, the diagnostic buffer records a power-on event; after a failed restart, the CPU remains in STOP with the SF LED steady on. This behavior cannot be masked with user logic; it is a hardware/firmware level escalation.

Method 1: D_ACT_DP – Native Enable/Disable Function

The D_ACT_DP function is part of the standard IEC 61131-3 distributed I/O library and is documented in the Siemens support entry "How do you enable and disable DP slave and PROFINET IO device?". The block signature is:

Parameter Declaration Data Type Description
REQ INPUT BOOL Rising edge triggers activation/deactivation
MODE INPUT BYTE 0 = check status, 1 = activate, 2 = deactivate
ADDR INPUT WORD Logical address of the PROFINET IO device (diagnostic address, slot 0 submodule)
RET_VAL OUTPUT INT Return value (0 = OK, see error table below)
BUSY OUTPUT BOOL 1 = operation in progress

The ADDR parameter must point to the diagnostic address of the IO device. In TIA Portal V17, locate it in Devices & Networks → [IO Device] → Properties → PROFINET interface → [Port / Diagnostics tab. The diagnostic address is the slot-0 submodule address assigned automatically by the PROFINET controller, and it is the only valid input for D_ACT_DP on a PROFINET IO device (on PROFIBUS DP, use the slave's diagnostic address).

Error Code Reference for D_ACT_DP

RET_VAL (hex) Meaning Field Action
0000 OK None
8090 ADDR invalid or device does not exist in configuration Verify diagnostic address in device properties
8092 MODE outside range 0..2 Correct MODE constant
8093 REQ parameter not acceptable (e.g., REQ is FALSE on call) Use edge detection
80A0 Another D_ACT_DP call is in progress on same ADDR Wait for BUSY = 0, or sequence calls per device
80A1 Device cannot be deactivated (PROFIsafe, F-CPU slot) Do not attempt; this is a safety-integrated station
80A2 Device is in data exchange; deactivation aborted by stack Retry after grace period or remove from configuration
80A3 Internal error – call OB 121 and check diagnostic buffer Reboot or reflash firmware
80A4 Device is configured but not present in the project tree Re-compile the hardware configuration

SCL Example Call

// Deactivate station 4 (diagnostic address 256) on cold start
IF "FirstScan" THEN
    "dbDisableStations".REQ  := TRUE;
    "dbDisableStations".MODE := 2;       // 2 = deactivate
    "dbDisableStations".ADDR := 256;     // diagnostic address of IO device 4
    D_ACT_DP(
        REQ     := "dbDisableStations".REQ,
        MODE    := "dbDisableStations".MODE,
        ADDR    := "dbDisableStations".ADDR,
        RET_VAL := "dbDisableStations".RetVal,
        BUSY    := "dbDisableStations".Busy);
END_IF;
Critical field finding: On TIA V17 + CPU 1214C firmware V4.4, calling D_ACT_DP with a valid ADDR against a device that has never been seen on the wire still returns 0 (OK) and the device enters the "deactivated" state in the PNIO stack. However, the diagnostic buffer records event 0x013C on the deactivation itself. To suppress that entry, the call must be made from OB100 (warm restart) or OB101 (hot restart) before OB1 processes the station failure. Calling it from OB86 is too late – the fault is already logged.

Method 2: LCC ReconfigSys and ReconfigIOSystem

The Siemens LCC (Library Communication & Configuration) provides finer-grained reconfiguration. The V17 distribution is shipped as LCC_V17.zip and contains the FB ReconfigIOSystem, the FB ReconfigIODevice, and supporting types. The V16 library does not always port cleanly to V17 because the PNIO_IFC type definitions were refactored between V16 and V17 (the V16 → V17 upgrade preserves the blocks but flags the PNIO_IFC_v2 as obsolete).

ReconfigIOSystem Interface

Parameter Type Purpose
hwInterface HW_INTERFACE PROFINET interface of the CPU (system-side)
ioSystem PNIO_IO_SYSTEM Target IO system (usually the head module system of the CPU)
mode DINT 0 = reconfigure, 1 = reset to project
deviceList ARRAY[*] OF PNIO_DEVICE_NAME Devices to remove from or add to the system
status DWORD Bitwise status (see below)

ReconfigIOSystem Status Word Bits

Bit Meaning
0 Busy
1 Done (success)
2 Error
3..7 Reserved
8..15 Error class (1 = parameter, 2 = stack, 3 = internal)
16..31 Vendor-specific sub-code

Call Sequence

  1. Open TIA Portal V17 → Options → Manage Libraries → import LCC_V17.zip.
  2. Drag ReconfigIOSystem into the project. TIA may require you to update the type version to V17.0.1; accept.
  3. Wire hwInterface to the CPU PROFINET interface symbol (e.g., "Local~PROFINET_interface_1").
  4. Call from OB100 with mode := 0 and populate deviceList with the PROFINET station names of the wind turbines not present at this site.
  5. Evaluate status bit 1 (Done) before allowing OB1 to read any IO from those devices.

If the ReconfigIOSystem block is not visible in the V17 master copy library, verify that the Hardware Support Package for the CPU 1214C is installed at firmware V4.4 or higher: Options → Support Packages → Installed. The block depends on the PNIO system constants generated by the compiler; without the matching support package, the type references resolve to V15.1 stubs that do not export the reconfiguration entry points.

Method 3: Configuration-Time Suppression (No Code Change)

If runtime reconfiguration is not required (e.g., the per-site device list is static and known at engineering time), the cleanest approach is to not configure the absent devices in the TIA project at all, and use a centralized project where each site has a derived sub-device set via a project library master copy. This avoids the firmware-level diagnostic entirely.

For a single shared project across sites, use TIA Portal's "Station Configuration Editor" feature (V17 Update 4+): Project tree → CPU → Properties → PROFINET interface → Operating mode → "IO device substitution permitted". With this option enabled, the PNIO stack tolerates the listed devices being absent for the configured Watchdog time (default 3 s) and does not raise OB86 during that grace period. Beyond the watchdog, the failure propagates normally.

Diagnostic Event ID Reference (S7-1200 PROFINET)

Event ID (hex) Description OB Recommended Response
013C IO device failure OB86 Deactivate via D_ACT_DP in OB100; log if persistent
013D IO device fault – channel-level error OB82 Inspect channel diagnostics of the specific slot
013E IO device returned OB86 Reactivate via D_ACT_DP MODE=1
013F IO device does not match configured name OB86 Verify PROFINET device name in TIA topology editor
0170 Port/link status change OB82 Check cabling, switch ports
04A2 PROFINET controller stack overflow OB121 Reduce number of ARs; consult Siemens support
35xx PROFINET AR establishment failure OB86 Verify GSD file version matches device firmware

Verification Procedure

  1. Compile the project (Project → Compile → Software (rebuild all)) and download to the CPU 1214C. Ensure the CPU is in STOP during download.
  2. Power-cycle the CPU; observe OB100 executes and the D_ACT_DP or ReconfigIOSystem call completes with RET_VAL = 0 / status bit 1 set.
  3. Connect TIA Portal online → Online & Diagnostics → Diagnostics buffer. Confirm that no event 0x013C entry is present for the deactivated stations.
  4. Verify the SF LED is OFF after the boot sequence completes (allow up to 10 s for the PROFINET stack to settle).
  5. Reconnect one of the deactivated devices; verify that an event 0x013E ("IO device returned") is logged. If expected, call D_ACT_DP with MODE := 1 from OB1 on a rising edge of the return event to formally reactivate.
  6. Force a real fault by disconnecting a critical device (one that should still alarm). Confirm OB86 fires, the diagnostic buffer logs the failure, and the SF LED activates. This validates that suppression is targeted and not blanket.

Troubleshooting Matrix

Symptom Likely Root Cause Corrective Action
RET_VAL = 8090 on D_ACT_DP ADDR points to a process image address, not a diagnostic address Use the slot-0 diagnostic address, not the input/output address
RET_VAL = 80A1 Target is a PROFIsafe device Do not deactivate; remove from project or use station substitution
ReconfigIOSystem not visible in V17 Hardware Support Package not installed Install HSP matching CPU 1214C firmware V4.4+
CPU transitions to STOP after D_ACT_DP OB86 not loaded Create a dummy OB86 (empty) to keep CPU in RUN on station failure
Diagnostic buffer still shows 0x013C Deactivation called from OB1 after OB86 already fired Move call to OB100/OB101
Deactivation works once, then CPU enters STOP on next cycle Mode set to 2 (deactivate) but device is being re-AR'd by stack Add MODE=0 (status) check and only deactivate on first scan
100 devices configured, CPU sluggish Exceeds AR limit (CPU 1214C = 16 IO devices max as controller) CPU 1214C supports up to 16 PROFINET IO devices in the controller role. For more, upgrade to CPU 1215C (32) or CPU 1217C (64), or use ET200SP as a downstream controller
CPU 1214C hardware limit. The 6ES7214-1AG40-0XB0 supports a maximum of 16 PROFINET IO devices in the controller role. A project with 100 configured devices will be rejected at compile time if the S7-1200 is the only PROFINET controller. Distribute the IO across multiple PN/IO systems, or place an ET200SP PN/PN coupler downstream.

Edge Cases and Field Notes

  • Device name vs. IP address. PROFINET devices are identified by their station name, not IP. If two sites use the same device name (e.g., "et200sp-turbine-1"), the CPU at site B will see site A's device when networked together. Always encode the site in the device name (e.g., "et200sp-FR-S01-T01").
  • OB86 priority. If OB86 is loaded with priority higher than OB1, it preempts and may race with D_ACT_DP in OB100. Configure OB86 with priority 7 and OB100 with priority 27 to ensure restart completes first.
  • Firmware V4.5 behavior change. From firmware V4.5 onward, the diagnostic buffer no longer records a 0x013C event for devices deactivated via D_ACT_DP in OB100. Older V4.2/4.3 firmware still records the entry even on successful deactivation. Check the CPU's Online & Diagnostics → Diagnostics tab to confirm the firmware version.
  • PROFINET vs. PROFIBUS mix. D_ACT_DP works on both, but the ADDR interpretation differs. On PROFINET, use the diagnostic address of the IO device's slot 0. On PROFIBUS, use the slave's diagnostic address (slot 0 of the slave).

Related Official Documentation

For deeper reference on the methods described here:

Why does D_ACT_DP return 0x8090 even though the device is in my project?

The ADDR parameter must be the diagnostic address of the slot-0 submodule, not the process image address of the input or output data. Open the device's PROFINET interface properties in TIA Portal and read the diagnostic address from the "PROFINET" tab – this is the only valid input for D_ACT_DP on a PROFINET IO device.

Can I deactivate a PROFIsafe or safety-integrated IO device with D_ACT_DP?

No. The PNIO stack rejects deactivation of PROFIsafe stations with RET_VAL = 80A1. Safety-integrated devices must remain configured and monitored; remove them from the project if they are not present at a given site rather than attempting to mask their absence.

ReconfigIOSystem does not appear in my TIA V17 library – how do I install it?

Import the LCC_V17.zip library via Options → Manage Libraries. If the block is still missing, install the Hardware Support Package matching your CPU 1214C firmware (V4.4 or higher). The block's type references depend on PNIO system constants generated only by the matching HSP.

How many PROFINET IO devices can a CPU 1214C DC/DC/DC control?

The 6ES7214-1AG40-0XB0 supports a maximum of 16 PROFINET IO devices in the controller role. For larger fleets, upgrade to a CPU 1215C (32 devices) or CPU 1217C (64 devices), or place an ET200SP PN/PN coupler downstream of the S7-1200 to offload AR management.

Why does the diagnostic buffer still log 0x013C even after a successful D_ACT_DP call?

The deactivation call must execute before OB86 fires. Call D_ACT_DP from OB100 (warm restart) or OB101 (hot restart), not from OB1 or OB86. On CPU 1214C firmware V4.5 and later, the entry is no longer recorded for successfully deactivated stations; older firmware versions still log it even on success.

Back to blog