Let's Conect with Us Connect!

WinCC Unified Modernization

WinCC Unified Modernization


Runtime Setting User Defined Style

What are Styles
User Defined Style allows customizing the appearance of screen objects in HMI projects, enabling consistency and design flexibility

In WinCC Comfort/Advanced
Styles were created as a type in TIA Portal

drawing


In WinCC Unified
Styles are managed through the WinCC Unified Corporate Designer, a stand-alone application. This tool simplifies style management and lets you create custom style variants and export them for use in your project in TIA Portal.


To see the entire implementation please watch the following video


Font - Language dependency

What is Font - Language Dependency
This functionality allows you to define specific fallback fonts depending on the runtime language selected in the HMI. It ensures that characters are rendered correctly for all supported languages, even those with unique character sets like Chinese, by using fonts that fully support those characters.

In WinCC Comfort/Advanced
You can specify the font used to display the texts for each runtime language on the HMI device in the "Language & Font" editor. The default font is used in all texts, such as dialog texts, for which you cannot define a specific font.

WinCC offers only fonts supported by the HMI device.

In WinCC Unified:
Starting with WinCC Unified V20 Update 2, you can now configure language-compatible font families in the runtime settings.


To see the entire implementation please watch the following video


Vertical Orientation

What is Vertical Orientation
Vertical orientation refers to setting up an HMI device in Portrait mode instead of the default Landscape mode.

In WinCC Comfort/Advanced
You must add a specific "Portrait" device in TIA Portal to enable Vertical Orientation.

drawing

In WinCC Unified
You don’t need a separate "Portrait" device in TIA Portal. Simply create the project normally and configure the correct size for the screens in TIA Portal. In the Control Panel of the Unified Comfort Panel, go to Display → Orientation and set it to 90° (Portrait). The project will then adjust automatically.


To see the entire implementation please watch the following video


Password Aging

What is Password Aging
Password aging enforces periodic password updates.

In WinCC Comfort/Advanced
Password aging is managed under the RT Settings of the HMI, → User Administration → Password.

drawing

In WinCC Unified
Password aging is configured in TIA Portal, under Security settings of the project → Password polices.

drawing

These settings differ when using Central User Management with UMC. Password aging configuration while using UMC is explained at the end of the video.


To see the entire implementation please watch the following video


Limit for logon attempts

What is Limit For Logon Attemps
In WinCC, this functionallity allows setting a limit for failed login attempts to enhance security by preventing unauthorized access. If the limit is exceeded, the account is locked.

In WinCC Comfort/Advanced
You can activate this functionality under RT Settings of the device → User Administration → General → Enable limits for logon attempts.

In WinCC Unified
In WinCC Unified, this setting is found under Runtime Settings → Security → Account Deactivation. After enabling this option, you can define the number of failed login attempts before the account is locked.

drawing


To see the entire implementation please watch the following video


Http Channel

What is "HTTP channel server"?
The HTTP channel server functionality enables the HMI device to act as an HTTP server, allowing external systems to read or write HMI tag values through HTTP requests. This provided a simple and standardized method for integrating third-party systems with the HMI, especially when lightweight, web-based communication was preferred.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, the HTTP channel server could be activated on the HMI device to allow tag access via HTTP requests.

In WinCC Unified:
There isn´t HTTP channel server in Unified. The function can be replaced by OPC UA Server. The following screenshot will show you where to activate OPC UA Server.

drawing

NOTICE

If you use the OPC UA Server to replace the HTTP channel server in Unified, the communication protocols of other connected devices should also be changed.


SOAP Server

What is SOAP Server?
The SOAP Server functionality allows an HMI device to act as a web service endpoint using the SOAP (Simple Object Access Protocol) standard. This enables external systems to exchange process values with the HMI over HTTP using structured XML messages, providing a platform-independent integration interface.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, the HMI device could be configured as a SOAP Server, allowing external applications to send or receive data via standardized SOAP requests.

In WinCC Unified:
A comparable function like the SOAP Server to exchange process values is the OPC UA Server of WinCC Unified.

Information on OPC UA and how to configure it in WinCC Unified can be found here: SIMATIC WinCC Unified Tutorial Center https://cache.industry.siemens.com/dl/dl-media/433/109782433/att_1265883/v1/109782433_SIMATIC-WinCC-Unified-Tutorial-Center_140324_web/start.htm#!/en/13838


Release Button On Exit

What is Release Event behavior?
The Release event is a common interaction mechanism in HMIs, triggered when a user lifts their finger or releases a mouse click over a UI element, typically a button.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, the behavior of the Release event is configurable.Specifically, developers could choose whether the event should still trigger if the pointer (mouse or touch) left the button area before being released.

In WinCC Unified
You cannot change the behavior of the “Release” event. The behavior of the “Release” event is described in the manual: https://support.industry.siemens.com/cs/ww/en/view/109828368/172517313803


Smart client control

What is "SmartServer/Client Communication"?
The SmartServer/Client functionality allows one HMI device to act as a server, sharing its runtime content or user interface, while another device functions as a client, viewing or interacting with that runtime remotely.

SmartClient Communication In WinCC Unified:

Using Comfort Panel or Runtime Advanced as the Server

To establish a connection between a Unified device and a Comfort Panel or WinCC Runtime Advanced, you can use the SmartServer/SmartClient functionality. Since WinCC Unified does not include a native "SmartClient View" control, the setup requires an alternative approach using the Web Control. The server-side configuration (Comfort Panel or Runtime Advanced) remains unchanged. Step-by-step Configuration:

  1. Enable the HTTP Server on the Server Device
    • On the Comfort Panel or Runtime Advanced, open the Internet Remote settings.
      drawing
    • Under the Administration tab, enable the built-in HTTP server. drawing
      This allows the SmartServer to be accessed via HTTP, such as from a web browser.
  2. Configure the Unified Device as the Client
    • On the Unified device, insert a Web Control element into your screen.
      drawing
    • In the object properties, set the URL using the following syntax:
      drawing
      http://<IP-address>:<SmartServer-port>

Supported Communication Scenarios:

Unified Device (Client)ServerSupported?
Unified Basic PanelComfort Panelvia Web Control
Unified Comfort PanelComfort Panelvia Web Control
Unified PC RuntimeComfort Panelvia Web Control
Unified Basic PanelRuntime Advancedvia Web Control
Unified Comfort PanelRuntime Advancedvia Web Control
Unified PC RuntimeRuntime Advancedvia Web Control

Using Unified Devices as the Server

  • Unified Comfort Panel as Server
    Currently, Unified Comfort Panels cannot act as a SmartServer.

    • There is no "SmartClient View" control in Unified.
    • The Web Control cannot be used in reverse, since Unified Comfort Panels do not provide an HTTP-based SmartServer.

    Alternative: Use Web Clients instead. See Siemens support article: Link to Article

  • Unified PC Runtime as Server The Unified PC Runtime can act as a server by installing WinCC Runtime Advanced SmartServer on the same PC.

    • Configuration follows the same process as described above (Comfort/Advanced as server + Unified client via Web Control).

Supported Communication Scenarios:

Unified Device (Client)ServerSupported?
Unified Basic PanelUnified PC Runtimevia Web Control
Unified Comfort PanelUnified PC Runtimevia Web Control

NOTICE

The described solution using Web Control as a SmartClient is not applicable when trying to use the Web Client of a Unified Comfort Panel to act as a SmartClient to another station. This use case is currently not supported.


GMP (Audit)


Record RT start & stop

What is "GMP – Runtime Start & Stop"?
In Good manufactoring practice (GMP)-compliant systems, it’s essential to trace all critical user and system activities, including the start and stop of the HMI runtime. Logging these events in the Audit Trail ensures traceability, accountability, and regulatory compliance—particularly important in industries like pharmaceuticals, food, and life sciences.

In WinCC Comfort/Advanced:
Runtime start and stop could be detected and inserted automatically in the audit log.

In WinCC Unified
WinCC Unified introduces the system function InsertElectronicRecord, which allows custom entries to be written into the Audit Trail, including those not captured automatically. To log runtime start and stop, you can use a Scheduled Task triggered by the system tag @SystemActivationState. A script inside this task checks the state and uses InsertElectronicRecord to log "Runtime start" when the value is 2, and "Runtime stop" when it is 4.

Code used in the video

if (Tags("@SystemActivationState").Read() == 2){ 
try { 
    await HMIRuntime.Audit.SysFct.InsertElectronicRecord("Runtime start", "System", 1, 0, 0, 0, undefined, undefined); 
} 
catch (err) { } 
} 

if (Tags("@SystemActivationState").Read() == 4){ 
    try { 
        await HMIRuntime.Audit.SysFct.InsertElectronicRecord("Runtime stop", "System", 1, 0, 0, 0, undefined, undefined); 
    } 
    catch (err) { } 
} 


To see the entire implementation please watch the following video


Sign Recipe data saving / loading

What is Signature for Saving/Loading Recipe Data
The signature for loading/saving recipe data is a security mechanism that ensures operators must confirm and authenticate changes made to recipe data before saving. This helps maintain compliance with Good Manufacturing Practices (GMP) and audit requirements.

In WinCC Comfort/Advanced
The GMP settings were available under the Recipe properties - > GMP.

drawing

In WinCC Unified
This feature is managed via GMP Classes in the Parameter Set Type configuration.

drawing

Two GMP classes are available for Signature for Recipe Data Actions:

  1. SingleSignature – Requires a single user signature.
  2. SingleSignatureComment – Requires a signature and a comment.

NOTICE

First you have to enable gmp inside the runtime settings configuration.


To see the entire implementation please watch the following video


Record Operator Actions - Recipe

What is Record Operator Actions - Recipe
The Record Operator Actions in Recipes is a feature that allows user to register all the recipe manipulations in the audit logs. This helps maintain compliance with Good Manufacturing Practices (GMP) and audit requirements.

In WinCC Comfort/Advanced
The GMP settings were available under the Recipe properties - > GMP.

drawing

In WinCC Unified
This feature is managed via GMP Classes in the Parameter Set Type configuration.

The GMP class available for Record Operator Actions in Recipes:

HMI_Audit_Paco_GMP

drawing

NOTICE

First you have to enable gmp inside the runtime settings configuration.


To see the entire implementation please watch the following video


Log Alarm Text

What is Log Alarm Text
Alarm / Audit logs help track and document alarm events. The functionallity Log Alarm Text allows user to record the alarm text of the alarms in the Alarm Log.

In WinCC Comfort/Advanced
The Alarm Text was automatically stored in the alarm log.

In WinCC Unified
The Alarm Text is no directly logged for the moment. Instead, you can use the alarm name or use an additional column to register the Alarm Text in the Audit Trail, For registering it, you can use the InsertElectronicRecord system function.

Code used in the video

await HMIRuntime.Audit.SysFct.InsertElectronicRecord("Alarm ID : " + alarmResultArray[0].ID + "Text" + alarmResultArray[0].AlarmText,  
"Alarming", HMIRuntime.Audit.Enums.hmiOperationType.hmiUpdate, 0, 0, HMIRuntime.Audit.Enums.hmiConfirmationType.hmiNone, undefined, undefined); 


To see the entire implementation please watch the following video


Audit – Checksum

What is Audit Checksum?
This functionallity ensures the integrity of logged operator actions by detecting any modifications made to the audit trail data after it was originally stored. It is a critical feature for compliance in regulated environments (e.g., GMP, FDA).

How Was It in WinCC Comfort/Advanced?

  • Audit trail entries were stored directly in a .csv file.
  • A single checksum was generated per CSV file.
  • If the file was altered, the checksum validation would fail, indicating possible tampering.

How Is It in WinCC Unified?

  • Each individual audit entry has its own checksum, increasing granularity and security
  • Unified uses an SQLite database to store audit data, tag logs, and alarm logs (or MSSQL when the DataStorage option is installed)
  • The checksum is validated only within the Audit Viewer

    • If the CSV export is modified and later imported back into the Audit Viewer, altered lines are flagged in red, and a warning is shown that the file was manipulated
  • Checksums are not applied or validated when exporting audit data via scripts. The following screenshots display the exported audit trail entry in Notepad++ with the modified value and the view in the audit viewer of the manipulated and the original entry. The manipulated audit trail entry is highlighted in red and the original entry is highlighted in grey.

    drawing drawing


HMI Tags


Event on Tags

What is Event on Tags
This functionality triggers actions or system functions based on changes in the value of an HMI tag, enabling automated responses directly tied to tag behavior.

In WinCC Comfort/Advanced
Events could be configured directly on HMI tags.

drawing

In WinCC Unified
Events on tags must be managed using Analog Alarms and the Scheduled Tasks:

  • On Value Change: Trigger a Scheduled Task whenever the tag value updates.
  • On Exceeding a Limit: Configure an Analog Alarm that triggers when the tag surpasses a defined limit, and execute a Scheduled Task triggered by the alarm.
  • On Falling Below a Limit: Configure an Analog Alarm that triggers when the tag value drops below a defined limit, and execute a Scheduled Task triggered by the alarm.


To see the entire implementation please watch the following video


Multiplexing

What is Multiplexing
Multiplexing in HMI development refers to the ability to dynamically change which tag is being accessed during runtime — without needing to create a separate tag for each memory location. This enables flexible and scalable designs, especially when dealing with arrays or repeated structures in the PLC.

In WinCC Comfort/Advanced
There are three main types of multiplexing:

  1. Multiplexing with Symbolic Addressing
    You use index tags to dynamically access array elements in symbolic PLC structures (e.g., UDTs). Example: MyDB.MyArrayTag[HMITag]
  2. Multiplexing with Absolute Addressing
    You dynamically build the memory address at runtime using index tags. For example: %DB[HMITag1].DBW[HMITag2] This lets you access any address in a DB without predefining each tag.
  3. Indirect Addressing (tag list multiplexing)
    A special "multiplex tag" can reference a list of tags. An index tag selects which one is used at runtime. Useful for selecting between machines, devices, or similar objects.

In WinCC Unified
The concept of multiplexing is still present. The same three categories exist, but in some cases, with different approaches:

  1. Multiplexing with Symbolic Addressing
    You can dynamically access elements of an array using a tag as the index. This is similar to symbolic addressing in Comfort and requires the PLC structure to support arrays.
  2. Multiplexing with Absolute Addressing
    You can define a tag with placeholders in the address, like %DB[Tag1].DBW[Tag2], to access raw memory addresses dynamically at runtime.
  3. Indirect Addressing
    Unified doesn't support native tag list multiplexing like Comfort. However, this can be replicated using JavaScript. Based on the index value, you dynamically switch which tag is used (usually for an IO field or visualization), mimicking the tag list behavior.

