Resolving CPU928B I/O Addressing Error on the SIMATIC S5-135U
The SIMATIC S5-135U programmable controller remains in service in many legacy plants, and the CPU 928B (order numbers 6ES5 928-3UB11 and 6ES5 928-3UB12) is one of the most widely deployed high-end CPUs in this family. One of the most common commissioning failures on this platform is a stop condition triggered as soon as an absolute input reference such as I 4.0 is downloaded into OB 1. The fault manifests as the red ADS (Adress-Decoder-Stop) LED illuminating, the STOP LED activating, and the interrupt stack (ISTACK) reporting an Adressierungsfehler (addressing error / stack identifier ADF). This reference walks through the underlying addressing model, the role of the special data block, and the exact procedure to clear the fault.
1. Problem Description
The reported symptom pattern is consistent and reproducible:
- A program consisting only of flag operations (
F 30.0,F 4.5, etc.) downloads successfully and the CPU stays inRUN. - As soon as an absolute process-input reference such as
A I 4.0is added toOB 1and the block is reloaded, the CPU transitions toSTOP. - The ADS LED on the CPU 928B front panel is lit (steady red).
- The ISTACK read on the programmer displays the stop cause as "Adressierungsfehler" / stack ID
ADF. - The physical hardware: a single 6ES5 digital input module in the S5-135U rack with the address-selection jumper set to byte 4.
The single physical input module is correctly jumpered, but the CPU still rejects the I/O reference. This is the classic signature of a missing or incorrect special data block configuration (DB 1 or DX 0) that tells the CPU 928B which byte address is bound to which slot.
2. Hardware Architecture: S5-135U and CPU 928B
2.1 The 135U Rack Topology
The S5-135U uses a 21-slot rack (CR 700-0L, CR 700-0LB, or the 9-slot EG 185/EG 186 expansion units). Slot numbering is fixed, and the backplane assigns a default byte address to every slot. The standard mapping for a 135U central rack is summarized below.
| Slot | Typical module | Default byte address (inputs) | Default byte address (outputs) |
|---|---|---|---|
| 0 | Power supply (PS 955) | - | - |
| 1 | CPU 928B (or 2-3 for multi-CPU) | - | - |
| 2 / 3 | CPU / IM / empty | - | - |
| 4 | I/O slot group A | IB 0 / IB 1 | QB 0 / QB 1 |
| 5 | I/O slot group B | IB 2 / IB 3 | QB 2 / QB 3 |
| 6 | I/O slot group C | IB 4 / IB 5 | QB 4 / QB 5 |
| 7 | I/O slot group D | IB 6 / IB 7 | QB 6 / QB 7 |
| 8-21 | Further I/O via IM 300/IM 310 | Configurable | Configurable |
The slot-to-address relationship is the foundation of S5 I/O access. When a STEP 5 statement references I 4.0, the CPU reads byte 4 of the process image of inputs (PII). The PII is refreshed from the backplane at the start of OB 1 cycle. If no physical module responds to byte 4 on the backplane at refresh time, the address decoder flags an Adressierungsfehler.
2.2 CPU 928B Variants and Firmware
Two hardware variants are relevant for the error class described in this article:
| Order number (MLFB) | Firmware | User memory | Notes |
|---|---|---|---|
| 6ES5 928-3UB11 | CPU 928B firmware v1.x | Up to 64 KB RAM / EPROM | Initial 928B release, dual-port RAM via IM 304/IM 314 |
| 6ES5 928-3UB12 | CPU 928B firmware v2.x and v3.x | Up to 64 KB RAM / EPROM / FLASH | Adds expanded special-DB syntax, integrated S5-155U features |
The full programming reference is published by Siemens as document CPU 928B Programming Guide, available from the Siemens Industry Online Support portal (file pa928ben.pdf, entry ID 19397726). Section 2.4.3 "Special Data Blocks" and Section 10.1 "Stop Causes and ISTACK Analysis" are the two chapters that govern the resolution described here.
Reference: CPU 928B Programming Guide (PDF) and Siemens support entry 19397726.
3. Root Cause: The Special Data Block Is Missing
The CPU 928B, like every S5-135U/155U CPU, uses a special data block (in German: Sonder-DB) to describe the I/O configuration. The CPU does not auto-discover modules; it relies on a static description loaded into DB 1 (or, when DX 0 is used as the system DB, into DX 0). The CPU cross-checks the configured byte map against the backplane reply at every PII/PIQ refresh. The moment a referenced byte is not in the configured list, the address decoder halts the cycle and sets the ADS LED.
The stack identifiers in the ISTACK for the relevant error class are:
| ISTACK label (German) | ISTACK label (English) | Hex code | Triggering condition |
|---|---|---|---|
| ADF | Adressierungsfehler | 0x22xx family | Referenced I/O byte is not present in DB 1/DX 0 and no module responds at that address on the backplane |
| QVZ | Quittungsverzug | 0x23xx family | Module is configured but did not acknowledge within the watchdog window |
| PEF | Parametrierfehler | 0x24xx family | Module parameterization record is wrong (e.g. wrong module type for the configured address) |
| STUE | Stackueberlauf | 0x21xx family | Stack overflow - separate cause, not related to addressing |
The reported symptom — "ADS alarm led ON, ISTACK shows adressing error" — maps directly to the ADF cause. QVZ and PEF are not the same; a QVZ stop would indicate that the module is configured but the physical handshake timed out (wiring, addressing-jumper mismatch, or a dead channel), while ADF means the CPU does not know about the address at all. Because the program loads with F-flags, the CPU never exercises the address decoder, which is why flag-only programs do not trigger the fault.
4. CPU 928B Addressing Models
The CPU 928B supports two addressing modes, selectable by content of the special data block:
- Fixed slot addressing (default). No DB 1 / DX 0 is required. The address is purely a function of the slot position. This is the simpler mode and is appropriate when the rack population is fixed and matches the default mapping.
-
Variable addressing via the special data block. The CPU reads the byte-list contained in DB 1 (or DX 0) and uses that list for both PII/PIQ refresh and address-decoder checks. This is the only mode that allows you to assign a non-default address (such as
IB 4to a module that physically sits in a slot whose default address is something else) or to mask out empty slots.
Because the user wants to reference I 4.0 but the module is jumpered to byte 4, the program assumes byte 4 is a valid PII input. The CPU must be told that byte 4 is in fact present. With a single 135U central rack and one DI module, either mode can be used:
- If the DI module is physically in the slot whose default address is byte 4 (slot 6 in the table above, or the appropriate slot for the rack variant), fixed slot addressing works without any DB 1 at all — but only when the default address of that slot is byte 4 and no other modules occupy adjacent slots with conflicting byte ranges.
- If the DI module sits in any other slot, or if the rack is non-standard, the special data block must list byte 4 as an input byte.
5. Anatomy of the Special Data Block (DB 1 / DX 0)
The special data block is a normal STEP 5 DB with a strict fixed record layout. The CPU 928B does not interpret every word; it expects the configuration records in a defined order. The relevant record types for I/O are:
| DW offset | Record identifier (KH) | Meaning | Data words that follow |
|---|---|---|---|
| DW 0 | KH = 4D41 ('MA' ASCII) | Identification start marker | ASCII string identifying the block as a special DB |
| DW 1 | KH = 534B ('SK') | Marker for DB type | ASCII "SK" = Sonderkennung (special ID) |
| DW 2-3 | KH = 3031 / DE00 | Type/version | ASCII version string |
| DW 4 | KF = +00004 | Configuration word count | Number of subsequent data records |
| DW 5 | KH = EEEE | End-of-list marker | Terminates the configuration list |
The user's reported DB 1 contains exactly that skeleton (KH=4D41, KH=534B, KH=3031, KH=DE00, KF=+00004, KH=EEEE). This is the header only; no I/O entries follow because the count word is set to +00004 but no records of type I/O have been added before the EEEE terminator. The CPU reads the empty I/O list, concludes that no I/O is configured, and triggers the ADF stop the moment OB 1 references I 4.0.
The skeleton is correct in form but incomplete in content. The mandatory step is to insert the actual I/O configuration records between the count word and the EEEE terminator.
5.1 Record formats for inputs and outputs
Each I/O entry is one data word. The high byte is the function code, the low byte is the byte address. The function codes are:
| Code (high byte, hex) | Meaning | Low byte content |
|---|---|---|
| 00 | No operation / pad | ignored |
| 10 | Inputs (PII bytes) | Byte address 0-127 (KH = 10xx where xx is the byte number) |
| 20 | Outputs (PIQ bytes) | Byte address 0-127 |
| 30 | Inputs in expansion rack (via IM) | Byte address 0-127 |
| 40 | Outputs in expansion rack (via IM) | Byte address 0-127 |
For the reported case, the DI module is in the central rack and jumpered to byte 4. The DB 1 must contain at least one record of the form KH = 1004 (input byte 4). The complete corrected DB 1 is shown in section 7 below.
6. I/O Module Jumper Verification
Before writing the DB 1, the physical address-selection jumper on the 6ES5 DI module must be inspected. Siemens 6ES5 digital input modules (e.g. 6ES5 430-4UA12, 6ES5 432-4UA12, 6ES5 434-4UA12, 6ES5 436-4UA12) carry a DIL-switch or solder-jumper block that selects the byte address on the backplane.
- Power off the rack before opening any module. The 135U backplane carries 5 V/15 V/24 V and several signal lines that are not hot-swappable.
- Remove the DI module and locate the address-selection jumper block (referenced in the module's front-face label as "Adresswahl" or "S1").
- Set the block to byte address 4. For a 4-bit binary-coded jumper, the pattern is 0 1 0 0 (LSB on the right); for a 3-bit block, 1 0 0 (LSB right).
- Re-insert the module in the chosen slot, ensuring the backplane connector is fully seated.
7. Step-by-Step Resolution
The following procedure assumes a STEP 5 programmer (PG 685, PG 710, PG 720, PG 730, PG 740, PG 750, or a modern PC running STEP 5 V7.x with the COM 155 / CP 5511 / CP 5611 / USB-to-S5 adapter). All changes are made online with the CPU in STOP until the ISTACK is clean.
7.1 Prerequisites
- STEP 5 programming software (DOS-based or Windows-based) with online connection to the CPU 928B via the S5 programming port (15-pin D-sub, TTY / 20 mA current loop, or the V.24 adapter).
- CPU 928B Programming Guide open to section 2.4.3.
- Known slot position of every I/O module in the rack.
- Known jumper setting of every I/O module.
- Backup of the current program (do
FILE > SAVE ALL BLOCKS > to PCbefore editing).
7.2 Procedure
- Connect the PG, switch the CPU to
STOP, and call the ISTACK display (function key F4 on a PG 685, or menu Debug > ISTACK on STEP 5 V7). Confirm the stop cause isADFand note the failing address shown in the right-hand column. - Open DB 1 in the editor. The existing skeleton (
KH=4D41, KH=534B, KH=3031, KH=DE00, KF=+00004, KH=EEEE) is kept; theEEEEterminator is moved down to make room for the I/O records. - Insert the I/O record(s). For the reported case (one DI module at byte 4, central rack, no outputs) insert:
DW 5: KH = 1004(input byte 4 in central rack)
DW 6: KH = EEEE(end-of-list terminator, moved down) - Update the count word if necessary. With a single I/O record the value
KF=+00004should be reviewed against the manual; for a single-byte configuration the count is number of records × words-per-record + header overhead. The exact interpretation per Siemens section 2.4.3 is "number of data words in the configuration body excluding the terminator". For one record, the value is therefore+00001. AdjustDW 4accordingly. - If outputs are also present, add additional records. Example: one output module at byte 0:
KH = 2000 - Save DB 1 to the CPU. The CPU remains in
STOP. - Trigger a DB 1 reload by issuing a manual cold-restart sequence: switch the CPU to
STOP, then turn the mode selector fromSTOPtoRUNvia the spring-loaded reset position, or use the PG command CPU > COLD RESTART. The CPU reads DB 1 fresh and re-initializes the address decoder. - Reload
OB 1,OB 25, and any other program blocks. - Switch the CPU to
RUN. The ADS LED should extinguish and the green RUN LED should illuminate within one cycle.
7.3 Corrected DB 1 Example (single DI module on byte 4)
0: KH = 4D41; (* 'MA' identification *)
1: KH = 534B; (* 'SK' special DB *)
2: KH = 3031; (* version '01' ASCII *)
3: KH = DE00; (* terminator of version string *)
4: KF = +00001; (* one configuration word follows *)
5: KH = 1004; (* input byte 4 in central rack *)
6: KH = EEEE; (* end of list *)
7.4 Extended Example (DI byte 4 + DO byte 0 + DI byte 32 in expansion)
0: KH = 4D41;
1: KH = 534B;
2: KH = 3031;
3: KH = DE00;
4: KF = +00003;
5: KH = 1004; (* input byte 4, central *)
6: KH = 2000; (* output byte 0, central *)
7: KH = 3020; (* input byte 32, expansion rack *)
8: KH = EEEE;
For multi-CPU configurations, expansion racks, and S5-155U up-migrations, the same record format applies, but additional records (IM 304/IM 314 interface assignments, inter-CPU mailboxes) must precede the I/O list. Consult the CPU 928B Programming Guide section 2.4.3 for the full record set.
8. Verification
After the corrected DB 1 is loaded and the CPU is in RUN:
- Read the ISTACK again. The stop cause should now be empty or "RUN - cyclic" with the address decoder content showing byte 4 as configured.
- Force the physical input by applying 24 V DC to channel 0 of the DI module. Use a programmer status display (STATUS on the PG, or VAR > STATUS in STEP 5 V7) and observe
I 4.0transitioning to1. The cycle time on the CPU 928B front-panel display should remain stable in the expected range (typically 5-30 ms for a small OB 1). - Execute the user's original logic:
A I 4.0 = F 4.5;. Toggle the input and verify that flagF 4.5follows. - Check the QVZ LED is off. If QVZ lights despite the address now being valid, suspect the jumper on the module, the backplane connector seating, or a failed input channel.
Reference: Siemens support entry 19397726 - CPU 928B Programming Guide.
9. ISTACK Analysis Reference
The CPU 928B ISTACK is divided into several layers. The most useful fields for I/O addressing faults are:
| ISTACK field | Meaning |
|---|---|
| Stop cause (STOP-URSACHE) | ADF, QVZ, PEF, STUE, ZYK, etc. |
| Interrupt / event info (UEB-INFO) | Sub-cause (e.g. address byte that failed) |
| Address (ADRESSE) | Byte address referenced when the fault was triggered |
| Block stack (BAUSTEIN, AWL) | OB / FB / PB / SB currently active |
| Instruction (ANWEISUNG) | STEP 5 statement that caused the stop |
For the reported case, the ISTACK would show ADF as the stop cause, the ADRESSE field as byte 4, and the ANWEISUNG as the A I 4.0 line. This triple is the diagnostic fingerprint of a missing I/O record in DB 1.
10. Troubleshooting Matrix
| Symptom | ISTACK cause | LED | Likely root cause | Fix |
|---|---|---|---|---|
| STOP on first I/O reference; flag-only program runs | ADF | ADS steady | DB 1 / DX 0 missing or empty | Add I/O record(s) to DB 1 and cold-restart |
| STOP on every cycle, even after DB 1 added | QVZ | QVZ steady | Module not responding, jumper wrong, backplane issue | Verify jumper matches slot, reseat module, check IM 304/IM 314 |
| STOP on first parameterized module | PEF | PEF steady | Module type mismatch, parameter record wrong | Review module type and parameter DW; correct DB 1 parameter record |
| Intermittent STOP at random times | QVZ + ADF intermittent | QVZ/ADS flicker | Loose connector, EMI, weak 24 V supply | Reseat, check power supply, replace connector |
| STOP after EPROM/FLASH swap | ADF | ADS | New CPU has different default slot mapping than original | Re-create DB 1, verify slot map against new CPU |
| STOP on outputs only | ADF | ADS | DB 1 contains no output records (only input records) | Add KH = 20xx records for output bytes |
11. Field-Commissioning Best Practices
- Always start every CPU 928B commissioning with a verified DB 1. A copy of the DB 1 should be stored in the project archive and burned to EPROM for cold-start survival. The CPU does not retain a DB 1 written only to RAM through a power cycle.
- Use ISTACK as the first diagnostic, not the LEDs. The ADS/QVZ/PEF LEDs tell you the family; the ISTACK tells you the address.
- Document the slot map. A single laminated table that lists every slot, its module order number, the jumpered byte address, and the corresponding DB 1 record eliminates hours of troubleshooting for the next engineer.
- Avoid mixing address ranges in expansion racks without first checking the IM 304 / IM 314 transfer limits (max 32 bytes per IM for the 135U, max 64 bytes for the 155U-compatible mode).
- Always back up the S5 program before any DB 1 change. A corrupt DB 1 can cause the CPU to refuse cold-restart; a backup allows field recovery by EPROM programmer.
- For 928B-3UB12 to 928B-3UB11 cross-replacement, verify that all new features in the -3UB12 firmware are not used in the existing program, or migrate the program first.
12. Quick Reference: CPU 928B Error Code Cross-Reference
| LED | ISTACK | Meaning |
|---|---|---|
| RUN (green) | - | Cyclic operation OK |
| STOP (red) | STUE / ZYK / SPS / etc. | CPU halt, see ISTACK for cause |
| ADS (red) | ADF | Address decoder fault - I/O not in DB 1 |
| QVZ (red) | QVZ | Response timeout - module missing/jumpered wrong |
| PEF (red) | PEF | Parameterization error - module type mismatch |
| BASP (red) | n/a | Command output disable active (BASP signal set) |
| ZU / BAT (red) | n/a | Battery low / time-of-day lost |
13. When to Escalate
If the corrected DB 1 still produces ADF on the same address, the failure is downstream of the special data block:
- Bad EPROM on the CPU. A corrupted firmware EPROM can produce false ISTACK causes. Swap the EPROM with a known-good 928B image.
- Backplane failure. A bent pin or broken trace on the 135U backplane will prevent the address decoder handshake. Inspect the backplane with a magnifier and a continuity tester.
- Defective DI module. If the module's address-decoder logic is damaged, it will not acknowledge the refresh. Swap with a known-good spare.
- Wrong CPU variant. A 928B-3UB12 program using features not present in a -3UB11 will halt immediately. Verify the MLFB on the CPU front panel.
Official Siemens support for S5-135U systems is provided through the Siemens Industry Online Support portal. Replacement parts and engineering-grade spares are sourced through the Siemens S5 spare-parts program; the CPU 928B is documented as a serviceable platform with lifecycle support.
14. Related Documentation
- CPU 928B Programming Guide (PDF, pa928ben.pdf)
- Siemens support entry 19397726 - CPU 928B documentation hub
- S5-135U / S5-155U system manual (Siemens order number 6ES5 998-x)
- STEP 5 V7.x programming reference (Siemens, current PG release)
What does the ADS LED mean on a CPU 928B?
ADS stands for Adress-Decoder-Stop. The LED is illuminated when the address decoder detects that the program has referenced an I/O byte that is not declared in the special data block (DB 1 or DX 0) and that no physical module responds at that byte address during the PII/PIQ refresh. The corresponding ISTACK stop cause is ADF (Adressierungsfehler).
Why does my flag-only program run but a program with I 4.0 stops the CPU?
Flag operations do not exercise the address decoder. The address decoder is only triggered by an I/O access in OB 1, OB 25, an FB / PB called from them, or a process-image read. As soon as a statement such as A I 4.0 is executed, the address decoder checks DB 1 and finds no record for byte 4, then stops the CPU. Add KH = 1004 to DB 1 to fix it.
What is the difference between ADF and QVZ on the CPU 928B?
ADF (Adressierungsfehler) means the I/O byte is unknown to the CPU because DB 1 / DX 0 does not list it. QVZ (Quittungsverzug) means the byte is configured but the module did not acknowledge within the watchdog window - typically a wrong jumper, a loose module, a bad backplane pin, or a dead module. ADF is a configuration problem; QVZ is a hardware problem.
How do I edit DB 1 on a CPU 928B?
With the CPU in STOP, connect the STEP 5 programmer, open DB 1 in the editor, insert the I/O record (e.g. KH = 1004 for an input at byte 4, KH = 20xx for outputs), move the EEEE terminator to the end of the new list, save to the CPU, then perform a cold restart so the CPU re-reads DB 1. For permanent retention, burn DB 1 to EPROM.
Which CPU 928B variants are covered by the same programming guide?
The CPU 928B Programming Guide covers both the 6ES5 928-3UB11 and the 6ES5 928-3UB12. The -3UB12 firmware v2.x / v3.x adds extended special-DB syntax and 155U-compatible features; the -3UB11 uses an earlier firmware revision. The DB 1 layout described in section 2.4.3 applies to both, but verify the count-word interpretation if migrating a DB 1 from a -3UB11 program into a -3UB12 or vice versa.