Resolving PROFINET Device Name Reset on JVL Stepper with S7-1500

David Krause17 min read
ProfibusSiemensTroubleshooting
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 Statement

A JVL integrated stepper motor (for example, the MIS or MCD series with PROFINET option) is wired to a SIMATIC S7-1500 CPU over a PROFINET IO network. The IP address is assigned correctly, but the Name of Station (PROFINET device name) is empty after every power cycle of the motor. The IO controller cannot establish cyclic IO data exchange with the device, the diagnostic buffer of the S7-1500 logs station failure / "device not accessible", and an operator has to re-assign the name through TIA Portal Online & Diagnostics every time the machine is started.

The fault is reproducible: 100% of power cycles result in a missing station name. After manual assignment through TIA Portal, the device comes online within one to three DCP round-trips, until the next power cycle. The behavior is independent of the S7-1500 firmware version and independent of the GSDML revision used for the JVL device.

Engineering impact. Manual re-assignment is acceptable during commissioning but is unacceptable in series machines where the machine must come up unattended after a power outage. The PLC program itself must be able to bring the IO device back into operation.

PROFINET Naming Fundamentals

PROFINET IO identifies every IO device by a unique Name of Station. The IO controller (the S7-1500) addresses the device by the configured name and only then negotiates the IP address, subnet mask, and gateway. Without a correct name, the device cannot enter cyclic data exchange and the IO controller reports a station failure in the diagnostic buffer.

The name is transported and assigned by the Discovery and Configuration Protocol (DCP), which is a link-local layer-2 protocol on top of Ethernet. DCP uses the multicast MAC address 01:0E:CF:00:00:00 and the Ethertype 0x8892. The name itself is a string of 1 to 240 characters made of labels separated by dots, for example jvl-stepper-01.

Table 1 - DCP Services Used for Name Handling
DCP Service Initiator Direction Purpose
Identify (Request/Response) Controller / Engineering Multicast Discover all devices and their MAC addresses in the broadcast domain
Get (Request/Response) Controller / Engineering Unicast Read the current Name of Station, IP, and MAC of one device
Set (Request/Response) Controller / Engineering Unicast Assign a new Name of Station and IP to one device identified by MAC

Conformance with the PROFINET specification (IEC 61784-2 and the PI specification for PROFINET IO) requires the IO device to retain the Name of Station persistently. Devices that clear the name on every power-up violate the standard PROFINET IO Device profile. This is the case with the JVL stepper at its factory default.

Root Cause: JVL "Blank Name of Station" Default

JVL ships its PROFINET-enabled stepper motors with a parameter that controls what happens to the Name of Station on a power-up. The factory default of this parameter is "Powerup with blank Name of Station". In that mode the device clears any name it may have received and starts with an empty station name, which is why the controller cannot find it.

The parameter can be changed to "Powerup with retained Name of Station" through the JVL MacTalk configuration utility, which is a paid tool (a one-time license per PC). The license requirement is a recurring source of frustration in series machines because the end customer may not have MacTalk installed and cannot re-enable the retention setting once the device is on the machine.

Because the controller cannot override the device-side behavior, three engineering workarounds are available when MacTalk is not an option:

  1. Configure PROFINET topology and enable Device replacement without exchangeable medium in the S7-1500 project. The controller will then push the configured name to the device on every PLC startup.
  2. Use the T_CONFIG function block in the S7 program to assign the name programmatically by MAC address, with a fallback path that is independent of the engineering tool.
  3. Use a third-party DCP tool (Siemens PRONETA, Helmholz, or similar) to write the name through a small startup script on a Windows service PC.

The remainder of this article focuses on options 1 and 2 because they run inside the S7-1500 and need no extra PC software in the field.

Siemens Workaround: Device Replacement Without Exchangeable Medium

Siemens introduced the feature Device replacement without exchangeable medium in STEP 7 V5.5 / TIA Portal V13 for the S7-1500 and ET 200SP / ET 200MP stations. The feature is documented in the TIA Portal help under "Creating a standard machine project - Multiple use of PROFINET IO systems - Permit overwriting of PROFINET device name" and is also referenced in the S7-1500 system manual (Function Manual "PROFINET", section 4.6).

The feature is designed for two scenarios:

  • True device replacement: a defective IO device is swapped and the new device receives the correct station name from the controller without an engineering station.
  • Recovery of devices that have lost their station name (for example, JVL steppers in the factory default state).

Both scenarios use the same code path on the controller side. The controller performs a DCP Identify on its known topology, compares the responding MAC addresses against the configured MAC addresses, and pushes the configured Name of Station and IP to any device that does not have it.

Topology requirement. "Device replacement without exchangeable medium" requires that the PROFINET topology (port-to-port neighbour relationships) is fully configured in the engineering project. The controller uses the topology to identify the device at the correct port. Without topology, the controller cannot determine which device is supposed to receive which name, and the feature is silently disabled.

