Problem Overview
A common field symptom when commissioning a Siemens WinCC Flexible 2008 SP3 Runtime project that uses the RecipeView (Advanced) activeX-style control is the appearance of a persistent alarm reading exactly:
PLEASE SELECT RECIPE TO RUN
The alarm surfaces in the Alarm View window as a class "Errors" message, where the configured display symbol is the exclamation point !. The message is reported as Alarm Number 5 inside the Errors class. The text does not match any user-defined alarm text, and the bit/word triggers cannot be found in the connected PLC. The same text also produces a secondary entry internally identified as system message 80015 with a "missing text - object type SYSTEM_MESSAGE" warning in the WinCC Flexible diagnostics buffer.
Engineers who are familiar with the more common RecipeView workflow (selecting a DataRecord, pressing the transfer button, and watching the data tags populate) are surprised to see this alarm appear while the recipe transfer itself is functioning correctly. The PLC is receiving the data record, the tags are being written, and the production line is starting up. Yet the alarm view keeps showing the message.
Affected Versions and Products
| Component | Affected Versions | Notes |
|---|---|---|
| WinCC Flexible 2008 | SP3 (verified); SP1/SP2/SP4 plausible | Same recipe subsystem across all SPs |
| WinCC Flexible 2008 Runtime | All builds | Alarm text pulled from the RT translation table |
| RecipeView (Advanced) ActiveX | Version stamp not exposed in RT | Embedded as part of WinCC Flexible 2008 install |
| Target panels | PC Runtime, MP 277, MP 377, Panel PC 477, OP 270 | Any HMI that supports RecipeView Advanced |
| Connected PLC | S7-300, S7-400, ET 200S, S7-200 (PPI/MPI), S7-1200 (via Ethernet) | Independent of PLC; alarm originates in HMI |
System Message Reference
The exact text PLEASE SELECT RECIPE TO RUN corresponds to a built-in WinCC Flexible system message that is generated by the RecipeView Advanced control when it transitions from a "no data record selected" state into a state where the user attempts to issue a Start/Read/Write/Transfer command. The system message is logged under the Errors class because it represents a recipe state-machine violation, not a hardware or PLC fault.
| Field | Value |
|---|---|
| Alarm Class | Errors |
| Alarm Number (within class) | 5 |
| Display Symbol | ! |
| Default Text (EN) | PLEASE SELECT RECIPE TO RUN |
| Internal System Message ID | 80015 |
| Object Type Tag | SYSTEM_MESSAGE |
| Origin | WinCC Flexible Runtime / RecipeView internal event pump |
| PLC Involvement | None — message is generated by HMI runtime, not by PLC bit/word |
WinCC Flexible uses a fixed, language-indexed text table for system messages. The string PLEASE SELECT RECIPE TO RUN is the English translation of a German source string roughly equivalent to "Bitte wählen Sie ein Rezept zum Abarbeiten aus." The same text exists in additional languages (German, French, Italian, Spanish, Chinese) but is shipped by default in English when the project language is set to English. The text is not editable from the project editor — it is read from a compiled resource inside the WinCC Flexible runtime DLLs.
Root Cause Analysis
The system alarm is raised by the RecipeView's internal state machine when one of the following operator actions is performed before a DataRecord has been explicitly bound to the active control instance:
- The operator presses the Start, Read, Write, or Transfer toolbar button on the RecipeView toolbar while the internal data record pointer is still in the
unselectedstate. - The HMI boots, initializes the RecipeView, and the project startup script attempts to call
RecipeView.ReadorRecipeView.Writebefore any record selection event has fired. - A script bound to the RecipeChanged event fires a downstream command (for example, copying the data record to a second tag group) before the first DataRecordSelected event of the session.
- The RecipeView control is configured with the property DataRecord = (none) at compile time, which causes the runtime to display a default empty list. Pressing any action button on an empty list triggers the alarm.
Although the alarm originates from the RecipeView, the alarm is logged against the "Errors" class in the HMI's alarm logging subsystem, which causes it to appear in the Alarm View window identically to a configured PLC alarm. This is what makes the message confusing to diagnose — it has all of the visual properties of a real production alarm but is actually a UI-level notification.
RecipeView (Advanced) Operation Lifecycle
Understanding the RecipeView state machine is required to find a clean fix. The control progresses through the following states during a typical session:
| State | Triggering Event | Allowed Toolbar Actions |
|---|---|---|
| Unbound | Control initialized, no data record pointer | None — all action buttons disabled |
| BoundEmpty | DataRecord pointer set, no value selected | New, Open, Save As (Read/Write/Transfer disabled) |
| BoundSelected | DataRecord pointer set and a value chosen from the list | Read, Write, Transfer, Delete, Rename enabled |
| Transferring | Read/Write in progress to PLC | Cancel only |
| Error | PLC read/write failed | Retry, Cancel |
The system message PLEASE SELECT RECIPE TO RUN is raised specifically when the control is in the BoundEmpty state and the user invokes any of the Read, Write, or Transfer commands. WinCC Flexible surfaces the message to the operator as feedback that the action is not legal in the current state, but the same message is also routed into the Errors alarm class for logging purposes.
Why the Alarm Appears Even When Transfer Works
The most confusing symptom is that the recipe transfer to the PLC does succeed, yet the alarm is still logged. There are two underlying reasons:
- Order-of-operations mismatch: WinCC Flexible generates the alarm before the action button's bound command executes. The recipe data is read or written successfully because the operator eventually selects a valid data record, but the alarm was already queued at the moment the operator first pressed the button with no record selected.
- Sticky alarm state: The alarm is "active" until the operator acknowledges it. Even if a successful transfer occurs later, the alarm entry remains in the alarm view with the time stamp of the original triggering event. Newer alarm events are appended below it.
Locating the Alarm Source in the Project
The alarm is not visible in the standard alarm editor under Project > HMI Alarms > Discrete Alarms or Analog Alarms — it is a system alarm. However, depending on how the project is configured, it can be re-routed into a class that looks like a user-defined class. The following diagnostic steps will confirm the source:
- Open the WinCC Flexible ES (Engineering System) project.
- Navigate to Project > HMI Alarms > Alarm Classes in the project tree.
- Expand the Errors class. Count the alarm numbers shown — alarm number 5 is almost always present and matches the PLEASE SELECT RECIPE TO RUN text.
- Click Project > HMI Alarms > System Events. The text may also be present there as a system message with ID 80015.
- Check Project > HMI Alarms > Analog Alarms. In some translated project files, the RecipeView system message is mapped to an analog alarm slot rather than a discrete one. This is the exact root cause reported in the source — the alarm was found hiding in the Analog Alarms branch, an area the engineer had forgotten existed.
- Right-click the alarm entry and select Properties. The Trigger Tag field will be empty or will read
(System). The Alarm Text field will display the string from the compiled resource table.
Resolution Path A: Enable the Pre-Selection Filter
The cleanest fix is to ensure the operator cannot press an action button until a data record is selected. The RecipeView Advanced control exposes a LockUntilRecordSelected property that, when set to True, disables the Read/Write/Transfer buttons until the control transitions from BoundEmpty to BoundSelected.
- Select the RecipeView instance on the screen in the WinCC Flexible ES.
- Open the Properties dialog (right-click > Properties or Alt+Enter).
- Navigate to the Miscellaneous or Behavior tab (label varies by SP).
- Set Lock buttons until record is selected =
True. - Recompile and re-transfer the project to the HMI.
- Cycle power on the HMI and verify the alarm is no longer generated by attempting to press the (now-disabled) Read button with no record selected.
Resolution Path B: Suppress the System Message in the Alarm Class
If the alarm is desired as a safety feedback ("you cannot press Read without selecting a record"), but the engineer does not want it logged as an error, the alarm class can be reconfigured to route the system message to a Warnings or Information class instead of Errors:
- Open Project > HMI Alarms > Alarm Classes.
- Create a new class named Recipe (or use an existing low-priority class).
- Set the Display Symbol to
i(information icon) instead of!. - In Project > HMI Alarms > System Events, find alarm #5 and remap it to the new class.
- Recompile and re-transfer.
Resolution Path C: Use the PLC Mailbox Instead of RecipeView
For engineers who do not need the RecipeView UI affordance (drag-and-drop, file browsing, etc.), the recipe handling can be moved back to the PLC and the HMI can use the WinCC Flexible Recipe tag object with a simple Mailbox interface. This was the source engineer's original approach and eliminates the RecipeView state machine entirely.
| Tag | Direction | Width | Purpose |
|---|---|---|---|
| MBOX_CMD | HMI → PLC | WORD | Command code (1=Select, 2=Read, 3=Write, 4=Save) |
| MBOX_STATUS | PLC → HMI | WORD | Status code (0=Idle, 1=Busy, 2=Done, 3=Error) |
| MBOX_RECIPE_NO | HMI → PLC | WORD | Selected data record number |
| RECIPE_DATA[0..n] | Bidirectional | WORD/INT/REAL | Array of recipe tags |
The PLC mailbox sequence for a typical recipe read is:
- HMI sets
MBOX_RECIPE_NO = 5andMBOX_CMD = 1(Select). - PLC acknowledges by setting
MBOX_STATUS = 2(Done). - HMI sets
MBOX_CMD = 2(Read from PLC). - PLC populates
RECIPE_DATA[]and setsMBOX_STATUS = 2. - HMI reads the array and displays it on the screen. The RecipeView object is not involved.
Resolution Path D: Clear the Alarm at Startup
If the alarm is generated only once at HMI boot time and is considered cosmetic, a startup script can clear it from the alarm buffer:
' VBScript in HMI startup
Sub ClearRecipeViewStartupAlarm()
Dim alarm As HmiAlarm
For Each alarm In HmiRuntime.Alarms
If alarm.Name = "PLEASE SELECT RECIPE TO RUN" Then
alarm.Clear ' acknowledge and clear
End If
Next
End Sub
Call this routine from the Project > Scheduler > Startup task with a 1-second delay after boot. This keeps the alarm view clean without changing the project structure.
Verification Procedure
After applying any of the resolutions above, perform the following verification sequence on the HMI:
- Power cycle the HMI panel.
- Wait for the boot screen to clear and the main screen to load.
- Open the Alarm View window.
- Verify that no PLEASE SELECT RECIPE TO RUN entry is present.
- Navigate to the screen containing the RecipeView control.
- With no data record selected, attempt to press the Read, Write, and Transfer buttons. If LockUntilRecordSelected is enabled, the buttons should be disabled (greyed out). If not, the alarm should appear with the proper class symbol.
- Select a data record from the RecipeView list. The action buttons should become enabled.
- Press Transfer and verify the recipe data is written to the PLC tags.
- Acknowledge any remaining alarms and verify the alarm log is clean.
Related System Messages and Edge Cases
| System Msg ID | Default Text | Trigger |
|---|---|---|
| 80010 | RECIPE FILE WRITE ERROR | File system full or read-only media |
| 80011 | RECIPE FILE READ ERROR | File missing or corrupt |
| 80012 | RECIPE SYNTAX ERROR | Recipe CSV/XML malformed |
| 80013 | PLC CONNECTION LOST | MPI/Profibus/Ethernet bus failure |
| 80014 | DATA RECORD TRANSFER ABORTED | Operator pressed Cancel during transfer |
| 80015 | PLEASE SELECT RECIPE TO RUN | Action button pressed with no record selected |
| 80016 | NO RECIPE DEFINED | RecipeView configured but no recipe object exists |
| 80017 | RECIPE NAME INVALID | Recipe name contains illegal characters |
All of the above messages are routed through the same alarm class system. When diagnosing "phantom" alarms in a WinCC Flexible project, the first step is always to confirm whether the alarm text matches a system message in this table before chasing PLC tag triggers.
Frequently Asked Questions
What does the PLEASE SELECT RECIPE TO RUN alarm in WinCC Flexible 2008 RecipeView mean?
It is a system message (ID 80015) raised by the RecipeView state machine when an operator presses a Read, Write, or Transfer toolbar button while no data record is currently selected. The text is stored in the WinCC Flexible runtime resource table and is logged in the Errors alarm class as alarm number 5.
Why is the alarm showing in the Alarm View even though the recipe transfer to the PLC works?
WinCC Flexible logs the alarm at the moment the action button is pressed, before the data record is selected. The recipe transfer itself succeeds once a record is chosen, but the alarm entry from the earlier invalid action remains in the log until acknowledged. Enable the LockUntilRecordSelected property to prevent the invalid action entirely.
Where do I find the RecipeView system alarm text in the project editor?
Open Project > HMI Alarms > System Events. The text PLEASE SELECT RECIPE TO RUN is also mirrored in the Errors alarm class at alarm number 5. In some translated projects it can be found under Analog Alarms as well, which is a common point of confusion for engineers who do not normally use analog alarms.
Can I delete the PLEASE SELECT RECIPE TO RUN alarm from the project?
No — WinCC Flexible regenerates the system alarm entry on every compile. The recommended fix is to remap it to a less severe alarm class (Warnings or Information) or to enable LockUntilRecordSelected on the RecipeView control so the action that triggers the alarm is blocked.
Is there a way to handle recipes without the RecipeView control and avoid this alarm entirely?
Yes. Use the WinCC Flexible Recipe tag object combined with a PLC mailbox interface. The HMI writes a command code (e.g. 1=Select, 2=Read) to a word tag on the PLC, the PLC responds on a status word, and the recipe data is transferred as a plain array of tags. This eliminates the RecipeView state machine and all of its associated system messages.