WinCC terminology varies by generation. In WinCC Classic, a PLC-connected variable is commonly described as a process/external tag. In this guide, “direct tag” means a WinCC tag mapped directly to a PLC address or symbolic PLC item. “Structured tag” refers to grouping based on a defined structure/type where supported.
- Use internal tags for HMI-only state; do not waste PLC bandwidth on values that never leave Runtime.
- Use process/direct tags when the value is owned by the controller and must reflect PLC quality.
- Use structured organization for repeated equipment such as motors, valves, tanks and drives.
- Tag naming, data type and ownership must be defined before graphics, alarms and scripts are built.
Practical WinCC Engineering Guide
This technical guide focuses on WinCC tag types, PLC-SCADA communication and hands-on Siemens PLC / SCADA commissioning practices.
1. PLC-SCADA Communication Architecture in WinCC
A reliable WinCC project starts with a clear ownership model. The PLC owns machine logic, interlocks, sequence state and field values. WinCC visualizes and supervises those values, adds operator commands, alarms, trends and reports, and may hold HMI-only state. The communication driver and connection object sit between the two systems.
Field Device → PLC Tag/DB → WinCC Connection → WinCC Process Tag → Screen / Alarm / Trend / Script
Before creating hundreds of tags, define the controller, connection type, PLC namespace, update requirement and whether each value is read-only, write-enabled or purely internal to the HMI.
2. WinCC Tag Types at a Glance
| Tag type | Data owner | Typical use | PLC traffic |
|---|---|---|---|
| Internal tag | WinCC Runtime | Navigation state, temporary values, script flags, local calculations | None |
| Process / direct tag | PLC or external device | Motor status, temperature, setpoint, VFD speed, alarms | Yes |
| Structured tag / grouped structure | Usually PLC + WinCC type definition | Repeated motor/valve/tank objects with consistent members | Depends on members |
3. Internal Tags: Values Owned by WinCC
Internal tags exist in WinCC and are not addressed through a PLC connection. They are ideal for values such as selected screen number, report start/end time, local simulation flags, operator-entered temporary values or a script result that does not need to be stored in the controller.
- Choose a data type that matches the HMI function.
- Use a clear prefix or folder so internal values are not mistaken for PLC tags.
- Do not use an internal tag to imitate a real PLC status. That can create a dangerous visual mismatch.
- If the value must survive Runtime restart, confirm the required persistence mechanism instead of assuming all internal tags are retained.
HMI.Screen.SelectedUnit INT
HMI.Report.StartTime DATETIME
HMI.Simulation.Enable BOOL
HMI.Popup.ActiveMotor STRING
4. Direct / Process Tags Mapped to the PLC
A process tag represents a real item in the PLC or another external device. Configure the WinCC communication connection first, then create the tag with the correct controller data type and address. For a Siemens PLC, prefer symbolic addressing when the engineering environment and driver support it because the tag name follows the controller object rather than depending on a fixed byte/bit address.
Typical process tags include Motor01.RunFeedback, Tank01.Level_PV, Furnace.Temp_Set, VFD01.Speed_Act and AlarmDB.HighTemp.
5. Structured Tags for Repeated Equipment
Structured organization becomes valuable when many pieces of equipment share the same data model. Instead of engineering unrelated tag names for every motor, define a repeatable member set and apply consistent naming across the controller and SCADA.
Motor01.CmdStart
Motor01.CmdStop
Motor01.RunFB
Motor01.Fault
Motor01.Current_A
Motor01.Speed_Pct
Motor01.ModeAuto
The same member pattern can be reused for Motor02, Motor03 and so on. This improves faceplate engineering, alarm templates, scripting and maintenance. Where the WinCC generation supports structure types or integrated PLC structures, map the controller structure carefully and verify every member data type after compile/download.
6. Symbolic vs Absolute Addressing
| Approach | Example | Advantage | Risk |
|---|---|---|---|
| Symbolic | DB_Motor01.RunFB | Readable and easier to maintain | Requires supported symbolic integration |
| Absolute | DB10.DBX2.0 | Explicit physical address | Can break if DB layout changes |
| Internal | HMI.ScreenIndex | No PLC dependency | Not a live controller value |
For optimized data blocks, do not assume an absolute address exists in the same way as a non-optimized DB. Use the addressing method supported by the PLC/WinCC combination and keep the PLC and HMI engineering model aligned.
7. Tag Quality, Timestamp and Communication Status
A screen showing the last good numeric value can be misleading if communication has failed. For critical values, engineer visual quality indication or communication status. Distinguish a process value of zero from a tag that is bad, stale or unavailable.
- Monitor connection health and controller reachability.
- Use quality information where exposed by the WinCC interface.
- Record communication alarms separately from process alarms.
- Do not automatically overwrite a bad process value with zero.
8. Naming and Folder Strategy
A scalable project uses predictable names. One useful pattern is Area.Equipment.Signal or an equivalent hierarchy supported by the project. Keep commands, feedbacks, setpoints and process values distinguishable.
Line1.Conv01.CmdStart
Line1.Conv01.RunFB
Line1.Conv01.Fault
Line1.Conv01.Speed_SP
Line1.Conv01.Speed_PV
Use the same engineering vocabulary in PLC tags, WinCC tags, alarm text and documentation. Consistency reduces commissioning time more than clever abbreviations.
9. Step-by-Step WinCC Communication Workflow
- Confirm PLC IP address, reachable network and controller operating state.
- Create the correct WinCC communication channel/driver and PLC connection.
- Test one known Boolean and one known analog value before bulk tag creation.
- Create internal HMI tags separately from PLC process tags.
- Build a structured naming convention for repeated equipment.
- Verify data types and write permissions.
- Place tags on a diagnostic screen showing value, quality and command status.
- Only after communication is proven, map tags into alarms, trends, recipes and scripts.
10. Practical Lab: Motor + Analog Value
Create a small test with one motor and one analog process value. The PLC should expose Motor_RunFB, Motor_Fault, Speed_SP and Temperature_PV. WinCC should also contain an internal tag named HMI_SelectedMotor.
| Tag | Type | Direction | Expected test |
|---|---|---|---|
| Motor_RunFB | PLC process tag | PLC → SCADA | Changes with controller feedback |
| Motor_Fault | PLC process tag | PLC → SCADA | Alarm/indicator follows fault bit |
| Speed_SP | PLC process tag | SCADA → PLC | PLC validation accepts valid range |
| Temperature_PV | PLC process tag | PLC → SCADA | Analog value updates continuously |
| HMI_SelectedMotor | Internal tag | WinCC only | No PLC address configured |
11. Troubleshooting WinCC Tag Communication
| Symptom | Likely cause | Check |
|---|---|---|
| All PLC tags bad | Connection/network issue | IP, route, driver, PLC state, firewall |
| Only one tag bad | Address/type mismatch | PLC symbol, DB member, WinCC type |
| Read works, write fails | Access/logic restriction | PLC permissions, command logic, write path |
| Value freezes | Connection interrupted or acquisition issue | Quality, update cycle, diagnostics |
| Structured member wrong | Layout/type mismatch | Structure definition and member mapping |
WinCC Tag Architecture Verification Lab
Hands-on lab- Use a training or test system, not a live production plant.
- Document the starting PLC/WinCC state and expected result.
- Verify communication and backups before applying engineering changes.
Prove the connection
Read one Boolean and one analog PLC value before bulk engineering.
Separate ownership
Create one internal tag and confirm it has no PLC address.
Build repeated structure
Map a motor signal set using consistent member names.
Test safe writes
Write a bounded speed setpoint through PLC validation logic.
Lab Manual: Tag Types from Field to WinCC Runtime
The sections above explain the three tag types. This lab builds them on one tank with two pumps, with the pump logic in both ladder and SCL, and tests tag quality live.
Stage 1 – Field wiring and PLC tags
| PLC tag | Address | Type | Device / comment |
|---|---|---|---|
LT201_Raw | %IW112 | Int | Level 4–20 mA = 0 – 100 % |
LSL201_OK | %I9.7 | Bool | Low-level switch, 1 = water present |
P201_Running / P202_Running | %I10.0 / %I10.1 | Bool | Contactor feedbacks |
K201 / K202 | %Q4.3 / %Q4.4 | Bool | Pump contactors |
Stage 2 – Input mapping into DB_IO
"DB_IO".LT201_pct := SCALE_X(MIN := 0.0, MAX := 100.0, VALUE := NORM_X(MIN := 0, VALUE := "LT201_Raw", MAX := 27648)); "DB_IO".LSL201_OK := "LSL201_OK"; "DB_IO".P201_Running := "P201_Running"; "DB_IO".P202_Running := "P202_Running";
Stage 3 – PLC logic in ladder and SCL
The same logic in SCL – use whichever your plant standard prefers; both write the same DB members that WinCC reads:
// FB_Pump – InOut #Iface : UDT_PumpIF (Cmd_Start, Cmd_Stop, RunCmd, Running, Level) #Iface.RunCmd := (#Iface.Cmd_Start OR #Iface.RunCmd) AND NOT #Iface.Cmd_Stop AND #LowLevelOK; #Iface.Running := #Feedback; #Iface.Cmd_Start := FALSE; #Iface.Cmd_Stop := FALSE; // OB1 – one call per pump; WinCC sees "DB_Pumps".P201 and "DB_Pumps".P202 with the same structure "IDB_P201"(LowLevelOK := "DB_IO".LSL201_OK, Feedback := "DB_IO".P201_Running, Iface := "DB_Pumps".P201); "IDB_P202"(LowLevelOK := "DB_IO".LSL201_OK, Feedback := "DB_IO".P202_Running, Iface := "DB_Pumps".P202); "DB_Pumps".LT201_pct := "DB_IO".LT201_pct;
Stage 4 – Link PLC tags to WinCC: three tag types
In Tag Management add the SIMATIC S7-1200, S7-1500 Channel, create a connection with the CPU IP address, then use AS Symbols to load the PLC symbols and drag the DB members you need into a tag group. The DB members must have Accessible from HMI ticked in TIA Portal. Names and menus can differ slightly between WinCC versions.
| WinCC tag | Data type | Connection / address | Used by |
|---|---|---|---|
ScreenNo | Unsigned 8-bit | Internal tag (no connection) | Screen navigation |
DB_Pumps_LT201_pct | Floating-point 32-bit | Process tag, symbolic | Level field and trend |
P201 / P202 (structure type PumpIF) | Structure | Cmd_Start, Cmd_Stop, RunCmd, Running → DB_Pumps.P201 / .P202 | Faceplates |
Stage 5 – Link the graphics
| # | Object | Properties | Tag / event |
|---|---|---|---|
| ① | Pump faceplate (copied per instance) | Buttons write Cmd_Start/Cmd_Stop of the instance; lamp on Running | P201.*, P202.* |
| ② | I/O field level | Output, 999.9 % | DB_Pumps_LT201_pct |
| ③ | Connection status | Dynamic on tag quality or the connection status tag | Tag Management diagnostics |
Faceplate events and dynamics are detailed in WinCC buttons and lamps.
Stage 6Perform and Test: Tag Types and Tag Quality
Start the pumps through their structure instances, change the internal screen tag, then cut the PROFINET connection and compare how internal, process and structured tags behave.
| Tag | Type | Address | Value | Quality |
|---|
Frequently Asked Questions
What is an internal tag in WinCC?
An internal tag is owned by WinCC Runtime and has no PLC communication address. Use it for HMI-only state, temporary values and local script logic.
What is a direct tag in WinCC?
In this guide, a direct tag means a WinCC process tag mapped directly to a PLC address or symbolic PLC item. Exact terminology differs by WinCC generation.
When should structured tags be used?
Use structured organization when repeated equipment shares the same signal model, such as multiple motors, valves, drives or tanks.
Should I use symbolic or absolute PLC addressing?
Prefer symbolic addressing where the PLC and WinCC combination supports it. Absolute addressing can be valid but is more sensitive to DB layout changes.
Why is tag quality important?
Quality distinguishes a true process value from a stale or unavailable value caused by communication failure.