Resolving ET200S Analog Input Read Failures on ET 200S with S7-300 PLCs
This technical reference documents a recurring field failure mode where an ET 200S distributed I/O station reports correct 4–20 mA loop current at the terminals, but the value is never visible at the configured input word (for example, %IW256) in STEP 7 / TIA Portal. The root cause is rarely a hardware fault and almost always a mismatch between the configured input address and the size of the S7-300 CPU process input image (process image of the inputs, PII). The remediation is either expanding the process image or, preferably, remapping the ET 200S analog module to addresses inside the image window. Where the application cannot tolerate the move, direct peripheral access (%IW:P) bypasses the PII and reads the value directly from the slave at the cost of longer access time.
%IW256 stays at 0 / 16#0000 in the VAT / watch table. No diagnostic interrupt LED on the IM 151. CPU in RUN, no SF on the CPU.1. Problem Statement
An ET 200S head station (IM 151-1 / IM 151-3) is connected as a PROFIBUS-DP slave to an S7-300 CPU (e.g. CPU 315-2 DP / CPU 317-2). One or more analog input modules are configured, for example:
- 6ES7 134-4GB01-0AB0 — 2AI, 4–20 mA, 13 bit + sign
- 6ES7 134-4GB11-0AB0 — 2AI, ±10 V / ±20 mA / 4–20 mA
- 6ES7 134-4GD00-0AB0 — 4AI, ±10 V / 0–10 V / 4–20 mA
- 6ES7 134-4MC00-0AB0 — 4AI, RTD/TC
After HW Config download, the I/O addresses auto-assigned by STEP 7 / TIA Portal frequently land above IW255 — for example at PIW 256 / %IW256. The S7-300 default process input image is 128 bytes (input words IW0 through IW126). Anything outside that window cannot be read symbolically through the image; the CPU updates the PII, but the area above it is reserved for non-image access only.
2. ET 200S Analog Module Fundamentals
The ET 200S analog input family resolves 4–20 mA to 0–27648 (Siemens S7 normalized range). The raw 16-bit value presented in the input word is the number representation, not engineering units — scaling is the programmer's responsibility, normally via FC105 SCALE or FC106 UNSCALE.
| Catalog number | Channels | Range | Resolution | Default I-address per channel |
|---|---|---|---|---|
| 6ES7 134-4GB01-0AB0 | 2 | 4–20 mA | 13 bit + sign | PIW x / PIW x+2 |
| 6ES7 134-4GB11-0AB0 | 2 | ±20 mA / 4–20 mA / ±10 V | 15 bit + sign | PIW x / PIW x+2 |
| 6ES7 134-4GD00-0AB0 | 4 | ±10 V / 0–10 V / 4–20 mA | 15 bit + sign | PIW x / PIW x+2 / PIW x+4 / PIW x+6 |
| 6ES7 134-4MC00-0AB0 | 4 | RTD / TC | 15 bit + sign | PIW x / PIW x+2 / PIW x+4 / PIW x+6 |
The full S7 normalized ranges used by these modules are:
- 4–20 mA → raw 0 to 27648 (0 mA is below the live-zero; out-of-range negative values indicate a wire break when wire-break diagnostics are enabled).
- 0–20 mA → raw 0 to 27648 (no live-zero, no wire-break detection on low end).
- ±10 V → raw –27648 to +27648.
- PT100 / PT1000 RTD → raw –2000 to +8500 representing –200.0 °C to +850.0 °C (resolution 0.1 °C).
- Thermocouple type K → raw –2700 to +13720 (°C × 10).
3. Root Cause: Process Image of the Inputs (PII)
The S7-300 OB1 cycle consists of three phases executed at the start of every scan:
- Read inputs from the distributed I/O into the process input image (PII). Only addresses inside the configured PII window are refreshed here.
- Execute program code (OB1). All
%IWreads return the image value, not a fresh peripheral read. - Write outputs from the process output image (POI) to the distributed I/O.
For the S7-300 CPU 31x and CPU 319 families, the default PII is 128 bytes (input words IW0 … IW126). For CPU 312 the default is 32 bytes; for CPU 315-2 PN/DP and CPU 317-2 it is 128 bytes. The default can be enlarged in HW Config under CPU properties → Cycle / Clock bits → I/O process image size up to the CPU maximum (typically 2048 bytes on CPU 319). See the TIA Portal online help — Configuring an ET 200S.
When STEP 7 auto-assigns an ET 200S analog input starting at PIW 256, two failure modes follow:
-
Mode A — symbol not updated: the address is above the PII window.
%IW256returns0for every scan because the image is never refreshed in that area. - Mode B — symbol updated but wrong value: the PII was enlarged (e.g. to 256 bytes) but ET 200S module addresses were not remapped, leaving the analog input just outside the new boundary.
256. Reorder or remap the slave to bring the AI inside 0–126 (default PII) or inside whatever window you configure.4. Solution 1 — Remap the Module Inside the Process Image
The most efficient fix is to remap the analog input to an address that the PII actually covers. For a default 128-byte PII this means %IW0 through %IW126. Pick a free area, e.g. starting at %IW128 for the ET 200S station:
- Open the S7 project in STEP 7 (Classic or TIA Portal).
- Open HW Config / Devices & Networks.
- Click the ET 200S analog input module in the slot table.
- In the Addresses tab, change Input start address from
256to a value inside the PII (e.g.128). - Repeat for every channel of the module (each channel occupies 2 bytes for a 4AI module, so
%IW128,%IW130,%IW132,%IW134). - Recompile HW Config, download, and update any symbolic references in your code.
- Open a VAT and confirm
IW128now follows the input current.
INPUT parameters of type WORD, no code change is required — the instance DB symbol rewrites automatically. If you used absolute addresses (L IW256 / T IW256), perform a project-wide search and replace.5. Solution 2 — Direct Peripheral Access (S7-300 / 400 / 1500)
When the application cannot be recompiled, or when you need an immediate debug confirmation that the module is alive, use the :P suffix to bypass the PII and read the peripheral directly:
L %IW256:P
T MW 200 // raw 16-bit AI value
Behavior of :P on S7-300:
- Read access is performed immediately, one bus cycle at a time.
- Worst-case execution time per
:Pread is bounded by the PROFIBUS-DP cycle of the slave (typical 1–10 ms per byte). On ET 200S, this is up to ~5 ms for the first word, and the value is then refreshed automatically by the DP master for the next 200 µs. - The data is not placed in the PII and therefore cannot be used directly as a Boolean contact in the way image addresses are.
Verify in a VAT by entering PIW256:P in the Modify column with Monitor mode, or force the read in a one-shot OB100/OB1 block:
// OB1 — debug helper
CALL "DIRECT_READ" // FB or FC
PIW := 256
RET_VAL := MW210 // contains raw value
6. Solution 3 — Enlarge the Process Input Image
If you must keep the default STEP 7 auto-assignment at IW256 for legacy reasons:
- Open CPU properties in HW Config.
- Navigate to Cycle / Clock bits.
- Set Size of the process input image to e.g.
512(covers IW0–IW510). - Set Size of the process output image to a matching size if the station also contains DO.
- Recompile and download.
CPU limits to observe:
| CPU | PII max (bytes) | POI max (bytes) |
|---|---|---|
| CPU 312 | 32 | 32 |
| CPU 314 | 128 | 128 |
| CPU 315-2 DP | 128 | 128 |
| CPU 317-2 | 2048 | 2048 |
| CPU 319-3 PN/DP | 2048 | 2048 |
7. Scaling: From Raw Counts to Engineering Units
Once the value is visible, scale it. STEP 7 Classic ships the Standard Library / TI-S7 Converting Blocks FC105 SCALE and FC106 UNSCALE. TIA Portal: same names, in Standard library → S7-300/400 → Blocks or in the Convert palette.
FC105 call for 4–20 mA mapped to 0–100 %:
CALL "SCALE" // FC105
IN := MW200 // raw 0..27648
HI_LIM := 100.0
LO_LIM := 0.0
BIPOLAR:= FALSE
RET_VAL:= MD220 // real, 0.0..100.0
For a live-zero 4–20 mA loop, treat 0 as a fault condition rather than 0 %. Use a clamp:
L MW200
L 0
<I // raw < 0 → wire break or underflow
= M 30.0 // FAULT_4_20
L MW200
L 27648
>I // raw > 27648 → overrange
= M 30.1 // FAULT_OVER
8. Configuration Verification Checklist
- Open HW Config → ET 200S → 4AI module properties → Inputs: measuring range = 4DMU (4-wire, 4–20 mA) or R-4L (4-wire, 4–20 mA, 4-channel group, live zero). Verify the diagnostic option Wire break is enabled when working in 4–20 mA mode — without it, the value silently underflows to
-32768on a broken wire. - Confirm the slot number of the AI module matches the physical DIP / drag-and-drop position on the ET 200S backplane.
- In CPU properties → Cycle: PII ≥ the highest assigned input address +2 bytes (rounded up).
- In a VAT, monitor
IW<start>and verify it tracks the mA loop input. If it stays at0, re-check the PII window. If it stays at16#7FFFor16#8000, the module has a hardware / wiring fault or is not being polled. - For ET 200S with IM 151-1 (PROFIBUS), open Online → Accessible nodes and verify the slave is reachable. If "station failure" appears in the diagnostic buffer (event ID
0x01E3/0x01E4for DP), the analog module is not yet the culprit — fix DP first.
9. Special Case: Non-Siemens PROFIBUS Master
If the ET 200S is being driven by a third-party PROFIBUS master (e.g. Beckhoff CX, Wago 750-820x, Phoenix Axioline, ABB AC500), the GSD file import does not carry the module's parameter data. As a result, Siemens-specific options such as smoothing, interference frequency suppression 50/60 Hz, and diagnostic interrupt enable are not applied. See Siemens support entry 5950650 — Les données de paramétrage d'un module analogique dans un ET200 ne sont pas prises en compte lors de l'utilisation d'un maître non Siemens.
Implications for AI reading:
- The basic 4–20 mA conversion still works because the GSD provides the cyclic I/O mapping.
- Wire-break diagnostics return as channel error in the diagnostic buffer instead of driving the input word to
7FFF; verify with the master's diagnostic API, not via S7 status. - The interference suppression default of 50 Hz must be set in the GSD configuration tool of the third-party master; without it, 60 Hz noise can ripple the LSB.
10. Troubleshooting Matrix
| Symptom | Most likely cause | Diagnostic step | Fix |
|---|---|---|---|
IW256 = 0, 16 mA at terminal |
PII window smaller than 256 | CPU properties → Cycle → PII size | Remap to IW128 or enlarge PII to ≥ 512 B |
IW128 = 0 but IW128:P = 27648 |
Address outside PII | Compare address vs PII size | Remap to within PII or enlarge PII |
IW128 = 16#7FFF |
Wire break / open loop / overrange | Check loop current with multimeter | Repair wiring; enable wire-break diagnostic in HW Config |
IW128 = 16#8000 (–32768) |
Underflow / negative range without bipolar | Confirm measuring range = 4DMU | Switch to 4–20 mA (not ±20 mA) in HW Config |
IW128 stuck at one value, jitter on :P
|
Module not configured / GSD mismatch | Compare slot list vs GSD | Re-import GSD, re-assign slots |
| Station failure in diagnostic buffer | DP cable / address conflict / terminator | Diagnostic buffer event ID 0x01E3
|
Check PROFIBUS terminators and slave address DIP |
| Reads fine for 5 minutes, then drops out | PII update too slow / OB1 cycle too long | Cycle time monitor | Move read into OB35 cyclic interrupt |
| Value correct but jumps ±50 counts | 50/60 Hz noise not filtered | Module properties → Inputs → Interference suppression | Set to 50 Hz (EU) or 60 Hz (US) per line frequency |
11. Wiring Notes for 4–20 mA on ET 200S AI
- Each ET 200S AI module has terminal groups
1/2/3/4for the current loop. The + terminal of the transmitter feeds the + of the AI channel; – returns to the transmitter negative. - For 2-wire (loop-powered) transmitters, use the 2-wire terminal assignment in HW Config. The ET 200S backplane powers the transmitter through the AI terminals.
- For 4-wire (self-powered) transmitters, use the 4-wire assignment; the transmitter's own 24 V powers the loop and only the signal flows into the AI.
- Shield the cable and ground the shield at the cabinet entry, not at the field device.
12. FAQ
Why is my ET 200S analog input address automatically placed at IW256 instead of inside the standard process image?
STEP 7 and TIA Portal auto-assign PROFIBUS-DP slaves to the lowest free address gap after the central rack. In a project where the central rack already occupies IW0–IW127, the next free area is IW128+. ET 200S often lands at IW256 because that is the default end of the central I/O area on most S7-300 CPUs. Remap the module to an address inside the configured PII (typically IW0–IW126 on a default CPU 315/317) to make the input readable symbolically.
What is the difference between %IW256 and %IW256:P on an S7-300?
%IW256 reads the cached value from the process input image (PII) refreshed at the start of every OB1 scan. %IW256:P bypasses the PII and reads the value directly from the PROFIBUS-DP slave during program execution. Use :P for diagnostics and quick verification only; the read is slower (~1–5 ms on ET 200S) and cannot be used in the same way as image addresses in Boolean contact logic.
How do I scale a raw 0–27648 AI value to engineering units like 0–100% or 0–10 bar?
Use FC105 SCALE from the STEP 7 Standard Library. Wire IN = raw value, HI_LIM = 100.0 (or 10.0), LO_LIM = 0.0, BIPOLAR = FALSE. FC106 UNSCALE does the inverse. In TIA Portal the same blocks are under Standard library → S7-300/400 → Convert.
What does it mean when the AI value reads 7FFF (32767) or 8000 (–32768)?
16#7FFF on a 4–20 mA loop means the channel is in overrange or the wire is broken with the wire-break diagnostic enabled. 16#8000 indicates negative underflow — usually the measuring range is set to ±20 mA instead of 4–20 mA, so a 4 mA signal sits below zero. Switch the measuring range to 4DMU (4-wire, 4–20 mA) or 2DMU (2-wire, 4–20 mA) in HW Config and confirm wire-break diagnostic is enabled.
Can I read ET 200S analog inputs from a non-Siemens PROFIBUS master?
Yes — the cyclic 4–20 mA data is exchanged through the GSD file, so any PROFIBUS-DP master can read the raw 16-bit input words. However, the Siemens-specific parameter data (smoothing, 50/60 Hz interference suppression, diagnostic interrupt enable) is not transferred via the GSD and must be set in the master's configuration tool. See Siemens support article 5950650 for the full list of unsupported parameters.