Code used in the video

let muxTagName = ""; 
switch (Number(value)) { 
                case 0  : muxTagName = Tags("Multiplexing_Tag_1").Name; break; 
                case 1  : muxTagName = Tags("Multiplexing_Tag_2").Name; break; 
                case 2  : muxTagName = Tags("Multiplexing_Tag_3").Name; break; 
                case 3  : muxTagName = Tags("Multiplexing_Tag_4").Name; break; 
                case 4  : muxTagName = Tags("Multiplexing_Tag_5").Name; break; 
                default: /*statements*/ break; 
                } 
Tags("Final_Value_Name").Write(muxTagName); 


To see the entire implementation please watch the following video


Acquisition Mode (Cyclic Continuous)

What is Cyclic Continuos Acquisition mode
In WinCC Comfort, the cyclic continuous mode was used to monitor tag values continuously, ensuring constant updates during the process. However, WinCC Unified is designed to react to value changes instead of continuously monitoring values. This change impacts logging, tag handling, and other functionalities.

In WinCC Comfort/Advanced
Users could configure HMI tags to be updated continuously using the cyclic continuous acquisition mode.

In WinCC Unified
Since WinCC Unified is designed to react to value changes instead of continuously monitoring values, we need to apply different solutions depending on the use case:

  • Use Case 1: Triggering an action when a tag value changes (even if the tag is not in the current screen).
  • Use Case 2: Triggering an action that affects an object in the current screen.
  • Use Case 3: Ensuring a tag is observed frequently using alarm triggers.
  • Use Case 4: Subscribing to multiple tags in a script


To see the entire implementation please watch the following video


Limits and Thresholds

What are Limits and Thresholds?
Using Limits and Thresholds refers to the ability to define limit and threshold values within HMI Tags to represent warning and limit conditions.

These ranges help monitor the status of a tag value and are often used to visually indicate whether a process variable is within normal operating conditions or approaching critical thresholds.

drawing

In WinCC Comfort/Advanced:
Each HMI Tag can be configured with four range limits:

  • Upper 2 (maximum limit)
  • Upper 1 (warning before maximum)
  • Lower 1 (warning before minimum)
  • Lower 2 (minimum limit)

drawing

In WinCC Unified:
Starting with TIA Portal V21, the same four ranges are available.

drawing

Elements like the "IO-field", "Slider", "Trend Control" and similar can show the limits and thresholds with markers or highlight colors. This can be achieved using the new "Thresholds" property, which allows visual and behavior customization based on limits and thresholds reached by the process tag.

Starting with V21 Update 1, the values of limits can also be seen IO fields.

Additionally, "local tags" inside of faceplates can have limits and thresholds defined by constants.


To see the entire implementation please watch the following video


Text Lists


Working with Text Lists

What can text lists do?
Text lists can display both nested text lists and dynamic HMI tag values.

Nesting text lists within each other allows for dynamic display of information based on tags or parameters.

Control variables in text lists allow the display of process values of an HMI tag within a text list, thereby dynamically updating the value in real-time.

In WinCC Comfort/Advanced
In WinCC Comfort/Advanced, the integration of text lists and HMI tag values could be achieved through the options "Insert text list field..." and "Insert control tag field..." in the text list configuration.

drawing

drawing

In WinCC Unified
In Unified, the same functionality is achieved by using a parameter field:

  1. Right-click in the text of the text list entry.
  2. Select "Insert parameter field...".
  3. Assign the desired HMI tag to the parameter field.
  4. Configure the field format and confirm.

Note: Ensure that the Unified Runtime Firmware is at least V18.

drawing


To see the full implementations, please watch the following videos.

 

Faceplates


Text List in Faceplates

What is Text Lists in Faceplates?
In WinCC, Text Lists are collections of text entries linked to specific values (often from PLC tags). They let you display different text depending on tag values. They can also be used in Faceplates.

In WinCC Comfort/Advanced
Text Lists were created directly within the faceplate as part of its configuration.

drawing


In WinCC Unified
The Text Lists needs to be created in the project as a library type. Once created, it can be accessed directly from the faceplate.

drawing


To see the entire implementation please watch the following video


Graphic list in Faceplate

What is Graphic Lists in Faceplates?
In WinCC, Graphic Lists allow users to represent different states or values with graphics, providing an intuitive and visual way to monitor and interact with the system. They can also be used in Faceplates.

In WinCC Comfort/Advanced
Graphic Lists were created directly within the faceplate as part of its configuration.

drawing

In WinCC Unified
In WinCC Unified, this functionality is implemented by connecting faceplate interface to the general graphic lists defined at the project level.

  • A property interface in the faceplate with the data type "Resource List" must be created.
  • Connect this property to a symbolic IO field in the faceplate.
  • When you instance the faceplate, link the property to a project graphic list.


To see the entire implementation please watch the following video


Style of objects in faceplates

In WinCC Unified, By default, faceplates in engineering are always displayed using the Extended style, regardless of the style selected in the runtime settings. However, this only impacts the visual appearance within the engineering environment.

At runtime, the faceplate will adopt the style defined in the runtime settings, as expected. This variation in styling behavior may require some adaptation for users familiar with the Comfort Panel workflow, but it does not affect the actual functionality of the modernized project.

If you want to see the specific style in the engineering, you must manually configure the appearance of each object via its property settings

drawing


HMI Alarms


Loop In Alarm

What is LoopInAlarm
This function allows triggering specific actions (e.g., screen changes) when an alarm occurs and is selected. It helps operators navigate directly to the relevant process screen when an alarm is selected.

In WinCC Comfort/Advanced
AlarmViewLoopInAlarm system function is used to trigger the Loop-In-Alarm event for the selected alarm or for the last selected alarm in case of multiple selection

In WinCC Unified
This functionality is handled using the alarm control and JavaScript scripting. The "Selection Changed" event in the alarm control allows defining actions when an alarm is selected.

Code used in the video:

//get AlarmID of the selected alarm line 
let AlarmID = SelectedRowData.ID; 

//change screen depending on the AlarmID 
switch (AlarmID) { 
case 1: 
UI.SysFct.ChangeScreen("Screen_Alarm1", "."); 
break; 
case 2:  
UI.SysFct.ChangeScreen("Screen_Alarm2", "."); 
break; 
case 3: 
UI.SysFct.ChangeScreen("Screen_Alarm3", "."); 
break; 
    } 


To see the entire implementation please watch the following video


Trigger Tag Int in Alarms

What is Alarm Trigger tag?
An alarm trigger tag is a specific variable or tag used to initiate or trigger an alarm in WinCC.

In WinCC Comfort/Advanced
A Trigger Tag with the data type "Int" can be used for alarms

In WinCC Unified
The concept of trigger tags data types for discrete alarms has changed. The "Int" data type is no longer supported In WinCC Unified.

drawing

If you were using an "Int" variable to trigger a discrete alarm in Comfort or Advanced, you will need to adjust it to a supported data type in Unified. There are two methods to achieve it:

  1. Change the PLC Tag data type (if modifying PLC is possible)
  2. Use an HMI internal tag as an intermediate (if modifying PLC is not possible)


To see the entire implementation please watch the following video


React On Appearing Alarm/ Looping Alarm

What is React On Appearing Alarm

This functionality in WinCC allows the HMI system to detect and react to alarms as they appear, are acknowledged, or disappear. It is often used to trigger automatic responses, such as changing screens, activating functions, or logging data when specific alarms occur.

In WinCC Comfort/Advanced
Events could be configured directly on HMI Alarms.

drawing

In WinCC Unified
The alarm handling model has changed significantly. Now, actions can be triggered using several approaches:

  1. Using Scheduled Tasks:
    Create a scheduled task triggered by an alarm
  2. Using Global Script for Continuous Alarm Monitoring:
    Continuously monitor alarm states using the AlarmSubscription.

Code used in the video:

for (let alarmResult of alarmResultArray) {

//evaluate message trigger only for NotificationReason 1 = New message / NotificationReason 2 = changed message
if (alarmResult.NotificationReason === 1 || alarmResult.NotificationReason === 2) {

switch (alarmResult.ID) {

case 1:

if (alarmResult.ChangeReason === enumAlarmEvent.Incoming) {

//add functions to be triggered when alarm with ID 1 event is incoming
HMIRuntime.Trace('Alarm 1 Incoming');

} else if (alarmResult.ChangeReason === enumAlarmEvent.Outgoing) {

//add functions to be triggered when alarm with ID 1 event is outgoing
HMIRuntime.Trace('Alarm 1 outgoing');

} else if (alarmResult.ChangeReason === enumAlarmEvent.Acknowledge) {

//add functions to be triggered when alarm with ID 1 event is acknowledge
HMIRuntime.Trace('Alarm 1 Acknowledge');
}

break;

default:

//statements
break;
}
}
}


To see the entire implementation please watch the following video


Send emails from alarm

What is Alarm class – send E-Mail?
This functionality allows the HMI to send an automated email when a specific alarm is triggered. It is typically used to notify operators, maintenance personnel, or external systems in real time when critical conditions arise.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, this feature is natively supported. You can configure an SMTP server in the device settings and link a recipient email address directly to a specific alarm class. When an alarm belonging to that class is triggered, the system automatically sends an email.

In WinCC Unified:
WinCC Unified no longer includes a built-in system function to send emails from alarms. However, the same—and even more flexible—functionality can be achieved through scripting using a custom module, such as a SendMailModule. This approach allows you to configure email notifications based not only on alarm classes but also on specific alarm IDs or runtime conditions.

As shown in the video, this functionality is already demonstrated step by step. You don’t need to build it from scratch—the complete example is available in the HowTos library. Just remember to adapt the parameters to fit your specific needs.


To see the entire implementation please watch the following video


System Functions

This section is about system functions that where provided differently in comfort, than they are implemented now in the Unified system.

161323752331-d2e106


Clear Data Record

What is Clear Data Record

This functionallity is used to delete a recipe data record from the HMI device. This functionality allows users to manage stored parameter sets by removing specific records when they are no longer needed.

In WinCC Comfort/Advanced

The system function ClearDataRecord is used to delete an entire recipe data record directly from the HMI.

In WinCC Unified

The equivalent system function is DeleteParameterSet, which allows the deletion of a single parameter set at a time.


To see the entire implementation please watch the following video


Recipe View Synchronize Data Record

What is Syncrhonize Data Records with tags

This functionallity, synchronizes recipe data records with PLC tags to manage parameters effectively.

In WinCC Comfort/Advanced

The RecipeViewSynchronizeDataRecordWithTags system function is used to manage recipes by synchronizing parameter values between the HMI and the PLC.

In WinCC Unified
A new concept for recipe management replaces this function with two more flexible and specific system functions:

  1. LoadAndWriteParameterSet: Loads a parameter set from the HMI memory and writes the values to the PLC.
  2. ReadAndSaveParameterSet: Reads a parameter set from the PLC and saves it to the HMI memory.


To see the entire implementation please watch the following video


Show operator notes

What is Show Operator Notes

The Show Operator Notes functionallity in WinCC is used to display the tooltip configured for the selected screen object. This tooltip provides additional information or guidance for operators when interacting with an HMI element.

In WinCC Comfort/Advanced
The system function "ShowOperatorNotes" is used to display the tooltip configured for the selected screen object.

In WinCC Unified
The Show Operator Notes functionallity is achivede using scripts and a pop-up screen. By dynamically storing the tooltip text of a selected object and displaying it in a dedicated pop-up.

The following solution applies to Unified Panels.


To see the entire implementation please watch the following video


Notify User Action

What is Notify User Action
This functionallity is used to log user actions that are not automatically recorded in the Audit Trail.

In WinCC Comfort/Advanced
The NotifyUserAction system function is used to record user actions in the Audit Log.

In WinCC Unified
The InsertElectronicRecord system function is used to record user actions in the Audit Log that are not automatically logged in the Audit Trail. You can also use this system function to require the user to enter an acknowledgment or an electronic signature and a comment for the operator action. A requirement for the use of the system function is that the GMP-compliant configuration is activated under "Runtime settings > GMP".


To see the entire implementation please watch the following video


Get Group Number

What is Get Group Number
This functionallity in WinCC allows retrieving the group number of the currently logged-in user and writing it to a specified tag.

In WinCC Comfort/Advanced
User access was managed through User Groups. The GetGroupNumber system function is used to identify which group a logged-in user belonged to and stored this number in a tag, which could be used for access control, visibility conditions, or logic execution.

In WinCC Unified
The concept of User Groups has been replaced with Roles. Now, roles of the current user can be checked using built-in JavaScript snippets: To use this snippet, In a Script, do right-click > Snippets > HMI Runtime > User Management > .GetRolesFromUser(). This function allows retrieving and evaluating assigned roles of the current user dynamically.

Code used in the video

