Resolving TIA Portal S7-1200 Resources Tab I/O Count Errors

David Krause10 min read
S7-1200SiemensTroubleshooting
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

Problem Summary

The TIA Portal "Resources" tab on S7-1200 projects (CPU 1212C with SM 1234 AI4/AO2) routinely reports inconsistent I/O usage statistics. Field reports show percentage values above 100% (e.g., 133.33% or 166% of configured analog inputs) and mismatched digital output counts even when the user program compiles cleanly, downloads successfully, and executes the correct logic on the target hardware.

This is a display-side accounting issue in the TIA Portal engineering view, not a runtime I/O fault. The PLC continues to scan and control physical I/O correctly; the discrepancy appears only in the static resource view that the engineering software uses to summarize configured versus referenced addresses.

If the user program functions correctly on the CPU, the resource percentages should be treated as informational. Persistent miscounts do not indicate that the control logic is wrong.

Affected Hardware and Software

Component Catalog Number / Designation Notes
CPU S7-1200 CPU 1212C DC/DC/DC (e.g., 6ES7212-1AE40-0XB0) 8 DI onboard, 6 DO onboard, 2 AI onboard
Signal module SM 1234 AI4/AO2 (6ES7234-4HE32-0XB0) 4 AI + 2 AO
Engineering software STEP 7 Basic in TIA Portal V13 / V14 / V15 Symptoms reproduced across multiple TIA versions
Firmware on CPU FW 4.x (S7-1200) Resource display is computed client-side, not in firmware

Reference documentation:

Root Cause Analysis

The Resources view performs a static scan of the offline project database and counts references to process image addresses. It does not execute the program; it does not inspect the runtime process image; it only inspects the symbolic and absolute address usage as written by the editor. The display logic has three known classes of miscount:

1. HSC address expansion inflates DI counts

When a high-speed counter (HSC) is configured on the CPU, TIA Portal allocates the dedicated HSC input process image region at I1000 through I1003 (4 bytes per HSC instance, depending on configuration). Configuring even one HSC causes the resource display to roll up the full HSC byte range as "configured DIs." In the reported case, configuring HSC brought the configured DI count to 40, even though the actual discrete input byte used by the program remained at IB0.

2. NORM_X / SCALE_X instruction symbol expansion

The NORM_X and SCALE_X instructions operate on REAL (floating-point) values. When a NORM_X block is placed in the program and its VALUE input is wired to an analog input word (IW), the resource counter records the address referenced by the input pin. However, depending on how the input pin is wired (direct address, PLC tag, or unconnected default), the counter can over-report. In the reported project, the user wired IW5, IW7, IW9, and IW11 to four NORM_X blocks. The view showed 10 AIs in use (166% of 6 configured), reflecting cumulative references from intermediate tag declarations rather than actual scan-time reads.

3. Indirect or symbolic aliasing

When PLC tags are declared with the same data type as the analog input word (INT), and the tag is later renamed or repointed, residual address cross-references can remain in the project. The Resources view walks the cross-reference (XREF) tree in addition to direct address usage, which can double-count tag-to-tag aliasing.

HSC Address Map and the IB1000 Region

The S7-1200 reserves a fixed process image range for high-speed counter inputs. The exact mapping depends on the HSC instance ID and the configured edge evaluation mode. The first HSC is mapped to a 4-byte input region beginning at IB1000 when edge evaluation or enhanced functionality is selected.

HSC Instance Default Input Region (Single Phase) Default Input Region (Enhanced / Quadrature)
HSC_1 I0.0 – I0.1 (default counting inputs) IB1000 – IB1003 (4 bytes, edge detection)
HSC_2 I0.2 – I0.3 IB1004 – IB1007 (extended configuration)
HSC_3 I0.4 – I0.5 IB1008 – IB1011 (extended configuration)
HSC_4 I0.6 – I0.7 IB1012 – IB1015 (extended configuration)
HSC_5 I1.0 – I1.1 IB1016 – IB1019 (extended configuration)
HSC_6 I1.2 – I1.3 IB1020 – IB1023 (extended configuration)

This reserved process image region is invisible to user ladder logic, but TIA Portal reports it under "configured digital inputs," inflating the DI baseline. The HSC region cannot be written by the user program and does not consume physical inputs; the count is a display artifact.

OB204 Data Type Conflict

During diagnosis, a data type conflict was identified in OB204 (a hardware interrupt OB generated by the SM 1234 module on limit-exceedance events). The instruction at temporary local variable MD10 (DWORD / DUINT) is being interpreted by the Resources view as if it were an INT (16-bit signed) reference. The conflict surfaces only as a cross-reference anomaly; it does not prevent the OB from executing.

Data type mismatches in OBs that are not actually invoked by the configured hardware interrupts do not produce a compile error in TIA Portal. They are flagged only when the Resources view performs a full XREF sweep. Either correct the data type to match the instruction or remove the unused OB if no hardware interrupt source is configured.

