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
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.
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.
In WinCC Unified
Password aging is configured in TIA Portal, under Security settings of the project → Password polices.
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.
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.
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:
- Enable the HTTP Server on the Server Device
- Configure the Unified Device as the Client
Supported Communication Scenarios:
| Unified Device (Client) | Server | Supported? |
|---|---|---|
| Unified Basic Panel | Comfort Panel | via Web Control |
| Unified Comfort Panel | Comfort Panel | via Web Control |
| Unified PC Runtime | Comfort Panel | via Web Control |
| Unified Basic Panel | Runtime Advanced | via Web Control |
| Unified Comfort Panel | Runtime Advanced | via Web Control |
| Unified PC Runtime | Runtime Advanced | via 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) | Server | Supported? |
|---|---|---|
| Unified Basic Panel | Unified PC Runtime | via Web Control |
| Unified Comfort Panel | Unified PC Runtime | via 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.
In WinCC Unified
This feature is managed via GMP Classes in the Parameter Set Type configuration.
Two GMP classes are available for Signature for Recipe Data Actions:
- SingleSignature – Requires a single user signature.
- 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.
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
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.
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.
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:
- Multiplexing with Symbolic Addressing
You use index tags to dynamically access array elements in symbolic PLC structures (e.g., UDTs). Example: MyDB.MyArrayTag[HMITag] - 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. - 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:
- 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. - 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. - 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.
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)
In WinCC Unified:
Starting with TIA Portal V21, the same four ranges are available.
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.
In WinCC Unified
In Unified, the same functionality is achieved by using a parameter field:
- Right-click in the text of the text list entry.
- Select "Insert parameter field...".
- Assign the desired HMI tag to the parameter field.
- Configure the field format and confirm.
Note: Ensure that the Unified Runtime Firmware is at least V18.
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.
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.
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.
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
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.
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:
- Change the PLC Tag data type (if modifying PLC is possible)
- 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.
In WinCC Unified
The alarm handling model has changed significantly. Now, actions can be triggered using several approaches:
- Using Scheduled Tasks:
Create a scheduled task triggered by an alarm - 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
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:
- LoadAndWriteParameterSet: Loads a parameter set from the HMI memory and writes the values to the PLC.
- 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.
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:
- Connecting a network drive to the panel
- 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:
- Creating a popup screen with a System Diagnostics Control.
- 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:
- From the Control Panel → Security, using the export/import buttons.
- 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:
- 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.
- 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:
- The GRAPH overview via the "Click PLC code view button" event.
- 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:
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
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:
| Unified | → | Comfort |
|---|---|---|
| Next | → | PLCCodeViewNextNetwork |
| Previous | → | PLCCodeViewPreviousNetwork |
| ZoomIn | → | PLCCodeViewZoomIn |
| ZoomOut | → | PLCCodeViewZoomOut |
| Toggle detail view | → | PLCCodeViewTransitionInterlock |
| Toggle GRAPH mode | → | PLCCodeViewStepMode |
One example in Unified:
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
| Unified | → | Comfort |
|---|---|---|
| First record | → | TrendViewBackToBeginning |
| Previous record | → | TrendViewScrollBack |
| Next record | → | TrendViewScrollForward |
| Ruler | → | TrendViewSetRulerMode |
| Start/stop | → | TrendViewStartStop |
Example:
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:
- Overwrite existing records
- No overwrite existing records
- Overwrite after confirmation
In WinCC Unified
The equivalent function ImportParameterSets only provides two overwrite options:
- Overwrite existing parameter sets
- No overwrite existing parameter sets
The "After Confirmation" option is missing, but two alternative solutions exist:
- Using Parameter Set Control
- 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.
In WinCC Unified
There are two ways to show the PDF files:
- Using the Web Control to display the PDF
- 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:
- Using the Control Panel (since V19)
Navigate to Control Panel > External Devices and Inputs > Connected Devices > safely remove external storage. - 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
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.
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:
“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:
The property “Parameter set control function bar button” allows to execute the following functions:
| WinCC Comfort Systemfunction | WinCC 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.
- To update the alarm list, use ExecuteToolbarButton – Show and update logged alarms.
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”).
Following you can find how to configure this system function: The property “System diagnostic control toolbar button” allows to execute the following functions:
| 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.
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.
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:
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); }
2. Create a Scheduled task with a trigger you need and insert in Events the global Script that was created before.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.
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.
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.
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.
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.
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):
The property “Web control toolbar button” allows to execute the following functions:
| WinCC Comfort system function | WinCC Unified system function with property |
|---|---|
| HTMLBrowserHome | ExecuteToolbarButton – Home |
| HTMLBrowserRefresh | ExecuteToolbarButton – 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”.
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.
- Create a discrete alarm with the “Alarm text” – “I am Alarm”.
- Add a “text box” to the screen and dynamize the property ”Text” with “Script”. Then add the following script.
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. - Set the “Trigger” for the script as the same Tag with the trigger tag of the created discrete alarm.
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
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:
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
In WinCC Unified
There are new ways to trigger an event when Runtime stops:
- Scheduled Task triggered by the incoming system alarm 536870914
- Scheduled Task monitoring the system tag: @SystemActivationState
- 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
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
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
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.
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
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
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
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.
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
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.
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
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
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
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.
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
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.
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.
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
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.
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
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.
In WinCC Unified
There are two different ways to configure decimal places depending on the tag data type.
- Integer tags (int): Using the IO Field property "Shift decimal places".
- 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
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.
In WinCC Unified
There are two different ways to configure decimal places depending on the tag data type.
- Integer tags (int): Using the IO Field property "Shift decimal places".
- 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.
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
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.
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.
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:
- 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. - 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
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.
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:
- 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. - 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
In WinCC Unified
In WinCC Unified, there are three types of flashing animations depending on the use case:
- Flashing Dynamization (Static Flashing)
This method applies flashing directly to a property without depending on external elements. - Foreground and Background Color Swapping (Dynamic Flashing)
This method dynamize the flashing Foreground - color and Background - color properties according to an HMI Tag value - 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
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
In WinCC Unified
In WinCC Unified, there are three types of flashing animations depending on the use case:
- Flashing Dynamization (Static Flashing)
This method applies flashing directly to a property without depending on external elements. - Foreground and Background Color Swapping (Dynamic Flashing)
This method dynamize the flashing Foreground - color and Background - color properties according to an HMI Tag value - 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.
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.
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.
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.
In WinCC Unified
There's a dedicated Alarm Line Control specifically designed for this.
You can display up to 3 rows by adjusting the "Number of rows" property.
To see the entire implementation please watch the following video
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.
In WinCC Unified
There's a dedicated Alarm Line Control specifically designed for this.
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.
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
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.
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:
The URL needs to be formatted as follows:
"http(s)://<camera ip adress>"
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:
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:
The property settings of WinCC Comfort and WinCC Unified are different. The following table will show you the corresponding properties.
The following table shows you the bars with same scale replication of WinCC Comfort and WinCC Unified:
The property settings of WinCC Comfort and WinCC Unified are different. The following table will show you the corresponding properties.
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.
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:
- Create a new parameter set.
- Change the runtime language.
- Select the “Rename” button in the parameter set control.