Topology Configuration Procedure

The following steps are written for TIA Portal V16 / V17 / V18 / V19 / V20. The dialog texts are stable across versions; only icon positions shift slightly between V16 and V20.

  1. Open the project, switch to Devices & Networks, and select the S7-1500 CPU.
  2. Open the Topology view tab. If the tab is not visible, enable it from the toolbar (icon with three connected nodes).
  3. For every port on the S7-1500 that is wired to a PROFINET device, drag a cable from the CPU port to the partner port. Repeat for every switch port and for the JVL stepper port. The result is a graph where every cable has a known local port and partner port.
  4. Mark the cable from the JVL stepper and set Alternative port = No alternative port (this is the default and the only value that is supported by JVL steppers).
  5. Save and compile the project.
S7-1500 CPU X1 P1 / X1 P2 P1 -> Sw P1 Managed Switch Sw P3 -> JVL P1 JVL Stepper (PROFINET) Sw P4 -> ET200 P1 ET 200SP / Other IO further ports Topology view - every cable carries a partner port

If the JVL stepper sits behind an unmanaged switch that does not support LLDP, the controller cannot read the neighbour relationship at the partner side. The workaround is to fix the partner port in the topology editor: right-click the cable at the JVL end, choose Properties > Partner port > Fixed, and enter the JVL port number (always port 1 for JVL steppers). The controller will then trust the manually entered partner port for the DCP identify.

TIA Portal Device Properties Settings

After the topology is in place, the S7-1500 project must be told to use it. The relevant settings are on the CPU and on the IO device.

Table 2 - Required Settings in TIA Portal
Location Property Value Effect
S7-1500 > PROFINET interface > Advanced options Use PROFINET device replacement without exchangeable medium Enabled Activates the DCP-name push at startup
S7-1500 > PROFINET interface > Advanced options Permit overwriting of PROFINET device name Enabled Allows the controller to overwrite a name that is already set (needed when JVL retained a stale name)
JVL IO device > PROFINET interface > Name of Station Configured name e.g. jvl-stepper-01 The name the controller will push to the device
JVL IO device > PROFINET interface > IP address Configured IP e.g. 192.168.0.12 The IP the controller will push together with the name
JVL IO device > PROFINET interface > Role IO device Fixed Prevents the JVL from being misidentified as a supervisor
Compile after every change. The two CPU-level options ("Use device replacement" and "Permit overwriting") are written into the system data blocks (SDB) of the PROFINET IO system. They only take effect after a full project compile and download to the CPU. Reading them back with Online & Diagnostics > PROFINET IO > Diagnostics does not show whether they are active; only the compile log confirms it.

Programmatic Approach with T_CONFIG

When the topology editor is not usable (for example, behind a third-party switch that does not pass LLDP) or when the machine builder wants a fully software-driven recovery path, the T_CONFIG function block from the Siemens PROFINET blocks library can be used. T_CONFIG is part of the PROFINET IO library and is documented in the S7-1500 Function Manual "PROFINET" as well as the TIA Portal help under Communication > PROFINET IO > Configuring PROFINET IO.

T_CONFIG supports the following modes (selection, not exhaustive):

Table 3 - T_CONFIG Modes Relevant for Name Assignment
MODE Function Typical use
1 DCP Identify by name (broadcast) Detect whether a device is reachable under a given name
2 DCP Identify by MAC Resolve a MAC to a current IP/name
3 DCP Set name and IP by MAC Push a name to a device that has no name (the JVL use case)
4 DCP Set IP only by MAC Push an IP to a device that already has the correct name

The following SCL code is a minimal example. It is intended to run in OB100 (startup) so the JVL is named before the IO system is brought up. Adapt the MAC array, the IP array, and the device name to the project.

// Auto-assign PROFINET name to JVL stepper at PLC startup
// Uses T_CONFIG from "PROFINET IO" library
// Target: S7-1500 CPU 1515-2 PN, firmware V2.9 or higher

DATA_BLOCK "cfgJVL"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
NON_RETAIN
   STRUCT
      req   : BOOL;                 // start request
      busy  : BOOL;
      done  : BOOL;
      error : BOOL;
      status: DWORD;                // DCP / T_CONFIG status
      // JVL MAC as configured in the project (label on motor housing)
      mac   : ARRAY[1..6] OF BYTE := 16#00, 16#0A, 16#14, 16#11, 16#22, 16#33;
      // IP that should be assigned together with the name
      ip    : ARRAY[1..4] OF BYTE := 192, 168, 0, 12;
   END_STRUCT;
END_DATA_BLOCK

