Resolving S7-1200 WinCC Runtime Tag Updates in TIA Portal V12

David Krause10 min read
SiemensTIA PortalTroubleshooting
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

A configured S7-1200 project in TIA Portal V12 with WinCC Advanced PC Runtime launches without errors, but fields and animations wired to PLC tags (e.g., %I0.0 and %Q0.5) never reflect the live state of the CPU. The HMI Runtime appears connected, the project compiles cleanly, and no diagnostic buffer entries are raised by either the PLC or the Runtime, yet every read cycle returns a stale value.

This symptom is typical of a tag-to-connection binding error introduced during the initial HMI tag table configuration. The tags exist, are typed correctly as Bool, and reference the correct absolute addresses, but they are bound to the wrong connection resource inside the HMI device.

Affected Environment

Component Version / Setting
Engineering framework Siemens TIA Portal V12 (STEP 7 V12 + WinCC V12)
HMI software WinCC Advanced V12 (PC Runtime)
PLC SIMATIC S7-1200 (CPU 121xC / 1215C family)
PLC firmware Confirm V2.x or V3.x is installed; update to current firmware before commissioning
Runtime host Same PC as engineering station
Connection type PROFINET / S7 Ethernet (default for S7-1200)

Root Cause: Connection Binding Mismatch

TIA Portal V12 maintains two parallel connection objects for every HMI device in the project tree:

  1. Connection_1 — the direct, editor-managed S7 connection between the HMI tag table and the S7-1200 CPU. This is the resource that the Runtime polls at the configured acquisition cycle.
  2. HMI_connection_1 — the legacy/internal symbolic route the HMI editor auto-generates for cross-device references inside TIA Portal. Tags bound here do not always resolve to a live S7 channel when the project is loaded into WinCC Runtime; the Runtime receives an "address not subscribed" state and freezes the last cached value.

When the engineer configures the HMI tag's Connection dropdown to HMI_connection_1 instead of Connection_1, TIA Portal accepts the assignment silently during compile, but at Runtime the tag never receives update telegrams. This produces the exact symptom described in the source case: fields and animations stay frozen at their initial value regardless of the actual bit state in OB1.

Why the Compile Does Not Flag It

In V12, the compiler validates tag syntax (data type, length, address syntax) but does not perform a runtime reachability test against the target connection. A Bool tag with address %I0.0 bound to HMI_connection_1 passes compile because the address itself is valid; the binding error surfaces only when the Runtime attempts its first cyclic read.

TIA Portal V12 HMI Tag Architecture

Before repairing the project, verify the architecture concept so the fix is understood, not memorized:

Object Path in TIA Portal Role
PLC tags (DB / process image) PLC > PLC tags > Show all tags Authoritative source for I/O and DB values inside STEP 7
HMI tags HMI device > HMI tags > Default tag table Runtime-side mirror used by WinCC screens, scripts, and animations
HMI connections HMI device > Connections Defines the S7 route (IP, rack, slot, connection resource) used by the Runtime
Connection_1 Auto-created by "HMI > Connection" wizard Direct S7 connection to the CPU that Runtime polls
HMI_connection_1 Auto-created for cross-device symbolic binding Used internally by TIA for symbolic tag references between HMI and PLC projects; not a guaranteed Runtime poll channel

Tag Acquisition Cycle

The WinCC Runtime scheduler reads each HMI tag at the cycle configured in HMI tags > Acquisition cycle (default 1 s). When the bound connection is invalid, the read returns the cached value with the quality code OPC_QUALITY_BAD internally, but V12 displays the cached value rather than a diagnostic overlay. Forcing a re-read requires restarting the Runtime or toggling the connection.

Diagnostic Procedure

Run the following checks in order to confirm the connection-binding fault before applying the fix:

  1. Inspect the HMI tag table. Open HMI device > HMI tags > Default tag table (or your custom table). Select each Bool tag intended to mirror I0.0 or Q0.5. Note the value in the Connection column.
  2. Identify the binding. If Connection shows HMI_connection_1, the tag will not update in Runtime. If it shows Connection_1 with the correct PLC IP, the tag should poll correctly.
  3. Verify the HMI connection IP. Open HMI device > Connections. Confirm Connection_1 points to the S7-1200 IP address (e.g., 192.168.0.1) and uses S7ONLINE as the access point.
  4. Check the PG/PC interface. In Windows, confirm Set PG/PC Interface is set to S7ONLINE (TCP/IP) -> <your NIC>. A mismatched access point prevents Runtime from reaching the PLC even when the binding is correct.
  5. Cross-check with the PLC online view. In TIA Portal, go online to the CPU and toggle I0.0 in the tag table. If the PLC tag flips but the HMI tag does not, the binding is the issue, not the address.
