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.
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.
| 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:
- 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.
- 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.
- 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 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.
- Open the project, switch to Devices & Networks, and select the S7-1500 CPU.
- Open the Topology view tab. If the tab is not visible, enable it from the toolbar (icon with three connected nodes).
- 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.
- 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). - Save and compile the project.
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.
| 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 |
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):
| 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
Common T_CONFIG status codes when the JVL motor is not answering:
| 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.
- 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.
- 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.
- In TIA Portal, open the topology view and verify that the cable to the JVL port carries a partner port. Save and compile.
- 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.
- 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.
- For the software-driven path, force the T_CONFIG instance to run by toggling the start tag. Verify the
statusDWORD of the instance is16#0000_0000after one scan and that the JVL name is present in the live list of the IO system. - 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
| 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.
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.