Problem Overview: Multiple Comfort Panels Displaying the Same Screen
When two or more SIMATIC HMI Comfort Panels (TP700, TP900, TP1200, TP1500, TP1900 and the KTP variants KTP700, KTP900, KTP1200) are connected to a single SIMATIC S7-1500 CPU under one TIA Portal project, the operator can observe a synchronization anomaly: any screen change on one panel is mirrored on every other panel, regardless of where the action originated. The same effect manifests through a Sm@rtClient remote viewer — every screen change issued in the remote viewer also changes the active screen on the master panel at the local station.
The behavior is not a software bug. It is a direct consequence of the screen-change architecture used by WinCC Comfort/Advanced, where the active screen number is exposed to the PLC through an area pointer and any write to that pointer — local or remote — propagates to every HMI that has been bound to the same tag. This article documents the underlying mechanisms, the diagnostic steps to identify which one is active, and the configuration changes required to make the panels navigate independently.
Typical Plant Configuration
| Item | Description |
|---|---|
| PLC | SIMATIC S7-1500 (CPU 1511 / 1515 / 1516 / 1517 / 1518 / 1510SP / 1512SP / 1514SP / 1515SP) |
| HMIs | Two or more Comfort Panels on the same PROFINET subnet |
| Engineering | Single TIA Portal project with one HMI device per panel |
| Remote access | Sm@rtServer / Sm@rtClient via the master panel |
| Symptom | All panels show the same screen after any local or remote change |
Affected Components and Software Versions
The synchronization behavior applies to the following Siemens HMI and PLC components. The configuration strategies described later in this article apply to every Comfort Panel generation that supports the screen-number area pointer (panel firmware with the area-pointer feature enabled).
| Component | Models / Versions |
|---|---|
| Comfort Panels, 4" | KTP400 Comfort (6AV2 125-1AE01-0AX0) |
| Comfort Panels, 7" | KTP700 Comfort PN/DP, TP700 Comfort (6AV2 124-1GC01-0AX0, 6AV2 125-1AG/AF01-0AX0) |
| Comfort Panels, 9" | KTP900 Comfort, TP900 Comfort (6AV2 124-1JC01-0AX0, 6AV2 125-1AH01-0AX0) |
| Comfort Panels, 12" | KTP1200 Comfort, TP1200 Comfort (6AV2 124-1MC01-0AX0, 6AV2 125-1AJ01-0AX0) |
| Comfort Panels, 15" | TP1500 Comfort (6AV2 124-1QC02-0AX0) |
| Comfort Panels, 19" | TP1900 Comfort (6AV2 124-1UC02-0AX0) |
| S7-1500 CPUs | CPU 1511-1 PN, 1515-2 PN, 1516-3 PN/DP, 1517-3 PN/DP, 1518-4 PN/DP, 1510SP-1 PN, 1512SP-1 PN, ET 200SP CPUs |
| Engineering software | TIA Portal V15.1 / V16 / V17 / V18 / V19 with WinCC Comfort/Advanced |
| Panel firmware | Image with area-pointer and Sm@rtServer support enabled (see WinCC Comfort manual) |
Root Cause: How Screen Synchronization Happens
Three distinct mechanisms in WinCC Comfort/Advanced can cause multiple panels to display the same screen at the same time. In most cases more than one mechanism is active in the same project.
Mechanism 1 — Shared Screen-Number Area Pointer
The area pointer "Screen number" (German: "Bildnummer") is a 16-bit integer area in the PLC that WinCC polls every 200 ms. Whenever the value at the configured address changes, the HMI sets the active screen to the value written by the PLC. If two HMI devices in the same TIA Portal project share the same screen-number area pointer — for example, both are bound to DB100.DBW0 — then a single write from the PLC to that word triggers a screen change on every panel that uses the pointer.
This is the most common cause of unwanted synchronization. The area pointer is enabled by default when a connection between the HMI and the PLC is configured in TIA Portal, and the same address is often assigned to multiple HMI devices when the engineer copies the connection between devices.
Mechanism 2 — PLC-Driven ActivateScreen System Function
The PLC can call the WinCC system function ActivateScreen on a specific HMI device through the HMI device API (in SCL: "HMI_1".ActivateScreen(ScreenNumber := ...) via the HMIRuntime interface). If the engineer uses the same DB block to drive ActivateScreen for several HMI devices, the same screen number is written to every panel's internal control structure, producing the same synchronization as Mechanism 1. The difference is that ActivateScreen is triggered by a function call from the PLC user program, not by a polled area pointer.
Mechanism 3 — Sm@rtServer / Sm@rtClient Mirror Mode
When a Comfort Panel is configured as a Sm@rtServer (panel-side service) and a remote PC connects with the Sm@rtClient application, the Sm@rtClient session always mirrors the master panel. By design, every screen change performed on the Sm@rtClient is propagated to the master panel, and every screen change performed locally on the master is mirrored to the Sm@rtClient window. This is the intended behavior of the Sm@rtServer function and is documented in the SIMATIC HMI Sm@rtServer manual.
When the operator expects the Sm@rtClient window to show one screen while the master panel shows a different screen, the expectation conflicts with the mirror behavior. There is no configuration option in the Sm@rtServer to disable this mirror behavior on the master side; the only way to obtain independent screens between the local panel and the Sm@rtClient viewer is to deploy a second physical panel and run a different project on it, or to use a separate WebUX page on the S7-1500 CPU.
Diagnostic Procedure
Use the following checks to identify which mechanism is active in your project.
Step 1 — Verify the Area-Pointer Configuration
- Open the TIA Portal project that contains the master CPU and all Comfort Panels.
- Select the first HMI device in the project tree.
- Open Connections → select the HMI connection to the S7-1500 CPU → open the Area Pointers tab.
- Locate the Screen number entry. Note the configured DB number and byte offset (for example, DB100, byte 0).
- Repeat for every other HMI device in the project.
- If two or more HMI devices reference the same DB and the same byte offset, Mechanism 1 is the cause of the synchronization.
Step 2 — Inspect the PLC User Program for ActivateScreen
- Open the S7-1500 program blocks in the project tree.
- Search for the system function
ActivateScreenon the HMI device API. In SCL, this is invoked through the HMIRuntime library or directly as a method of the configured HMI device interface. - Identify the screen number that each call writes and the HMI device name it targets.
- If the same screen number is written to more than one HMI device, Mechanism 2 is contributing to the synchronization.
Step 3 — Verify the Sm@rtServer Configuration
- Select the master HMI device in TIA Portal.
- Open Properties → Services → Sm@rtServer.
- Confirm whether the Sm@rtServer is enabled and whether any Sm@rtClient session is currently connected.
- Disconnect any Sm@rtClient session and re-test the screen-change behavior on the panels. If the synchronization disappears when the Sm@rtClient is closed, Mechanism 3 is the dominant cause.
Diagnostic Decision Path
Solution 1 — Independent Screen-Number Area Pointers
The most direct fix is to assign a unique screen-number area pointer to each HMI device. The PLC then writes the target screen number to the matching area pointer, and only the intended panel changes screen.
Configuration Steps
- In the TIA Portal project tree, select HMI_1 and open Connections → select the HMI connection to the S7-1500 CPU.
- Open the Area Pointers tab.
- Click on the Screen number row. In the right pane, change the DB number to a unique value, for example DB100, byte 0.
- Click Apply and compile the project.
- Repeat for HMI_2. Assign a different DB, for example DB101, byte 0.
- Confirm that no two HMI devices share the same area-pointer address.
PLC Logic for Independent Screen Selection
The PLC now drives each panel with a separate word. A typical SCL implementation for two panels is shown below.
// SCL block: FB_IndependentScreenControl
// Inputs: tags from each HMI that request a screen change
// Outputs: per-HMI screen-number words bound to each area pointer
FUNCTION_BLOCK "FB_IndependentScreenControl"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
HMI1_RequestScreen : Int; // screen number requested on HMI_1
HMI2_RequestScreen : Int; // screen number requested on HMI_2
HMI1_RequestValid : Bool; // 1 = new request pending
HMI2_RequestValid : Bool; // 1 = new request pending
END_VAR
VAR_OUTPUT
HMI1_ActiveScreen : Int; // bound to HMI_1 area pointer (DB100.DBW0)
HMI2_ActiveScreen : Int; // bound to HMI_2 area pointer (DB101.DBW0)
END_VAR
VAR
HMI1_OldRequest : Int;
HMI2_OldRequest : Int;
END_VAR
BEGIN
// HMI_1 — accept new request only on rising edge of the request tag
IF HMI1_RequestValid AND HMI1_RequestScreen <> HMI1_OldRequest THEN
HMI1_ActiveScreen := HMI1_RequestScreen;
HMI1_OldRequest := HMI1_RequestScreen;
END_IF;
// HMI_2 — independent path
IF HMI2_RequestValid AND HMI2_RequestScreen <> HMI2_OldRequest THEN
HMI2_ActiveScreen := HMI2_RequestScreen;
HMI2_OldRequest := HMI2_RequestScreen;
END_IF;
END_FUNCTION_BLOCK
Map the HMI tags to the area-pointer addresses in the connection configuration of each HMI device:
| HMI Device | Area Pointer | PLC Address | DB Block |
|---|---|---|---|
| HMI_1 | Screen number | DB100.DBW0 | Instance DB of FB_IndependentScreenControl |
| HMI_2 | Screen number | DB101.DBW0 | Instance DB of FB_IndependentScreenControl |
HMI-Side Tag Configuration
From the HMI side, expose two HMI tags that the operator's screen-change button can write to. These tags are linked to the same area-pointer DB words used by the PLC.
| HMI Tag | PLC Connection | Address | Acquisition |
|---|---|---|---|
| HMI1_RequestScreen | Connection_1 | DB100.DBW10 | Cyclic, 1 s |
| HMI1_RequestValid | Connection_1 | DB100.DBX12.0 | Cyclic, 1 s |
| HMI2_RequestScreen | Connection_2 | DB101.DBW10 | Cyclic, 1 s |
| HMI2_RequestValid | Connection_2 | DB101.DBX12.0 | Cyclic, 1 s |
On the button event of each HMI screen, configure the ActivateScreen system function with the new screen number, and at the same time write the same value to the matching HMI tag pair HMIx_RequestScreen / HMIx_RequestValid. The PLC then handles the change for the correct panel only.
Solution 2 — Sm@rtServer Independent Operation
When the synchronization is observed between a Sm@rtClient and the master panel, the only robust solution is to remove the Sm@rtClient from the navigation path. Replace the Sm@rtClient with a separate panel or with a different visualization technology that does not mirror the master screen.
Option A — Use a Second Physical Comfort Panel
- Add a second Comfort Panel to the project with its own HMI device name and its own PROFINET device name.
- Compile a dedicated project for the second panel (Solution 3 below) so it has independent navigation.
- Place the second panel next to the operator station. Use its dedicated screen for the remote-style display.
Option B — Use a WebUX Panel or a Web Server Page
- Configure the integrated Web server of the S7-1500 (CPU 1515 / 1516 / 1517 / 1518 and the ET 200SP CPUs) and publish a user-defined Web page.
- Open the WebUX URL on a remote PC. WebUX screens are independent of the HMI Comfort Panel and are not driven by the screen-number area pointer.
- Use the WebUX view as the remote screen. The Comfort Panel can be used independently at the local station.
Solution 3 — Decoupled HMI Projects
When the panels must show different content at all times, the cleanest design is to give each Comfort Panel its own TIA Portal project. The two projects share the same S7-1500 connection but are completely independent on the visualization side: each panel has its own start screen, its own navigation tree, and its own screen-number area pointer.
Configuration Steps
- Open the existing multi-panel TIA Portal project.
- Select HMI_1 in the project tree and choose Device > Copy. Paste the copy into the same project as HMI_1_Copy, or into a new TIA Portal project.
- Rename the copy to a clear identifier such as
CMT_HMI_LineAandCMT_HMI_LineB. - In each HMI project, configure a unique PROFINET device name and a unique IP address. The S7-1500 CPU sees two HMI devices on the network.
- For each HMI, set the start screen to the desired value (for example, Screen 1 for LineA and Screen 20 for LineB).
- Compile and download each HMI project to its target panel.
Advantages and Trade-offs
| Aspect | Single Project (Synchronized) | Two Projects (Decoupled) |
|---|---|---|
| Project maintenance | One project, one download | Two projects, two downloads |
| Common screen library | Yes, can be reused | No, must be copied or proxied via proxy HMI |
| Independent navigation | No, all panels follow the same area pointer | Yes, full independence |
| PLC tag references | Single DB, one definition | Must be re-pointed in each HMI project |
| Sm@rtServer on each panel | One panel at a time | Independent per panel |
TIA Portal Configuration Walkthrough
The following walkthrough combines the three solutions into a single commissioning procedure that can be applied to a typical two-panel Comfort installation.
Prerequisites
- TIA Portal V17 or later with WinCC Comfort/Advanced installed.
- The two Comfort Panels are visible in the project tree with distinct HMI device names.
- The S7-1500 CPU is online in the project and the HMI connections compile without errors.
- The PLC user program is accessible (for the area-pointer mapping step).
Step-by-Step Procedure
- Open the project and select Project > Compile > All (rebuild). Verify that no area-pointer conflicts are reported.
- For each HMI, open Connections > HMI_Connection_1 > Area Pointers. Verify that the Screen number entry is enabled and points to a unique DB and byte offset. If two HMI devices share the same offset, assign a new offset (for example, DB100.DBW0 for HMI_1, DB101.DBW0 for HMI_2).
- In the S7-1500 program, create the
FB_IndependentScreenControlblock from Solution 1 and instantiate it once. Map the two output words to the area-pointer offsets created in step 2. - Compile the S7-1500 program and download it to the CPU. Confirm the DBs are present in the online view.
- For each HMI, create the HMI tags listed in the "HMI-Side Tag Configuration" table and bind them to the corresponding PLC addresses.
- On the HMI screen-change buttons, configure the
ActivateScreensystem function to update the local tag pairHMIx_RequestScreen/HMIx_RequestValidinstead of writing directly to the area pointer. - If the customer uses the Sm@rtClient to display the master panel remotely, replace the Sm@rtClient with a WebUX page or a second physical panel as described in Solution 2.
- Compile both HMI projects and download them to their respective panels.
SCL Implementation Summary
The following example is a complete, ready-to-compile SCL block for the S7-1500. It is the same logic as in Solution 1, extended to support four Comfort Panels. The instance DB provides the area-pointer output words.
// FB_IndependentScreenControl_4Panels
// Drives the screen-number area pointer for up to 4 independent Comfort Panels.
FUNCTION_BLOCK "FB_IndependentScreenControl_4Panels"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
HMI1_RequestScreen : Int;
HMI2_RequestScreen : Int;
HMI3_RequestScreen : Int;
HMI4_RequestScreen : Int;
HMI1_RequestValid : Bool;
HMI2_RequestValid : Bool;
HMI3_RequestValid : Bool;
HMI4_RequestValid : Bool;
END_VAR
VAR_OUTPUT
HMI1_ActiveScreen : Int; // bound to DB100.DBW0 (HMI_1 screen-number pointer)
HMI2_ActiveScreen : Int; // bound to DB101.DBW0 (HMI_2 screen-number pointer)
HMI3_ActiveScreen : Int; // bound to DB102.DBW0 (HMI_3 screen-number pointer)
HMI4_ActiveScreen : Int; // bound to DB103.DBW0 (HMI_4 screen-number pointer)
END_VAR
VAR
HMI1_OldRequest : Int;
HMI2_OldRequest : Int;
HMI3_OldRequest : Int;
HMI4_OldRequest : Int;
END_VAR
BEGIN
// Edge-triggered acceptance of new screen requests
IF HMI1_RequestValid AND HMI1_RequestScreen <> HMI1_OldRequest THEN
HMI1_ActiveScreen := HMI1_RequestScreen;
HMI1_OldRequest := HMI1_RequestScreen;
END_IF;
IF HMI2_RequestValid AND HMI2_RequestScreen <> HMI2_OldRequest THEN
HMI2_ActiveScreen := HMI2_RequestScreen;
HMI2_OldRequest := HMI2_RequestScreen;
END_IF;
IF HMI3_RequestValid AND HMI3_RequestScreen <> HMI3_OldRequest THEN
HMI3_ActiveScreen := HMI3_RequestScreen;
HMI3_OldRequest := HMI3_RequestScreen;
END_IF;
IF HMI4_RequestValid AND HMI4_RequestScreen <> HMI4_OldRequest THEN
HMI4_ActiveScreen := HMI4_RequestScreen;
HMI4_OldRequest := HMI4_RequestScreen;
END_IF;
END_FUNCTION_BLOCK
HMI-Side Configuration of the Screen-Change Event
On a button in the HMI screen, configure the following sequence of actions (configured in the HMI tag table and the button event):
- Event "Click" on the button.
-
Action 1: Set the HMI tag
HMIx_RequestScreento the new screen number (for example, 5 for the alarm screen). -
Action 2: Set the HMI tag
HMIx_RequestValidto 1 for a single scan. -
Action 3: (Optional) Use the system function
ActivateScreenwith the same screen number. This pre-positions the HMI while the PLC is processing the request.
Verification and Commissioning
After applying any of the three solutions, perform the following checks at the panel.
Visual Verification
- Power on both Comfort Panels and the S7-1500 CPU.
- On HMI_1, navigate to Screen 5 (for example, alarm screen) using a local button.
- Confirm that HMI_2 remains on its current screen (or its configured start screen if it has not been used).
- On HMI_2, navigate to Screen 10 (for example, recipe screen) using a local button.
- Confirm that HMI_1 remains on Screen 5.
- Open a Sm@rtClient session to either panel. Navigate the Sm@rtClient to a different screen. Confirm that the master panel does not change (only valid for Solution 2 and Solution 3).
Online Verification in TIA Portal
- Connect TIA Portal to the S7-1500 CPU online.
- Open the instance DB of
FB_IndependentScreenControlin monitor mode. - Watch the four
HMIx_ActiveScreenoutput values. They should each update only when the matching HMI requests a change. - Watch the
DBx.DBW0words (the area-pointer addresses). They should track theActiveScreenoutputs of the matching panel.
Acceptance Criteria
| Test | Expected Result | Pass / Fail |
|---|---|---|
| Local navigation on HMI_1 | HMI_2 screen unchanged | — |
| Local navigation on HMI_2 | HMI_1 screen unchanged | — |
PLC-driven ActivateScreen from HMI_1 |
Only HMI_1 changes | — |
| Sm@rtClient session active | Master screen not affected by remote navigation (Solution 2 / 3) | — |
| Power-cycle both panels | Each panel returns to its configured start screen | — |
Specifications and Limits
| Parameter | Value | Source |
|---|---|---|
| Maximum number of HMI connections per S7-1500 CPU | CPU-specific (see CPU device properties in TIA Portal) | TIA Portal S7-1500 manual |
| Area pointer "Screen number" data type | WORD (16-bit, 0..32767) | WinCC Comfort manual |
| Area pointer acquisition cycle | 200 ms default; configurable 100 ms..5 s | WinCC Comfort manual |
| Number of screens per HMI project (Comfort) | 500 (WinCC Comfort); higher with WinCC Advanced | WinCC Engineering manual |
| Sm@rtServer concurrent sessions per panel | 1 Sm@rtClient connection | Sm@rtServer manual |
| PROFINET devices per S7-1500 CPU | Up to 256 on CPU 1518-4, fewer on smaller CPUs | S7-1500 CPU manual |
Frequently Asked Questions
Why do my two Comfort Panels show the same screen after I press a button on one of them?
Because both panels are bound to the same screen-number area pointer in the S7-1500 PLC. Every change to that pointer triggers a screen change on every panel that uses it. Assign a unique DB and byte offset to each panel's screen-number area pointer and drive them from separate PLC logic blocks such as the FB shown in this article.
Can I make the Sm@rtClient viewer stay on one screen while the operator changes the master panel?
No. The Sm@rtServer is designed to mirror the master panel. The only ways to obtain independent screens between the local panel and the remote view are to use a second physical Comfort Panel, a WebUX page on the S7-1500 CPU, or a separate visualization technology. See the Sm@rtServer manual for the official description of the mirror behavior.
Do I need to create two TIA Portal projects, or can I keep one project with two independent HMIs?
Both approaches are valid. With one project, give each HMI a unique area pointer and a dedicated start screen. The HMIs remain in the same project and can share a screen library, but their navigation is fully independent. With two projects, the HMIs are completely separated, which simplifies maintenance of independent navigation at the cost of duplicate project work. Use the proxy HMI mechanism if you need to share screens across the two projects.
Does the screen-number area pointer also synchronize events and alarms across panels?
No. The area pointer only drives the active screen. Events, alarms, and tag values are managed separately. Each panel can have its own alarm acknowledgment path. If the customer requires a single alarm acknowledgment across panels, that is a separate function-block requirement and is not affected by the screen-number pointer.
Can I keep the start screen synchronized across panels but allow independent navigation afterwards?
Yes. Configure the start screen in the HMI project properties (no PLC intervention is needed). After the start screen is shown, navigation is handled by the local button events on each panel. As long as the area pointer is not used for ongoing navigation, the panels will diverge after the first button press.