let listBox = Screen.FindItem("List box_1");
let roles = HMIRuntime.UserManagement.GetRolesFromUser();
if(roles.length>0){
  for(let i in roles){
    listBox.SelectionItems[i].Text = roles[i];
  }


To see the entire implementation please watch the following video


Activate System Diagnostics View

What is ActivateSystemDiagnosticsView?
The "ActivateSystemDiagnosticsView" system function in WinCC Comfort/Advanced allows users to open the system diagnostics view, which provides an overview of diagnostic messages from the PLC and connected devices.

How is it implemented in WinCC Comfort/Advanced?
The "ActivateSystemDiagnosticsView" system function in WinCC Comfort/Advanced allows users to open the system diagnostics view, which provides an overview of diagnostic messages from the PLC and connected devices.

How is it implemented in WinCC Unified?
In Unified, the "ChangeScreen" system function must be used to navigate to a pre-configured screen that contains the System Diagnostics View control.


To see the entire implementation please watch the following video


Close All Logs

What is CloseAllLogs functionallity
The CloseAllLogs system functionallity in WinCC is used to disconnect all logs in the system, allowing for safe data storage management and media replacement.

It ensures that logging operations can be temporarily paused while switching storage devices.

In WinCC Comfort/Advanced
Users can trigger CloseAllLogs system function to disconnect the connection between WinCC and all logging systems. This was commonly used when switching data storage media.

In WinCC Unified
The system function EjectStorageMedium must be used to safely disconnect an external storage device.

  • Before ejecting, the function verifies if a read/write process is in progress to prevent data loss.
  • Buffered process values are stored temporarily and written to the newly inserted storage medium.
  • Logging resumes automatically when a new medium is connected.


To see the entire implementation please watch the following video


Set Device Mode

What is "SetDeviceMode"?
In WinCC, this functionallity is used to control the operating mode of the HMI connections.

How is it implemented in WinCC Comfort/Advanced?
The SetDeviceMode system function is used to control the operating mode of the HMI device to all HMI connections.

  • Online Mode:
    Call the SetDeviceMode function, passing the parameter 0 to establish communication with all the connections.

  • Offline Mode:
    Call the SetDeviceMode function, passing the parameter 1 to disconnect the communication with all the connections.

How is it implemented in WinCC Unified?
The system function SetConnectionMode is used to control the operating mode for individual HMI connections:

  • Online Mode:
    Call the SetConnectionMode function, passing the parameter true and the name of the connection to establish communication.

  • Offline Mode:
    Call the SetConnectionMode function, passing the parameter false and the name of the connection to disconnect communication.


To see the entire implementation please watch the following video


Get User Name

What is Get User Name?
The GetUserName function in WinCC is used to retrieve the name of the user currently logged in.

How is it implemented in WinCC Comfort/Advanced?
The GetUserName system function is used to retrieve the current user.

How is it implemented in WinCC Unified?
In WinCC Unified, there is no need to use any system functions for this purpose.

The task can be accomplished by directly accessing the variable that stores the current user. This tag can be found under HMI Tags → System Tags → @UserName.

drawing


To see the entire implementation please watch the following video


Archive Log Files

What is Archive Log Files
This functionality enables the long-term archiving of log files by exporting them to a network drive for secure storage and analysis.

In WinCC Comfort/Advanced
This functionallity is directly implemented with the system fucntion ArchiveLogFile.

In WinCC Unified
This functionallity is implemented by:

  1. Connecting a network drive to the panel
  2. Using the copy.sh script to transfer the main database and log segment backups to the network drive

Code used in video:

let path = Tags("SegmentPath").Read(); 
try { 
    await HMIRuntime.Device.SysFct.StartProgram("/opt/siemens/App_Restriction/copy.sh",  
    "-s /media/simatic/X61/Test/" + path + " -d /net/mount/", 0, false, undefined); 
    HMIRuntime.Trace("Copy done!"); 

} 
catch (err) { }


To see the entire implementation please watch the following video


Acknowledge Alarm

What is "AcknowledgeAlarm"?
This functionallity allows users to acknowledge alarms directly from the HMI interface without the alarm control.

How is it implemented in WinCC Comfort/Advanced?

The system function AcknowledgeAlarm allowed operators to acknowledge individual alarms or all visible alarms.

How is it implemented in WinCC Unified?
Alarm acknowledgment is handled using the system function ExecuteToolBarButton, which interacts with the Alarm Control toolbar.

The available function parameters for acknowledgment are:

  • Single Acknowledgment → Acknowledges a selected alarm.
  • Acknowledge Visible Alarms → Acknowledges all currently displayed alarms in the control.


To see the entire implementation please watch the following video


Show System Diagnostics Window

What is Show System Diagnostics Window
This functionality displays system diagnostic information in runtime, helping users monitor and troubleshoot system issues effectively.

In WinCC Comfort/Advanced
The ShowSystemDiagnosticsWindow function is available to directly open the system diagnostics view. This function could be triggered via events like button clicks.

In WinCC Unified
The Show System Diagnostics Window functionality is achieved by:

  1. Creating a popup screen with a System Diagnostics Control.
  2. Using the OpenScreenInPopup system function to display the diagnostics popup, triggered by runtime events like button clicks.


To see the entire implementation please watch the following video


Encode Script

What is Encode functionallity

This functionallity converts a String data type from WinCC into an Array of Byte format for proper transmission to the automation system (AS).

This ensures that string values are correctly formatted before being processed in the AS.

In WinCC Comfort/Advanced
The system function Encode is directly available and used to convert a String tag into a byte array using UTF16LE encoding.

In WinCC Unified
The encode functionallity is achieved by the following script:

Code used in the video

let text = Tags("Encode_Input").Read();
let output = Tags("Encode_Output").Read();

for (let i = 0; i < text.length; i++)
{ 
output[2*i] = text.charCodeAt(i);
  output[2*i+1] = text.charCodeAt(i) >> 8;
} 

Tags.CreateTagSet([["Encode_Output[0]",output[0]],["Encode_Output[1]",output[1]],["Encode_Output[2]",output[2]],["Encode_Output[3]",output[3]],["Encode_Output[4]",output[4]],["Encode_Output[5]",output[5]],["Encode_Output[6]",output[6]],["Encode_Output[7]",output[7]],["Encode_Output[8]",output[8]],["Encode_Output[9]",output[9]],["Encode_Output[10]",output[10]],["Encode_Output[11]",output[11]],["Encode_Output[12]",output[12]],["Encode_Output[13]",output[13]],["Encode_Output[14]",output[14]],["Encode_Output[15]",output[15]]]).Write(); 


To see the entire implementation please watch the following video


Set data record to PLC

What is Set Data Record To PLC
This functionallity transfers recipe tag values from the HMI to the PLC. The recipe tags store the data record values displayed on the HMI.

In WinCC Comfort/Advanced
The SetDataRecordTagsToPLC system function is used to transfers recipe tag values from the HMI to the PLC.

In WinCC Unified
In Unified, this functionallity is achieved by using LoadAndWriteParameterSet System function. This function Loads a parameter set from the HMI memory and writes the values to the PLC.


To see the entire implementation please watch the following video


Export Import Users

What is User Administration Export/Import
User administration allows the export and import of user accounts to facilitate user management across different devices or systems.

In WinCC Comfort/Advanced
The ExportImportUserAdministration system function is used to export or import the users.

In WinCC Unified
There are two methods to export/import the user adminstration:

  1. From the Control Panel → Security, using the export/import buttons.
  2. Using the system functions "ExportUserAdministration" and "ImportUserAdministration" (Available from V20 UPD2)

NOTICE

It is only possible to import/export the user management when a user is logged in and has "User Management" rights.

These settings differ when using Central User Management with UMC. Export/Import Users while using UMC is explained at the end of the video.


To see the entire implementation please watch the following video


Export Logs

What is Export Logs
The automation system logs process data to make it available at a later time for statistics, process optimization, debugging or other use-cases. Exporting these logs from their source to other devices or software allows access to its data without directly accessing the logs from the runtime service.

In WinCC Comfort/Advanced
Logging is completely file-based. The original files created can be copied to another folder, like on an external drive, by manual operation or using a script.

In WinCC Unified
Logging is based on SQ-Lite database format. To extract the data from the database files into a basic text format, system functions can be used for each type of log. This includes:

  • Alarm logs
  • Tag logs
  • Audit trails


To see the entire implementation please watch the following video


Activate screen by number

What is Export Log?
This functionality allows you to navigate to a specific screen by its assigned screen number. It’s commonly used for dynamic screen navigation, especially in scenarios where screens are selected based on values or tags.

In WinCC Comfort/Advanced
A button or logic could call the system function ActivateScreenByNumber(ScreenNumber) to jump to a screen dynamically.

In WinCC Unified
The ChangeScreenByNumber(ScreenNumber, ScreenWindowPath) is used for jumping diamically to the specified screen

  • ScreenNumber: Set in the screen's properties.
  • ScreenWindowPath: (Optional) The path of the screen window where the change should occur. This is important in Unified because screen navigation is based on screen windows.


To see the entire implementation please watch the following video


Show alarm window

What is "ShowAlarmWindow"?
The ShowAlarmWindow functionality allows you to programmatically display or hide the alarm view on the HMI. It’s commonly used to give operators quick access to alarms on demand, improving situational awareness and responsiveness to process deviations or faults.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, this was achieved using the system function ShowAlarmWindow, which allowed direct control of an alarm view object by specifying its name and a display mode.

In WinCC Unified:
However, the same functionality can be achieved using a dedicated screen with an Alarm control and the OpenScreenInPopup system function.

To implement this, engineers must create a separate screen (e.g., "AlarmControl") that contains an Alarm control element with “Window settings” set to None. Then, a button or another screen object can be used to open this screen as a popup by calling OpenScreenInPopup.


To see the entire implementation please watch the following video


Open File Browser

What is it?
The OpenFileBrowser system function is used to open a file explorer interface directly on the HMI panel, allowing the operator to navigate folders and select files. It’s commonly used for importing/exporting data like recipes, logs, or configuration files.

How was it in WinCC Comfort/Advanced?
In WinCC Comfort/Advanced, this system function was readily available and easy to use. By calling OpenFileBrowser, users could browse the file system visually and interactively via the HMI, often in combination with import/export functions (e.g., ImportDataRecords, ExportDataRecords, etc.).

How is it in WinCC Unified?
In WinCC Unified, the OpenFileBrowser function is not available. Instead, a workaround is needed. Siemens offers a Toolbox on the official SIOS website that includes examples and custom solutions that simulate this functionality using UI elements, internal tags, and scripting.

Reference: WinCC Unified – Toolbox on SIOS: https://support.industry.siemens.com/cs/document/109770480/simatic-wincc-unified-toolbox?dti=0&lc=en-WW


To see the entire implementation please watch the following video


Change Screen next - previous

What is Go to Previous / Next Screen
It is a navigation function that allows users to go back to the previously opened screen or move forward to the next screen, similar to browser-style navigation. Useful for intuitive and sequential screen flows.

In WinCC Comfort/Advanced
Go to Previous Screen functionallity was implemented through the system function ActivatePreviousScreen.

In WinCC Unified
Two new system functions are introduced for going to Previous / Next Screen:

  • ActivateScreenPrevious([optional] string screenWindowPath)
  • ActivateScreenNext([optional] string screenWindowPath)

Because navigation now works with screen windows, it’s recommended (and sometimes required) to specify the screen window path where the screen is displayed.


To see the entire implementation please watch the following video


Get Data Record Name

What is Get Data Record Name
This functionallity in WinCC allows retrieving the name of a specific recipe and its corresponding data record based on given IDs.

This function writes the retrieved names into specified tags, which can then be displayed on the HMI.

In WinCC Comfort/Advanced
The GetDataRecordName system function is used to automatically fetch the recipe name and data record name based on user selection.

This function is typically assigned to a button or executed as part of a process.

In WinCC Unified
Simple Scripts must be used to fetch the recipe name and data record name.

There are two methods:

  1. Using a Parameter Set Control → Dynamically manages parameter sets, updating internal tags with the parameter set name and type, which can be displayed or hidden in IO fields.
  2. Using a .tsv file → A script reads a stored .tsv file containing the recipe information previously exported to fetch the parameter set name based on the selected ID, displaying it in the HMI.

Code used in the video

Option 1:

let CurrentPSID = Tags("parameterSetID"); 
CurrentPSID.Write(value); 
let tag1 = Tags("parameterSetTypeID"); 
let tagValue1 = tag1.Read(); 
HMIRuntime.Trace("value of MyTag1: " + tagValue1); 
let PSName, ProcessingStatus, CurrentLanguageID; 
CurrentLanguageID = 1033; 
HMIRuntime.ParameterSetTypes.SysFct.GetParameterSetName(HMIRuntime.Tags.SysFct.GetTagValue("parameterSetTypeID"), HMIRuntime.Tags.SysFct.GetTagValue("parameterSetID"), 1033, HMIRuntime.Tags.SysFct.CreateSetTagCommand("parameterSetName"), HMIRuntime.Tags.SysFct.CreateSetTagCommand("ProcessingStatus")); 
HMIRuntime.Trace("Trace Message PSName: "+PSName); 
HMIRuntime.Trace("Trace Message ProcessingStatus: "+ProcessingStatus); 


 -----------------------------------------------------------------------------------------

let CurrentPSTID = Tags("parameterSetTypeID"); 
CurrentPSTID.Write(value); 
var promise1 = ParameterSetTypes(HMIRuntime.Tags.SysFct.GetTagValue("parameterSetTypeID")).GetName(0); 
promise1.then((loggedAlarmStateArray) => 
{HMIRuntime.Tags.SysFct.CreateSetTagCommand("parameterSetTypeName").SetValue(loggedAlarmStateArray); 
}).cath((err)=>{}); 
Option 2:

// Export and rewrite the .tsv file  
try { 
await HMIRuntime.ParameterSetTypes.SysFct.ExportParameterSets(HMIRuntime.Tags.SysFct.GetTagValue("parameterSetTypeID"), HMIRuntime.Tags.SysFct.GetTagValue("parameterSetID"), "/home/industrial/Textexport.tsv", 1, false, undefined, false); 
} 

catch (err) { } 

let name; 
name = "Not found"; 
let text; 

// get the .tsv file from certain path 
try{ 

text = await HMIRuntime.FileSystem.ReadFile("/home/industrial/Textexport.tsv", "utf8"); 
let textLines; 
let textLine; 
textLines = text.split('\n'); 

for (let i = 0; i < textLines.length; i++) { 

        textLine = textLines[i].split('\t'); 
        if(textLine[0].toString() == Tags("parameterSetID").Read().toString()){ 
        name = textLine[1].toString(); 
        break;  
            } 
        } 
    } 

    catch (e) 
    { 
    HMIRuntime.Trace("Read failed with error: " + HMIRuntime.GetDetailedErrorDescription(e)); 
    } 

    Tags("parameterSetName").Write(name) 
    HMIRuntime.Trace(name); 


To see the entire implementation please watch the following video


Call external Application

What is Call External Applications
This functionality allows launching pre-installed applications on the HMI directly from runtime events, enabling extended capabilities like viewing files, sending emails, or browsing the web.

In WinCC Comfort/Advanced
It is possible to open the control panel sites using the system function StartProgram, specifying the application.

In WinCC Unified
The StartProgram system function is used aswell to launch pre-installed applications.

It requires the following parameters:

  • Program name: The script associated with the desired app.
  • Program parameters: Optional arguments, like the file path or specific commands

Available Applications and Scripts:

  • Doc Viewer: runLibreoffice.sh
  • E-Mail Client: runEvolution.sh
  • File Browser: runFileBrowser.sh
  • Media Player: runVLC.sh
  • PDF Viewer: runEvince.sh
  • Web Browser: runFirefox.sh


To see the entire implementation please watch the following video


Activate PLC code view

What is Activate PLC Code View
This functionallity is used to perform a screen change to a screen containing the PLC Code View control, displaying the program code related to a GRAPH sequence or alarm.

It is typically used to navigate from a GRAPH overview or from a selected alarm directly to the corresponding step in the PLC code.

In WinCC Comfort/Advanced
The ActivatePLCCodeView system function enables direct navigation to a GRAPH step or related code section when triggered from:

  1. The GRAPH overview via the "Click PLC code view button" event.
  2. A selected alarm in the Alarm View, automatically jumping to the faulty step or relevant supervision.

The system function opens a dedicated screen containing the PLC Code View, highlighting the appropriate section depending on the context. It supports jumps only from alarms triggered by GRAPH or ProDiag supervision.

In WinCC Unified
Two system functions are used depending on the scenario to show the PLC Code View:

  1. From GRAPH Overview:

    • Use OpenGRAPHViewerFromOverview
    • It updates the content of a PLC Code View on the same screen, without changing the screen itself.
    • If screen size is limited, a workaround allows toggling visibility using a Bool tag
  2. From Alarm View:

    • Use OpenPLCCodeViewFromAlarm
    • It opens the relevant code section based on the selected alarm in the same screen.
    • Also supports the visibility toggle workaround for larger display areas.


To see the entire implementation please watch the following video


Call Control Panel Sites

What is Call Control Panel Sites
This functionality allows users to access various control panel settings in runtime, providing a quick way to adjust device configurations directly from the HMI interface.

In WinCC Comfort/Advanced
It is possible to open the control panel sites using the system function StartProgram, specifying the site.

In WinCC Unified
The ShowControlPanel system function is used to open specific control panel sites during runtime. You can configure this function for events like button clicks and specify which applet to open using the Home page parameter.

Available Applets:

  • Panel Information: SystemProperties.PanelInformation
  • Display: SystemProperties.Display
  • Screensaver: SystemProperties.Screensaver
  • Reboot: SystemProperties.Reboot
  • Network Settings: NetworkandInternet.NetworkSettings
  • Date and Time: LanguageRegionAndFormats.DateAndTime
  • User Management: Security.UserManagement


To see the entire implementation please watch the following video


PLC Code View

What is PLC Code View functionallity
These system functions are used to navigate and control the PLC Code View control during runtime — for example, moving between networks, zooming, or toggling modes like step or interlock view.

In WinCC Comfort/Advanced
WinCC Comfort provided specific system functions for each action: PLCCodeViewNextNetwork, PLCCodeViewPreviousNetwork, PLCCodeViewZoomIn, PLCCodeViewZoomOut, PLCCodeViewTransitionInterlock, PLCCodeViewStepMode.

Each was called directly through the function list to control the PLC Code View object.

In WinCC Unified
All those actions are handled via the system function ExecuteToolbarButton, selecting the appropriate option in the PLC code view toolbar button property:

UnifiedComfort
NextPLCCodeViewNextNetwork
PreviousPLCCodeViewPreviousNetwork
ZoomInPLCCodeViewZoomIn
ZoomOutPLCCodeViewZoomOut
Toggle detail viewPLCCodeViewTransitionInterlock
Toggle GRAPH modePLCCodeViewStepMode

One example in Unified:

drawing


To see the entire implementation please watch the following video


Trend View Compress & Trend View Extend

What is TrendViewExpand/Compress functionallity
These functions allow users to compress or extend the time range displayed in a trend view, enabling better visualization of process data over different time scales.

In WinCC Comfort/Advanced
Users can use TrendViewCompress or TrendViewExtend system functions to increase or reduce the time period shown in the trend view.

In WinCC Unified
The time axis in Unified supports three different modes, we can edit these modes to adjust the range:

  • Time Interval: Uses "Time range - base" and "Time range - factor" to adjust the scale.
  • Start Time & End Time: Allows setting specific time ranges for display.
  • Measuring Points: Expands or reduces the number of data points shown.

By adjusting these settings, you can zoom in or out of your Trend View. In this video, we’ll show how to modify these parameters .

Additionally, we will demonstrate how you can script external actions to extend or compress the time range—without needing to change it directly on the control.

Code used in the video

Extend the view: 
let trendcontrol = "Trend control_1";// name of trend control on current screen 
let mode = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].RangeType;//reads current time range type 