FUNCTION_BLOCK "fbJVL_NameAssign"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
NON_RETAIN
VAR
   statModeBusy : BOOL;
   statTconfig   : "PROFINET IO".T_CONFIG;   // from the PROFINET library
END_VAR
BEGIN
   // One-shot trigger from OB100 "FirstScan" or from a dedicated startup tag
   IF "cfgJVL".req AND NOT statModeBusy THEN
      statModeBusy := TRUE;
      // MODE 3 = DCP Set name and IP by MAC
      statTconfig(REQ   := TRUE,
                  MODE  := 3,
                  DEVICE_NAME := 'jvl-stepper-01',
                  DEVICE_MAC  := "cfgJVL".mac,
                  DEVICE_IP   := "cfgJVL".ip,
                  busy  => "cfgJVL".busy,
                  done  => "cfgJVL".done,
                  error => "cfgJVL".error,
                  STATUS => "cfgJVL".status);
   END_IF;

   IF "cfgJVL".done OR "cfgJVL".error THEN
      "cfgJVL".req := FALSE;
      statModeBusy := FALSE;
      statTconfig(REQ := FALSE);
   END_IF;
END_FUNCTION_BLOCK
Calling OB. T_CONFIG must be called from an OB with a known execution context. OB1 (cyclic) and OB100 (startup) are both supported. The recommendation for the JVL use case is OB100, because the device needs the name before the PROFINET IO system is started. If the controller is configured to start the IO system in OB100 as well, the name push and the IO start are serialized and the device comes online in the same startup pass.

Common T_CONFIG status codes when the JVL motor is not answering:

Table 4 - Selected T_CONFIG STATUS Codes
STATUS (hex) Meaning Typical JVL cause
0000_0000 No error Name was written successfully
0000_0001 DCP identify timeout JVL not powered, wrong cable, MAC mismatch
0000_0002 DCP identify: multiple devices answered with the same name Duplicate PROFINET name in the network
0000_0010 IP / name conflict JVL retained a different name from a prior project
0000_0080 Local resource busy T_CONFIG called twice in parallel; serialize the calls
80A1_0000 Internal error, PROFINET stack not ready T_CONFIG called before the PROFINET interface is up; move call out of OB100 into the first OB1 cycles

PRONETA Alternative for Non-TIA Environments

When neither topology editing nor T_CONFIG is acceptable (for example, on a skid where the controller is an S7-1200 that does not support T_CONFIG in the same way, or when the project is locked), the field engineer can use Siemens PRONETA to push the name from a service laptop. PRONETA is a free utility published by Siemens, available in the Siemens Industry Online Support under entry ID 67460624. It performs DCP Identify, DCP Set, and IO-Test on a PROFINET network without any TIA Portal project.

PRONETA does not solve the root cause (the JVL still clears its name on power cycle), but it provides a quick on-site recovery tool for commissioning engineers. A scripted variant is to start PRONETA in Headless mode with a configuration file and run it as a Windows scheduled task after every reboot of a service PC. This is acceptable for skids but is not recommended for production lines because it adds a Windows PC to the machine.

Commissioning Verification Checklist

Run the following checks in the given order on the first commissioning of a machine with a JVL stepper on PROFINET.

  1. Power the JVL stepper, wait 5 s, and verify with a plain DCP Identify (PRONETA, Online & Diagnostics, or Wireshark with PROFINET dissector) that the device is reachable on the wire and reports its MAC.
  2. Power-cycle the JVL stepper. Verify that the device reports an empty Name of Station. This confirms the JVL is in the factory default state and that the workarounds are required.
  3. In TIA Portal, open the topology view and verify that the cable to the JVL port carries a partner port. Save and compile.
  4. In the CPU properties, confirm that both Device replacement without exchangeable medium and Permit overwriting of PROFINET device name are enabled. Download the project to the CPU.
  5. Power-cycle the JVL again. Within 5 s the controller should push the name and IP. Verify in Online & Diagnostics > PROFINET IO that the JVL IO device is in state "OK" and that the diagnostic buffer of the CPU no longer logs station failure.
  6. For the software-driven path, force the T_CONFIG instance to run by toggling the start tag. Verify the status DWORD of the instance is 16#0000_0000 after one scan and that the JVL name is present in the live list of the IO system.
  7. Repeat the power-cycle test 10 times consecutively. All 10 cycles must result in a successful IO connection. Record the longest observed recovery time and compare it with the machine-level startup time budget. If the recovery time exceeds the budget, the topology contains a port mismatch; check the port numbers with LLDP.

Troubleshooting Matrix

