Disabling the OK Button in Siemens PCS 7 IL Faceplates
Siemens PCS 7 operator faceplates are designed around a two-step command philosophy: the operator first presses the command button (e.g., Open, Close, Start, Stop) and then confirms with a dedicated OK button in the command execution area. This two-step sequence is intended to prevent inadvertent actuator changes on critical equipment. On certain types of plant — particularly batch skids, packaged units, and process stages where the operator already has clear situational awareness — the second confirmation step becomes friction rather than safety. This document covers the supported and unsupported paths for hiding or disabling the OK button on IL (Individual Library) faceplates in PCS 7, including the differences between IL-for-PCS 7 and IL-for-S7, the role of the @APLCommandExecutionSteps tag, and the fallback Operator-Control Enable property.
1. Overview — PCS 7 Faceplate Architecture
Every PCS 7 faceplate is a WinCC picture (PDL file) that is composed of:
- A base PDL that contains the static layout, the tag references, and the C-script or VBA logic that drives the object.
- An operation area PDL (also called the command area) that contains the command buttons. In a 2-step faceplate the operation area contains the primary command button plus the OK button that appears in the Command execution strip.
- A set of internal tags that are typically prefixed with
@and live in the WinCC internal tag table. These control the runtime behavior (step count, visibility, operator permission flags, etc.).
The APL (Advanced Process Library) and the older IL (Individual Library) differ in how the operation area is constructed. APL faceplates read the configured step count from a runtime-internal tag and toggle the OK button visibility accordingly. IL faceplates for PCS 7 follow the same convention as APL, but IL faceplates that were originally authored for plain S7 (without PCS 7 shell services) use C-scripting for the command flow and do not read the same internal tag. The remainder of this article separates these two cases clearly because the remedy is different.
For the underlying WinCC faceplate concept, refer to the SIMATIC PCS 7 Operator Station (V9.0) manual and the SIMATIC PCS 7 APL Style Guide (V9.0).
2. Understanding the Two-Step Command Execution
PCS 7 supports a configurable command execution model with three canonical values:
| Value | Behavior | OK button state | Use case |
|---|---|---|---|
| 1 | One-step command. The command is dispatched the moment the operator presses Open or Close. | Not shown | Non-critical indications and read-only acknowledgements. |
| 2 | Two-step command, but the OK button is hidden. The command is dispatched on the first press of the primary button. | Invisible | Single-press operation while still keeping the C-script path that the rest of the faceplate expects. |
| 3 | Two-step command, OK button is shown. The operator must press the primary button and then confirm with OK. | Visible and enabled | Default PCS 7 behavior for critical actuators. |
The numeric value is read at faceplate instantiation time from the @APLCommandExecutionSteps internal tag (or, in some projects, from a project-wide equivalent that the APL Style Guide documents as StepOp). The faceplate compares this value against its visibility condition for the OK button graphic object and decides whether to render the control.
3. APL vs IL Faceplate Differences
| Aspect | APL faceplate | IL faceplate (PCS 7) | IL faceplate (S7 only) |
|---|---|---|---|
| Library namespace | APL (e.g., @PCS7TypicalsAPL) |
IL for PCS 7 (e.g., @PCS7TypicalsIL) |
IL for S7 (legacy, pre-PCS 7 V6.x) |
| Command input | VBS / property binding | VBS / property binding | C-script (CB/Action) |
Reads @APLCommandExecutionSteps? |
Yes | Yes (as of PCS 7 V7.1 SP3 and later) | No |
| 2-step configurable? | Yes | Yes | No (C-script is hard-coded) |
| Property Operator-Control Enable available? | Yes | Yes | Yes |
| Default OK button state | Visible (value = 3) | Visible (value = 3) | Visible (no toggle) |
The key discriminator is the command input mechanism. APL and modern IL-for-PCS 7 faceplates receive the operator action through WinCC property bindings and read the internal tag at configuration load time. IL-for-S7 faceplates use an On Click C-action that immediately issues the command to the PLC; the @APLCommandExecutionSteps tag is never queried, so changing its start value has no effect on the OK button visibility.
4. The @APLCommandExecutionSteps Tag
The @APLCommandExecutionSteps tag is an unsigned 16-bit WinCC internal tag that is referenced by every APL/IL faceplate that supports the step concept. It is created automatically the first time the APL Style Guide is applied to a project.
| Property | Value |
|---|---|
| Name | @APLCommandExecutionSteps |
| Type | Unsigned 16-bit |
| Length | 2 bytes |
| Storage | WinCC internal tag table |
| Default start value | 3 (OK button visible) |
| Read at | Faceplate instantiation / picture open |
| Modification location | Engineering Station (ES) for server-mirrored projects; Client configuration for client-only projects |
Changing the start value is a configuration-time change. The new value is only read the next time the faceplate is instantiated — typically when the picture containing the faceplate is closed and reopened, or when the WinCC runtime is restarted. If the change does not appear immediately, perform a full Graphics Designer recompile and reload the runtime.
5. Step-by-Step: Hiding the OK Button in IL Faceplates for PCS 7
The procedure below assumes a standard PCS 7 V9.0 SP1 or later project with the IL library already installed and at least one IL block type (e.g., a motor block, valve block, or PID controller) already compiled into the master data library.
Prerequisites
- Engineering Station (ES) with WinCC Explorer and Graphics Designer installed.
- Write access to the project and a current backup (export the project from the SIMATIC Manager / TIA Portal before any change).
- User must be a member of the SIMATIC HMI Windows group with Configuration rights.
- Confirm the faceplate being edited is an IL for PCS 7 faceplate and not an IL for S7 faceplate. Open the base PDL in the Graphics Designer, select the OK button graphic object, and inspect Properties > Events > Mouse > Click Action. If the field contains a C-script (e.g.,
BOOL bRet;orprintf(...)), it is an IL-for-S7 faceplate and the procedure in this section will not work — proceed to Section 7 instead.
Procedure
- Open the WinCC Explorer for the OS server that hosts the project.
- In the navigation tree, expand Tag Management > Internal Tags.
- Right-click the
@APLCommandExecutionStepstag and choose Properties. - On the General tab, set the Start value field to
2. - Click OK to commit the change.
- Open the Graphics Designer, recompile all ODKs (Online-Display-Kits) and ODKs+ that reference the affected block types: Tools > Compile > OS Pictures.
- Activate WinCC Runtime (or wait for the OS server to be restarted, depending on the project lifecycle stage).
- Open a picture that contains the IL faceplate. The OK button should no longer be rendered in the command execution area. Pressing Open or Close should now issue the command immediately.
@APLCommandExecutionSteps to 2 makes the OK button invisible. The control is no longer part of the rendered faceplate tree, so it cannot be clicked. If your goal is to keep the button on screen but stop it from functioning, use the Operator-Control Enable method described in Section 6.6. Alternative Method: Operator-Control Enable Property
The Operator-Control Enable property is a per-object permission that exists on every standard WinCC control and on every faceplate graphic object that ships with PCS 7. Setting it to No (or 0) grays the control out at runtime and prevents operator interaction. The control remains on screen, so the operator still sees the visual layout of the faceplate.
Procedure
- Open the base PDL of the affected IL faceplate in the Graphics Designer.
- Select the OK button graphic object in the operation area.
- Open the Properties dialog (right-click > Properties or press Alt+Enter).
- Navigate to Miscellaneous > Operator-Control Enable.
- Set the value to
No. For a dynamic configuration, attach a tag or expression instead of a constant — for example, a project-specific permission tag such asProjectPermissions.CommandStep.EnableOKButton. - Save the PDL, recompile the OS pictures, and reload the runtime.
| Property | Path in dialog | Type | Effect at runtime |
|---|---|---|---|
| Operator-Control Enable | Miscellaneous | Boolean (Yes / No) or dynamic tag | Grays the control when No and blocks operator input |
| Display | Miscellaneous | Boolean or dynamic tag | Hides the control entirely when No |
| Authorization | Security | Authorization level (0–99) | Requires operator to be in a user group with the matching level |
The Authorization property is the recommended companion to Operator-Control Enable. Even with the OK button hidden, the C-script that issues the command should still validate the operator's authorization level. This keeps the faceplate behavior consistent with the rest of the PCS 7 security model.
7. IL Faceplates for S7 (Non-PCS 7) — Limitations
IL faceplates that were authored for the legacy S7 HMI environment — that is, a WinCC project that is not part of a PCS 7 shell — use a C-action on the On Click event of each command button to dispatch the operator's intent directly to the PLC. The C-action typically calls a wrapper function (e.g., S7SetBit(...) or a project-specific C function) and then optionally waits for a status bit. There is no read of @APLCommandExecutionSteps in the C-action, so changing the internal tag's start value has no effect on the OK button visibility.
For these faceplates the supported paths are:
- Use Operator-Control Enable. This is the only configuration-level way to disable the OK button on an IL-for-S7 faceplate without rewriting the C-script. The button is grayed out, and clicks are ignored by WinCC.
-
Use Display = No. This removes the control from the screen entirely. It is the visual equivalent of
@APLCommandExecutionSteps = 2. -
Edit the C-script. Open the base PDL, switch the C-action editor to Edit mode, and rewrite the click handler so that the
returnstatement suppresses the OK-button confirmation path. This requires the original C-script source and the project build environment; it is not a runtime tweak. - Migrate the faceplate. Re-author the block type using the APL or IL-for-PCS 7 templates. The migration is the cleanest long-term answer if the project will be maintained for more than one major PCS 7 release cycle.
8. Tag Configuration in the Operation Area PDL
The operation area PDL is the small picture that contains the primary command button and the OK button. In an APL faceplate this PDL exposes a StepOp property on the cmnObj (common object) that is wired at compile time to the @APLCommandExecutionSteps internal tag.
To verify the wiring:
- Open the operation area PDL of the affected block type. For a valve, this is typically named
@APL_VlvOpArea.pdl(or the IL equivalent@IL_VlvOpArea.pdl). - Select the
cmnObjinstance on the PDL canvas. - Open Properties > Miscellaneous > StepOp.
- Confirm that the right-hand column contains the
@APLCommandExecutionStepstag. If the field is empty, the faceplate has been hand-edited and the tag wiring must be restored before the start-value change will propagate.
For IL faceplates that are missing the StepOp wiring, the practical outcome is exactly the symptom reported in the field report: the OK button stays visible regardless of the start value. The fix is to reattach the @APLCommandExecutionSteps tag to the StepOp property, recompile, and reload.
9. Engineering Station vs. Client/Server
The @APLCommandExecutionSteps tag is stored in the WinCC internal tag table of the OS server. In a multi-client configuration, each client receives the tag value from its assigned preferred server. The implications are:
| Deployment scenario | Where to make the change | Verification step |
|---|---|---|
| Single-station OS (one PC, server + client) | On the OS station itself. | Open a picture on the OS station. OK button should be hidden. |
| Dedicated server + dedicated clients | On the server project, then download to clients. | Open a picture on a client. OK button should be hidden. |
| Redundant server pair (OS Server 1 / OS Server 2) + clients | On the ES, download to both servers. | Failover and re-check on the standby server. |
| WebNavigator client | On the OS server project. The internal tag replicates to the WebNav process. | Open the same picture in a WebNav session. |
A common failure mode is to edit the start value on the ES but forget to download the OS project to the runtime server. The Graphics Designer shows the new value, but the runtime keeps the old one until the OS project is downloaded. Always check the OS Project Editor > Compile and Download log for a successful transfer.
10. Verification and Commissioning
After applying the change, perform the following verification steps before signing off the modification:
- Visual verification. Open a representative picture that contains at least three different IL faceplate types (e.g., a motor, a valve, a PID controller). Confirm that the OK button is not visible in the command execution area of each.
- Functional verification. With the operator logged in at the required authorization level, press Open on a valve faceplate. The actuator should start to move within the configured command execution timeout (default 5 s in PCS 7 V9.0, per the Operator Station manual). Repeat for Close.
- Audit trail verification. Open the WinCC Alarm Logging / Audit trail. The operator action should be recorded as a single entry, not as a "click on Open" followed by a "click on OK" entry.
- Authorization regression check. Log in as an operator that does not have the command authorization level. The primary command button should still be grayed. If the primary button is enabled, the C-script authorization check has been bypassed — investigate before going live.
- Failover regression check (redundant servers only). Force a failover from OS Server 1 to OS Server 2. Repeat the visual and functional verification on the now-active server.
- Client regression check. Open the same picture on at least one client station. Verify the OK button is still hidden and the command executes with a single click.
11. Troubleshooting Matrix
| Symptom | Likely root cause | Resolution |
|---|---|---|
| OK button still visible after setting start value to 2. | Faceplate is IL-for-S7; C-script is hard-coded. | Switch to Operator-Control Enable = No, or migrate the faceplate to IL-for-PCS 7. |
| OK button still visible after setting start value to 2. |
StepOp property on cmnObj is empty. |
Reattach @APLCommandExecutionSteps to StepOp in the operation area PDL. |
| OK button still visible after setting start value to 2. | OS project not downloaded to the runtime server. | Use the OS Project Editor to download the project and restart the runtime. |
| OK button hidden on the ES, still visible on a client. | Change made on the client copy of the project, not the server. | Make the change on the server project, then download to the client. |
| OK button hidden, but the command is not dispatched. | The C-script or VBS handler still expects a 2-step click sequence. | Inspect the click action; replace the 2-step sequence with a single SetTag / S7SetBit call. |
| OK button hidden, command works, but the audit log is empty. | Audit trail not enabled for the block type. | Enable the Operator Action audit option in the block properties. |
| OK button hidden on the server, visible on the WebNavigator client. | WebNav is reading a cached version of the picture. | Clear the WebNav cache, restart the WebNav service, and re-open the picture. |
Setting @APLCommandExecutionSteps to 2 disables the OK button on some faceplates but not others. |
Mixed library: some blocks are APL, some are IL-for-PCS 7, some are IL-for-S7. | Audit every block type in the master data library; align the wiring before changing the start value. |
12. Safety and Operational Considerations
Removing the OK-button confirmation step reduces the friction in the operator workflow but it also removes a built-in safeguard against inadvertent commands. Before deploying the change to a live plant, the following items should be reviewed and signed off by the process safety and operations teams:
- Confirm that the affected actuators are not part of a Safety Instrumented Function (SIF). The OK-button step is a Human-Machine Interface (HMI) confirmation and is not a substitute for the safety PLC, but removing it from the HMI on a SIF-protected actuator can complicate the operator's mental model.
- Review the operator competency matrix. If the panel is staffed by junior operators, the two-step confirmation is often a useful training aid.
- Document the change in the project Functional Specification. Future modifications to the project may rely on the documented two-step behavior; removing it without documentation is a common cause of audit findings.
- For 21 CFR Part 11 regulated environments, ensure the audit trail captures the operator action on the primary button press. Without the OK button, the audit entry is generated by a different trigger and the audit query templates must be updated.
@APLCommandExecutionSteps at its project default value (3) in the master data library, and override the value on a per-faceplate basis using the operation area PDL or a dynamic property. This way, the global setting can be reverted with a single tag edit if a safety review requires it.What is the difference between the APL and IL libraries in PCS 7?
APL (Advanced Process Library) is the modern block and faceplate library that ships with PCS 7 V8.x and later. IL (Individual Library) is the older library that dates back to PCS 7 V6.x. Both expose the same two-step command concept, but APL faceplates use VBS property bindings and IL-for-PCS 7 faceplates use a mix of C-script and VBS. IL-for-S7 faceplates are legacy artifacts that use C-scripts only and do not read the @APLCommandExecutionSteps tag.
What value of @APLCommandExecutionSteps hides the OK button?
Set the start value of @APLCommandExecutionSteps to 2. The faceplate treats 2 as a two-step command where the OK button is rendered invisible. The default value of 3 keeps the OK button visible and required. A value of 1 switches the faceplate to one-step command mode.
Why does the OK button stay visible after I change the start value to 2?
The most common reason is that the faceplate is an IL-for-S7 faceplate with a C-script click handler that does not read the internal tag. The other common reason is that the StepOp property on the cmnObj instance in the operation area PDL is empty, so the tag is not wired into the faceplate. Open the base PDL and verify that the OK-button click action uses a VBS handler that references StepOp, not a C-script.
Can I disable the OK button without hiding it?
Yes. Open the base PDL in the Graphics Designer, select the OK button graphic object, and set the Properties > Miscellaneous > Operator-Control Enable property to No. The button is grayed out at runtime and operator clicks are ignored. This works on APL, IL-for-PCS 7, and IL-for-S7 faceplates alike.
Do I need to change anything on the client stations after editing the start value?
Yes. In a multi-client configuration, the @APLCommandExecutionSteps tag lives on the OS server. The change must be made on the server project and downloaded to the client, or the client will continue to display the old value. After the download, restart the WinCC Runtime on the client (or trigger a full picture re-compile) to force the faceplates to re-read the tag.