Resolving ET200SP HA DI 32 Address Space: PI vs Value Status

David Krause18 min read
I/O ModulesSiemensTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Overview: Why a 32-Channel ET 200SP HA DI Module Occupies 8 Bytes

The SIMATIC ET 200SP HA distributed I/O system is engineered for process automation in hazardous areas and is fully integrated into PCS 7 and STEP 7 (TIA Portal). The DI 32x24VDC HA digital input module, identified by article number 6DL1131-6BL00-0PH1, provides 32 galvanically-isolated 24 VDC input channels in a single ET 200SP HA slot. It is typically deployed on a station headed by the IM 155-6 PN HA interface module (6DL1155-6AU00-0PM0 or 6DL1155-6BU00-0PM0) and connected to a CPU 410-5H (6DL7410-5HR06-0EX0) acting as the PROFINET IO Controller.

When the module is dropped into the device view of HW Config (STEP 7 V5.x) or Tia Portal, the address range for the slot expands to 8 bytes (64 bits). This is the first source of confusion: a 32-channel module should logically consume 4 bytes, not 8. The extra 4 bytes are not a configuration error, and they are not additional input channels. They are the PROFINET value status (also called QI or Quality Information Byte, bound to the ProImQB parameter of the Pcs7DiIn block) that reports, per channel, whether the read value is valid.

Understanding this split is essential before wiring the symbol table, generating PCS 7 driver blocks, or writing CFC code that reads I 4.x and I 5.x directly. The remainder of this guide defines the exact address map, explains how the value status is wired to the Pcs7DiIn driver block via the ProImQB parameter, and walks through commissioning in both STEP 7 V5.x and Tia Portal.

Module Identification and Variants

Siemens uses a consistent article-number pattern for the SIMATIC ET 200SP HA digital input family. The '6DL' prefix denotes SIMATIC PCS 7 / process automation catalog items, the '1311' group is digital inputs, and the suffix differentiates channel count and module revision.

Article Number Description Channels Nominal Voltage Address Space (Input)
6DL1131-6BH00-0PH1 DI 16x24VDC HA 16 24 VDC 2 bytes PI + 2 bytes QI = 4 bytes
6DL1131-6BL00-0PH1 DI 32x24VDC HA (P-type, process automation release) 32 24 VDC 4 bytes PI + 4 bytes QI = 8 bytes
6DL1131-6BL00-0EH1 DI 32x24VDC HA (P-type, standard release) 32 24 VDC 4 bytes PI + 4 bytes QI = 8 bytes
Important: The '6BL' suffix always implies 32 channels with P-type (sourcing) input characteristic. SKU mismatches between '-0PH1' (process automation) and '-0EH1' (standard) change the firmware behavior and the diagnostic-interrupt behavior. Always confirm the article number on the module's laser-etched label and the carton label before commissioning.

The corresponding device manual is the ET 200SP HA DI 16x24VDC HA device manual (PDF, 6DL1131-6BH00-0PH1), which documents the same architectural principles for the 16-channel member of the family. The 32-channel module follows the identical I/O model, scaled by a factor of two. The official SIMATIC ET 200SP manual collection (TIA Portal cloud) covers address-space planning for the hazardous-area modules including the 27 VDC variants.

Address Space Architecture: Process Image Versus Value Status

Every PROFINET-capable Siemens I/O module separates the user data (process image) from the diagnostic data (value status). For a digital input module the user data is one bit per channel; the value status is also one bit per channel, but it is exposed in a separate byte area so that the controller can poll diagnostics independently from the cyclic I/O update.

The DI 32x24VDC HA returns 8 bytes of inputs per slot, divided as follows:

  • Bytes 0 to 3 (Input address a.0 to (a+3).7) — process image (PI) of channels 0 to 31. Bit n of byte m corresponds to channel (m * 8) + n.
  • Bytes 4 to 7 (Input address (a+4).0 to (a+7).7) — value status (QI / ProImQB) for channels 0 to 31. Bit n of byte (m+4) is the value status of the same channel addressed by bit n of byte m.