Diagnostic Procedure

  1. Open the project offline in TIA Portal; do not connect to a live CPU.
  2. Navigate to Project tree > PLC_1 > Program blocks.
  3. Select Tools > Cross references (or press Ctrl+Alt+F7) to generate the XREF table for the entire program.
  4. Filter the XREF table for byte ranges IB1000 through IB1023. These are HSC-reserved bytes; they will appear as "Used" even though the program never reads them.
  5. Filter the XREF for every analog input word declared on the SM 1234 (default: IW64–IW71 for a 4-AI module in slot 1; the user's case used a non-default mapping with IW1, IW3, IW5, IW7, IW9, IW11). Count every distinct address; the resource percentage is (referenced unique addresses) / (configured addresses) × 100.
  6. Open the PLC tags table and remove any tag whose data type is INT and whose name suggests an analog channel but whose value is not wired to an IW in any code block.
  7. Check the Watch and force tables and any Recipe or Data block instances for residual IW references inherited from earlier revisions of the project.
  8. Compile the project (Project tree > PLC_1 > right-click > Compile > Software (rebuild all blocks)).
  9. Re-open the Resources view and click the Update icon (the circular refresh button at the top right of the resource panel). If the count still does not match, close the project and reopen it; the XREF cache is rebuilt on project open.

Verification on the Live CPU

To confirm the Resources display is a static-analysis artifact rather than a hardware fault, perform a runtime verification:

  1. Go online with the CPU (Project tree > PLC_1 > Go online).
  2. Open Watch table and force the analog input word that the display claims is "unused" (for example, IW1 for channel 0 of the SM 1234).
  3. Read back the value. If the value tracks the physical input (use a calibrator or short the terminals to 0/4–20 mA), the I/O is functional and the Resources tab miscounts because the address is referenced from a tag only and not from code.
  4. Repeat for each IW the Resources view flags as over-counted. The PLC tag is the source of the XREF entry; either wire the tag to a code block or remove the tag.

Workarounds

Symptom Likely Source Workaround
DI count 40 after HSC enable IB1000–IB1003 reserved by HSC Document the offset; subtract 4 per configured HSC from the Resources count manually
AI count > 100% PLC tag cross-reference on INT/REAL alias Reassign the tag to point to a DB element and remove the IW alias
DO count mismatch Assignment and Set/Reset instructions cross-tagged Use a single Boolean tag per output; avoid multiple bit-tag aliases to the same Q-address
OB204 cross-reference warnings MD10 declared as DUINT, used as INT Change to DWORD or rewrite the instruction to use a TEMP of correct type
Refresh button does not update XREF cache stale after edits Close and reopen the project; recompile the software

Escalation to Siemens Support

If the discrepancy persists after the steps above, open a support request via the Siemens Industry Online Support portal. Include:

  1. The TIA Portal version (e.g., V15.1 + Upd 4), installed packages, and build number (Help > About).
  2. The CPU order number and firmware version (online > diagnostics > module information).
  3. The packed project archive (.zap14 or .zap15) — these are the TIA Portal pack formats; legacy .ap14 and .ap15 are unpacked project directories that exceed the upload limit and must be packed first.
  4. A screenshot of the Resources tab and the XREF export (CSV).
  5. A short description of the discrepancy, with the actual scanned I/O list and the displayed I/O list side by side.

Use the Siemens support entry "TIA Portal: Resources view shows incorrect percentage" type descriptions to locate related OSS notes and FAQ entries. Direct link to the support entry point:

Long-Term Best Practice

Treat the Resources view as a design-time sanity check, not a runtime diagnostic. Build the project around three ground-truth sources:

  1. The Device configuration (online > Device view), which is the source of truth for what is physically wired and configured.
  2. The Cross-reference table, which is the source of truth for what addresses the program actually touches.
  3. A Watch table downloaded to the live CPU, which is the source of truth for what the program is doing right now.

Keep PLC tag names stable across revisions, and avoid creating an INT tag that mirrors an IW address unless the tag is wired to a code block. The combination of stable symbol names and a clean XREF will minimize the divergence between the offline resource count and the actual I/O usage on the CPU.

Why does the TIA Portal Resources tab show more than 100% of analog inputs on a CPU 1212C with SM 1234?

The static analyzer that generates the Resources view walks the cross-reference (XREF) tree in addition to direct address usage. PLC tags declared as INT and pointed at IW addresses, or intermediate tag-to-tag aliasing, double-count the references and produce percentages above 100%. The CPU itself scans only the addresses referenced in active code blocks; the percentage is a display artifact.

Does configuring a high-speed counter add hidden digital inputs to my S7-1200?

Yes. The HSC reserves a 4-byte process image region at IB1000–IB1023 (depending on HSC instance and edge mode). TIA Portal counts this region as configured digital inputs, even though the bytes cannot be written by the user program and do not consume physical terminals. Subtract 4 per configured HSC from the Resources DI count for an accurate total.

The Refresh button on the Resources view does not update the counts. What should I do?

The XREF cache is only rebuilt on project open or full software recompile. Close the project, reopen it, and recompile (Project tree > PLC_1 > right-click > Compile > Software rebuild all blocks). If the count is still wrong, the XREF itself is correct and the program is simply referencing more addresses than the display suggests.

Is the OB204 MD10 DUINT/INT conflict a real bug or a display warning?

It is a static-analysis warning produced by the cross-reference sweep. The OB continues to execute on the configured hardware interrupt events. To clear the warning, change MD10 to a DWORD (32-bit unsigned) or rewrite the instruction to use a TEMP variable of the correct type and remove the implicit INT reference.

Should I open a Siemens support request for a wrong Resources percentage?

Yes, if the program logic is correct but the Resources view shows persistent miscounts after a clean compile, package the project (.zap14/.zap15), record the TIA Portal version, CPU order number, and firmware version, and submit through the Siemens Industry Online Support portal. Include the XREF export and a screenshot of the Resources tab. The information feeds product development and may return a workaround specific to your TIA version.

Back to blog