Table 5 - Symptom / Cause / Fix
Symptom Probable cause Fix
JVL is reachable by DCP identify but never gets a name JVL is in factory default "Powerup with blank Name of Station" and topology is not configured Enable topology in TIA Portal, enable device replacement without exchangeable medium, recompile and download
JVL gets a name on the first power-up but not on subsequent power-ups JVL retained a different name from a prior project; the controller refuses to overwrite Enable Permit overwriting of PROFINET device name on the CPU PROFINET interface
T_CONFIG reports status 0x80A10000 T_CONFIG was called before the PROFINET interface finished its own startup Move the T_CONFIG call from OB100 to the first few cycles of OB1, gated by a startup tag
JVL gets a name but IO data exchange does not start The IP set by the controller conflicts with a manually assigned IP on the JVL side Reset the JVL IP to 0.0.0.0 (factory default) or set the IP via MacTalk; let the controller manage the IP
JVL is behind a non-LLDP switch, controller never sees a neighbour Topology cannot be discovered, so device replacement does not fire Set the partner port of the JVL cable to Fixed in the topology editor, enter the JVL port number
Multiple JVL steppers keep swapping their names after power-up The controller has not yet been given a unique MAC-to-port mapping Verify in the topology editor that each JVL has its own cable with its own partner port; check that MAC addresses differ
JVL is reachable only after several seconds JVL boot time is longer than the PROFINET startup window Increase the PROFINET startup time on the IO device (device properties > IO cycle > Watchdog time) and delay the IO start in OB100 by a few hundred ms

JVL-Specific Notes and Firmware Considerations

JVL ships PROFINET firmware in several revisions. The behaviour described above is the factory default of the parameter Powerup Name of Station. JVL has released firmware revisions where the parameter is exposed through a PROFINET record, which would in principle allow the controller to change the setting without MacTalk. Field engineers should confirm with JVL support whether the current firmware of the specific motor (MIS, MCD, MCS, or integrated servo series) exposes this record. The information is not public in the GSDML and must be requested from JVL.

MacTalk itself is a paid Windows utility. The cost of the license is the reason many machine builders are looking for a PLC-driven workaround rather than installing MacTalk at every customer site. The workarounds documented in this article remove that dependency and are sufficient for the majority of installations where only the Name of Station retention is at stake.

Series machine rollout. When the JVL is part of a series machine and MacTalk is not available, document the MAC of every JVL in the machine's electrical drawing and reference the MAC from the TIA Portal project. This makes the T_CONFIG path deterministic and avoids the "wrong device gets the name" class of failures when several machines are on the same commissioning bench.

References and Further Reading

Siemens official documentation that applies to the workarounds described in this article:

  • Permit overwriting of PROFINET device name - TIA Portal V20 help
  • S7-1500 Function Manual "PROFINET", section 4.6 "Device replacement without exchangeable medium" - available in the Siemens Industry Online Support under entry ID 49948856
  • Siemens PRONETA tool - Industry Online Support entry ID 67460624
  • PROFINET specification (IEC 61784-2 and PI specification for PROFINET IO) - published by PROFIBUS & PROFINET International (PI)

Frequently Asked Questions

Why does my JVL stepper not retain the PROFINET station name after a power cycle?

The JVL PROFINET-enabled stepper motors ship with a parameter "Powerup with blank Name of Station" in the factory default, which clears any name on power-up. The behaviour is configurable through the JVL MacTalk utility; the alternative is to let the S7-1500 push the name at every startup using the topology editor and the "Device replacement without exchangeable medium" feature.

Can I use T_CONFIG in a S7-1500 to assign a PROFINET name automatically?

Yes. T_CONFIG is a function block from the "PROFINET IO" library, supports MODE 3 (DCP Set name and IP by MAC), and can be called from OB100 (startup) or OB1 (cyclic). The block returns a STATUS DWORD; 0x00000000 means the name was written successfully, 0x00000001 means DCP identify timeout, and 0x80A10000 means the PROFINET interface was not yet ready when the block was called.

Do I need to configure the PROFINET topology for device replacement without exchangeable medium?

Yes. The feature relies on the topology editor in TIA Portal to map every PROFINET cable to a partner port. Without topology the controller cannot determine which device is supposed to receive which name, and the feature is silently disabled. For non-LLDP switches, set the partner port of the JVL cable to "Fixed" in the topology editor.

What tool can I use to write a PROFINET name if I do not have TIA Portal installed?

Siemens PRONETA is a free utility that performs DCP Identify and DCP Set without any TIA Portal project. It is available in the Siemens Industry Online Support under entry ID 67460624. PRONETA does not fix the root cause on the JVL side; it provides a manual or scripted recovery path on a service PC.

Does this workaround work for S7-1200 controllers as well?

Topology-based device replacement works for the S7-1200 from firmware V4.2 onward, but T_CONFIG support is limited. For S7-1200, prefer the topology + "Permit overwriting of PROFINET device name" approach. For S7-1500, both the topology approach and the T_CONFIG approach are fully supported and can be combined for redundancy.

Back to blog