Byte Offset Input Address (start = a) Function Bit 7 ... Bit 0
0 I a.0 to I a.7 PI Channels 0-7 Channel 7 ... Channel 0
1 I (a+1).0 to I (a+1).7 PI Channels 8-15 Channel 15 ... Channel 8
2 I (a+2).0 to I (a+2).7 PI Channels 16-23 Channel 23 ... Channel 16
3 I (a+3).0 to I (a+3).7 PI Channels 24-31 Channel 31 ... Channel 24
4 I (a+4).0 to I (a+4).7 QI Channels 0-7 Status Ch.7 ... Status Ch.0
5 I (a+5).0 to I (a+5).7 QI Channels 8-15 Status Ch.15 ... Status Ch.8
6 I (a+6).0 to I (a+6).7 QI Channels 16-23 Status Ch.23 ... Status Ch.16
7 I (a+7).0 to I (a+7).7 QI Channels 24-31 Status Ch.31 ... Status Ch.24

The 'a' in the address column depends on the start address of the slot. If the slot is configured to start at input address 0, the first input is I 0.0 (channel 0) and the last value status bit is I 7.7 (status of channel 31). If the slot starts at input address 16, the first input is I 16.0 and the last value status bit is I 23.7. The mapping is a fixed offset of +4 bytes between PI and QI; it cannot be changed in the module properties.

Address Layout Diagram

ET 200SP HA DI 32x24VDC HA - Input Address Layout (8 bytes total) Process Image (PI) - Channels 0-31 Byte 0: I a.0 - I a.7Channels 0-7PI[7:0] = Ch.7..Ch.0 Byte 1: I (a+1).0 - I (a+1).7Channels 8-15PI[15:8] = Ch.15..Ch.8 Byte 2: I (a+2).0 - I (a+2).7Channels 16-23PI[23:16] = Ch.23..Ch.16 Byte 3: I (a+3).0 - I (a+3).7Channels 24-31PI[31:24] = Ch.31..Ch.24 Value Status (QI / ProImQB) - Channels 0-31 Byte 4: I (a+4).0 - I (a+4).7Status Ch. 0-7QI[7:0] = Status Ch.7..Ch.0 Byte 5: I (a+5).0 - I (a+5).7Status Ch. 8-15QI[15:8] = Status Ch.15..Ch.8 Byte 6: I (a+6).0 - I (a+6).7Status Ch. 16-23QI[23:16] = Status Ch.23..Ch.16 Byte 7: I (a+7).0 - I (a+7).7Status Ch. 24-31QI[31:24] = Status Ch.31..Ch.24 a = configured start input address of the slot (typical: a = 0, 16, 32, 48 ...)

Value Status (ProImQB) Semantics

Value status is a PROFINET-defined feature carried in the input data of every channel. The bit follows the IEC 61784-2 PROFINET specification:

  • Value status = 1 — the channel is providing a valid process value. The bit in the process image (PI) reflects the actual hardware state at the terminal.
  • Value status = 0 — the channel is faulty, the module has channel-level diagnostics active, the value is substituted (forced to 0), or the channel is deactivated. The PI bit in this case is not reliable.

The value status is generated by the module's firmware and is updated cyclically on the same PROFINET cycle that carries the process image. It does not require any additional configuration in the module properties; it is always on for PROFINET devices in the ET 200SP HA family. The configuration of channel-level diagnostics (wire break, short circuit, supply voltage missing) is a separate step and is found in the module's 'Parameters' tab in HW Config or Tia Portal.

PROFIBUS behavior: The value status is a PROFINET-only feature. If the ET 200SP HA station is connected to a PROFIBUS DP master (such as a CPU 410-5H that is configured in PROFIBUS mode), the value status bits are not populated and bytes 4-7 read as 0. The CPU 410-5H supports both PROFINET IO Controller and PROFIBUS DP Master; verify in the device configuration which protocol is active for the ET 200SP HA interface.

Why the Pcs7DiIn Driver Block Uses ProImQB

PCS 7 uses a standardized channel driver block, Pcs7DiIn, to bring the digital input into the user program. The block has a process input (PI) and a process output that is usually wired to the technology block (e.g., MotSpeed, VlvAn, MonAn). The ProImQB parameter on Pcs7DiIn is the value status (Process Image Quality Bit) of the process image bit. The block also exposes the QBAD output, which goes to 1 when ProImQB is 0.

When you run the PCS 7 'Generate Module Drivers' wizard, the wizard scans each configured slot, identifies the channel driver block family (Pcs7DiIn for digital inputs), and automatically wires the value status bits (bytes 4-7) to the ProImQB parameter of the corresponding Pcs7DiIn block. The signal I/O (bytes 0-3) is wired to the PV (process value) input of the Pcs7DiIn block by the user, or by the IEA file if the signal list was imported.