if (mode == 0) {//time range: Time interval 
  let interval = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor;//reads the current number from the time interval in the trend control 

  if (interval <= 1){//checks if the time interval is to 1 or less 
    let unit = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase;//reads the current unit from the trend control 

    switch (unit) {//sets new unit when the unit is 1 or smaller 

      case 2: 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 1; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = 500; 
      break; 

      case 3: 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 2; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = 30; 
      break; 

      case 4: 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 3; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = 30; 
      break; 

      case 5: 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 4; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = 12; 
      break; 

      case 6: 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 5; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = 15; 
      break; 

      case 7: 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 6; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = 6; 
      break; 
     } 
  } 
  else { 
  Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = (interval * 0.5); 
  } 
}  
else if (mode == 1){//time range: start time and end time 
  let starttime = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].BeginTime;//reads the start time 
  let endtime = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].EndTime;//reads the end time 
  let range = endtime - starttime;//calculates time range 

  Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].BeginTime = new Date(starttime + (0.25 * range));//adds a quarter time range to the start time 
  Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].EndTime = new Date(endtime - (0.25 * range));//subtracts a quarter time range from the end time 
} 
else {//time range: measuring points 
  let pointcount = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].PointCount;//reads the measuring points 
  Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].PointCount = (pointcount * 0.5);// halve the measuring points 

Compress the view: 
let trendcontrol = "Trend control_name";//name of Trend control on current screen 

let mode = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].RangeType;//reads currnt time range type 

if (mode == 0) {//time range: Time interval 

  let interval = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor;// reads the current number from the time interval in the trend control 

  if (interval > 500){//doubling the time interval value would exceed the possible value of 1000 

    let unit = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase;//reads the current unit from the trend control 
    interval = interval * 2; 

    switch (unit) {//sets new unit when time interval exceeds 1000 (highest possible) 

      case 1: 

        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 2; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = (interval / 1000); 

      break; 

      case 2: 

        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 3; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = (interval / 60); 

      break; 

      case 3: 

        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 4; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = (interval / 60); 

      break; 

      case 4: 

        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 5; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = (interval / 24); 

      break; 

      case 5: 

        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 6; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = (interval / 30); 

      break; 

      case 6: 

        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeBase = 7; 
        Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = (interval / 12); 

      break; 
     } 
  } 

  else {//doubles new time interval 

  Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].TimeRangeFactor = (interval * 2); 

  } 
} 

else if (mode == 1){//time range: start time and end time 

  let starttime = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].BeginTime;//reads start time 
  let endtime = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].EndTime;//reads end time 
  let range = endtime - starttime;//calculates time range 

  Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].BeginTime = new Date(starttime - (0.5 * range));//subtracts the half range from the start time 
  Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].EndTime = new Date(endtime + (0.5 * range));//adds the half range to the end time 

} 


else {//time range: measuring points 

  let pointcount = Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].PointCount; //reads the measuring points 
  Screen.FindItem(trendcontrol).TrendAreas[0].BottomTimeAxes[0].PointCount = (pointcount * 2);//doubles the measuring points 

} 


To see the entire implementation please watch the following video


Trend View - System Functions

What are Trend View - System Functions
These system functions allow you to interact with the Trend View control to navigate through trend data, toggle modes (like Ruler or Start/Stop), and manage scrolling and playback of logged or real-time data.

In WinCC Comfort/Advanced

WinCC Comfort provided specific system functions for each action:

  • TrendViewBackToBeginning
  • TrendViewScrollBack
  • TrendViewScrollForward
  • TrendViewSetRulerMode
  • TrendViewStartStop

In WinCC Unified
All those actions are handled via the system function ExecuteToolbarButton, selecting the appropriate option in the trend

UnifiedComfort
First recordTrendViewBackToBeginning
Previous recordTrendViewScrollBack
Next recordTrendViewScrollForward
RulerTrendViewSetRulerMode
Start/stopTrendViewStartStop

Example:

drawing


To see the entire implementation please watch the following video


Confirmation at ImportdataRecord

What is Confirmation at Import Data Records
The Importing recipes functionallity enables importing parameter sets into the HMI while handling overwrites.

In WinCC Comfort/Advanced
The ImportDataRecords system function is used to import data records into the HMI while handling overwrites. In WinCC Comfort, users had three overwrite options:

  1. Overwrite existing records
  2. No overwrite existing records
  3. Overwrite after confirmation

In WinCC Unified
The equivalent function ImportParameterSets only provides two overwrite options:

  1. Overwrite existing parameter sets
  2. No overwrite existing parameter sets

The "After Confirmation" option is missing, but two alternative solutions exist:

  1. Using Parameter Set Control
  2. Using "ImportParameterSets" with a Custom Popup

Code used in the video

let filename = 'C:\\tmp\\export_PS.tsv'; // Defines the filename of the importfile
//Open PopUp for Confirmation
HMIRuntime.UI.SysFct.OpenScreenInPopup('Confirmation', 'PopUp_Confirmation', false, '', 300, 200, true, undefined);
let screenitem = Screen.FindItem('/Confirmation');
screenitem.WindowFlags = 0x47;
//Create a tag subscription to notice when the popup is closed
let subs = HMIRuntime.Tags.CreateSubscription(['TriggerTag'], async function (TagArray) {
for (let index in TagArray) {
if (TagArray[index].Value = 1){
subs.Stop();
HMIRuntime.Tags('TriggerTag').Write(0);
await HMIRuntime.ParameterSetTypes.SysFct.ImportParameterSets(filename, 0, HMIRuntime.Tags.SysFct.GetTagValue('Overwrite'), false, undefined, false);
}
}
});
subs.Start();


To see the entire implementation please watch the following video


Show PDF Files

What is Show PDF functionality?
This functionallity allows users to display and interact with PDF files in runtime, providing options for navigation, zoom, and layout adjustments.

In WinCC Comfort/Advanced
There is an specific control for showing PDF Files → PDF View.

drawing

In WinCC Unified

There are two ways to show the PDF files:

  1. Using the Web Control to display the PDF
  2. Using the system function "StartProgram" to open the PDF in the app "PDF Viewer"

For both options, it is posible to control the view of PDF file manually by gestures or standard functionality of the control/app without system functions


To see the entire implementation please watch the following video


Safely remove hardware

What is Safely Remove Hardware
This function ensures that an external storage device (e.g., USB drive) can be safely removed from an HMI without data loss by checking if any read or write operations are in progress.

In WinCC Comfort/Advanced
The system function SafelyRemoveHardware is used to check if a storage medium could be removed. It returned TRUE if it was safe to eject and FALSE if there are ongoing operations, triggering system alarms accordingly.

In WinCC Unified
There are two ways to safely remove hardware:

  1. Using the Control Panel (since V19)
    Navigate to Control Panel > External Devices and Inputs > Connected Devices > safely remove external storage.
  2. Using the System Function EjectStorageMedium


To see the entire implementation please watch the following video


GetPLCMode / SetPLCMode

What is Get PLC Mode and Set PLC Mode
The functionallity Get PLC Mode retrieves the current operating mode of a connected PLC, while Set PLC Mode allows changing the PLC mode from the HMI.

In WinCC Comfort/Advanced
The GetPLCMode system function can be used to read the PLC’s current state and stores it in a tag. The SetPLCMode system function sets the PLC mode by writing a predefined value to the PLC.

In WinCC Unified
Get PLC Mode and Set PLC Mode functionallity are achieved through system tags created with an HMI connection

drawing


To see the entire implementation please watch the following video


Clear Data Record Memory

What is Clear Data Record Memory functionallity?
The ClearDataRecordMemory functionality allows users to delete all recipe data records stored on a specific storage medium in the HMI device.

This is typically used during system maintenance, commissioning, or to reset stored production data, ensuring that outdated or unnecessary parameter sets do not interfere with current operations.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, the system function ClearDataRecordMemory was used to erase all recipe data records from a chosen storage medium, such as the internal flash memory or an external storage card.

In WinCC Unified:

In WinCC Unified, the system function “DeleteParameterSet” is used to delete a parameter set.

drawing

To delete all parameter sets at one time, you can use the script that combines with the function “DeleteParameterSet”. The following screen shot shows you an example:

drawing

“i” in the script is a variable for parameter set type number and “j” in the script is a variable for parameter set number. The limit numbers can be defined by yourself. (In this example, “5” is the limit number for parameter set type and “10” is the limit number for parameter set.)


RecipeView - System functions

What are the RecipeView system functions?
RecipeView system functions allow HMI users to interact programmatically with recipe data without depending on the visual “Recipe View” control. These functions include creating, saving, renaming, deleting recipe data records, and transferring them to or from the PLC.

In WinCC Comfort/Advanced:
WinCC Comfort provided a dedicated set of system functions—such as RecipeViewSaveDataRecord, RecipeViewNewDataRecord, and RecipeViewSetDataRecordToPLC—that allowed direct interaction with recipe data. These functions could be triggered through custom buttons or scripts, offering developers the possibility to control the Recipe View behavior externally. This approach enabled recipe handling without displaying the full control on screen, supporting customized operator interfaces.

In WinCC Unified:
In WinCC Unified, this functionality is streamlined via the system function ExecuteToolbarButton, which replaces all the previous Comfort recipe functions using specific parameters (e.g., “Save”, “Write to PLC”, “Rename”). This method allows full recipe control through external UI elements, without the need to use the buttons on the ParameterSet control itself. As a result, developers can design a fully personalized and simplified recipe management interface, tailored to the needs of the operator or the application, while maintaining full backend functionality.

Following you can find how to configure this system function:

drawing

The property “Parameter set control function bar button” allows to execute the following functions:

WinCC Comfort SystemfunctionWinCC Unified Systemfunction with Property
RecipeViewNewDataRecord         ExecuteToolbarButton – Create                   
RecipeViewSaveDataRecord        ExecuteToolbarButton – Save                     
RecipeViewSaveAsDataRecord      ExecuteToolbarButton – Save as                  
RecipeViewRenameDataRecord      ExecuteToolbarButton – Rename                   
RecipeViewSetDataRecordToPLC    ExecuteToolbarButton – Write to PLC             
RecipeViewGetDataRecordFromPLC  ExecuteToolbarButton – Read to PLC              
RecipeViewClearDataRecord       ExecuteToolbarButton – Delete                   


To see the entire implementation please watch the following video


Parameter set control

What are Parameter Set Control - System Functions
These system functions are used to transfer values between:

  • Recipes / data records
  • Internal HMI tags
  • PLC tags They allow actions such as loading/saving recipes, writing values to the PLC, or reading values from the PLC.

In WinCC Comfort/Advanced
System functions controlled the flow between recipe data and PLC/HMI:

  • LoadDataRecord: Load recipe into HMI tags
  • SaveDataRecord: Save HMI tag values into a recipe
  • SetDataRecordTagsToPLC: Write HMI tag values to PLC
  • GetDataRecordTagsFromPLC: Read PLC values into HMI tags
  • SetDataRecordToPLC: Load a recipe and write to PLC
  • GetDataRecordFromPLC: Read from PLC and save as recipe