Diagnostic tip: Use the HMI tags > Diagnostics view (available in WinCC Advanced V12) to inspect the quality code of each tag during Runtime. Tags with quality Good are polling; tags with Bad are not. This single step confirms the fault without changing the project.

Step-by-Step Resolution

The verified fix is to recreate the affected HMI tags bound explicitly to Connection_1:

  1. In the Project Tree, expand HMI_1 [RT] > HMI tags > Default tag table.
  2. Note the symbolic name, data type, and acquisition cycle of each affected tag (for example, Tag_In_Start, Bool, 1 s).
  3. Delete the mis-bound tags from the table.
  4. Click Add new. Enter the same symbolic name and select Bool as the data type.
  5. In the Connection dropdown, select Connection_1 (NOT HMI_connection_1).
  6. In the Address field, enter the absolute PLC address: %I0.0 for the input bit, %Q0.5 for the output bit. TIA Portal will resolve to the PLC's process image.
  7. Set Acquisition cycle to 1 s for status visualization, or 100 ms if faster updates are required.
  8. Re-link any I/O fields, animations, or scripts that referenced the old tag name. If you kept the same symbolic name, no screen edits are needed.
  9. Compile the HMI project (Compile > Software (rebuild all)) to regenerate the Runtime DB.
  10. Download the project to the PC Runtime and start the Runtime.

Alternative: Edit the Connection Column Directly

Instead of deleting and recreating, you can edit the Connection cell of the existing row in the tag table:

  1. Click the Connection cell of the tag.
  2. Change the dropdown value from HMI_connection_1 to Connection_1.
  3. Press Enter to commit.
  4. Recompile and restart the Runtime.

This method preserves tag history and minimizes the risk of breaking screen references.

Verification

After applying the fix, confirm correct Runtime behavior:

  1. Visual check. Toggle I0.0 physically (pushbutton) or via the PLC's online tag table. The associated HMI rectangle, lamp, or text field should change state within the configured acquisition cycle.
  2. Diagnostics view. Open HMI tags > Diagnostics during Runtime. The affected tag should show quality code Good.
  3. Cross-reference check. Right-click Connection_1 in HMI device > Connections and select Cross-references. The tag should appear in the referenced list, confirming the Runtime will poll it.
  4. Counter-check Q0.5. Force Q0.5 = TRUE in the PLC's watch table. The HMI animation should immediately reflect the output, validating the bidirectional path.

Bool Tag Display in I/O Fields

When using an I/O field to display a Bool PLC tag, the default representation is the numeric value 0 or 1. To display readable text, configure the I/O field's Display format property:

  1. Select the I/O field on the screen.
  2. In Properties > General, set Mode to Output.
  3. Open Properties > Appearance > Display format.
  4. Replace the format string with a conditional text mapping using WinCC V12 syntax: enter "OFF";"ON" for two states, or 0 in the data format box and bind the symbolic text list.

If a Bool tag is wired to an I/O field in Input/Output mode, TIA Portal will prompt for a connection type; leaving it blank produces a read-only display, which is another common point of confusion for first-time users.

Animation Configuration for Bool Tags

For a rectangle or lamp whose appearance toggles with a Bool bit:

  1. Select the graphic object on the screen.
  2. Open Properties > Animations.
  3. Add an Appearance animation.
  4. Bind the variable to the Bool tag (now correctly on Connection_1).
  5. Configure two appearance states: value 0 and value 1, each with a distinct fill color.
  6. Compile and run the Runtime.

If the animation does not trigger after recompile, verify the Trigger tag field is empty or set to the same tag; an unrelated trigger tag prevents updates even when the bound variable is correct.

Firmware and Compatibility Notes