- Change the name of the parameter set in the popup.

- 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”.
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.
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:
- Create a new parameter set.
- Change the runtime language.
- Select the “Rename” button in the parameter set control.
- Change the name of the parameter set in the popup.
- 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).
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.
In WinCC Unified Comfort Panel:
- Add a text to the property “Tooltip” of a screen object (e.g. IO field).

- Add a “Text” object to the screen where the tooltip will later appear, set its “Visibility” to false, and note its name.

- Navigate to the events of the created IO field and add the following script to the “Activated” event:

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:

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.
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.
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).
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.
In WinCC Unified Comfort Panel:
- Add a text to the property “Tooltip” of a screen object (e.g. IO field).
- Add a “Text” object to the screen where the tooltip will later appear, set its “Visibility” to false, and note its name.
- Navigate to the events of the created IO field and add the following script to the “Activated” event:
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:
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.
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”:
- The Parameter set type must be selected.

- The Parameter set must be selected.

- 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.

Workaround for “Delete all records”:
- The Parameter set type must be selected.

- The Parameter set must be selected.

- . The Paramteter set types can be deleted one by one.
Workaround for “Import new records. Replace duplicates with imported records”:
- Press the Button for “Import file”.
- 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.
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”:
- The Parameter set type must be selected.
- The Parameter set must be selected.
- 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.
Workaround for “Delete all records”:
- The Parameter set type must be selected.
- The Parameter set must be selected.
- . The Paramteter set types can be deleted one by one.
Workaround for “Import new records. Replace duplicates with imported records”:
- Press the Button for “Import file”.
- 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
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
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
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.
In WinCC Comfort/Advanced
The Time Synchronization can be implemented throught the Area Pointer Date/Time
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
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.
In WinCC Comfort/Advanced
The Time Synchronization can be implemented throught the Area Pointer Date/Time
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.
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
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.
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
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
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
How Job Mailbox works in WinCC Comfort/Advanced
The structure of the PLC Tag connected to the Area Pointer Job Mailbox is the following:
- The HMI device evaluates the job mailbox only if the first word of the job is not 0
- 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.
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.
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.
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.
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.
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
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
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.
In WinCC Unified
Transferring data records or recipes between the HMI and the PLC can be implemented in the following ways:
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
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