For the 6DL1131-6BL00-0PH1 module the wiring table produced by the wizard is:

Module Channel PI Bit (Input Address) QI Bit (Input Address) Pcs7DiIn Parameter
0 I a.0 I (a+4).0 PV / ProImQB
1 I a.1 I (a+4).1 PV / ProImQB
... ... ... ...
7 I a.7 I (a+4).7 PV / ProImQB
8 I (a+1).0 I (a+5).0 PV / ProImQB
... ... ... ...
31 I (a+3).7 I (a+7).7 PV / ProImQB

The 'a' is the start address configured in HW Config. The wizard uses the module's GSD file (GSDML-V*-Siemens-ET200SPHA-*) to read the assignment between input bit and channel, so the engineer does not need to compute the address manually.

Configuration in STEP 7 V5.x (HW Config)

The following procedure applies to PCS 7 V8.x or V9.x with STEP 7 V5.6 and the ET 200SP HA library installed.

  1. Open the S7 program and double-click the ET 200SP HA station in the component view.
  2. Insert the DI 32x24VDC HA from the hardware catalog under 'ET 200SP HA > DI'. Drag it to the desired slot of the IM 155-6 PN HA interface module.
  3. Double-click the inserted module. In the 'Addresses' tab, set the start input address. PCS 7 typically places the module in the address range reserved for I/O (default 0..255). Confirm that the input length shows 8 bytes.
  4. Switch to the 'Parameters' tab. For each of the 32 channels, you can enable wire-break detection, short-circuit detection to 24 V, input delay (0.05 ms / 0.1 ms / 0.5 ms / 3 ms / 15 ms / 20 ms), and the value status (always on for PROFINET, but the parameter is still exposed for documentation).
  5. Compile and download the hardware configuration (HW Config > Station > Save and Compile > PLC > Download to Target).
  6. Open the CFC chart that owns the digital inputs. From the PCS 7 menu, run 'Options > Plant View > Generate Module Drivers'. The wizard will create one Pcs7DiIn block per channel and wire the value status to ProImQB.
  7. Compile the CFC chart and download to the AS.
Slot rules: The ET 200SP HA interface module (IM 155-6 PN HA) supports a maximum of 56 I/O slots. Address gaps are not permitted; if you skip a slot, the address counter advances by the full slot width of the placeholder. For the DI 32 module this means an 8-byte gap, which can collide with an adjacent module if the start address is not reserved explicitly.

Configuration in TIA Portal (V15.1 and later)

From Tia Portal V15.1 onward, the ET 200SP HA is fully supported as a PROFINET device. The configuration flow is similar to HW Config but the terminology differs.

  1. Open the Tia Portal project and navigate to 'Devices & Networks'.
  2. Select the ET 200SP HA station and add the DI 32x24VDC HA from the device catalog.
  3. In the device view, click the module. The 'I/O addresses' tab will display the start address and the length of 8 bytes in the input area.
  4. Open the 'Properties > Module parameters' tab. The 32 channels are listed in a table; for each channel you can configure the input delay, the diagnostics (wire break / short circuit / missing supply), and the value status behavior.
  5. For PCS 7 V9.0 SP2 and later that supports the TIA-based engineering, generate the driver blocks from the 'Generate Module Drivers' tool in the CFC editor; the wizard reads the GSDML of the device and wires ProImQB identically.
  6. If you are using Tia Portal without PCS 7, the value status bits are not wired to a driver block. You must read bytes 4-7 explicitly in your user program and evaluate the value status in your own logic.

Reading Value Status Manually in SCL

If you are not using PCS 7, the value status can be read directly in the user program. The following Structured Control Language (SCL) snippet reads the 32 value-status bits of the DI 32 module starting at input byte 4 and aggregates them into a DWORD for use in your application code:

// Module slot start address: 0
// Value status starts at IB 4
// First 4 bytes (IB 0..IB 3) = process image of channels 0..31
// Last 4 bytes (IB 4..IB 7) = value status of channels 0..31

