TP2200 HMI 3-Language Dropdown Configuration in TIA Portal V14

David Krause16 min read
SiemensTIA PortalTutorial / How-to
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

Overview

Multi-language runtime switching on SIMATIC HMI Comfort Panels allows operators to swap the entire project user interface between configured languages on the fly, without reloading or recompiling the project. This article documents how to implement a three-position drop-down language selector on a SIMATIC TP2200 Comfort Panel (22" widescreen, 1920 x 1080) using TIA Portal V14 SP1 and WinCC Comfort/Advanced V14 SP1. The implementation uses a single internal HMI tag wired to a Symbolic I/O field configured as a drop-down text list, plus a Value-Change VBScript that calls the WinCC system function SetLanguage with a Windows locale string.

The example covers English (en-US), German (de-DE), and Russian (ru-RU), which together cover the typical Western/Central/Eastern European industrial plant deployment footprint. The same pattern scales to any number of project languages, provided the locale strings are installed on the HMI image and the corresponding text libraries are populated in the TIA Portal project.

Runtime boundary: SetLanguage only affects HMI-side text and graphics. Any language-dependent strings composed in the PLC remain under PLC control and must be multiplexed separately, for example by indexing a PLC-side text array with the same selection tag.

Prerequisites

Verify the following before starting:

  • Engineering software: TIA Portal V14 SP1 (or V14 SP1 Update 4 or higher) with WinCC Comfort/Advanced V14 SP1 installed on the same engineering image. WinCC Comfort/Advanced is mandatory for the TP2200 Comfort Panel and ships with the appropriate TIA Portal license.
  • License: A valid WinCC Comfort license (or a bundled TIA Portal license) authorizing the project. Runtime switching is licensed on the engineering side; no additional runtime key is required on the TP2200.
  • Hardware: SIMATIC TP2200 Comfort Panel, 6AV2 124-1MC01-0AX0, with firmware V14.0.0.0 or later. The panel is field-updatable via ProSave.
  • Project languages installed: The Windows locale files for English (United States), German (Germany), and Russian (Russia) must be present in the TIA Portal project. WinCC uses the project's translation editor; missing translations fall back to the reference language.
  • Transfer medium: PROFINET or PROFIBUS from the engineering PC, or USB stick with the compiled HMI image. WinCC Simulation on the engineering PC is also acceptable for first-pass validation.

TP2200 Comfort Panel Technical Reference

Attribute Value
Order number (MLFB) 6AV2 124-1MC01-0AX0
Display 22" widescreen TFT, 16M colors
Resolution 1920 x 1080 (Full HD)
Touch Analog resistive, single-touch
Processor ARM Cortex-A8 class, 1 GHz
Project memory 24 MB for project + 4 GB internal mass storage
Interfaces 2x PROFINET (with integrated switch), 1x PROFIBUS DP/MPI combo, 2x USB 2.0 host, 1x USB device
Runtime WinCC Comfort RT (firmware V14.x compatible with TIA V14 SP1)
Scripting VBScript; user-defined functions; scheduled tasks
Min. TIA Portal V14 (or V13 SP2 for early MLFB variants)
Max. project languages 32 (practical: 5 to 8 for typical line-of-sight operator use)

Source: Siemens Industry Online Support — SIMATIC HMI TP2200 Comfort device manual, entry 6AV2124-1MC01-0AX0.

Step 1 — Configure Project Languages and Translations

  1. Open the TIA Portal V14 SP1 project that contains the TP2200 device.
  2. Right-click the HMI device in the project tree and select Properties > Language & Font (or open Device configuration > Runtime settings > Language & font).
  3. Enable the three project languages: English (United States), German (Germany), and Russian (Russia). The reference language (typically English) cannot be removed.
  4. Open the Project texts editor under Languages & resources > Project texts and translate every label, button, message, alarm, and tooltip to each of the three languages. WinCC only switches what is actually translated; empty entries fall back to the reference language string.
  5. Confirm that the Graphics folder does not contain language-dependent graphics unless you have localized variants for all three languages.
Best practice: Use a translation export/import workflow for large text volumes. TIA Portal V14 SP1 supports XLIFF 1.2 round-trip, which lets you hand the strings to a translation vendor and re-import them without manual copy-paste. The XLIFF exporter is available under Languages & resources > Project texts > Export translation.

Step 2 — Create the Language Selection HMI Tag

Create a single HMI tag that holds the index of the active language. The tag is a pure runtime control tag; it does not need to be linked to the PLC unless you also want the PLC to track the language state.

  1. In the project tree, expand the HMI device and double-click HMI tags.
  2. Add a new tag with the following properties:
Property Value
Name Language_Selection
Data type Int (16-bit signed)
Connection Internal tag (no PLC connection)
Initial value 0
Acquisition cycle 1 s
Limit values Lower 0, Upper 2
  1. If the PLC must also know the active language, add a second tag (for example, PLC_Language_Selection) connected to a PLC DB word and update it from the same Value-Change event.
Int vs. Word: Use Int for the HMI-side selection tag because Symbolic I/O fields handle signed integer ranges natively. The drop-down text list maps 0/1/2 to the three languages; using Word introduces unsigned 0…65535 semantics that complicate the VBScript comparisons.

Step 3 — Configure the Drop-Down Selector

On the target screen, place a Symbolic I/O field (the most flexible HMI object for drop-down behavior). Configure it as follows:

  1. Drag a Symbolic I/O field from the toolbox onto the screen.
  2. In Properties > General:
    • Set Mode to Input (operators need to change the value).
    • Set Process value to the Language_Selection tag.
    • Set Display format to Decimal.
  3. In Properties > Appearance > Selection list:
    • Tick Selection list active to enable the drop-down.
    • Set the list source to Text list (or to Bit/Value-dependent text if you prefer the graphic editor approach).
  4. If you choose Text list, create one under Languages & resources > Text and graphic lists > Text lists with the following entries:
Index (value) Text (default language) Behavior bits
0 English Bit 0 = 0, Bit 1 = 0
1 Deutsch Bit 0 = 1, Bit 1 = 0
2 Русский Bit 0 = 0, Bit 1 = 1
  1. Translate each entry into all three project languages so the drop-down itself is multi-lingual. For Russian, enter the Cyrillic string directly in the Russian column of the text list editor.
  2. Leave Apply project language off for the selector's text list, so the drop-down always shows the same option labels regardless of the currently active project language. Otherwise the labels would re-translate as the operator toggles, producing confusing behavior.

Step 4 — Attach the Value-Change VBScript

Open the Events tab of the Symbolic I/O field and attach a VBScript to the Value change event. The event fires once when the operator releases a different value in the drop-down. Do not attach to Click; that fires on every touch without guaranteeing a value change.

If/ElseIf version (as used in the field report):

If SmartTags("Language_Selection") = 0 Then SetLanguage "en-US" ElseIf SmartTags("Language_Selection") = 1 Then SetLanguage "de-DE" ElseIf SmartTags("Language_Selection") = 2 Then SetLanguage "ru-RU" End If

Select-Case version (preferred for > 3 languages):

Dim idx idx = SmartTags("Language_Selection") Select Case idx Case 0 SetLanguage "en-US" Case 1 SetLanguage "de-DE" Case 2 SetLanguage "ru-RU" Case Else HMIRuntime.Trace "Language_Selection out of range: " & idx End Select

Both snippets call the WinCC system function SetLanguage with a Windows-style locale string. The locale string must match one of the languages enabled in the TIA Portal project's Language & Font settings. The string follows the IETF BCP 47 form: lowercase ISO 639-1 + hyphen + uppercase ISO 3166-1 alpha-2 (for example, en-US, de-DE, ru-RU).

Locale case sensitivity: WinCC accepts both en-us and en-US in most firmware versions, but for reproducibility across V14 SP1 / V15 / V16 / V17 panels it is safer to use the canonical form with the region code in upper case, exactly as shown in the TIA Portal project language list.

Step 4b — State Machine Reference

The language switch follows a strict state machine. The diagram below shows the control flow from operator action through to localized redraw.

TP2200 Language Switch State Machine Operator opens drop-down Selects 0 / 1 / 2 Tag Language_Selection updates Value-Change event fires VBScript calls SetLanguage("xx-XX") WinCC redraws localized text ← Only fires on equal-to-different ← Idempotent if value unchanged

Locale Code Reference

The following locale codes are commonly deployed in European industrial plants. Add a row to the VBScript and a text list entry for each project language you want the operator to be able to select.

Display name Locale string Notes
English (United States) en-US Default reference language in most TIA projects
German (Germany) de-DE Standard DACH locale
Russian (Russia) ru-RU Cyrillic glyphs require Russian font support enabled in the HMI image
French (France) fr-FR Add as fourth project language if required
Spanish (Spain) es-ES Add if serving the Iberian market
Italian (Italy) it-IT Add if serving Italian OEMs
Dutch (Netherlands) nl-NL Add for Benelux deployments
Polish (Poland) pl-PL Eastern European fallback
Czech (Czechia) cs-CZ Add for Czech Republic OEMs
Chinese (Simplified, PRC) zh-CN Requires CJK font image variant on the Comfort Panel
Japanese (Japan) ja-JP Requires CJK font image variant on the Comfort Panel

For the full Windows locale table, see the Microsoft LCID reference (MS-LCID). Cross-check the entries against the TIA Portal Project tree > Languages & resources > Project languages dialog, which lists every locale recognized by the active WinCC build.

Step 5 — Runtime Settings and Project Language Activation

  1. Open Device configuration > Runtime settings > Language & font.
  2. Confirm that all three project languages are ticked in the Active project languages column. Untick languages you do not want the operator to switch to; this also reduces runtime memory.
  3. Set the Default language at startup to en-US (or whichever language you want before the operator makes a choice). This determines what the HMI shows on the first boot.
  4. The script-based approach bypasses the standard language switcher widget, so the Operator can change language checkbox in User administration is not required for this design to work.
Persistent selection: WinCC Comfort does not retain the manually selected language across power cycles unless you implement persistence. To remember the choice between boots, store the Language_Selection tag value in a non-volatile HMI recipe or in a retentive PLC data block, and re-apply it on startup via a Scheduled task set to fire once at Runtime start that calls the same VBScript.

Step 6 — Persisting the Language Across Power Cycles (Optional)

To keep the operator's choice after a reboot, add a scheduled task:

  1. In the project tree, expand Languages & resources > Schedules and create a new scheduled task named Apply_Language_At_Startup.
  2. Set the trigger to Runtime start with no recurrence.
  3. Attach the same VBScript (or a stub that calls a global function) to the event.
  4. Create a recipe of type Online with a single element Language_Selection mirrored to the HMI tag, and load it on Runtime start.

For PLC-side persistence, mirror Language_Selection into a retentive DB word (for example, DB100.DBW0) using the standard area pointer concept, and read it back on HMI startup through a separate internal tag.

Verification and Commissioning

  1. Compile and download the project to the TP2200 using TIA Portal V14 SP1 (target device > right-click > Compile > Software (rebuild all)).
  2. Start WinCC Runtime Simulation on the engineering PC (Start > Siemens Automation > TIA Portal V14 > HMI Simulation). Trigger the drop-down and verify that:
    • The drop-down closes after the value change.
    • All visible static labels swap to the new language within one or two screen refreshes.
    • Alarms, message texts, and graphic labels also switch.
  3. Transfer to the panel via PROFINET. On the panel, run the same test sequence with each of the three languages.
  4. Edge cases to verify:
    • Set the tag via the PLC (write 2 to Language_Selection) and verify the language does not change. SetLanguage is only triggered by the Value-Change event, not by a raw tag write.
    • Trigger the Value-Change event with the same value as the current value. The VBScript does not fire on equal-to-equal writes; this is by design.
    • Reboot the panel. The HMI returns to the default language unless persistence is implemented (see Step 6).

Troubleshooting Matrix

Symptom Likely cause Remediation
Drop-down shows numbers, not the language names Text list not assigned, or bit/value mapping is wrong Re-assign the text list under Properties > Appearance > Selection list; verify the index / bit pattern matches the values in the VBScript
Selection works in simulation but not on the panel Project language not enabled in Runtime settings, or runtime language file missing on the panel image Tick the language in Runtime settings > Language & font; re-transfer the project including all languages via Download to device > Software (all)
Language flickers back to default after switching Another script is re-issuing SetLanguage on a cyclic event Audit all scheduled tasks; keep SetLanguage calls strictly on Value-Change and on Runtime-Start events only
Russian labels show as boxes (□□□) Cyrillic font subset not embedded in the HMI image Install the Cyrillic-enabled WinCC Comfort image (V14.0.4.0 or higher with full font set) and re-transfer
SetLanguage reports "Function not available" in the trace Wrong runtime license, or script running outside WinCC Comfort/Advanced scope Verify the project is compiled for WinCC Comfort RT; check the license audit in the panel's System > License menu
Drop-down is greyed out at runtime Operator authorization level is below the configured level Raise the access level for the language selector, or assign the operator the required authorization in User administration
Value-Change event does not fire Event is on the wrong trigger (Click instead of Value change), or the tag is read-only Open the Events tab of the I/O field and re-attach the VBScript specifically to Value change; ensure the field is Mode = Input
Wrong language appears after toggling Index shift between the VBScript and the text list (e.g., text list starts at 1, script at 0) Align the indices; in the text list, add an explicit entry for index 0 (or shift both the script and list to 1-based)
Date/number format does not change with the language Display format on the I/O field is hard-coded Switch the I/O field's Display format to Project language-dependent (or leave default) and re-transfer
SetLanguage call generates a VBScript runtime error Typo in the locale string (e.g., extra space) or unsupported locale Copy the locale string directly from the TIA Portal language list; verify it is enabled in Runtime settings
Drop-down responds slowly (> 1 s) Acquisition cycle set to 100 ms on a heavily loaded panel Raise the cycle to 1 s; the drop-down does not need high-frequency polling
Language resets after a Stop/Start Runtime from the panel Runtime-Start scheduled task is missing the VBScript Re-attach the VBScript to the Apply_Language_At_Startup scheduled task and re-transfer the project

Edge Cases and Field-Commissioning Notes

  • PLC-driven language changes: If the PLC must force a language (for example, after a mode bit is set), wire the same script to a scheduled task that runs on a tag value change, or use a separate internal tag mirrored from the PLC and re-apply SetLanguage from a scheduled task on a 500 ms cycle. Avoid calling SetLanguage more often than necessary; each call forces a full redraw of the localized text elements and can take 200 to 500 ms on a 22" Comfort Panel under load.
  • Number formatting and decimal separator: SetLanguage also switches the decimal separator (comma vs. period), date format, and weight/measure conventions on the HMI. PLC-side computations stay in the PLC's data type; format the values on the HMI side using the Display format of the Symbolic I/O field. For English, the separator is the period; for German and Russian, it is the comma.
  • Alarm texts: Discrete alarms, analog alarms, and user-defined alarm classes all participate in the language switch. The user must have completed the Alarm texts translations; otherwise the alarm message falls back to the reference language.
  • Script length and runtime: WinCC Comfort imposes a maximum VBScript size; long scripts must be split into multiple procedures called from the Value-Change event. The drop-down language switch is a one-liner and has no measurable runtime impact.
  • Audit trail: For regulated industries (pharma, food, automotive), log the language change via HMIRuntime.Trace or write the value into an HMI audit recipe so the change is traceable per shift.
  • Function-key alternative: As an alternative to a drop-down, three F-keys (for example, F1, F2, F3) can each directly call SetLanguage "en-US", SetLanguage "de-DE", and SetLanguage "ru-RU" without any tag indirection. This is faster to implement for a fixed three-language panel, but the drop-down is the right choice when the language set is expected to grow or when the panel must show the currently active language.
  • Migration to V15 / V16 / V17: The same script and tag structure ports unchanged. The TP2200 image must be updated to the matching firmware version before the newer TIA Portal can download a project. The SetLanguage locale strings have not changed across V14 through V17 SP1.
  • Performance benchmark: A full HMI redraw after SetLanguage on a 22" TP2200 Comfort Panel with a 24 MB project takes approximately 250 to 400 ms. The next operator touch is delayed by this time, so do not chain SetLanguage calls back-to-back from a single event.
  • Coexistence with the standard language switcher: The standard Language switcher HMI object (added from the toolbox under Controls) writes the locale directly to a system tag. If you use both the standard switcher and the script-based drop-down, the two must agree on the same Language_Selection tag, otherwise the operator will see inconsistent behavior.

System Topology Reference

The commissioning topology for a TP2200 multi-language project is straightforward: the engineering PC holds the TIA Portal V14 SP1 image; the TP2200 is on the same PROFINET subnet as the SIMATIC S7 PLC; the operator interacts directly with the panel.

TIA Portal V14 SP1 Engineering PC WinCC Comfort/Advanced V14 SP1 SIMATIC TP2200 22" Comfort Panel 1920 x 1080 SIMATIC S7 PLC (S7-1500 / 1200) PROFINET DB for language mirror PN / Download PROFINET

FAQ

Why does the drop-down show the wrong language after I select a value?

Most often the text list indices are offset from the script. Verify that index 0 maps to English in the text list and that the VBScript case 0 calls SetLanguage "en-US". TIA Portal does not auto-align these two, and a one-bit shift is the single most common field bug.

Can I use SetLanguage from a C script instead of VBScript?

Yes. On WinCC Advanced (PC-based runtime), the C function is SetLanguage with the same locale string argument. On WinCC Comfort (the TP2200 panel runtime), only VBScript is supported, so the If/ElseIf or Select-Case VBScript examples in this article are the correct path.

How do I retain the operator's language choice across a power cycle?

Persist the Language_Selection tag in an HMI recipe or in a retentive PLC data block, and add a Scheduled task set to fire once on Runtime start that calls the same VBScript. Without this, the panel returns to the configured default language on every boot.

Does SetLanguage change PLC text or just the HMI?

It changes the HMI only. Any text composed in the PLC (for example, error strings concatenated in SCL) must be handled by multiplexing on the PLC side using the mirrored Language_Selection tag and a per-language DB array.

What happens if the operator selects a language that is not enabled in Runtime settings?

WinCC ignores the call or falls back to the reference language. TIA Portal V14 SP1 does not raise a runtime error, so verify the enabled languages in Runtime settings > Language & font before commissioning and again after every project upgrade.

Can I trigger the language switch from the PLC instead of the panel?

Yes. Mirror the Language_Selection tag to a PLC DB word and add a scheduled task on the HMI that runs on a tag value change of the mirrored tag, calling the same VBScript. The Value-Change event on the HMI-side tag still fires regardless of the source of the change, so the script runs in both cases.

Is there a limit on the number of languages I can offer?

WinCC Comfort supports up to 32 project languages, and the drop-down text list can hold an arbitrary number of entries. The practical limit is operator ergonomics: more than five languages in a single drop-down is hard to scan on a 22" panel, so consider grouping regional variants (for example, en-US, en-GB) under a single visible label.

Back to blog