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.
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:
- S7-1200 Programmable Controller System Manual (Siemens Online Support)
- S7-1200 CPU 1212C / 1214C / 1215C / 1217C Device Manual
- STEP 7 Basic in TIA Portal Programming and Operating Manual
- S7-1200 Signal Modules SM 1231 / SM 1232 / SM 1234 Manual
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.
Diagnostic Procedure
- Open the project offline in TIA Portal; do not connect to a live CPU.
- Navigate to Project tree > PLC_1 > Program blocks.
- Select Tools > Cross references (or press Ctrl+Alt+F7) to generate the XREF table for the entire program.
- Filter the XREF table for byte ranges
IB1000throughIB1023. These are HSC-reserved bytes; they will appear as "Used" even though the program never reads them. - Filter the XREF for every analog input word declared on the SM 1234 (default:
IW64–IW71for a 4-AI module in slot 1; the user's case used a non-default mapping withIW1,IW3,IW5,IW7,IW9,IW11). Count every distinct address; the resource percentage is (referenced unique addresses) / (configured addresses) × 100. - 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
IWin any code block. - Check the Watch and force tables and any Recipe or Data block instances for residual
IWreferences inherited from earlier revisions of the project. - Compile the project (Project tree > PLC_1 > right-click > Compile > Software (rebuild all blocks)).
- 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:
- Go online with the CPU (Project tree > PLC_1 > Go online).
- Open Watch table and force the analog input word that the display claims is "unused" (for example,
IW1for channel 0 of the SM 1234). - 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.
- Repeat for each
IWthe 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:
- The TIA Portal version (e.g., V15.1 + Upd 4), installed packages, and build number (Help > About).
- The CPU order number and firmware version (online > diagnostics > module information).
- The packed project archive (.zap14 or .zap15) — these are the TIA Portal pack formats; legacy
.ap14and.ap15are unpacked project directories that exceed the upload limit and must be packed first. - A screenshot of the Resources tab and the XREF export (CSV).
- 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:
- The Device configuration (online > Device view), which is the source of truth for what is physically wired and configured.
- The Cross-reference table, which is the source of truth for what addresses the program actually touches.
- 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.