In WinCC Unified

  • When the Parameter Set Types are linked to a PLC UDT, values are synchronized automatically between the HMI tag and the PLC.
  • You can assign an Edit Tag (session-local) for runtime editing, enabling temporary user-specific modifications without affecting global values.
Unified                    Comfort                  
LoadParameterSet              LoadDataRecord               
SaveParameterSet              SaveDataRecord               
WriteParameterSet             SetDataRecordTagsToPLC       
ReadParameterSet              GetDataRecordTagsFromPLC     
LoadAndWriteParameterSet      SetDataRecordToPLC           
ReadAndSaveParameterSet       GetDataRecordFromPLC         

Alarm View - System functions

What are the AlarmView system functions?
AlarmView system functions allow HMI users to acknowledge alarms or update the alarm display programmatically, without using the built-in toolbar of the Alarm Control.

In WinCC Comfort/Advanced:
Alarm-related system functions such as AlarmViewAcknowledgeAlarm and AlarmViewUpdate allowed external buttons or scripts to control the alarm interface.

In WinCC Unified:
The system function ExecuteToolbarButton replaces the previous Comfort alarm functions. For example:

  • To acknowledge alarms externally, use ExecuteToolbarButton – Single Acknowledgement or ExecuteToolbarButton – Acknowledge visible alarms.
    drawing
  • To update the alarm list, use ExecuteToolbarButton – Show and update logged alarms.
    drawing

These toolbar actions can be triggered from any UI element (like buttons or events), allowing alarm operations to be fully integrated into customized screens, without showing the default toolbar from the alarm control.


System Diagnostic - System functions

What are the SystemDiagnosticView system functions?
SystemDiagnosticView system functions allow HMI users to control the System Diagnostics View control programmatically, without interacting with its visual interface directly. These functions include navigating back, switching between views (device, detail), showing the diagnostic buffer, or reloading PLC diagnostic data.

In WinCC Comfort/Advanced:
WinCC Comfort provided a dedicated set of system functions—such as SystemDiagnosticViewBack, SystemDiagnosticViewDetailView, and SystemDiagnosticViewDiagnosticBuffer—that enabled developers to control the system diagnostics interface via buttons or scripts. This allowed full interaction with the diagnostics data, while providing flexibility to create customized user interfaces without depending on the full graphical control.

In WinCC Unified:
This functionality is centralized through the system function ExecuteToolbarButton, which replaces all the previous Comfort diagnostic view functions by using specific parameters (e.g., “Back”, “Split view”, “Show diagnostic buffer”).

drawing drawing

Following you can find how to configure this system function: The property “System diagnostic control toolbar button” allows to execute the following functions:

drawing

WinCC Comfort Systemfunktion      WinCC Unified Systemfunktion mit Eigenschaft
SystemDiagnosticViewBack              ExecuteToolbarButton – Back                     
SystemDiagnosticViewDetailView        ExecuteToolbarButton – Split view               
SystemDiagnosticViewDeviceView        ExecuteToolbarButton – Home                     
SystemDiagnosticViewDiagnosticBuffer  ExecuteToolbarButton – Show diagnostic buffer   
SystemDiagnosticViewUpdatePlcBuffer   ExecuteToolbarButton – Reload                   

Set Recipe Tags

What is Set Recipe Tags?
The SetRecipeTags system function is used to directly load changed values of the recipe into the associated HMI tags, or separate the recipe changes from the associated HMI tag.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, the system function SetRecipeTags could be used in two modes: Offline, where values were loaded into the HMI but not immediately written to the PLC, and Online, where values were applied directly to both HMI and PLC tags.

In WinCC Unified:
The “SetRecipeTags” system function can be replaced with the two system functions “LoadParameterSet” and “LoadAndWriteParameterSet” in WinCC Unified.

The “LoadParameterSet” system function has the same effect as the “SetRecipeTags” system function with “Offline” configuration. https://support.industry.siemens.com/cs/ww/en/view/109828368/172901922571

The “LoadAndWriteParameterSet” system function has the same functionality as the “SetRecipeTags” system function with “Online” configuration. https://support.industry.siemens.com/cs/ww/en/view/109828368/160646989451

To use the system functions, it is necessary to have an edit tag inserted in the parameter set type. Detailed information about the edit tag can be found in the following manual: https://support.industry.siemens.com/cs/ww/en/view/109828368/160855886091

NOTICE

This workaround has the following limitation:
An HMI-UDT must be used for the edit tag. Therefore, the PLC-UDT structure used for the recipe must match the HMI-UDT structure. However, not all data types for PLC-UDTs are supported in the HMI-UDT structure. This limits the functionality of this workaround.

drawing


Send Email

What is Send Email?
The Send Email functionality allows an HMI to send automated emails to predefined recipients. This is typically used to notify service personnel or operators of alarms, process events, or other system statuses in real time, even if they are not present at the HMI device.

In WinCC Comfort/Advanced:
The system function SendEMail(Address, Subject, Text, Return_address) provides built-in support for email notifications directly from the HMI. It requires an email client to be configured on the device and allows users to define the recipient, subject, body text, and return address.

In WinCC Unified:
To achieve similar functionality, Siemens offers an Industrial Edge App called "SendEmail", which must be deployed and configured separately on the Unified Comfort Panel.

Additional information can be found at the following Siemens support page: https://support.industry.siemens.com/cs/ww/de/view/109778780


Linear Scaling and Inverse Linear Scaling

What are "LinearScaling" and "InverseLinearScaling"?
LinearScaling and InverseLinearScaling are mathematical functions used to convert tag values based on a linear relationship.

  • LinearScaling computes Y = a·X + b, transforming an input tag X into a scaled output tag Y.
  • InverseLinearScaling reverses the operation with X = (Y - b) / a, recovering the original input.

These functions are useful for unit conversions, normalization of sensor values, or adapting control ranges between systems.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, both functions are available as system functions.

  • LinearScaling (Y, a, X, b) directly assigns to tag Y the result of scaling tag X.
  • InverseLinearScaling (X, Y, b, a) assigns to tag X the result of inverting the scaling based on tag Y.

Tags X and Y must be different; if you want to overwrite the original tag, you must first copy it into an auxiliary tag using the SetTag function. These system functions are simple to use and highly effective for real-time linear conversions without manual scripting.

In WinCC Unified:
In WinCC Unified, these functions are no longer available as predefined system functions. Instead, they are implemented through JavaScript snippets in the scripting editor. You can insert them quickly by right-clicking in the script and navigating to:

Snippets → HMI Runtime → Tag → Linear Scaling / Inverse Linear Scaling.

drawing drawing drawing


Simulate Tag

What is "Simulate Tag"?
The SimulateTag functionality is used to generate dynamic values for HMI tags during runtime. It is especially useful for testing, training, or demonstrating the behavior of a project without the need for a connected PLC. Simulated values typically follow a pattern defined by parameters such as range and step size.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, the system function SimulateTag provided built-in support for tag simulation. It was possible to simulate the value of a tag within a specified range, making it easy to validate screen logic, animations, or alarm behavior without any external data source.

In WinCC Unified:
System function – SimulateTag The system function " SimulateTag " is in WinCC Unified not available. To replicate its functionality, the following steps must be taken:

  1. Create a global function that includes the following script:

    export function Simulate_Tag(Tag, MaxValue, MinValue, Value) { 
    let simValue; 
    let TagValue = HMIRuntime.Tags(Tag).Read(); 
    simValue = TagValue + Value; 
    if (simValue > MaxValue) 
    { 
      simValue = MinValue; 
    } 
    else 
    { 
      if (simValue < MinValue) 
      { 
      simValue = MaxValue; 
      } 
    } 
    HMIRuntime.Tags(Tag).Write(simValue); 
    } 
    

    drawing
    2. Create a Scheduled task with a trigger you need and insert in Events the global Script that was created before.
    drawing

    Variable
    Refers to the tag whose value is being altered during the simulation process.
    MaxValue
    This represents the upper limit that the tag can attain during simulation. The maximum value must be greater than the minimum value set.
    MinValue
    This represents the lower limit that the tag can attain during simulation. The minimum value must be lower than the maximum value set.
    Value
    This denotes the value by which the tag value is modified at each occurrence of the trigger specified in the scheduled task.

    • A positive value results in an increase in the tag value. Once the maximum value is attained, the tag value will be set to the minimum value after the next update trigger.
    • A negative value results in a decrease in the tag value. Once the minimum value is attained, the tag value will be set to the maximum value after the next update trigger.

Clear Alarm Buffer

What is "Clear alarm buffer"?
The Clear alarm buffer functionality allows the deletion of alarms from the internal buffer on the HMI device. This includes both acknowledged and unacknowledged alarms.

It can be useful to reset the alarm history for specific alarm classes or to ensure that old data does not interfere with new diagnostics during commissioning or maintenance.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, alarms were temporarily stored in a local alarm buffer on the HMI device. The system function ClearAlarmBuffer was used to delete alarms from this buffer.

In WinCC Unified:
The concept of alarm logging is different from WinCC Comfort. The alarms are written directly to an alarm log and stored on a separate storage medium. There is no alarm buffer as in Comfort. If alarm logging is stopped, no alarms are stored in the background. The “ClearAlarmLog” system function can be used to delete all recordings from the specified alarm log.

drawing


Calibrate touch screen

What is Calibrate Touch Screen?
Touch screen calibration is a process used to align the input detection of the screen with the actual touch points to ensure accurate interaction on HMI devices.

In WinCC Comfort/Advanced:
In WinCC Comfort, users had to manually trigger calibration using the system function CalibrateTouchScreen.

  • It required the user to touch five positions on the screen.
  • If calibration wasn’t completed within 30 seconds, changes were discarded.
  • The function was especially useful after first startup or if touch accuracy degraded.
  • This system function could be called from a button or script.

In WinCC Unified:
In WinCC Unified, manual calibration is no longer needed. The panel automatically calibrates the touch screen during the boot process, ensuring optimal accuracy without user interaction.


Set Bit While Key Pressed

What is "SetBitWhileKeyPressed"?
The SetBitWhileKeyPressed functionality allows a bit (typically a tag linked to a PLC input) to be set to TRUE as long as a button is physically pressed, and reset to FALSE once the button is released.

In WinCC Comfort/Advanced:
WinCC Comfort/Advanced supports this functionality natively via the system function SetBitWhileKeyPressed. It ensures that a bit remains TRUE only while the user keeps the button pressed and automatically resets it upon release, regardless of other actions like screen changes.

In WinCC Unified:
WinCC Unified doesn't support yet a system function to set a bit while a key is pressed. While it is possible to configure a similar behavior for software buttons using the "Press" and "Release" events, it is recommended using a SIMATIC Key Panel KP8 PN LX. This key panel enables the use of hard keys through Profinet communication.

drawing

Further information about the SIMATIC Key Panel KP8 PN LX can be found at the Siemens Industry Online Support: https://support.industry.siemens.com/cs/ww/en/view/109806367

Using "Press" and "Release" Events? There are several issues which arise if software buttons with "Press" and "Release" events are used.

  • Process values are not sent via real time communication.
  • If there is a screen change during the pressing process, WinCC Unified may not detect that the button has been released, resulting in the release event never happening.
  • If the time between "Press" and "Release" is shorter than the update time of the HMI tag the "false" value may not be recognized by the HMI Tag and will not be sent to the PLC.

The behavior of the release event is described in the manual: https://support.industry.siemens.com/cs/ww/en/view/109828368/172517313803

Set Daylight Saving Time

What is "SetDaylightSavingTime"?
The SetDaylightSavingTime functionality is used to manually control the activation or deactivation of daylight saving time (DST) on an HMI device. This impacts how the system clock adjusts during seasonal time changes, ensuring that displayed and logged times remain accurate according to local time standards.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, the system function SetDaylightSavingTime allowed developers to programmatically enable or disable daylight saving time on the HMI.

In WinCC Unified:
The handling of daylight saving time has been simplified and automated. The system no longer requires a dedicated system function. Instead, DST behavior is managed automatically based on the selected time zone. When a time zone with DST is configured in the device’s control panel (under Language, Region and Formats > Date and time), the HMI will automatically switch between standard and daylight saving time on the appropriate dates.

drawing


HTML Browser System Functions

The known system functions “HTMLBrowserPageUp”,” HTMLBrowserPageDown”,” HTMLBrowserScrollUp”,” HTMLBrowserScrollDown”,” HTMLBrowserScrollLeft”,” HTMLBrowserScrollRight”, “HTMLBrowserZoomIn”, “HTMLBrowserZoomOut” from WinCC Comfort needs to be handled in a different way in WinCC Unified. By using the “web control” of WinCC Unified you can use gestures inside of the control to achieve nearly the same functionality.

drawing

This means for the scrolling system functions (“scroll up”, “scroll down”, “scroll left” and “scroll right”) you can use the scrollbar inside of the web control. For “page up” and “page down” you need to use the scrollbar as well.

drawing

For the zooming system functions you can use the gestures to zoom in or zoom out


HTML Browser Home and Refresh

The WinCC Comfort system functions "HTMLBrowserHome, HTMLBrowserRefresh " to control the “HTML browser” control can be replaced by the WinCC Unified system functions “ExecuteToolbarButton”. Following you can find how to configure this system function (if you want to use it for any object to execute):

drawing

The property “Web control toolbar button” allows to execute the following functions:

WinCC Comfort system functionWinCC Unified system function with property
HTMLBrowserHomeExecuteToolbarButton – Home
HTMLBrowserRefreshExecuteToolbarButton – Reload

Open All Logs

What is Open All Logs?
The Open All Logs functionality is used to re-establish the connection between the HMI and its data logs during runtime. This allows logging activities—such as alarm, tag, or audit logging—to resume after being previously stopped or after switching storage media. It’s commonly used when managing or maintaining storage devices in an HMI system.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, the system function OpenAllLogs was used to reopen all data logs after they had been closed, typically in combination with StopLogging and CloseAllLogs.

This allowed operators to stop logging, safely change the data medium (e.g., SD card), and then resume logging without restarting the HMI.

In WinCC Unified:
WinCC Unified has a different concept for logging than WinCC Comfort. Therefore, the system function is no longer required. The logging service will be automatically started at the runtime start.

Logging can be started and stopped using various system functions. In WinCC Comfort/Advanced there were only “StartLogging” and “StopLogging”.

In WinCC Unified, the following system functions are available for the different types of logs:

  • “StartAlarmLog” & “StopAlarmLog”
  • “StartAuditLog” & “StopAuditLog”
  • “StartTagLog” & “StopTagLog”

Open Internet Explorer