S7-1200 CPUs in the V12 era shipped with firmware V2.x; many were upgraded to V3.x before V12 SP1 supported the new CPU 1215C and 1217C variants. If the Runtime fails to establish Connection_1 entirely:

  • Update the CPU firmware using the Siemens Support download portal (search "S7-1200 firmware").
  • Ensure the TIA Portal version supports the firmware. TIA V12 SP1 or later is required for firmware V3.0 CPUs; V12 without SP cannot download to V3.0 hardware.
  • Verify the PLC's protection setting allows PUT/GET access from the HMI. In V12, navigate to PLC > Properties > Protection > Connection mechanisms and enable Permit access with PUT/GET communication if the HMI uses symbolic-only access.
Important: Some S7-1200 firmware versions require the CPU to be reset to factory defaults before a TIA V12 project can be downloaded, especially after a firmware update. Plan for this in commissioning.

Connection Resource Limits on S7-1200

The S7-1200 supports up to 16 S7 communication connections simultaneously, with PG, HMI, and PUT/GET each consuming a resource. With a single PC Runtime, the default Connection_1 uses one resource. If multiple HMIs or PG clients are added, monitor the connection resource counter in the PLC's online diagnostics to avoid exhaustion, which can also manifest as "no update" symptoms.

Best Practices to Prevent Recurrence

  1. Always bind HMI tags to Connection_1. Treat HMI_connection_1 as a read-only engineering convenience; never rely on it for Runtime polling.
  2. Use PLC symbolic tags when possible. From V12 onward, dragging a PLC tag into the HMI tag table auto-creates the binding correctly and eliminates manual address entry errors.
  3. Centralize connection definitions. Avoid creating duplicate HMI connections per screen; one Connection_1 per HMI device is the supported pattern.
  4. Validate after every project change. Add a short checklist step: "Confirm tag Connection column = Connection_1" before each Runtime download.
  5. Leverage the HMI diagnostics view in WinCC Advanced V12 for first-run commissioning; it exposes quality codes that the visual screen does not show.

Troubleshooting Matrix

Symptom Likely Cause Corrective Action
Tag value never updates; quality code Bad Bound to HMI_connection_1 Re-bind to Connection_1
All tags fail to update; Runtime shows "No connection" PG/PC interface misconfigured Set PG/PC interface to S7ONLINE (TCP/IP) on correct NIC
Compile error "Address not valid" Wrong address syntax for S7-1200 Use %I0.0 / %Q0.5 format; avoid DB-style addresses for process image
Runtime connects, but tags show stale value Acquisition cycle too long or tag disabled Set acquisition cycle to 1 s or less; verify tag is enabled
Intermittent updates, no apparent pattern CPU connection resource exhaustion Reduce concurrent PG/HMI connections; check PLC diagnostics
Bool I/O field shows numeric 0/1 only Default display format not overridden Set Display format property to text mapping

FAQ

Why does TIA Portal V12 accept a tag bound to HMI_connection_1 without a compile error?

The V12 compiler validates tag syntax (address, type, length) but does not perform a runtime reachability check against the connection resource. A Bool tag on HMI_connection_1 passes compile, but the Runtime cannot establish a polling session on that channel, so the value freezes at the cached initial state.

What is the difference between Connection_1 and HMI_connection_1 in TIA Portal V12?

Connection_1 is the editor-managed S7 connection used by WinCC Runtime to poll the CPU at the configured acquisition cycle. HMI_connection_1 is the internal symbolic route used for cross-device references inside the engineering environment; it is not a guaranteed runtime poll channel and should not be used for HMI tag polling.

How do I display a Bool PLC tag as text ("ON" / "OFF") instead of 0 / 1 in a WinCC Advanced V12 I/O field?

Set the I/O field to Output mode and override its Display format property to "OFF";"ON" (or your preferred strings). Bind the variable to the correctly configured Bool HMI tag on Connection_1.

Do I need to delete and recreate the tag, or can I edit the Connection column directly?

Both work. Editing the Connection dropdown in the existing tag row from HMI_connection_1 to Connection_1 and recompiling is the fastest fix. Deleting and recreating is preferable when the tag has complex properties or when you want a clean audit trail.

How can I confirm the HMI tag is actually being polled by WinCC Runtime?

Open HMI tags > Diagnostics in WinCC Advanced V12 during Runtime. Tags with quality code "Good" are actively polled by the Runtime. Tags showing "Bad" or no entry are not reaching the PLC and require a connection or binding check.

Back to blog