Error 0xE6FE03 on a Siemens RF260R reader attached to an S7-300 through an RF185C communications module almost always points to a parameter-assignment fault in the IdentProfile WRITE-CONFIG telegram — most commonly because the air-interface selection byte (byte 16) was copied from an RF300 sample program and left at the RF300 default instead of being set to 0x01 for the RF200 family. This field reference walks through the exact byte layout, the diagnostic logic, and the step-by-step fix that gets the Init command returning 0x0000 on a brand-new RF260R/RF185C/S7-300 station.
1. Problem Overview
During commissioning of a SIMATIC RF260R (6GT2811-0AA00 / -0AA01) RFID reader connected through an RF185C communications module (6GT2002-0HD00) to a SIMATIC S7-300 CPU — using the RS422 variant of the RF260R — the user program issues the standard IdentProfile INIT command from OB1. The STATUS output of the Ident function block returns 0xE6FE03 within one or two OB1 cycles and the reader never comes online. The link LED on the RF185C is steady green, eliminating a layer-1 RS422 wiring problem; the diagnostic buffer of the S7-300 CPU shows the IdentProfile FB terminating in error.
The Siemens Ident Profile documentation lists 0xE6FE03 under two related conditions:
- Bad parameter assignment of the Ident instruction (mismatch between user-program data block, HW Config, and the selected reader family).
-
Length of the input/output areas too small for the cyclic I/O word (the
LENparameter at the block input does not match the actual I/O address space allocated to the RF185C in HW Config).
Both interpretations point in the same direction: the data sent to the reader on the WRITE-CONFIG telegram is inconsistent with the physical reader that is wired to the RF185C. In 90 % of field cases reported to Siemens support, the root cause is the air-interface byte at the end of the 16-byte WRITE-CONFIG payload being set to the RF300 default when the actual hardware is RF200. The same sample project that ships with the Ident Profile manual entry ID 109978379 is built against RF300 hardware and will fault against an RF260R unless byte 16 is corrected.
0xE6FE03 on first commissioning, ahead of the cyclic-I/O-length interpretation. Resolve the byte-16 issue first; only revisit the I/O length if the error persists after the byte is corrected.2. Hardware Topology
The reference setup for this error consists of three logical blocks: the S7-300 station, the RF185C communications module, and the RF260R reader. They are linked by two different bus systems, both of which have to be configured correctly for the IdentProfile to initialize.
2.1 Component references
| Component | Article number | Role | Interface to next block |
|---|---|---|---|
| S7-300 CPU (e.g., CPU 315-2 PN/DP) | 6ES7 315-2EH14-0AB0 | Hosts the IdentProfile FB and runs the cyclic OB1 call. | S7-300 backplane bus |
| RF185C communications module | 6GT2002-0HD00 | Ident slave on the backplane; converts Ident telegrams to RS422. | 4-wire RS422 (TxD+/TxD-/RxD+/RxD-) plus 24 V supply |
| RF260R reader (RS422 variant) | 6GT2811-0AA00 / -0AA01 | 13.56 MHz RFID reader, ISO/IEC 15693, RF200 air interface. | Antenna field, ~0.25 m read range |
| RS422 connecting cable | 6GT2891-0CH30 family (pre-assembled, 2 m–50 m) or shielded 4-wire twisted pair to 1000 m | Carries the differential serial data and 24 V supply. | — |
| 24 V power supply (PS 307) | 6ES7 307-1EA01-0AA0 | Powers the S7-300 backplane; the same rail also feeds the RF260R through the RS422 cable. | — |
3. Error Code 0xE6FE03 — Definition and STATUS Handling
In the Siemens Ident Profile, every FB exposes a STATUS output word of data type WORD. The high byte is the error class and the low byte is the sub-code, allowing 65 535 distinct error states. 0xE6FE is the error class for parameter or configuration problems, and 0x03 is the sub-code that covers both bad parameter assignment and cyclic I/O area too small. The full 16-bit value 0xE6FE03 has bit 15 set, which the Ident Profile defines as "this is an error; clear and re-initialize before re-issuing REQ."
The general rules for evaluating STATUS on S7-300 / S7-400 IdentProfile blocks are described in the Siemens S7-300/S7-400 error-messages documentation:
- Inspect
STATUSimmediately after everyREQrising edge. - If
STATUS = 16#0000, the command was accepted andDONEis set within one cycle. - If
STATUShas bit 15 set (any value ≥ 16#8000), it is an error; clear or re-initialize the command path before re-issuingREQ. - Bits 0–7 of the low byte are the sub-code; always log the full 16-bit value, not just the high byte.
- After an error, the FB enters a fault state and remains in it until a fresh
INIT = TRUEpulse is applied.
| STATUS (hex) | Meaning | Most likely cause on RF200 |
|---|---|---|
| 0xE6FE01 | Unknown command code | Wrong command written into the data block (e.g., user wrote WRITE-CONFIG opcode to the READ slot). |
| 0xE6FE02 | Command length invalid |
LEN input on the FB does not match the configured I/O width. |
| 0xE6FE03 | Parameter assignment error or cyclic I/O area too small | Air-interface byte in WRITE-CONFIG wrong for the connected reader; or HW Config input/output area smaller than the cyclic I/O word width the FB expects. |
| 0xE6FE05 | Reader family not supported by this FB version | FB library is older than the connected reader family; install the current Ident library. |
| 0xE6FE10 | No transponder in the field when expected | Antenna tuning, tag type, or placement. |
| 0xE6FE83 | Reader not present on RS422 | RS422 wiring, termination, or 24 V supply to the reader. |
| 0xE6FE84 | CRC error on the RS422 link | Cable shielding, baud rate, or EMC sources near the cable run. |
4. Root Cause — Air-Interface Mismatch in WRITE-CONFIG
The IdentProfile WRITE-CONFIG command is sent once during the INIT phase to inform the reader family which air interface it should use. For RF260R (RF200 family), byte 16 of the 16-byte payload must be set to 0x01. For RF300 readers, the default from the standard sample is a different value (the value copied from the RF300 example in the project template); for RF600, a different value applies. Re-using an RF300 sample project against an RF260R leaves byte 16 at the RF300 default, and the RF185C rejects the telegram with 0xE6FE03 as soon as the reader NACKs the configuration request.
The Siemens manual "Ident profile and Ident blocks, FB 45 / FB 55 / FB 56 / FB 79–82 with S7-300 / S7-400 / ET 200S / ET 200pro" — support entry ID 109978379 — covers the WRITE-CONFIG layout on page 79 and the air-interface byte on page 85. The exact statement: byte 16 of the WRITE-CONFIG payload must be set to 0x01 for the RF200 family.
4.1 Step-by-step logical breakdown
- CPU powers up; OB1 calls the Ident FB with
INIT = TRUE. - FB composes the WRITE-CONFIG telegram from the user DB (16 payload bytes plus 8-byte Ident header) and posts it to the RF185C over the backplane.
- RF185C forwards the telegram to the RF260R over RS422 at 19.2 kbit/s or 57.6 kbit/s, depending on the module DIP switch.
- RF260R reads byte 16 of the payload, expects
0x01(RF200), receives the RF300 default value, repliesNACK. - RF185C sets
STATUS = 16#E6FE03on the FB and clearsDONE/BUSY. - The PLC stays offline for the reader; the user sees the error in VAT, HMI, or webserver diagnostics.
- Until byte 16 is corrected, every subsequent
REQreturns the same status because the FB never progresses past the configuration step.
5. IdentProfile Block and WRITE-CONFIG Data Structure
The Ident FB family in the S7-300 environment is documented in the Siemens Ident Profile manual. The relevant command for the air interface is WRITE-CONFIG, which is sent as a 16-byte payload following the standard Ident header. The byte that the RF200 family checks is the last byte of the payload, byte 16 (1-indexed) at offset 15 (0-indexed).
| Offset (0-indexed) | Byte # (1-indexed) | Content | RF260R value | RF300 default value (from sample) |
|---|---|---|---|---|
| 0 | 1 | Reserved / option flags | 0x00 | 0x00 |
| 1 | 2 | Reserved | 0x00 | 0x00 |
| 2 | 3 | Reserved | 0x00 | 0x00 |
| 3 | 4 | Reserved | 0x00 | 0x00 |
| 4 | 5 | Reserved | 0x00 | 0x00 |
| 5 | 6 | Reserved | 0x00 | 0x00 |
| 6 | 7 | Reserved | 0x00 | 0x00 |
| 7 | 8 | Reserved | 0x00 | 0x00 |
| 8 | 9 | Reserved | 0x00 | 0x00 |
| 9 | 10 | Reserved | 0x00 | 0x00 |
| 10 | 11 | Reserved | 0x00 | 0x00 |
| 11 | 12 | Reserved | 0x00 | 0x00 |
| 12 | 13 | Reserved | 0x00 | 0x00 |
| 13 | 14 | Reserved | 0x00 | 0x00 |
| 14 | 15 | Reserved | 0x00 | 0x00 |
| 15 | 16 | Air interface / reader family | 0x01 | RF300 default (causes 0xE6FE03 against RF260R) |
The 16-byte payload is part of a larger command frame, but the byte that determines which physical reader family is being addressed is byte 16 (1-indexed), offset 15 (0-indexed). In STL, the assignment looks like this:
// User DB that backs the Ident FB (e.g., DB 200)
DATA_BLOCK DB200 "IdentConfig"
STRUCT
abConfig : ARRAY[0..15] OF BYTE; // 16-byte WRITE-CONFIG payload
END_STRUCT;
BEGIN
abConfig[0..14] := 16#00; // 15 reserved bytes
abConfig[15] := 16#01; // byte 16 = 0x01 selects the RF200 air interface
END_DATA_BLOCK
After the DB has been loaded into the S7-300, the FB reads from DB200.abConfig via its DATA / LEN inputs and forwards the array to the RF185C. The LEN input must equal 16 (the full payload length); a smaller value causes the FB to truncate the telegram and the RF260R receives a malformed WRITE-CONFIG — another path to the same 0xE6FE03.
6. Resolution Procedure
The fix has three components: (a) correct the air-interface byte in the user DB, (b) verify the I/O length in HW Config matches the FB LEN input, and (c) re-issue the Init with a clean STATUS. The first two are the parameter side; the third is the verification.
6.1 Prerequisites
- STEP 7 V5.5 / V5.6 (or TIA Portal V16+) with the SIMATIC Ident library installed.
- The IdentProfile manual downloaded for offline reference (support entry ID 109978379).
- Online connection to the S7-300 station (MPI, PROFIBUS, or PROFINET).
- Wiring of the RF260R to the RF185C already verified — link LED on the RF185C green, 24 V measured at the reader terminals between 22 V and 26 V.
- Write permission for the user DB that backs the Ident FB.
6.2 Step-by-step
-
Open the user DB that holds the WRITE-CONFIG payload (in the failing project this is the DB referenced by the
DATAinput of the Ident FB; commonly DB200 or a project-specific DB). -
Set byte 16 to
0x01. In the Data View, navigate to the last byte of the 16-byte array and change the value to16#01. Save the DB and download it to the CPU (target system → download). -
Cross-check the I/O length. In HW Config, select the RF185C and read its input and output start/end addresses. The default after inserting the module is typically 4 input bytes / 4 output bytes. For a 16-byte WRITE-CONFIG the FB expects at least 16 bytes in each direction. Either widen the HW Config I/O area to 16 bytes per direction or — if the FB allows it — set the
LENinput to 4 and accept that 16-byte commands are not supported on this slot. In practice, always widen the I/O area to 16 bytes. -
Reset the Ident FB. Drive
INIThigh for one OB1 cycle, then low; this re-arms theSTATUSregister and clears any latched fault state from the previous Init attempt. -
Re-issue Init. Set
INIT = TRUEfor one OB1 cycle. If using a one-shotREQon a flag (recommended), make sure the rising edge fires after theSTATUSregister has been cleared. -
Monitor
STATUSandDONE. With the corrected payload,STATUSshould drop to16#0000within 1–2 OB1 cycles andDONEshould rise for one cycle. -
Run a sanity READ. Issue a simple
READcommand with a known MDS tag (e.g., MDS D324, 6GT2600-0AD10) in the antenna field. The FB should report tag presence in the user buffer; if it does, the RF200 air interface is fully operational.
6.3 STL example for the user program
// OB1 — cyclic Ident handling
CALL "IdentProfile_FB", DB100
REQ := M10.0 // rising edge triggers Init or read/write
INIT := M10.1 // TRUE for the first cycle, then FALSE
DATA := P#DB200.DBX0.0 BYTE 16
LEN := 16 // must match array length; do not truncate
// ... other inputs ...
STATUS := MW12
DONE := M10.2
ERROR := M10.3
Where DB200 holds the 16-byte WRITE-CONFIG payload with byte 16 (offset 15) = 16#01 (RF200 air interface). For a READ or WRITE command, change REQ to drive the same FB with a different command code; the DATA pointer and LEN must match the new command's payload length, and the byte-16 air-interface selector must remain 0x01 because the reader was initialized with the RF200 air interface during the INIT step.
7. Verification and Commissioning Checks
After the corrected payload is in place, the following checks confirm the fix and isolate any remaining issue:
-
STATUS = 16#0000after Init — the most important indicator. A non-zero value here means the parameter assignment is still wrong or the reader family mismatch persists. Log the full 16-bit value and decode it against the error-class table in section 3. - Link LED on RF185C steady green — confirms RS422 physical layer is healthy. A flashing LED indicates telegram errors that may have a different cause (wiring, termination, baud-rate DIP switch on the back of the module).
-
Presence of a transponder detected on the first
READ— place an ISO 15693 tag (e.g., MDS D324, 6GT2600-0AD10) in the antenna field at no more than 0.20 m from the RF260R face. The FB should report presence in the user buffer within 50–150 ms. -
Online > Monitor > I/O on the RF185C — verify the cyclic I/O words toggle in response to commands, indicating end-to-end data flow. A static I/O area with all zeros is a strong hint that the FB has never written to it, often a symptom of a wider
LENmismatch. - Diagnostic buffer of the RF185C — should be empty after a clean Init. Any diagnostic entry here suggests a layer-1 or layer-2 issue (RS422 wiring, termination, or EMC) that has to be cleared before revisiting 0xE6FE03.
- S7-300 diagnostic buffer — should not contain "I/O access error" or "module not reachable" entries. If it does, the RF185C slot addressing in HW Config does not match the physical slot.
- Webserver of the CPU (CPU 315-2 PN/DP, CPU 317-2 PN/DP) — the diagnostic pages mirror the FB status and provide a remote view when no MPI/PROFIBUS is available at the panel.
STATUS word into a human-readable string using the same error-class/sub-code table above. This avoids the trap of "I changed the byte and the error is still 0xE6FE03 but at a different offset" — the user can immediately see whether the high byte changed. A persistent 0xE6FE03 after the byte is corrected almost always means the I/O length is still wrong, not that the byte is wrong a second time.8. The "Cyclic I/O Length Too Small" Interpretation
The same 0xE6FE03 can also be raised when the I/O area configured in HW Config is too narrow. This is more often seen on S7-300 stations where the RF185C was placed with default I/O length (e.g., 4 bytes in / 4 bytes out) and the user code later expanded to a 16-byte payload command. The FB composes a longer telegram than the I/O area can carry, and the RF185C truncates the request — the reader receives a malformed WRITE-CONFIG and rejects it.
Recommended values for a single RF185C handling a 16-byte WRITE-CONFIG plus the standard Ident header:
| Direction | HW Config input length | Ident FB LEN
|
Notes |
|---|---|---|---|
| Inputs | 16 bytes (or 8 words) | 16 | Default Siemens recommendation for WRITE-CONFIG class commands. |
| Outputs | 16 bytes (or 8 words) | 16 | Same. |
If the station has multiple Ident slaves sharing a single RF185C, the I/O length must be sized for the largest command in the program; truncation of the largest command will raise 0xE6FE03 on every Init until the area is widened. If the slot is already at the maximum supported by the RF185C (32 bytes in / 32 bytes out), split the configuration into multiple RF185C modules or shorten the largest command by re-architecting the user DB to use acyclic READ / WRITE commands instead of the 16-byte WRITE-CONFIG.
0xE6FE03 appears within one cycle of the first INIT but the S7-300 diagnostic buffer usually also shows an I/O access error for the RF185C slot. The presence of a paired I/O access error in the diagnostic buffer is the cleanest way to distinguish "byte 16 is wrong" from "I/O length is wrong" without re-downloading the DB.9. Related Error Codes and Diagnostic Matrix
| STATUS (hex) | Likely cause on RF200 | First action |
|---|---|---|
| 0x0000 | Command complete | None — proceed. |
| 0xE6FE03 | Air-interface byte wrong (RF300 sample used) or I/O area too small | Set byte 16 of WRITE-CONFIG to 0x01 and verify HW Config length. |
| 0xE6FE02 | LEN does not match command class | Set LEN to the documented length for the command. |
| 0xE6FE10 | No transponder in the field when expected | Check antenna tuning, tag type, and physical placement. |
| 0xE6FE83 | Reader not present on RS422 | Verify RS422 wiring, termination, and 24 V supply to the reader. |
| 0xE6FE84 | CRC error on the RS422 link | Check cable shielding, baud rate, and EMC sources near the cable run. |
| 0xE6FExx (any) | Generic parameter / configuration fault | Decode the full 16-bit STATUS and consult the Ident Profile manual. |
Always refer to the S7-300 / S7-400 error-messages documentation for the general STATUS-handling rules, and to the Ident Profile manual (109978379) for the 0xE6FE family sub-codes. Do not interpret 0xE6FE sub-codes as hardware faults unless the parameter assignment has been verified first — most 0xE6FE* errors are configuration issues, not defective readers.
10. RF200 vs RF300 Air Interface Selection Reference
| Reader family | Examples | Byte 16 value (hex) | Frequency / standard |
|---|---|---|---|
| RF200 | RF260R, RF220R, RF240R | 0x01 | 13.56 MHz, ISO/IEC 15693 |
| RF300 | RF340R, RF350R | RF300 default value (from sample project) | 13.56 MHz, ISO/IEC 15693 |
| RF600 | RF680R, RF685R | RF600 default value (from sample project) | UHF, EPC Class 1 Gen 2 |
| RF68x (UHF) | RF680R variants | RF68x default value (from sample project) | UHF, ISO/IEC 18000-63 |
11. FAQ
What does Siemens IdentProfile error 0xE6FE03 mean on an RF260R with an S7-300?
0xE6FE03 is the IdentProfile sub-code for "parameter assignment error" or "length of the input/output areas too small for the cyclic I/O word." On a brand-new commissioning with an RF260R, the cause is almost always that byte 16 of the WRITE-CONFIG payload is still set to the RF300 default from the example project; it must be 0x01 for the RF200 family. Resolve the byte-16 issue first, then revisit the I/O length only if the error persists.
Where is byte 16 of WRITE-CONFIG configured in the STEP 7 project?
Byte 16 is the last element of the 16-byte array that you point to with the DATA input of the Ident FB. In a typical sample it lives in a user DB such as DB200 — navigate to the last element of the array and write 16#01 there, then re-download the DB to the CPU. The LEN input on the FB must be set to 16 to match.
Does the RF260R work with the RF185C over RS422 in TIA Portal as well as STEP 7 V5?
Yes. The IdentProfile FB family exists in both STEP 7 V5.x and TIA Portal (the SIMATIC Ident library). The byte-16 rule is identical across both toolchains; only the location of the DB and the way the FB is called in OB1 differ. TIA Portal V16 and later ship the RF185C in the HW catalog directly; earlier versions may require a HSP.
How long is the RS422 cable between the RF185C and the RF260R?
Siemens pre-assembled cables (6GT2891-0CH30 family) cover 2 m to 50 m. With a shielded 4-wire twisted-pair cable and the bus terminator supplied with the RF260R, runs of up to 1000 m are documented. For cable runs above 50 m, install the bus terminator at the reader end — without it, intermittent 0xE6FE84 (CRC) errors will appear on top of the parameter issue and make the root cause harder to see.
After fixing byte 16 I still get 0xE6FE03 — what next?
Re-check the I/O length in HW Config: the RF185C must have at least 16 bytes of input and 16 bytes of output area assigned, and the LEN input on the Ident FB must equal the payload size of the command in use. If both are correct, capture the full 16-bit STATUS, the diagnostic buffer of the RF185C, and the four cyclic input words of the RF185C with a trace; this isolates whether the fault is on the parameter side (PLC) or the physical side (reader / cable).