What is Open Internet Explorer?
The Open Internet Explorer functionality allows the HMI device to launch a web browser directly from the operator interface.

This can be useful for accessing web-based documentation, intranet applications, or online tools during machine operation or maintenance. It enhances the operator's ability to access external resources directly from the HMI panel.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, the system function OpenInternetExplorer was used to launch Internet Explorer on the HMI device. A specific start page URL could be defined as a parameter, such as “www.siemens.com”.

In WinCC Unified:

In WinCC Unified there is no system function "OpenInternetExplorer". The functionality can be realized by using the system function “StartProgram”.

drawing

Adding this system function to an event of an element (e.g. a button) and setting following parameter in ”Program name” will open the preinstalled Firefox browser on the Unified Panel:

“/opt/siemens/App_Restriction/runFirefox.sh”


Show System Alarm

What is Show System Alarm?
The Show System Alarm functionality is used to display a custom system alarm or message on the HMI device. It allows developers to generate runtime alerts based on certain conditions or user-defined events, helping operators receive immediate feedback or warnings directly through the system alarm interface.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, the system function ShowSystemAlarm was used to output a text or numerical value as a system alarm on the HMI. This alarm appeared in the configured alarm view, giving clear visibility to important runtime messages triggered by scripts or user-defined logic.

In WinCC Unified:

The equivalent functionality of Show System Alarm is provided through the CreateSystemAlarm system function. While similar in purpose, Unified’s implementation is part of a more advanced and structured alarm management system.


Print Report

What is the PrintReport system function?
The PrintReport system function allows the HMI to generate and print predefined reports, either automatically or on user request. This feature is especially useful for logging alarms, process values, or audit trails in physical or digital formats. The report is generated using the HMI's current runtime language and sent to a connected printer or saved locally.

In WinCC Comfort/Advanced:
In WinCC Comfort, the system function PrintReport(Report) was used to print a specified report via a printer connected to the HMI.

In WinCC Unified:
In WinCC Unified, the reporting mechanism has been redesigned and is now based on Excel templates managed through the Reports control. Instead of PrintReport, you use ExecuteReport to trigger a predefined report job, which can save the report as a PDF or XLSX file.

Then, to print the report:

  • On PC Runtime, you can use StartProgram to launch external tools like PDFtoPrinter.exe.
  • On Comfort Panels, you can launch LibreOffice via StartProgram to print .xlsx files (PDFs not supported). Additionally, if your printer supports email printing, you can use the report's Send Email functionality to send the report as an attachment directly to the printer.

For cyclic reports, Unified allows you to define recurrence triggers in the Reports control, or schedule printing via a combination of ExecuteReport and StartProgram inside a Scheduled Task.

Use case mapping:

Comfort Functionality    Unified Replacement                                                                
Save as PDF                 Configure Report Job → Target: Save as PDF                                             
PrintReport (print directly)ExecuteReport + StartProgram (LibreOffice (Panel) or PDFtoPrinter (PC))                
Send report by email        Report Job → Add SMTP target (to printer if email-supported)                           
Print report cyclically     Scheduled Task + ExecuteReport + StartProgram                                          

In this video, we’ll demonstrate how to generate, print, and automatically execute report jobs — assuming they are already configured.

To learn how to create and configure report templates, visit the Tutorial Center via the following link: MMVS V4 - Reporting

The following video explains how to send a report via email. Remember: if your printer supports email printing, you can use this method to print reports directly from Unified. Send Report By Email


To see the entire implementation please watch the following video


Send Report by Email

To see how to send a report by email Watch the following video:


Set acoustic signal

What is "Set Acoustic Signal"?
The Set Acoustic Signal functionality provides audible feedback on HMI devices, typically used to signal touch events, alarms, or operator actions.

In WinCC Comfort/Advanced:
In WinCC Comfort/Advanced, the system function SetAcousticSignal is used to configure the acoustic feedback on the HMI device.

In WinCC Unified:
In WinCC Unified you can realize an acoustic signal by using the system function “StartProgram” to play an audio file in the media player in the background. Following you can find an example about triggering the acoustic signal if a special alarm appears.

  1. Create a discrete alarm with the “Alarm text” – “I am Alarm”.
    drawing
  2. Add a “text box” to the screen and dynamize the property ”Text” with “Script”. Then add the following script.
    drawing
    In the script you need to adapt the audio file path together with the file name and the audio device name related to your used WinCC Unified device.
    drawing
  3. Set the “Trigger” for the script as the same Tag with the trigger tag of the created discrete alarm.
    drawing

The following script is for you to copy:

//Be aware GetActiveAlarms is asynchronous function! 
//Define which alarms should be received with Filter via GetActiveAlarms 
const FilterAll =""; 

//Getall active alarms and save return value (array) into ActiveAlarms object 
 HMIRuntime.Alarming.GetActiveAlarms(HMIRuntime.Language, FilterAll).then ( 
  function(ActiveAlarms) { 
//Overwrite Alarm settings into text box 
item.Text = ActiveAlarms[ActiveAlarms.length-1].EventText; 

//Save stae text to evaluate as trigger for sound output 
let stateText = ActiveAlarms[ActiveAlarms.length-1].StateText; 
Screen.Items("Text box_2").Text = ActiveAlarms[ActiveAlarms.length-1].StateText; 

//If alarm is active for the first time trigger output 
if (item.Text == "I am Alarm" && stateText == "Incoming" && counter == 0) { 
  let fileNameVLC = "/media/simatic/X61/SoundJonas.wav"; 
  let addParameterVLC = "-Idummy --audio  --alsa-audio-device=default:CARD=Seri --play-and-exit"; 
  let parameterHandover = fileNameVLC + " " + addParameterVLC; 
  try { 
      HMIRuntime.Device.SysFct.StartProgram("/opt/siemens/App_Restriction/runVLC.sh", parameterHandover, 0, false, undefined); 
  } 
  catch (err) {  
    HMIRuntime.Trace(err); 
  } 
  counter = 1; 
//Reset counter if alarm is unequal to incoming 
} else if(item.Text == "I am Alarm" && stateText != "Incoming" && counter == 1) { 
  counter = 0; 
} 

  })   
  .catch(function(ErrorCode) { 
//If no element is available in GetActiveAlarm array set text box to default values 
//Other values are missing here and could be added 
  item.Text =""; 
}); 

PDF System Functions

In WinCC Unified, system functions for controlling PDF visualization can be implemented directly within the PDF view.

The screenshot below shows examples of existing UI functions available in the Web Control, along with their corresponding system functions:

  • Navigation functions such as:
    PDFGotoFirstPage; PDFGotoLastPage; PDFGotoPage; PDFGotoPreviousPage; PDFGotoNextPage
  • Fit functions like:
    PDFFitToWidth; PDFFitToHeight
  • Zoom controls including:
    PDFZoomIn; PDFZoomOut
  • Scrolling options such as:
    PDFScrollUp; PDFScrollDown; PDFScrollLeft; PDFScrollRight

These functions can be mapped to UI controls, enabling users to interact intuitively with PDF documents during runtime.

In the following link you can learn how to display a PDF in WinCC Unified: Show PDF Files • WinCC Unified Modernization • Reader • TIA Portal Information System


Print Screen

In WinCC Unified, the system function “CreateScreenshot” is used to take a screenshot of the current screen and save it as a local file. However, the saved file cannot be directly viewed on the panel or directly printed with a printer, that is connected to the panel. sysFct_printscreen.png

drawing

To print the saved file, you need to save the files on a USB stick or a SD card. Then plug the USB stick or SD card into your computer or printer and print.


EncodeEx

What is Encodex functionallity

EncodeEx is a function used to convert a String tag into an Array of Byte so that it can be transferred to the Automation System (AS). This conversion is necessary because WinCC strings must be encoded into a format compatible with the PLC, typically UTF16LE. Unlike the standard Encode function, EncodeEx provides additional flexibility by allowing you to manage line breaks in the string. You can either:

  • Keep them as-is,
  • Replace them with specific characters (e.g. \r\n),
  • Or remove them completely.

In WinCC Comfort/Advanced
You can use EncodeEx:

  • Directly from the Function List,
  • Inside user-defined functions (if supported by the device).

Syntax:
EncodeEx(ByteArray, String, Encoding, LineBreak)

Parameters:

  • ByteArray: The destination tag (must be at least 2 × string length + 2).
  • String: The source tag (WinCC String type).
  • Encoding: Usually 0 for UTF16LE.
  • LineBreak:
    • 0: Replace line break with \r\n (0x0D, 0x0A)
    • 1: Replace with \n (0x0A)
    • 2: Keep as-is
    • 3: Remove line breaks

In WinCC Unified

EncodeEx is not natively available in Unified as a system function. Therefore, it must be recreated using a JavaScript workaround in a script. Here's how it's done:

drawing

export function Task_Task_1_Update(triggerDataSet) { 

let tag1 = Tags("String"); 
let strValue = tag1.Read(); 
HMIRuntime.Trace("value of MyTag1: " + strValue); 
let tag2 = Tags("input2"); 
let lineBreakHandling = tag1.Read(); 
HMIRuntime.Trace("value of MyTag2: " + lineBreakHandling); 
try  
  { 
//statements 
var str = strValue; 

switch (lineBreakHandling) { 
case 0: 
  //(replace with "\r\n' (0x000D, 0x000A)) - the line break is replaced with "\r\n". 
let index = str.IndexOf('\n'); 
str = str.subString(0,index-1)+str.subString(index); 
  break; 

case 1: 
  //(remove line breaks) - the line breaks are removed. 
str = str.replaceAll('\n',''); 
  break; 

default: 
  // Line breaks stay as \n (0x000A) 
  //Cases 1 (don’t edit ‘\n’) and 2 (replace ‘\n’ with ‘\n’) are the same and do not affect javascript strings 
  break; 
} 
//The following function two for loops are for the convertion of characters in the string into bytes in the PLC array 
function s(x){return x.charCodeAt(0);} 
var arr = str.split('').map(s); 
let names = []; 
for(let i = 0; i < 510; i++)  
  names.push("Data_block_1_test_1[" + i + "]"); 
let ts = Tags.CreateTagSet(names); 

for(let i = 0; i < 510; i++) 
{ 
if(arr.length-1<i) 
  ts(names[i]).Value = 0; 
else 
  ts(names[i]).Value = arr[i]; 
} 
ts.Write(); 
  } 
catch (ex)  
  { 
HMIRuntime.Trace("Error Code: " + ex + " --> Message: " + ex.Message); 
  } 
} 

Necessary tags for this function:

Needed tag                 Data type      Additional comments                                                                Tag names from the example above
Trigger tag for script    Bool          Tag that triggers the script    
String                    WString       Tag that contains the string “String”                                              “String”                        
Line break handling tag   Int, UInt     0: Replaces the line break with “\r\n”
1: Removes the linebreak
Every other value: Does not affect the string
“input2”                        
Array of byte (from PLC)Array of Byte“Data_block_1_test_1”           

Copy log

What is Analyze Long-Term Logging Data in Runtime?
Analyzing long-term logging data means retrieving and visualizing this archived information after it has been backed up from the active log database.

In WinCC Comfort/Advanced:
Analyzing historical archive data required using the CopyLog function to copy a log segment into a dummy log, which was then linked to a control (e.g., Trend View) in the HMI Runtime.

In WinCC Unified:
Starting with WinCC Unified V20 Update 3, this process is greatly simplified using new system functions: RestoreLog, RestoreAlarmLog, RestoreAuditLog. These functions restore specific backup log segments (for tag logs, alarm logs, or audit logs). The restored data becomes available in the runtime controls: Trend Control, Alarm Control, or Audit Viewer.

A corresponding UnrestoreLog function allows releasing the segment again.


To see the entire implementation please watch the following video


Scheduled Task


React on RT Stop

What is React on Runtime Stop
React on Runtime Stop in WinCC is a feature that allows you to define specific actions or scripts to execute when the runtime is stopped

In WinCC Comfort/Advanced
The Runtime Stop can be the trigger for scheduled task for executing a specific function

drawing

In WinCC Unified
There are new ways to trigger an event when Runtime stops:

  1. Scheduled Task triggered by the incoming system alarm 536870914
  2. Scheduled Task monitoring the system tag: @SystemActivationState
  3. I/O Field for the system tag @SystemActivationState, with actions defined for changes in its “Process Value”


To see the entire implementation please watch the following video


React on user change

What is React on User Change
React on User Change in WinCC is a feature that allows you to execute specific actions or scripts when the user changes in the device

In WinCC Comfort/Advanced
The User Change can be the trigger for scheduled task for executing a specific function

drawing

In WinCC Unified
In WinCC Unified, there is no direct User Change trigger available for Scheduled Tasks, and the @UserName system tag cannot be used as a trigger because it is a local system variable. In WinCC Unified, there’s a new way to trigger 'Scheduled Tasks' on user changes:

By writing the value of the @UserName system tag to an internal HMI tag whenever the user changes, this internal tag can then be used as a trigger for Scheduled Tasks.


To see the entire implementation please watch the following video


React on screen change

What is React on Screen Change
React on Screen Change in WinCC is a feature that allows you to execute specific actions or scripts when a screen change occurs in the device

In WinCC Comfort/Advanced
The Screen Change can be the trigger for scheduled task for executing a specific function

drawing

In WinCC Unified
In WinCC Unified, there’s a new way to trigger 'Scheduled Tasks' on screen changes:

By writing the current screen number to an HMI internal tag when a screen loads, this tag can serve as the trigger in 'Scheduled Tasks' enabling actions to respond seamlessly to screen changes.


To see the entire implementation please watch the following video


User Management


User View

What is User View
In WinCC, the User View is a feature designed to manage the different users or roles in a project.

In WinCC Comfort/Advanced
There is a control called User View. It is configured during the engineering phase and allows you to manage users later directly in Runtime

drawing

In WinCC Unified
There is no direct control in Runtime for user management. Now, users are managed through the Control Panel under Security > User Management.

drawing drawing

To access user management directly from Runtime, the ShowControlPanel function can be utilized.


To see the entire implementation please watch the following video

Logon with Password

What is Logon only with password
In WinCC, this functionallity allows users to authenticate and access the system by entering only a password, without the need for a username. This feature simplifies the login process, making it quicker and easier for users to gain access.

In WinCC Comfort/Advanced
Logon only with password can be enable under RT settings → User Administration

drawing

In WinCC Unified
In WinCC Unified, there is no equivalent functionality available. However, to enable a quick login process, the system function SetLocalUser can be used as an alternative


To see the entire implementation please watch the following video


Screens and ScreenObjects


Date/time field and clock