// Aggregate the 32 value status bits into a single DWORD
#ValueStatusDword := (BYTE_TO_DWORD(IB 4) AND 16#000000FF)
                OR (SHL(BYTE_TO_DWORD(IB 5) AND 16#000000FF, 8))
                OR (SHL(BYTE_TO_DWORD(IB 6) AND 16#000000FF, 16))
                OR (SHL(BYTE_TO_DWORD(IB 7) AND 16#000000FF, 24));

// Test the value status of channel 0
IF ((#ValueStatusDword AND 16#00000001) <> 0) THEN
    // Channel 0 value is valid
    #Channel0Valid := TRUE;
END_IF;

// Test the value status of channel 31
IF ((#ValueStatusDword AND 16#80000000) <> 0) THEN
    // Channel 31 value is valid
    #Channel31Valid := TRUE;
END_IF;

Can Bytes 4-7 Be Used as Additional Input Channels?

No. Bytes 4-7 are not user data. They are exclusively the value status. If you wire a sensor to terminals that correspond to channels 0-31, those signals appear in bytes 0-3 only. If you wire a sensor to a different module's terminals, those signals appear at that module's address range.

Attempting to read a real signal from I 4.0 will always return the value status of channel 0, not an additional input. The only valid use of bytes 4-7 is the value status, and the only valid destination in PCS 7 is the ProImQB input of the Pcs7DiIn block. Manually assigning I 4.0 in a CFC chart as a sensor input will overwrite the value status and break the quality information for channel 0.

Verification Procedure

Use the following checks to confirm that the module is wired correctly and the address mapping is intact.

  1. Online > Monitor / Modify: Open the variable table for the AS and monitor the input bytes 0-3. Force a 24 V signal on terminal 1 of the module (channel 0) and verify that I 0.0 transitions from 0 to 1. Repeat for terminals 2 to 32 to confirm the channel-to-bit mapping.
  2. Value status check: Monitor the value status bits (bytes 4-7). All 32 bits should read 1 for healthy, wired channels. If a value status bit reads 0, the corresponding channel is in a diagnostic state.
  3. ProImQB monitoring: In the CFC online view, open the Pcs7DiIn block for channel 0. The ProImQB parameter should mirror the value status bit I 4.0. Toggle the input and verify that the ProImQB value remains 1.
  4. Diagnostic simulation: Disconnect the sensor wire from channel 0. The input I 0.0 should go to 0 and the value status I 4.0 should go to 0 within one PROFINET cycle. The ProImQB of the corresponding Pcs7DiIn block should also go to 0, and the QBAD output of the block should activate.
  5. Module diagnostics buffer: In the online diagnostic view of the module (right-click > Module Information > Diagnostics Buffer), confirm that the slot reports 'OK' for the wired channels and 'Channel fault' for the disconnected channel.

Troubleshooting Matrix

Symptom Probable Cause Corrective Action
Inputs I 0.0 to I 3.7 do not change despite a 24 V signal on the terminal Wrong base unit type, no 24 V sensor supply on the BU Check the base unit (BU) type. Use a BU that feeds the sensor supply (BU type A0 for P-type). Verify the 24 V supply on the power bus.
Inputs read 0 for the first 4 bytes but value status bits are all 1 Input delay set too long for the test pulse Reduce the input delay in the module properties (0.05 ms or 0.1 ms for fast test signals).
Bytes 4-7 read 0 in all states Value status is configured off, or the connection is PROFIBUS Enable value status in the module properties. If the controller is in PROFIBUS mode, migrate the ET 200SP HA connection to PROFINET.
ProImQB is always 0 in the CFC online view The wizard did not wire the value status, or the signal assignment was overwritten manually Run 'Generate Module Drivers' again. Verify the connection from the value status bit to ProImQB in the CFC.
QBAD on the Pcs7DiIn block is always 1 Value status of at least one channel is 0 (the OR of all Pcs7DiIn QBs may be wrong if the block expects a single bit) Verify per-channel. If you need a single QBAD for the module, use the OR of the 32 value status bits in your application.
Address collision with the next module Slot address gap not reserved Move the start address of the DI 32 module or the next module so that 8 bytes are reserved contiguously.
Module appears in HW Config but no inputs update Slot has been deactivated in the module properties Open the module's 'Parameters' tab and ensure the slot is enabled.
Value status flickers between 0 and 1 on a wired channel Wire break diagnostic enabled on a passive dry contact Disable wire break detection for dry contacts, or add the 24 V pull-up series resistor required by the diagnostic.
CFC compilation error 'Signal I a.4 already used' Another block is wired to the value status byte Remove the conflicting wiring; the value status is reserved for the Pcs7DiIn block.

Comparison with the 16-Channel Variant (6DL1131-6BH00-0PH1)

The 16-channel DI module follows the same architectural rule, scaled by a factor of two. Its slot consumes 4 bytes of input address: 2 bytes of process image (bytes 0-1, channels 0-15) and 2 bytes of value status (bytes 2-3). The 16-channel device manual is available at the official Siemens support portal (PDF, 6DL1131-6BH00-0PH1). Use the same procedure to read the value status of the 16-channel module: shift the result by two bytes, since the value status starts at byte 2 of the slot rather than byte 4. The same ProImQB wiring logic in PCS 7 applies.

The 24/27 VDC variants (6DL1131-6TH00-0PH1 for 16 channels at NAMUR, 6DL1131-6TL00-0PH1 for 32 channels at 24 VDC) follow the identical PI/QI split. The 24 VDC high-feature module (6DL1131-6BL00-0PH1 in the 'Type 3' design) supports value status with per-channel diagnostic interrupts that propagate to the OB 82 diagnostic interrupt on the CPU 410-5H.

Field Commissioning Notes

During loop checks, the value status of an unwired terminal will read 0, not 1, because the input is in an undefined state. This is the desired behavior — it tells the operator that the channel has not been commissioned yet. Some integrators prefer to force the value status to 1 for unwired channels during commissioning, but this is not a native module feature; it requires the application logic to override the QBAD output of the Pcs7DiIn block, or to install a physical loop-back (resistor) on the terminal that sources the minimum current required by the input.

Wire-break detection requires the sensor to source a defined current out of the terminal. A simple dry contact without a 24 V pull-up cannot be diagnosed as wire break; the module will only see the input state. For dry contacts, use a base unit with the appropriate wiring and ensure that the 'Wire break' diagnostic is disabled, otherwise the value status will read 0 continuously and QBAD will be active on the corresponding Pcs7DiIn block.

For PROFIsafe applications, the DI 32 module is paired with a F-CM (fail-safe communication module) and the station is configured as a PROFIsafe device on the F-CPU. In those configurations, the value status bits are consumed by the F-host and are not exposed to the standard Pcs7DiIn block. The fail-safe driver block (Pcs7FDiIn) is used instead, and the value status is read via the PROFIsafe telegram, not via the cyclic input area.

For redundant CPU 410-5H configurations, both H-CPUs receive the full 8-byte input area from the ET 200SP HA station over the PROFINET ring. The Pcs7DiIn blocks are instantiated on the active master; the value status logic is identical. If the station is configured as a shared device on both H-CPUs, address the modules in the device view of each H-CPU separately and ensure that the GSDML import is repeated for both.

Why does the 6DL1131-6BL00-0PH1 ET 200SP HA DI module show 8 bytes for 32 channels?

Because 4 bytes (32 bits) carry the process image of channels 0-31, and 4 bytes (32 bits) carry the per-channel value status. The value status is a PROFINET diagnostic feature that reports whether each input is valid, so 4 + 4 = 8 bytes total per slot. There is no hidden 33rd-64th input channel.

Can I use bytes 4 to 7 of the DI 32 module as additional input channels?

No. Bytes 4-7 are the value status of channels 0-31, not extra inputs. Wiring a sensor to terminals beyond channel 31 will not be reflected in these bytes. The only valid use is the value status, which is wired to the ProImQB parameter of the Pcs7DiIn driver block in PCS 7.

What is ProImQB in the Pcs7DiIn driver block?

ProImQB is the 'Process Image Quality Bit' parameter of the Pcs7DiIn block. It receives the value status bit of the corresponding channel (e.g., I 4.0 for channel 0 when the slot starts at address 0). When the value status is 0, the QBAD output of the block activates, indicating that the process value is unreliable.

Does value status work over PROFIBUS?

No. Value status is a PROFINET feature. If the ET 200SP HA station is connected to a PROFIBUS DP master, bytes 4-7 of the DI 32 module read 0 and the value status is not available. The CPU 410-5H supports both protocols; check the IM 155-6 PN HA configuration to confirm that PROFINET is active for the station.

How do I generate the wiring of the value status to ProImQB?

Open the CFC editor in PCS 7 and run 'Options > Plant View > Generate Module Drivers'. The wizard reads the GSDML of the ET 200SP HA station, identifies each DI 32 slot, and wires bytes 4-7 to the ProImQB parameter of the Pcs7DiIn block for each of the 32 channels. The user only needs to wire the process value (bytes 0-3) to the PV input of the Pcs7DiIn block.

Back to blog