Problem Description
When integrating an ET 200SP CM 4xIOLink communication module (article number 6ES7147-5JD00-0BA0) into a STEP 7 / TIA Portal project and pairing it with the LIOLink_Device function block from the Siemens IO-Link library, acyclic parameter reads against an attached IO-Link device return the following fault signature:
- Block status output
ERROR= TRUE - Block status output
STATUS= 16#8602 - Internal RDREC subfunction error =
DE80_B000(per the TIA Portal online help, this corresponds to "WRREC / RDREC: Index invalid")
The fault reproduces regardless of whether the LIOLink_Device instance was inserted manually or generated from the IO-Link device description (IODD). On the same controller, the identical block instance, identical hardware identifier (hwID), and identical sensor (IFM O1D100 distance / level sensor) work without modification when the master is swapped to a Lumberg IO-Link master using a CAP value of -19456. This controlled comparison isolates the failure to the CAP (Channel Access Point) parameter, not to the IOLink_Device block itself, the RDREC primitive, or the IODD import.
Error Code Reference
The combined fault surface must be read in two layers: the LIOLink_Device user-facing status and the embedded RDREC return value.
| Code | Layer | Meaning (per TIA Portal help) | Likely cause in this scenario |
|---|---|---|---|
| 16#8602 | LIOLink_Device STATUS | Acyclic parameter access to the IO-Link device failed at the master / PROFINET layer | RDREC was directed at the wrong submodule / access point because CAP was left at 0 or set to the wrong master |
| DE80_B000 | Internal RDREC subfunction error | "Index invalid" – the record index 0xB000 does not exist in the addressed submodule | CAP 0 (autodetect) resolved to a submodule that does not expose index 0xB000 (ISDU read request), so the firmware rejected the record |
| 16#8601 | LIOLink_Device STATUS | Device is in a wrong state (e.g. not in OPERATE) or master not yet commissioned | Power-up race condition – verify after the CM 4xIOLink port status LED is green |
| 16#8603 | LIOLink_Device STATUS | ISDU response timeout from the IO-Link device | Wiring or port-configuration mismatch (3-wire vs 5-wire) – see ET 200SP IO-Link Master manual |
The pairing 16#8602 + DE80_B000 is the diagnostic fingerprint of a CAP mismatch on the CM 4xIOLink. Status 16#8601 or 16#8603 with a clean DE80 status would point instead to commissioning or wiring problems.
Root Cause Analysis
The CAP input of LIOLink_Device is the decimal equivalent of the IO-Link master's acyclic access point. It is the value the internal RDREC uses to address the PROFINET submodule slot / sub-slot that owns the IO-Link port's ISDU service. On the ET 200SP CM 4xIOLink, the IO-Link function lives in subslot 1 of the head module's IO-Link submodule; the corresponding acyclic access point is decimal 227 (hex 0xE3). This value is documented in the ET 200SP IO-Link Master manual in the section covering acyclic data exchange via RDREC / WRREC.
The autodetect branch of LIOLink_Device (CAP = 0) only succeeds when the master publishes its IO-Link access point in a way the Siemens library recognises. The ET 200SP CM 4xIOLink does publish the value, but the autodetect path has a known limitation: if the device IODD is added with multiple port mappings, the library may resolve the wrong slot. Manually forcing the known-good value of 227 bypasses autodetect entirely and addresses the IO-Link master submodule directly.
For the Lumberg IO-Link master in the comparison test, the access point is -19456 (hex 0xB400), reflecting a signed-16-bit address used by the third-party PROFINET profile. The two values are not interchangeable.
Solution: Configure CAP = 227 on LIOLink_Device
- Open the LIOLink_Device instance DB in the TIA Portal project tree (typically under Program blocks > System blocks > LIOLink_Device_Instance).
- Open the instance DB and locate the input
CAP(DINT, default 0). - Set
CAP = 227. - Recompile the program and download to the CPU (S7-1200 / S7-1500 / ET 200SP CPU).
- Restart the LIOLink_Device instance (REQ rising edge) and observe STATUS.
After the change, RDREC is issued against the correct submodule and index 0xB000 (the ISDU read request record). The head-end firmware accepts the record, the IO-Link master forwards the ISDU service to the device, and LIOLink_Device returns the requested parameter with STATUS = 16#0000.
ET 200SP CM 4xIOLink Hardware Reference
The CM 4xIOLink is a four-port IO-Link master in the ET 200SP form factor. The technical data most relevant to acyclic parameter access is summarised below; full specifications are in the TIA Portal technical specifications page for 6ES7147-5JD00-0BA0 and the ET 200SP IO-Link Master manual (PDF).
| Parameter | Value |
|---|---|
| Article number | 6ES7147-5JD00-0BA0 |
| Number of IO-Link ports | 4 |
| Simultaneously controllable | 4 |
| IO-Link protocol | V1.0 and V1.1 |
| Port connector | M12, A-coded |
| Wiring | 3-wire and 5-wire per terminal assignment in the manual block diagram |
| PROFINET interface | Via ET 200SP head module (IM / CPU) |
| Acyclic access point (CAP) | 227 (decimal) / 0xE3 (hex) – IO-Link master function |
| Port status LED colours | Green = port active, Flashing green = no device, Red = fault |
IO-Link Master CAP Value Cross-Reference
The CAP value is not universal. It is the decimal access point of the IO-Link master submodule within the PROFINET device model. The table lists the values that have been verified in the field or documented by the manufacturer; the list is not exhaustive.
| IO-Link master | Family | Recommended CAP | Notes |
|---|---|---|---|
| SIMATIC ET 200SP CM 4xIOLink (6ES7147-5JD00-0BA0) | Siemens | 227 | Head-end IO-Link function submodule; verified per Siemens support |
| SIMATIC ET 200AL CM 4xIOLink | Siemens | 227 (verify against manual) | Same firmware family; confirm against manual |
| Lumberg LioN-P IO-Link master | Lumberg / Belden | -19456 (0xB400 signed) | Third-party PROFINET profile; signed-16-bit representation |
| Balluff BNI EIP IO-Link master | Balluff | 0 (autodetect) – or vendor-specific | EtherNet/IP variant, separate parameter model |
| Phoenix Contact AXL F IOL8 | Phoenix Contact | Vendor-specific – see reference | Axioline, not ET 200SP |
LIOLink_Device Block Interface
The LIOLink_Device block is the Siemens library wrapper around RDREC for IO-Link ISDU services. The inputs that matter for this fault are summarised below; full interface is in the library documentation that ships with TIA Portal.
| Input | Type | Default | Purpose |
|---|---|---|---|
| HW_ID | HW_IO | 0 | Hardware identifier of the IO-Link master PROFINET submodule |
| CAP | DINT | 0 | Channel Access Point (decimal) of the IO-Link master submodule; 0 = autodetect |
| PORT | UINT | 0 | IO-Link port number on the master (1..4 for CM 4xIOLink) |
| INDEX | UINT | 0 | ISDU index of the parameter to read/write |
| SUBINDEX | UINT | 0 | ISDU sub-index of the parameter |
| REQ | BOOL | FALSE | Rising edge triggers an acyclic service |
For an O1D100 read of, e.g., process data or a parameter such as the switching output configuration, INDEX is the ISDU index defined in the IODD. The CAP must be 227; PORT is 1 for the first physical port on the head module.
O1D100 Device Notes
The IFM O1D100 is a time-of-flight distance / level sensor with an IO-Link interface (V1.0 / V1.1 depending on firmware revision). It exposes a wide ISDU parameter set – switching output mode, output logic, measurement range, filter, hysteresis – all accessible through LIOLink_Device. When the CAP is wrong, no ISDU index is reachable, which is why DE80_B000 ("Index invalid") is reported on the very first read attempt: the RDREC never reaches the device, it is rejected at the head-end.
Once CAP = 227 is in place, typical commissioning reads are:
- Read device identification (index 0x0018 / sub-index 0) – returns vendor, product, serial, firmware.
- Read process data length and content (index 0x0028) – for the O1D100 distance value in mm.
- Configure switching output (index 0x003C) – window mode, NO/NC, hysteresis.
Verification Procedure
- After downloading the project with CAP = 227, place the CPU in RUN.
- Trigger a single read on the LIOLink_Device instance (rising edge on REQ).
- Monitor
STATUSon the instance DB. Expected value:16#0000on a successful read. - Confirm the returned data length in
LENmatches the ISDU response size declared in the IODD. - Repeat the read several times in the watch table to confirm consistency. A first-call success followed by intermittent 16#8602 indicates the autodetect branch is being re-entered – verify CAP has not been overwritten at runtime.
- Cross-check the CM 4xIOLink port LED: solid green on port 1 confirms the O1D100 is in OPERATE and ISDU services are available.
Troubleshooting Matrix
| Symptom | Most likely cause | Fix |
|---|---|---|
| 16#8602 + DE80_B000 on CM 4xIOLink, autodetect CAP = 0 | Autodetect cannot resolve the IO-Link master access point on this head module | Set CAP = 227 |
| 16#8602 + DE80_B000 on Lumberg master with CAP = 227 | Wrong master profile addressed | Set CAP = -19456 for Lumberg; restore CAP = 227 only when returning to the CM 4xIOLink |
| 16#8601 after CAP fix | Master or port not yet in OPERATE (power-up race) | Delay first REQ until port LED is solid green; add a startup gate of > 2 s |
| 16#8603 after CAP fix | IODD / firmware mismatch, or wiring fault (3-wire vs 5-wire on the O1D100) | Re-import the correct IODD; verify terminal assignment per the manual |
| STATUS = 16#7002 (busy) for > 10 s then timeout | Port powered down or device disconnected | Check 24 V supply at the M12 port; check port LED |
| STATUS = 16#8602 on a write (WRREC path) with CAP = 227 | Index / sub-index is read-only on the O1D100, or the parameter is write-protected | Verify access rights in the IODD; consult the O1D100 manual for writable ISDU list |
Commissioning Checklist for CM 4xIOLink + LIOLink_Device
- Verify article number 6ES7147-5JD00-0BA0 in the device configuration matches the installed module.
- Configure all four ports in the device view: port mode (IO-Link, DI, DO), IODD assignment, validation settings.
- Download the hardware configuration and confirm the port LEDs reach the expected state.
- Insert LIOLink_Device from the Siemens IO-Link library (TIA Portal > Options > Manage Library).
- Wire the O1D100 (or other device) to port 1 with the correct 3-wire / 5-wire assignment.
- Set CAP = 227 on the instance DB before the first REQ pulse.
- Run a diagnostic watch table that monitors STATUS, BUSY, ERROR, and the port status byte from the diagnostic data record.
- Document the CAP value in the project comments so the next commissioning engineer sees it immediately.
Safety and Operational Notes
The CM 4xIOLink is a standard I/O module without integrated functional safety. IO-Link parameter access via LIOLink_Device is for commissioning, diagnostics, and configuration; it must not be used as the primary means of changing process-critical parameters during a live run without a risk assessment. If the O1D100 switching output drives a safety-relevant function, validate the change in a controlled sequence and re-arm the safety chain if required by the machine's safety design.
What does LIOLink_Device error 16#8602 mean on a Siemens CM 4xIOLink?
It indicates an acyclic parameter read or write failed at the IO-Link master / PROFINET layer. On the ET 200SP CM 4xIOLink (6ES7147-5JD00-0BA0), the most common cause is an unresolved Channel Access Point – the block's CAP input is at 0 (autodetect) and the autodetect path does not return a valid value. The accompanying internal RDREC subfunction error DE80_B000 ("Index invalid") confirms the record was sent to the wrong submodule. The fix is to set CAP = 227.
What CAP value should I use for the ET 200SP CM 4xIOLink?
Set CAP = 227 on the LIOLink_Device instance. This is the decimal access point of the IO-Link master function submodule in the ET 200SP PROFINET device model, and it is the value Siemens support confirmed as correct for the CM 4xIOLink (6ES7147-5JD00-0BA0). The same value typically applies to the ET 200AL CM 4xIOLink family – confirm against the ET 200SP IO-Link Master manual for the specific revision in use.
Why does the same LIOLink_Device block work on a Lumberg IO-Link master but not on the CM 4xIOLink?
The CAP value is master-specific. The Lumberg IO-Link master uses a third-party PROFINET profile with a signed-16-bit access point of -19456 (hex 0xB400). The CM 4xIOLink uses the Siemens profile with access point 227 (hex 0xE3). A CAP value of -19456 sent to the CM 4xIOLink points at a non-existent submodule and the head-end firmware returns DE80_B000 ("Index invalid"), which the LIOLink_Device surfaces as 16#8602. Always match the CAP to the installed master, or drive it from a project-specific constant DB if multiple masters are used.
Can I leave CAP = 0 and let the LIOLink_Device autodetect?
Not reliably on the CM 4xIOLink. Autodetect (CAP = 0) works for some Siemens masters, but in field experience the CM 4xIOLink does not always resolve a valid access point through autodetect, particularly when the project contains multiple IODDs or when the master is paired with an ET 200SP CPU rather than an external S7-1500. For repeatable commissioning, hard-code CAP = 227 and document the value in the project comments.
How do I verify the fix is in place after setting CAP = 227?
Trigger a single REQ edge on the LIOLink_Device instance and monitor the STATUS output. A successful ISDU read returns STATUS = 16#0000. The port LED on the CM 4xIOLink should be solid green for the addressed port (port 1 in the original fault). Repeat the read several times in the watch table to confirm consistency. If STATUS returns 16#8603 instead, the CAP fix is in place but the IODD or wiring needs attention – the TIA Portal technical specifications and the ET 200SP IO-Link Master manual cover the 3-wire / 5-wire assignment and the IODD version requirements.