What is Display Date and Time
The Display Date and Time functionality allows users to show the current date and time in the HMI runtime. This can be displayed in different formats, including only the date, only the time, or both, depending on user preferences.

In WinCC Comfort/Advanced
There are Date/Time IO Field and a Clock object, which allow easy visualization of date and time in both digital and analog formats. The Clock object can display both the time and date when in digital mode.

drawing


drawing

In WinCC Unified
There is a Clock object available, it only shows the current time in digital format. To display both date and time, an IO field must be used, combined with a cyclic script that continuously updates the displayed values.

Code used in the video

var now = new Date();
var date = now.toLocaleDateString();
var time = now.toLocaleTimeString();
return date + "\n" + time; 


To see the entire implementation please watch the following video


Slide in screen

What is Slide in Screen
In WinCC, Slide in Screen is configured as a dynamic screen element that appears or "slides" into the visible area of the screen from an edge (top, bottom, left, or right) based on specific triggers or user interactions

In WinCC Comfort/Advanced
Slides in Screen were created directly under the Slide-in screens section

drawing

In WinCC Unified
Screen and window management have been enhanced with a new concept. The implementation of slide-in screens has changed and is now achieved by configuring the desired screen as a pop-up window. By using this solution, you will get additional benefits:

  • Free positioning
  • Support for different screen sizes.


To see the entire implementation please watch the following video


Trend View - Bit triggered real time

What is Bit-Triggered Real-Time Trend
A Bit-Triggered Real-Time Trend displays and updates data points only when a trigger bit from the PLC is set, instead of using a fixed interval. This method is ideal for capturing rapidly changing process values, such as injection pressure in plastic production or machine cycle times. By using a bit-triggered mechanism, you ensure that only relevant values are recorded and displayed, avoiding unnecessary data collection while optimizing system performance.

In WinCC Comfort/Advanced
Users can configure a Bit-Triggered Real-Time Trend directly in the Trend View properties.

drawing

In WinCC Unified
Bit-triggered real-time trends is achieved by using a scheduled task to detect changes in a trigger tag.

When the trigger is activated, the process value is stored in an internal tag and displayed dynamically in the function trend control.

Code used in the video

let trigger = Tags("Trigger").Read(); 

if ( trigger == 1 ){ 

  let pointPos = Tags.CreateTagSet(["XValue","TrendValue"]); 
  pointPos.Read(); 

  Tags.CreateTagSet([ ["XValue", pointPos[0].Value + 5], ["YValue", pointPos[1].Value] ]).Write(); 

  //Reset trigger   
  Tags("Trigger").Write(0); 
} 


To see the entire implementation please watch the following video


Bit-triggered trends with buffered acquisition

What is Bit-triggered trends with buffered acquisition/ BlockArray trends
Both functionalities are designed to handle and visualize rapidly changing PLC values efficiently within trend controls. The idea is to collect a block of data points and send them as a batch to the HMI, instead of sending individual values cyclically. This results in smoother and more accurate trend visualization, particularly for fast processe

In WinCC Comfort/Advanced
This is implemented using bit-triggered transfer between a trend buffer and a switch buffer. The PLC writes continuously into one buffer while the HMI reads from the other. A bit (Trend Transfer 1 or 2) triggers when to transfer the buffered data to the HMI.

drawing

In WinCC Unified
Starting in WinCC Unified V20 Update 2, a new mechanism allows connecting BlockArrays to the trend control using the time range mode "index". Arrays of measured values can now be visualized as trends, but reading them still requires a manual handshake between PLC and HMI.


To see the entire implementation please watch the following video


Alarm Indicator

What is "Alarm Indicator"?
The Alarm Indicator is a visual component used to alert operators of active or unacknowledged alarms. It typically shows a flashing icon when alarms are pending acknowledgment and a static one when alarms remain active but are already acknowledged. The indicator often displays a counter and allows direct navigation to an alarm view.

In WinCC Comfort/Advanced:
In WinCC Comfort, the Alarm Indicator was available as a dedicated control. It could be easily placed on any screen and configured to show the current alarm status of a specific alarm class. The control automatically handled flashing and static states, displayed the number of active alarms, and could be linked to open the alarm window upon interaction.

In WinCC Unified:
WinCC Unified does not yet offer a built-in Alarm Indicator control, but the functionality can be recreated manually using screens, internal tags and scheduled tasks.


To see the entire implementation please watch the following video


I/O Field Decimal Places

What is I/O Field Decimal Places
The I/O field decimal places functionality allows users to dynamically adjust the number of decimal places displayed for a tag without modifying its actual value.

In WinCC Comfort/Advanced
Users can configure the decimal places of an I/O field directly through the object properties. This allows for formatting of numerical values in runtime while keeping the original tag value unchanged.

drawing

In WinCC Unified
There are two different ways to configure decimal places depending on the tag data type.

  1. Integer tags (int): Using the IO Field property "Shift decimal places".
  2. Rest of data types: Users must apply a Formula in the IO Field to modify the displayed output while keeping the tag value unchanged.


To see the entire implementation please watch the following video


Switch with Text/Graphic Element

What is Switch with Text/Graphic List
It is an element that allows users to toggle between different states while displaying corresponding text or graphics. It is commonly used to visualize the status of a process or to provide interactive controls with clear visual feedback.

In WinCC Comfort/Advanced
Switch with Text/Graphic List can be created using a switch element that allows users to define a Text List or Graphic List linked to the switch states.

drawing

In WinCC Unified
There are tow ways to implement Switch with Text/Graphic List functionality:

  • Option 1: Element dynamization with a resource list
  • Option 2: Script based solution


To see the entire implementation please watch the following video


Movement Animation

What is Movement Animation in WinCC?
Movement animation in WinCC allows screen objects to change their position dynamically based on process values. This feature enables objects to move directly, diagonally, horizontally, or vertically, depending on the configured logic.

How is it implemented in WinCC Comfort/Advanced?
In WinCC Comfort/Advanced, movement animation is configured using the "Animations" tab in the object properties.

drawing

How is it implemented in WinCC Unified?
In WinCC Unified, the "Animations" tab no longer exists, but movement animation can be achieved using HMI tags and scripting:

  1. Direct Movement:
    This method uses HMI tags that directly indicate the element’s position. In other words, the tag’s value is exactly the position value.
  2. Diagonal, Horizontal, and Vertical Movement:
    In this movement, the element’s position is determined by applying a linear scaling function to the tag’s value (i.e., the tag value is transformed rather than being used directly).


To see the entire implementation please watch the following video


Flashing Animation

What is Flashing Animation?
Flashing animation in WinCC is a visual effect used to draw attention to screen objects by making them change appearance repeatedly — for example, alternating colors or visibility — usually in a blinking or pulsing fashion.

In WinCC Comfort/Advanced
Flashing animation is configured using the "Animations" tab in the object properties

drawing drawing

In WinCC Unified
In WinCC Unified, there are three types of flashing animations depending on the use case:

  1. Flashing Dynamization (Static Flashing)
    This method applies flashing directly to a property without depending on external elements.
  2. Foreground and Background Color Swapping (Dynamic Flashing)
    This method dynamize the flashing Foreground - color and Background - color properties according to an HMI Tag value
  3. Visibility/Opacity Flashing (For Graphical Objects)
    This method toggles the visibility or opacity of an object dynamically.

Code used in the video

let trigger = Tags("Testflashing").Read();
if (trigger == 1){
HMIRuntime.Tags.SysFct.InvertBitInTag("Opacity", 0);
}
else {
HMIRuntime.Tags.SysFct.SetTagValue("Opacity", 1);
}


To see the entire implementation please watch the following video


Open screen keyboard

What is Open ScreenKeyboard
This functionallity allows opening the on-screen keyboard , enabling user input when needed.

In WinCC Comfort/Advanced
The OpenScreenKeyboard system function is used to open the on-screen keyboard , enabling user input when needed

In WinCC Unified
The keyboard can be opened directly from the taskbar. To display the taskbar, swipe up from the edge to the center of the display as shown in the following figures.

drawing drawing

NOTICE

If the taskbar is disabled through the Control Panel, it is not possible to show the keyboard on demand.


To see the entire implementation please watch the following video

And in the following video you will learn how to change the keyboard language and how to resize, move and pin it.


Alarm Line V20Upd2

What is Alarm Line
The Alarm Line is a compact visual element used to display the most recent active alarm in runtime. It's typically placed at the top or bottom of the screen to ensure quick visibility without taking up much space.

In WinCC Comfort/Advanced
The Alarm View control had a "Mode" property that could be set to Alarm line. This modified the control to show only the latest pending alarm in a simplified format. You could configure this by going to: Properties > Layout > Mode > Alarm line.

drawing

In WinCC Unified
There's a dedicated Alarm Line Control specifically designed for this.

drawing

You can display up to 3 rows by adjusting the "Number of rows" property.


To see the entire implementation please watch the following video


Watch table

What is Watch Table?
This element allows users to monitor tag values in real-time directly within the HMI. This feature enables direct observation and debugging of process values without additional configuration.

In WinCC Comfort/Advanced
There is an specific control for Watch Tables.

drawing

In WinCC Unified
This functionallity is achieved using the Web Control to display the PLC WebServer, where tag values can be monitored in real-time. For detailed instructions on configuring the PLC WebServer, refer to the following SIOS Entry: 109798671


To see the entire implementation please watch the following video


Camera View

What is Camera View?
The camera view functionality allows users to display live video streams from network cameras directly on the HMI device screen.

In WinCC Comfort/Advanced
A dedicated "Camera View" control was available. It could be added to screens, templates, pop-ups, or slide-in screens.

The source of the stream was set using a static or dynamic URL (RTSP).

In WinCC Unified
In WinCC Unified only camera streams from web cameras can be displayed. To do so the camera needs to be able to provide its stream via “http” or “https”. By using the “Web control” in the Unified Panel Runtime this stream can then be displayed. The stream can then be displayed in the “Web control” of the Unified Panel Runtime by entering the URL in the control as shown below:

drawing

The URL needs to be formatted as follows:

"http(s)://<camera ip adress>"


Scale Settings Bar

The following table shows you the bars with same scale replication of WinCC Comfort and WinCC Unified:

                                            
WinCC ComfortWinCC Unified
alt textalt text

The property settings of WinCC Comfort and WinCC Unified are different. The following table will show you the corresponding properties.

WinCC ComfortWinCC Unified
alt textalt text
Show scale alt textScale → Scale mode → Numbers & Graduation marks alt text If “Show scale” is deactivated in WinCC Comfort, set the scale mode to “None” in WinCC Unified.
Large interval alt textScale → Division count alt text This property needs to be calculated, e.g. (100-0) / 25 = 4. 100 and 0 are the max. and min. scale value. 25 is the large internal in WinCC Comfort.
Divisions alt textScale → Subdivision count alt text
Marks label alt textThere is no comparable property in WinCC Unified.

Display Names of PaCo/ Multilingual Configuration PaCo

What is multilingual configuration in Parameter Control (PaCo)?
In Parameter Control (PaCo), the Display name of each Parameter Set type and each Parameter Set Element defines how it will appear in Runtime for different languages. This enables multilingual operator interfaces, where parameters and their labels adapt automatically to the selected language at runtime.

In WinCC Comfort/Advanced:
The display name of the Recipe and the Recipe elements were automatically filled with the given name and could be modified in the engineering.

In WinCC Unified:
With WinCC Unified V20 Update 2, you can define Display names per Runtime language directly within the Parameter Set type and Parameter Set element configuration. However, these fields are empty by default and must be filled manually for each language you support.

drawing

The Parameter sets must be created while the runtime in the Parameter set control. To define the name of the Parameter set in the different languages, the following steps must be completed:

  1. Create a new parameter set.
  2. Change the runtime language.
  3. Select the “Rename” button in the parameter set control.
    drawing
  4. Change the name of the parameter set in the popup.
    drawing
  5. This process should be repeated for each of the configured runtime languages. To change the language in the runtime you can use the system function “ToggleLanguage” or “SetLanguage”.

Tooltip

What is Tooltip Functionallity?

In WinCC, a tooltip is a small popup text box that appears when the user hovers the mouse over an HMI element (e.g., button, image, input field). Its primary purpose is to provide contextual help or additional information to the operator without cluttering the screen.

In WinCC Unified PC:

You can implement the functionality with the following engineering step in TIA Portal: Add a Tooltip text in the properties of the object, which is under the Miscellaneous Layer. (Here is Tooltip for example: button).

drawing

The following picture shows the result in PC Runtime: Hover the mouse cursor over the button for a while and you can see the tooltip.

drawing

In WinCC Unified Comfort Panel:

  1. Add a text to the property “Tooltip” of a screen object (e.g. IO field).
    drawing
  2. Add a “Text” object to the screen where the tooltip will later appear, set its “Visibility” to false, and note its name.
    drawing
  3. Navigate to the events of the created IO field and add the following script to the “Activated” event:
    drawing
  Screen.FindItem("Text_1").Text = item.ToolTipText 
  Screen.FindItem("Text_1").Visible = true; 

If you are focusing on this IO field, the tooltip text will be written to the created Text and you can also see the Text. And this step can be repeated to for each screen objects, that their tooltip you want to see. 4. Navigate to the events of the “Text” object and add the system function “SetPropertyValue” to the “Activated” event:
drawing

Result: The tooltip is displayed in the configured “Text” object when the object is activated by clicking on it. Clicking on the Text object causes it to disappear until a new object is activated. Clicking another object while the tooltip is still displayed updates the text.

drawing

NOTICE

This application solution is not suitable for a button because the “Press“/“Click left mouse button“ events are executed almost simultaneously with the "Activated" event when the button is clicked.


HTML pages

The Mini-Web server functions of the html pages are restricted available in WinCC Unified. Following you will find the single functions of the html pages known from WinCC Comfort and how you can use the single function or if the function is not available.

System information about the device
The system information about the MLFB, device type, Image version, Bootloader version, build and other information’s are not available in WinCC Unified.

Remote Control via web pages
Unified PC Runtime: Use a web browser (web client) to view and operate a runtime project. Information about the requirements and the procedure for a web access to WinCC Unified PC Runtime is available in the WinCC Unified Engineering manual: https://support.industry.siemens.com/cs/ww/en/view/109828368/156930277259

Unified Comfort Panel: As an alternative to direct operation of the runtime project on the Unified Comfort Panel, you have the option of accessing the runtime project of the operating device via a web browser. Requirements and procedure are available in the manual in the following entry: https://support.industry.siemens.com/cs/ww/en/view/109795870/151686572299

