Overview
Running two or more Siemens HMI panels in parallel against a single S7-1200 PLC is a common plant-floor scenario, but synchronizing the active runtime language between panels that belong to different WinCC product families is rarely obvious. The TP1200 Comfort panel uses WinCC Comfort/Advanced and offers full VBScript, system tags, and a large library of system functions, while the TP177B is a WinCC Basic panel with a restricted script runtime and no VBScript support. The two panels cannot exchange data directly, so the S7-1200 PLC must be used as the shared data hub.
This reference documents the engineering pattern for distributing the active language index from a master panel to a slave panel through a single integer tag, plus an alternative four-bit pattern for projects that require a high number of languages and prefer one-hot boolean mapping. The procedure was originally validated on TIA Portal V13 Update 4 with project software "SIMATIC WinCC Comfort V13 SP1 Update 4". The same concept applies to V15, V16, V17 and V18 projects when the panel firmware is upgraded accordingly; only the dialog navigation paths change slightly.
System Architecture
The data flow is unidirectional from the operator who triggers the language change on the master panel, into the PLC, and out to the slave panel. The PLC never originates a language change; it is purely a transport buffer.
Prerequisites
- TIA Portal V13 SP1 Update 4 (or V15.1 / V16 / V17 with migrated project). Lower than V13 SP1 lacks the language switching VBS helpers on the Comfort side.
- One S7-1200 CPU (any firmware 4.x or higher) that owns the project HMI tags.
- One TP1200 Comfort panel (6AV2 124-1MC01-0AX0 family) loaded with WinCC Comfort V13 SP1 runtime.
- One TP177B panel (6AV6 642-0BA01-1AX1 or DN variant) loaded with a WinCC Basic V13 SP1 image. The Basic panel must have the matching language list configured in the project.
- The four project languages configured identically on both panels — English, Hungarian, Chinese, Thai in the original case. Mismatched language indices break the synchronization silently.
- EtherNet/PROFINET connectivity between the CPU, the Comfort panel, and the Basic panel. A single subnet is sufficient; routing through multiple networks requires you to also set up a connection in Devices & Networks.
- For commissioning without a physical PLC, PLCSIM V13 SP1 (or higher) can simulate the S7-1200 while both WinCC RT instances run on the engineering station.
Solution Selection: Integer vs Boolean Tags
Two patterns are used in the field. Pick the one that matches your project size and the number of languages.
| Criterion | Integer Tag (Solution A) | Boolean Per-Language (Solution B) |
|---|---|---|
| Number of languages supported | Up to 32 767 (INT) or 2 147 483 647 (DINT) | One bit per language; practical limit 8 to 16 |
| PLC data footprint | 1 word | 1 word or 1 double word |
| Readability in PLC code | Compact, indexed | Self-documenting, e.g. bLangEnglish
|
| Event handling on slave | Single value-change event dispatches to N language changes | One rising-edge event per language, four total |
| Behavior on identical value | No event fires (must clear tag first) | Same — no event fires |
| Risk of multi-bit race | None — atomic write | Possible if two operators race the master; must reset others first |
| Best use case | 2 to 4 languages, compact projects | 3 to 5 languages where each language has a dedicated UI region |
Solution A: Integer Tag Implementation
The integer pattern uses a single 16-bit tag in the S7-1200. The master panel writes the language index on every change; the slave panel monitors the tag and triggers a language switch whenever the value differs from the previous one.
Step 1 — Declare the shared tag in the PLC
- Open the S7-1200 station in TIA Portal and create a new global data block (e.g.
DB_HMI_Interface). - Add a static tag named
HMI_LangIDof data type INT. Initial value0(default language index). - Optional: add a
HMI_LangID_Prevtag of type INT, used by the slave to debounce identical values. - Compile the PLC program. The tag becomes visible to both HMI devices through the standard HMI connection.
Step 2 — Map the language index
| Index value | Language | WinCC language ID |
|---|---|---|
| 0 | English (default) | 0x0409 / 1033 |
| 1 | Hungarian | 0x040E / 1038 |
| 2 | Chinese (Simplified) | 0x0804 / 2052 |
| 3 | Thai | 0x041E / 1054 |
Step 3 — Master panel: write the index on change
On the TP1200 Comfort, attach a "language switch" button to one of these events. The Comfort panel can write the new index to the PLC either with a direct tag connection on the language button, or via a VBScript.
Method A — direct connection (no script):
- Open the language button event configuration in the Comfort panel project.
- On the Press event, configure Set value on the tag
HMI_LangIDwith the next index in the cycle (0, 1, 2, 3, 0, 1…). - Repeat for as many buttons as there are languages; each button writes a fixed index value.
Method B — VBScript on the Comfort panel (works because Comfort supports scripting):
' Comfort panel — VBS on the language button "Change"
Sub OnClick(ByVal item)
Dim currentLang, nextLang
currentLang = SmartTags("HMI_LangID")
nextLang = (currentLang + 1) Mod 4 ' 4 languages in this project
SmartTags("HMI_LangID") = nextLang
End Sub
After the tag is updated, the Comfort panel itself switches language automatically through its built-in language-switching mechanism — the script is only needed to mirror the change into the PLC.
Step 4 — Slave panel: react to value change
The TP177B does not have VBScript, so the response is configured as a scheduled task with a value-change event on the tag. Proceed as follows:
- In the TP177B project, open HMI Tags and add the PLC tag
HMI_LangIDwith the same acquisition cycle as the master (250 ms is a good default). - Create a Scheduled Task (or use a hidden IO field with the Change event) on the tag
HMI_LangID. - On the value-change event, call the system function
SetLanguagewith the parameter Language set to the value ofHMI_LangID. The basic panel does not support the system function nameSetLanguagedirectly in the function list; instead, configure the following equivalent:
- Add an Internal tag
Slave_LangIDof type INT. - Configure an Animation / Appearance on a dummy element that has the property Language linked to
Slave_LangID. The Basic panel translates the integer to the matching language from its own project language list. - Alternative, the most reliable: on the same value-change event, call ActivateScreen to navigate to a screen that has the language tag bound to its visible state, forcing a redraw. In WinCC Basic, the cleanest path is to enable "Language switching via PLC tag" under Runtime settings > Language & Font, then point the setting to
HMI_LangID.
Solution B: Boolean Per-Language Implementation
Step 1 — PLC tag layout
| Tag | Type | Initial | Meaning |
|---|---|---|---|
bLangEnglish |
BOOL | TRUE | Index 0 |
bLangHungarian |
BOOL | FALSE | Index 1 |
bLangChinese |
BOOL | FALSE | Index 2 |
bLangThai |
BOOL | FALSE | Index 3 |
Step 2 — Master panel: SET the active language bit, RESET the others
On the Comfort panel, attach a click handler to each language button. The handler SETs its own bit and RESETs the three other bits in the same PLC cycle. This guarantees the one-hot invariant.
' TP1200 Comfort — VBS on the "Hungarian" language button
Sub OnClick(ByVal item)
SmartTags("bLangEnglish") = False
SmartTags("bLangHungarian") = True
SmartTags("bLangChinese") = False
SmartTags("bLangThai") = False
End Sub
Step 3 — Slave panel: rising-edge event per bit
- For each of the four booleans, create a scheduled task or hidden IO field with the Rising edge event.
- On the rising edge of
bLangEnglish, call ActivateScreen to the English home screen, or set the language pointer to 0. - Repeat for the remaining three bits.
Because the master always RESETS the other three bits before SETting the new one, the slave panel sees exactly one rising edge per language change. There is no risk of two rising edges in the same scan cycle.
Configuring the Master HMI (TP1200 Comfort)
- Open the Comfort panel device in the project tree and double-click Languages & Resources.
- Add the four project languages under Project Languages. The order is critical: index 0 must be the language that the slave will display when the master shows English.
- Compile the HMI project (right-click the panel > Compile > Software (rebuild all)) so that the runtime image picks up the language list.
- Create a screen named Language_Select and place four buttons on it. Configure each button's Press event to set the corresponding language (Comfort can do this through the system dialog Set Language under System Functions) and to write the index to the PLC tag in the same event.
- On the same screen, bind an IO field to
HMI_LangIDin Output mode for visual confirmation during commissioning. - Configure a tag connection on the language list to the same DB. Use Synchronous acquisition only if the language buttons are pressed at high frequency; for operator-driven changes, the default Cyclic continuous at 250 ms is sufficient.
Configuring the Slave HMI (TP177B)
- Open the TP177B device. The TP177B must be loaded with the matching project, including the same four project languages in the same order.
- Open Connections and confirm that the HMI connection to the S7-1200 is online and that the tag
HMI_LangID(Solution A) or the four booleans (Solution B) are listed under HMI Tags. -
For Solution A (recommended on Basic): open Runtime Settings > Language & Font, enable Language pointer, and bind it to
DB_HMI_Interface.HMI_LangID. The runtime will switch the active language on each cycle that the value changes. - For Solution B: under Schedules, add four tasks, each with a 100 ms cycle, monitoring one of the four booleans. Configure the On rising edge event of each task to call ActivateScreen with the home screen of the corresponding language as the screen name.
- Open the project properties > Runtime and confirm that the cycle time for the HMI tag is set to a value equal to or faster than the master's update cycle. A slower cycle on the slave delays the visible change but does not break the synchronization.
- Compile and download to the panel. TIA Portal V13 SP1 supports incremental compile for Basic panels; the full image is rebuilt only when the language list changes.
Verification & Commissioning
- Start PLCSIM with the S7-1200 program loaded. Start both WinCC Runtime instances from TIA Portal (Comfort RT and Basic RT).
- On the Comfort panel, press each language button in turn. Observe the IO field bound to
HMI_LangIDupdate to 0, 1, 2, 3. - Watch the Basic panel. The active language should switch within 500 ms to 1 000 ms, depending on the configured cycle time.
- Toggle between English and Hungarian ten times in quick succession. The Basic panel must end in Hungarian with no intermediate flicker. If the panel flickers, increase the slave cycle to debounce.
- Power-cycle the Comfort panel while the Basic panel remains running. The master restarts in its default language (index 0). The slave does not know that the master has changed, so the languages may diverge after a restart. Add the following PLC logic to handle the restart case:
// S7-1200 — OB1 startup logic
// On first scan, force the default language ID into the buffer
IF "FirstScan" THEN
"DB_HMI_Interface".HMI_LangID := 0;
END_IF;
If both panels restart together, both will load their default language (index 0 = English), and the next operator action on the master re-synchronizes the slave.
Troubleshooting Matrix
| Symptom | Likely root cause | Corrective action |
|---|---|---|
| Master switches, slave stays in previous language | Language pointer not enabled on Basic panel | Enable Language pointer under Runtime Settings > Language & Font; bind to the DB word |
| Slave switches to wrong language (e.g. master English, slave shows Chinese) | Project language list order mismatch between panels | Reorder languages on the slave to match the master exactly, recompile, and download |
| Slave flickers between two languages on every cycle | Master is writing the same value repeatedly, debounce missing | In PLC, write the new value only on a real change; or use the Edge evaluation property on the slave tag |
| Chinese text appears as squares on TP177B | Asian font not enabled in the project | Open Project > Languages & Resources, enable Asian project language, recompile, and download the runtime image with the East Asian font set |
| Comfort panel script error "Object doesn't support this property or method" | Script using SmartTags on a tag that is not a real PLC point |
Verify the tag is declared as an HMI tag with PLC connection, not as a local variable |
| Both panels in English after PLC restart | No startup default for HMI_LangID
|
Initialize the tag in OB1 startup or set the DB to retain the previous value with Set retain enabled |
| Tag shows correct value on master IO field, but Basic panel does not react | Different HMI connection name or wrong DB number | Compare the connection configuration in both devices, ensure the same DB and absolute address are used |
| Value updates but no language switch on Basic | Cycle time on slave tag is too long (e.g. 5 s) | Reduce the acquisition cycle to 250 ms; or change the tag property to Cyclic continuous instead of On demand |
| Operator presses button, nothing happens on either panel | Plcsim not running or HMI connection in error state | Check Online > Accessible devices; verify the connection status LED on the Comfort panel and the diagnostic buffer of the S7-1200 |
Edge Cases & Limitations
- Master restart divergence. Because the PLC is the only state holder, any restart of the master while the slave stays in runtime will leave the slave in its last language. If the application is safety-relevant (e.g. operator prompts in a regulated line), add a heartbeat tag and force the slave back to the default language after 30 s of no master activity.
- More than 32 panels. The pattern scales linearly with the number of panels. Each additional slave requires one extra tag subscription; the PLC does not need a unique tag per slave. The broadcast-style design is broadcast by virtue of the shared DB.
- Mixed firmware generations. A TP1200 Comfort running WinCC Comfort V13 SP1 can synchronize with a TP177B running WinCC Basic V13 SP1 Update 4 or later. Earlier Basic images (pre-V12) do not support the language pointer, so an upgrade of the slave firmware is mandatory. Siemens documents the supported image versions in the Siemens Industry Online Support portal under the entry for each panel.
- Asian languages and the Basic panel. The TP177B is a 6" panel with limited CPU and memory. Loading Chinese, Japanese, and Korean fonts in addition to Thai can push the project image past the 4 MB limit. Trim the project to the necessary screens and reduce the number of graphical objects if you receive a compile warning about the project size.
- OP 77B or older panels. Panels older than the TP177B (OP 77B, OP 73, OP 73micro) do not support the language pointer and have very limited event handling. For these panels, the integer tag must be polled by a scheduled task and the language switched by navigating to a per-language home screen, which is fragile and not recommended for production.
- Two masters, one slave. If the project has two operator stations that both act as masters, write the index from both stations to the same DB word. Add PLC logic to take the latest writer or use a dual-port write that only changes the value on a real transition; otherwise the slave will switch on every scan.
-
Retain behavior. Set the DB containing
HMI_LangIDto Non-retain if the application should always start in the default language. Set it to Retain if the panel must remember the last-used language across power cycles.
Related Configuration Checks
- Confirm that the HMI connection on the slave uses the same S7-1200 IP address and rack/slot as the master; mismatched connections silently fail to read the tag.
- Confirm that the project languages are enabled in Project > Languages & Resources, not just in the device configuration. The flag at project level is what causes the runtime image to include the East Asian font.
- Confirm that the Comfort panel runtime version matches the engineering version. A V13 SP1 panel loaded with a V14 runtime shows a version mismatch banner and refuses to load the project.
- If the application uses WinCC V15.1 or later, the language pointer is replaced by the Language system tag in the connection area pointer. The data width and DB address are the same, but the documentation paths in TIA Portal differ.
FAQ
Can the TP177B switch language without a script?
Yes. Enable the Language pointer under Runtime Settings > Language & Font on the TP177B and bind it to the same integer tag the master writes. WinCC Basic then switches automatically on every cycle the value changes, no VBScript required.
Why does my integer tag not synchronize all four languages?
The most common cause is that the master and slave have different project language lists. Open Languages & Resources on both panels and confirm the order is identical: index 0 English, index 1 Hungarian, index 2 Chinese, index 3 Thai. Recompile both projects and download.
How many languages can I synchronize with this method?
Up to 32 767 with an INT tag and 2 147 483 647 with a DINT tag, in theory. In practice, WinCC Basic and Comfort limit the project language list to about 32 entries, and the TP177B 4 MB image fills up with three or four Asian fonts.
Does the pattern work with TIA Portal V15, V16, or V17?
Yes. The same DB tag and the same language pointer concept apply. In V15.1 and later, the language pointer is exposed as the Language system tag in the connection area pointers. The dialog paths differ but the engineering intent is identical.
What happens if the master panel loses power while the slave is running?
The slave keeps its last language because the PLC is the only state holder and the DB may be set to retain. Add a startup block in OB1 that resets the language ID to 0 on first scan, or add a heartbeat tag from the master that forces the slave back to default after a timeout.
Can I synchronize more than two panels with the same PLC tag?
Yes. The PLC tag is a broadcast by virtue of the shared DB; any number of Comfort and Basic panels can subscribe to the same word. The cycle load on the CPU scales linearly with the number of subscribers, but for a typical 2 to 5 panel plant the load is negligible on an S7-1200.