1. Problem Statement
A WinCC V7.4 SP1 (or later) project uses the OPC channel driver in WinCC Tag Management to subscribe to tags from an RSLinx Enterprise / RSLinx Classic OPC Server (Rockwell Automation / Allen-Bradley). Each tag is bound to a data table location in a Logix controller (ControlLogix, CompactLogix, GuardLogix, Micro800, or PLC-5/SLC 500 through bridging). The connection is healthy, the WinCC tag value updates live in the tag table (Tag Management → variable list), and the engineer can force the bit to 1 in RSLogix 5000 / Studio 5000 Logix Designer and see the value change in the WinCC tag.
The fault condition is that the same tag, when configured as the trigger tag (message tag) for a WinCC alarm message, never produces a visible event in the runtime AlarmControl (Alarm OCX) on the WinCC Runtime / WinCC RT Professional screen. No row, no color change, no archive entry. A "value=1" at the OPC item does not generate a "Came In" state transition in the Alarm Logging subsystem.
This article documents the full diagnostic and recovery procedure for the OPC-tag-triggered alarm path in WinCC V7.4, with specific attention to the AlarmControl selections, message tag / status tag model, and the OPC DA 2.0 / 3.0 subscription semantics used by the RSLinx bridge.
2. WinCC V7.4 Alarm Logging Architecture
WinCC V7.4 alarm logging is composed of four cooperating subsystems. A failure in any one of them will result in a silent alarm:
- WinCC Tag Management (OPC channel) – owns the OPC DA subscription and the in-process tag mirror.
- Alarm Logging editor / runtime component – owns message configuration, the message tag/state machine, and the archive.
- Graphics Runtime / AlarmControl OCX – owns the HMI view, the column layout, and the active selection (filter).
- User Administrator / Authorization – gates which operators can see or acknowledge which message classes.
The data path is: RSLinx OPC Server → WinCC OPC channel (opcda.dll) → WinCC tag mirror → Alarm Logging message tag → Alarm Logging event buffer → AlarmControl row → archive segment. The OPC tag is only the trigger; Alarm Logging performs its own state machine independent of the OPC item. The fact that the WinCC tag value updates in the variable list does not prove that Alarm Logging is observing the same variable.
Reference: WinCC V7.4 SP1 Help / Manual – Alarm Logging, WinCC V7.4 System Manual – Communication, and the modern equivalent in Alarm Logging in WinCC RT Professional (TIA Portal V20).
3. OPC Channel Configuration Against RSLinx
WinCC communicates with RSLinx through the standard OPC DA interface (DA 2.0 / 3.0). Verify the channel under Tag Management → [your OPC channel] → System Parameters and the connection under [your connection] → Properties:
| Parameter | Required value (RSLinx bridge) | Symptom if wrong |
|---|---|---|
| OPC Server name (ProgID) |
RSLinx OPC Server (Classic) or RSLinx Enterprise OPC Server
|
Channel starts, no items, no error |
| Local / remote | Localhost for Classic; remote endpoint URL for Enterprise | Channel down, red X in Tag Management |
| Update rate (ms) | 250 – 1000 typical; minimum 100 | Missed edges, slow ack clearing |
| Item name format | Matches RSLinx topic, e.g. [CLX_PROG]MAIN.ALARM_BIT
|
Bad Quality on the tag, alarm never triggers |
| Tag datatype | Binary Tag, 1 bit | Cannot be selected as message bit |
For Logix controllers, the Item name passed to RSLinx must include the program scope or controller scope path. A typical valid item: [CLX01]Program:MainProgram.ALARM_BIT. Without the program scope prefix, RSLinx returns Bad Quality and Alarm Logging discards the message tag without logging an error.
4. Message Tag vs. Status Tag
WinCC Alarm Logging treats every alarm as a state machine on a structured tag called the message tag. The message tag is conceptually a 32-bit field where each bit represents one alarm within a message number. This is not the same as a regular WinCC process tag.
| Concept | Purpose | WinCC type | Configured under |
|---|---|---|---|
| Message tag (Bit message tag) | Carries the alarm state; the bit position selects the message | Unsigned 32-bit or signed 16-bit | Alarm Logging → Messages → Properties → Tag trigger |
| Status tag (optional) | Carries additional state: Ack, Came In/Out, Gone | Unsigned 32-bit, bit-packed | Alarm Logging → Message class → Status tag |
| Process tag (OPC) | Carrier value supplied by RSLinx | Binary Tag or Word | Tag Management → OPC channel |
Two common mistakes break this path:
- The engineer selects a process tag directly as the message trigger. WinCC will accept the binding, but Alarm Logging expects a Word/DWord tag that holds the message state; binding to a Boolean tag prevents the message from ever reaching the "Came In" state.
- The engineer uses an OPC tag but never configures a Status tag on the message class. Without a status tag, the message is generated but never updates "Acknowledged" or "Came In/Out" transitions correctly, and many AlarmControl layouts will not display a row.
5. Root Cause Matrix
| # | Root cause | How to confirm | Fix |
|---|---|---|---|
| 1 | AlarmControl selection / fixed selection hides the row | Graphics Designer → AlarmControl properties → Message lists → Selections / Fixed Selections | Delete the selection or rebuild without filter |
| 2 | Message tag is a 1-bit Boolean, not a Word/DWord | Tag Management → tag datatype | Change datatype to Binary Tag 16/32 bit or create a Word shadow tag |
| 3 | Trigger bit position wrong (mismatched message number) | Alarm Logging → Messages → Properties → Trigger | Set Trigger → Bit → correct bit position |
| 4 | Message class has no Status tag | Alarm Logging → Message Classes → Properties | Assign a Status tag (WinCC internal or process tag) |
| 5 | OPC item quality is Bad (RSLinx topic/Item name error) | Tag Management → tag → Quality indicator | Fix item name to match RSLinx topic; verify controller path |
| 6 | OPC update rate too slow to catch the edge | Tag timestamp does not update | Lower update rate to ≤ 500 ms; confirm subscription |
| 7 | AlarmControl is showing only "Acknowledged" or "Hidden" status | Column configuration of the control | Add / move the State column to the front of the column set |
| 8 | Operator authorization hides the message class | User Administrator → Authorizations | Grant the operator the alarm-class-level authorization |
| 9 | Archive full and write blocked, runtime row not displayed | Alarm Logging → Archives | Resize the archive segment or enable ring buffer |
| 10 | Graphics Runtime not started; only Configuration is running | Taskbar icon / process list | Start WinCC Runtime, not just WinCC Explorer |
6. Step-by-Step Resolution Procedure
6.1 Prerequisites
- WinCC V7.4 SP1 with installed options: WinCC Alarm Logging, WinCC OPC.
- RSLinx Classic / RSLinx Enterprise running, configured with an active topic pointing to the Logix controller.
- Project in WinCC Explorer; Graphical Designer and Alarm Logging editors accessible.
- Local administrator rights on the engineering station.
6.2 Verify the OPC tag updates in Tag Management
- Open WinCC Explorer → Tag Management.
- Right-click the OPC tag → Properties; check Quality = Good and Last Update timestamp.
- Force the bit to 1 in Logix Designer / RSLogix 5000.
- Confirm the WinCC value toggles 0 → 1. If it does not, the fault is in OPC, not Alarm Logging.
6.3 Configure the message tag as Word/DWord, not Boolean
- Add a new tag of type Binary Tag, 16 or 32 bit, internal or process (mirrored from OPC).
- If the project requires a per-alarm discrete OPC input, write the boolean into a DWord shadow tag using a Global Script action:
SetTagDWord("MsgTag", 1 << 0);when the OPC boolean goes high.
6.4 Bind the message trigger in Alarm Logging
- Open Alarm Logging → Messages.
- Open the message that should fire; on the Properties dialog choose the Tag trigger tab.
- Select the Word/DWord message tag, then click Bit and enter the bit position (0–31) of the alarm.
- Save and close. Repeat for every alarm mapped to the same message tag.
6.5 Assign a Status tag to the message class
- Open Alarm Logging → Message Classes.
- Right-click the class (e.g. Error, Warning) → Properties.
- Set the Status tag to an internal WinCC DWord or to a process tag available to OPC.
- Save the project.
6.6 Clear selections on the AlarmControl
- Open Graphics Designer and select the AlarmControl on the screen.
- Right-click → Properties → tab Message lists.
- Click Selections → delete every selection entry. Click Fixed Selections → delete every entry. These are runtime and design-time filters; a single residual filter will silently hide the message class.
- Confirm the message-number range covers the new message: click Selections → New, choose Selection by message number, and explicitly include the new message number as a sanity check. Once it is visible, delete the test selection.
6.7 Check the column set on AlarmControl
- Same Properties dialog → tab Columns.
- Ensure the columns Date, Time, State (Came In / Came In / Acknowledged), Message text, and Message number are present and ordered with State visible.
- If the screen is read-only, use the right-mouse context menu in runtime to add the State column back.
6.8 Verify operator authorization
- Open User Administrator.
- Locate the operator group that has access to the alarm screen.
- Confirm the group has the Alarm Logging – operation authorization level (number depends on the project; default ranges 1–1000). A blank or wrong level hides message classes at runtime.
6.9 Save, compile, restart WinCC Runtime
- Select File → Save in WinCC Explorer.
- Use Tools → Compile / Check Consistency; the consistency check will flag missing status tags and orphan message tags.
- Close the runtime, then start it again. Alarm Logging does not re-read selections while the runtime is live.
7. AlarmControl Display Properties and Selections
The single most common cause of "alarm value=1 but not displayed" is an active selection on the AlarmControl. A selection is a runtime filter that suppresses rows whose date, state, class, priority, or message number is outside the filter.
- Selection – set by the operator at runtime, persistent in the project until cleared.
- Fixed Selection – locked at design time; cannot be changed by the operator.
Both are accessible from Graphics Designer → AlarmControl properties → Message lists. Removing every line in both dialogs is the equivalent of a factory reset for the visible message set. After clearing, the AlarmControl shows all messages present in the runtime buffer. Verify with a known triggered alarm before re-applying any project-level filter.
8. Diagnostic Tools and Verification
| Tool | Use | Path / command |
|---|---|---|
| WinCC Tag Management – Tag diagnostics | Show quality, last update, last value | Right-click tag → Properties |
| Alarm Logging – GfxDiagnostics | Inspect message tag, status tag, class | Alarm Logging → Tools → GfxDiagnostics |
| WinCC Channel Diagnosis | OPC channel state, item count | Start → SIMATIC → WinCC → Tools → Channel Diagnosis |
| Alarm Logging – Statistics | Count of Came In, Came Out, Ack events | Alarm Logging runtime toolbar → Statistics |
| Alarm Logging – Output | Live dump of every event | Alarm Logging runtime toolbar → List |
| Apdiag / S7 Diagnose | For S7 paths – not relevant here | n/a |
To verify the path end-to-end, force a bit to 1 in Logix Designer, then in the Alarm Logging runtime click Output. A row must appear within one update cycle (≤ 1 s at 1000 ms update rate). If the row appears in the Output list but not on the AlarmControl on the screen, the AlarmControl is being filtered – apply Section 7. If the row does not appear in Output either, the message tag is not seeing the bit transition – re-apply Section 4.
9. RSLinx OPC Server Connectivity
Confirm the RSLinx side of the bridge:
- Open RSLinx → DDE/OPC → Topic Configuration and confirm the topic is Active and Polled (or Cyclical).
- Open RSLinx → DDE/OPC → OPC Test Client (or any third-party DA browser such as MatrikonOPC Explorer) and browse the topic. The exact item name and quality can be observed in seconds.
- Cross-check the item name against the WinCC OPC item name. RSLinx is case-insensitive, but the program-scope path must match exactly.
If the OPC Test Client shows the value flipping 0 → 1 but WinCC does not, the issue is not RSLinx; it is the WinCC OPC channel configuration. Specifically, verify the channel is set to OPC DA and not OPC XML-DA or OPC UA; the RSLinx Classic OPC Server exposes DA 2.0 / 3.0 only.
10. Common Pitfalls and Edge Cases
- Symbolic vs. direct address: symbolic item names are recommended for ControlLogix; a rename in Logix Designer breaks the OPC item until WinCC is re-pointed.
- Multiple OPC servers: if two OPC channels are present, WinCC will not load a tag from the second channel while the first is marked "down". Confirm only one channel carries the alarm tag.
- Redundant server pair: on a redundant WinCC server pair, the standby may hold the message buffer until failover – force the bit on the active server during commissioning.
- Integer overflow in the message tag: a 16-bit Word cannot hold more than 16 messages; if your bit position is 17, the trigger silently fails.
- Time zone / DST: the AlarmControl may show the row with a timestamp in a different time zone, which appears to operators as "no row at the current time".
- Locked screen: if the AlarmControl is inside a process picture with picture-window navigation, the picture may not be loaded, suppressing updates to the visual state.
- Tag licensing: PowerTags in RSLinx count toward the licensed tag count; if the license is exhausted, the OPC item returns Bad Quality silently.
11. Field-Proven Commissioning Checklist
- RSLinx topic active, polled, item name verified in OPC Test Client.
- WinCC OPC channel shows Good quality, value updates live.
- Message tag is Binary Tag 16/32 bit, mapped to the OPC item or written via Global Script from the OPC boolean.
- Message trigger set to correct bit position of the message number.
- Message class has a Status tag assigned.
- AlarmControl has no Selection and no Fixed Selection covering the message.
- AlarmControl column set includes State, Date, Time, Message text, Message number.
- Operator authorization includes the message class.
- WinCC Runtime (not just Configuration) is running.
- Alarm Logging Output window shows the event when the bit is forced.
Following the checklist, the value=1 at the OPC item will produce a visible "Came In" row in the AlarmControl within one OPC update cycle, with a matching archive entry.
FAQ
Why does my WinCC OPC tag show value=1 in Tag Management but no alarm appears in AlarmControl?
The OPC tag is only the carrier. Alarm Logging needs a Word/DWord message tag with the offending bit bound to a message number, a Status tag on the message class, and an AlarmControl on the screen with empty Selections and Fixed Selections. The most frequent single cause is a residual selection filtering the row out of view.
Can a Boolean OPC tag be used directly as a WinCC alarm trigger?
Not for classic bit messages. Create a 16/32-bit Binary Tag, write the boolean into a defined bit position using a Global Script, and bind that Word tag as the message trigger. The bit position (0–31) selects the message number.
How do I clear an active filter on the WinCC AlarmControl?
Open the picture in Graphics Designer, select the AlarmControl, open Properties → tab Message lists, and click Selections and Fixed Selections to delete every entry. Save the project, then restart WinCC Runtime – the filter is read at runtime startup.
My RSLinx item shows Good in the OPC Test Client but Bad in WinCC. Why?
Check the OPC channel type: the RSLinx Classic OPC Server exposes DA 2.0/3.0 only, not XML-DA or UA. Also confirm the item name in WinCC matches the topic-path format used in RSLinx, including program scope for Logix controllers, and that the RSLinx topic is Active and Polled.
Do I need a Status tag on every message class?
Yes, for the message to surface in the AlarmControl with correct State transitions (Came In, Came Out, Acknowledged). Without a Status tag the message event is generated but the row's state column is frozen, and many screen layouts hide rows that have no state update.