Control function start / stop runtime
The Start Runtime function cannot be used. To use the Stop Runtime function, you must use a single button on a screen with an event and the “Stop Runtime” system function. This screen is accessible through the SmartClient. It is not possible to stop the runtime using the Web Client because it would not be possible to restart the runtime.

Control function recipes “Export recipes”, “Delete all records”, “Import new records. Replace duplicates with imported records” and “Import new records. Replace duplicates with existing records”

Workaround for “Export recipes”:

  1. The Parameter set type must be selected.
    drawing
  2. The Parameter set must be selected.
    drawing
  3. Press the export button, set a file name and click on OK. Then your file will be created. The parameter set types can be exported one by one.
    drawing

Workaround for “Delete all records”:

  1. The Parameter set type must be selected.
    drawing
  2. The Parameter set must be selected.
    drawing
  3. . The Paramteter set types can be deleted one by one.

Workaround for “Import new records. Replace duplicates with imported records”:

  1. Press the Button for “Import file”.
  2. Select the Parameter set you want to import and select “Overwrite”.
    It is not possible to load more than one Parameter set type at once. So, the function “Import new records. Replace duplicates with existing records” is not needed anymore. If the Parameter set already exists and Overwrite is not activated there will be a message that says “Import failed”.

Control function “Export user administration data”
Since the handling of the user administration is working via the OS of an HMI Panel and the OS is not accessible via a web client the “export user administration data” function cannot be used.

Control function “Import user administration data”
Since the handling of the user administration is working via the OS of an HMI Panel and the OS is not accessible via a web client the “import user administration data” function cannot be used.

System diagnostic buffer
Use a system diagnostic control and/or the alarm control with the filter for alarm class names and place it on a single screen as a workaround, if you want to show the system diagnostic buffer content.


Connections and Connection Drivers


Coordination

What is HMI Status Monitoring?
HMI Status Monitoring is a functionality that allows the PLC control program to track the state of an HMI device. It ensures proper communication, detects operational states, and verifies system readiness. HMI status monitoring detects startup completion, identifies offline modes, and verifies communication through a periodic life signal.

In WinCC Comfort/Advanced
The HMI Monitoring can be implemented throught the Area Pointer Coordination

drawing

In WinCC Unified
The Startup Status is implemented using the system's internal tag @SystemActivationState, which indicates the activation state of the HMI. The Life Bit functionality is achieved by directly communicating a user-defined tag with the PLC and periodically toggling its value to verify active communication.


To see the entire implementation please watch the following video


Time Sync HMI (Slave)

What is Time Synchronization (HMI Slave)
The Time Synchronization (HMI Slave) can be implemented throught the HMI time synchronization mode, selecting the mode slave. Under HMI connections.

drawing

In WinCC Comfort/Advanced
The Time Synchronization can be implemented throught the Area Pointer Date/Time

drawing

In WinCC Unified
The time synchronization must be implemented throught NTP. The PLC must be configured as an NTP server, and the HMI must be set up as an NTP client.


To see the entire implementation please watch the following video


Time Sync HMI (Master)

What is Time Synchronization (HMI Master)
The Time Synchronization in WinCC refers to the capability to synchronize the PLC time with the HMI time (HMI acting as master).

In WinCC Comfort/Advanced
The Time Synchronization (HMI Master) can be implemented throught the HMI time synchronization mode, selecting the mode master. Under HMI connections.

drawing

In WinCC Unified
The synchronization must be performed using the SetPLCDateTime function of the HMI to set the time in the PLC.
To see the entire implementation please watch the following video

Area pointer screen number

What is Screen Number Communication in a HMI - PLC Connection
It is the real-time communication from the HMI to the PLC of the screen number that is currently being displayed on the HMI.

In WinCC Comfort/Advanced
The Screen Number Communication can be implemented throught the Area Pointer Screen number

drawing

In WinCC Unified
There is a new way to manage screens.

Therefore, to achieve the described functionality, we need to set up a script in the Loaded Event of each main content screen to write the screen number to an HMI Tag connected to the PLC tag.


To see the entire implementation please watch the following video


Area Pointer Time Sync

What is Time Synchronization?
The Time Synchronization in WinCC refers to the capability to synchronize the PLC time with the HMI time or vice versa.

In WinCC Comfort/Advanced
The Time Synchronization can be implemented throught the Area Pointer Date/Time

drawing

In WinCC Unified
HMI (Master) → PLC (Slave):
The synchronization must be performed using the SetPLCDateTime function of the HMI to set the time in the PLC.

PLC (Master) → HMI (Slave):
The time synchronization must be implemented throught NTP. The PLC must be configured as an NTP server, and the HMI must be set up as an NTP client.


To see the entire implementation please watch the following video


Job Mail Box Introduction

What is Job Mailbox for HMI and PLC Connection
Job Mailbox functionality in WinCC refers to a mechanism that allows to transfer jobs from the PLC to the HMI to trigger corresponding actions on the HMI device. There are jobs for the following actions:

  • Set time/date (Job number 14,15)
  • User login (Job number 23)
  • User logoff (Job number 24)
  • Transfer date/time (Job number 40,41)
  • Screen selection (Job number 14,15)
  • Update tag (Job number 46)
  • Read data record from controller (Job number 69)
  • Write data record to controller (Job number 70)

In WinCC Comfort/Advanced
The Job Mailbox functionality can be implemented throught the Area Pointer Job mailbox

drawing

How Job Mailbox works in WinCC Comfort/Advanced
The structure of the PLC Tag connected to the Area Pointer Job Mailbox is the following:

drawing

drawing

  1. The HMI device evaluates the job mailbox only if the first word of the job is not 0
  2. When the HMI device accepts the job mailbox, it executes the action and set it to 0 again

In WinCC Unified
Job Mailbox functionality is achieved by scripting, evaluating the value of the PLC tag and executing the corresponding actions. To execute the various actions commanded by the PLC in WinCC Unified, we need to create a base script that will serve as the base for implementing the different jobs.

Code used in the video

let jobParameter = Tags.CreateTagSet(["Job_Mailbox_0", "Job_Mailbox_1", "Job_Mailbox_2", "Job_Mailbox_3"]); 
jobParameter.Read(); 
switch (jobParameter("Job_Mailbox_0").Value) 
 { 
   case 23: 
     if (jobParameter[1].Value == 2)
       { 
         Tags("LocalUser").Write("PLC_User"); 
            HMIRuntime.UI.UserManagement.SysFct.SetLocalUser(HMIRuntime.Tags.SysFct.CreateGetAndClearTagCommand("LocalUser")); 
       } 
     break; 
   case 24: 
     HMIRuntime.UI.SysFct.LogOff(); 
     break; 
  case 40: 
    HMIRuntime.Connections.SysFct.SetPLCDateTime("HMI_Connection_1"); 
    break; 

   case 46: 
     HMIRuntime.Tags.SysFct.UpdateTag(jobParameter[1].Value); 
     break; 
   case 51: 
     HMIRuntime.UI.SysFct.ChangeScreenByNumber(jobParameter[1].Value,"~/swContent"); 
     break; 

   case 69: 
     HMIRuntime.ParameterSetTypes.SysFct.ReadAndSaveParameterSet(jobParameter[1].Value, jobParameter[2].Value, jobParameter[3].Value, false, undefined); 
     break; 
   case 70: 
     HMIRuntime.ParameterSetTypes.SysFct.LoadAndWriteParameterSet(jobParameter[1].Value, jobParameter[2].Value , false, undefined); 
     break; 
   default: 
     break; 
 } 
Tags.CreateTagSet("Job_Mailbox_0",0],["Job_Mailbox_1",0],["Job_Mailbox_2",0],["Job_Mailbox_3",0).Write();


To see the entire implementation please watch the following video


Job 23 & 24

23: User Logon

As soon as we receive the value 23 along with the specified parameter, WinCC Unified will initiate a login using the designated user credentials.

drawing

In WinCC Comfort/Advanced, Parameter 1 represents the user group number. When Job 23 is executed, the system logs in the user associated with the specified group number. For example, if Parameter 1 is set to 2, the user belonging to group 2 will be logged in.

In WinCC Unified, the process works differently. The system uses the SetLocalUser system function to handle logins. Here, the value of the Parameter that you pass to the function is interpreted as a reference to a corresponding alias, which is then used to log in the user.

24: User Logoff

As soon as the PLC sends the parameter 24, WinCC Unified will log the current user off.

drawing

In WinCC Comfort/Advanced, In this case, there are no additional parameters required. Once the PLC sends the value 24, WinCC will simply log off the current user.

In WinCC Unified, In this case, there are no additional parameters required. Once the PLC sends the value 24, WinCC Unified will simply log off the current user trhought the system function logoff().


To see the entire implementation please watch the following video


Job 46 & 51

46: Update tag

It is used to read from the HMI the current value of a specific tag from the PLC.

drawing

In WinCC Comfort/Advanced, Parameter 1 represents the Update ID of a tag. This information can be found in the HMI Tags, showing the column "Update ID". When the PLC sends the parameter 46, the tag is updated in the HMI.

In WinCC Unified, the process is the same. Parameter 1 represents the Update ID of a tag. This information can be found in the HMI Tags, showing the column "Update ID". When the PLC sends the parameter 46, the HMI device will execute the UpdateTag system function

51: Screen selection

It is used to change, from the PLC, the Screen showed in the HMI.

drawing

In WinCC Comfort/Advanced, Parameter 1 represents the number of the screen. When the PLC sends the value 51 and the parameter 1, the screen is changed to the specified one.

In WinCC Unified, Parameter 1 represents the number of the screen. When the PLC sends the value 51 and the parameter 1, the screen is changed to the specified one, using the system function ChangeScreenByNumber.
To see the entire implementation please watch the following video


Job 69 & 70

69: Reading Data Record from PLC

It is used to read Data Records, now known as Parameter sets in Unified, from the PLC.

drawing

In WinCC Comfort/Advanced, Parameter 1 represents the Recipe Number and Parameter 2 represents the Data Record number. When the PLC sends the value 69, the Data Record "Parameter 2" of the Recipe number "Parameter 1" will be read in the HMI.

In WinCC Unified, we will use the system function "ReadAndSaveParameterSet". The necessary parameters for that system function are the Parameter Set ID and the Parameter Set Type ID. When the PLC sends the value 69, the Parameter Set "Parameter 2" of the Parameter Set Type "Parameter 1" will be read in the HMI.

70: Writing Data Record to PLC

It is used to write Data Records, now known as Parameter sets in Unified, to the PLC

drawing

In WinCC Comfort/Advanced, Parameter 1 represents the Recipe Number and Parameter 2 represents the Data Record number. When the PLC sends the value 70, the Data Record "Parameter 2" of the Recipe number "Parameter 1" will be written in the PLC .

In WinCC Unified, we will use the system function "LoadAndWriteParameterSet". The necessary parameters for that system function are the Parameter Set ID and the Parameter Set Type ID. When the PLC sends the value 70, the Parameter Set "Parameter 2" of the Parameter Set Type "Parameter 1" will be written in the PLC.


To see the entire implementation please watch the following video


Project ID

What is Project ID Validation for HMI and PLC Connection

Project ID Validation in WinCC refers to a mechanism that ensures the consistency and correct connection between an HMI device and a PLC. It works by comparing a unique identifier, the "Project ID," between the two systems.

  • When the HMI starts the Runtime, it checks the Project ID stored on the PLC against the one specified in the configuration.
  • If the Project IDs match, the connection is considered valid, and communication proceed.

In WinCC Comfort/Advanced

The Project ID Validation can be implemented throught the Area Pointer Project ID

drawing

In WinCC Unified

Project ID validation is achieved by comparing two tags: one connected to the PLC that stores the Project ID and another internal HMI tag containing the HMI’s Project ID. The comparison is triggered when either value changes. If the IDs do not match, Runtime is stopped.


To see the entire implementation please watch the following video


Data Record Transfer

What is Data Record Transfer Between HMI and PLC?
In HMI systems, transferring data records or recipes between the HMI and the PLC is a common need, typically involving load/save operations. This includes monitoring the status of the transfer (e.g. in progress, successful, failed) and handling the direction of the data flow (from PLC to HMI or vice versa).

In WinCC Comfort/Advanced
The "Data record" area pointer is used to display the data record that transmits information. The following screenshots show the structure of the data area and the meaning of the different values in the status word. drawing

drawing

In WinCC Unified
Transferring data records or recipes between the HMI and the PLC can be implemented in the following ways:

  1. Through System Functions:

    • ReadAndSaveParameterSet
    • LoadAndWriteParameterSet

    These are called via screen elements or scripts and return a processing status tag, which reflects the success or failure of the operation—similar to the Comfort "status word". Recipe View Synchronize Data Record

  2. Through Job Mail solution in Unified: Job 69 & 70


Logging Backup on Network Drive

What is a Logging Backup on a network drive?
The automation system logs process data to make it available at a later time. Since this Archive of data potentially grows over the capacity of the logging drive, data can be backed up on another drive before getting deleted on the drive used for active logging.

On a panel, this would normally mean plugging in an USB, copying the data, then remove the USB to use the data elsewhere. This is a manual process that costs time and effort. Connecting a network drive to the panel that allows to copy the backup data directly to other devices can simplify this process.

In WinCC Comfort/Advanced
Logging is completely file-based. To create a backup, one simply copies the logging files to another directory. Archive Backups cannot be configured in TIA Portal. Instead, a script is called to copy the files to another location, for example a USB or connected network drive.

In WinCC Unified
Logging is based on SQ-Lite database format. A backup mode and path can be configured in TIA portal.

Starting with V21, you can also pre-configure network drives the panel shall connect to. These two features combined allow to set the backup path of a panels archive to a remote devices drive.


To see the entire implementation please watch the following video


Remote Operation via SmartClient

What are Remote Operation and the SmartClient?
Remote Operation is the possibility to see and operate on a panel that is not locally available, but at a remote location.

On Microsoft Windows, the SmartClient App from SiePortal can be used to see and operate the screen of a panel, which can be seen in the videos of this and many of the other How-To examples.

In WinCC Comfort/Advanced
Remote Operation is provided via the SmartClient Control available on screens directly inside the runtime. The control allows to remotely control other devices that host a SmartServer.

The panel devices can host a SmartServer, which is needed to allow incoming remote access.

In WinCC Unified
The SmartClient control is no longer available. To achieve the Remote Operation functionality, the SmartClient App on Unified Panels, with Panel Image V21 or later, can be used. The application works similar to the application on Windows.

Unified Panels can host SmartServer to allow incoming remote access to the device.


To see the entire implementation please watch the following video

Post a Comment

Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
Site is Blocked
Sorry! This site is not available in your country.