Resolving PCS 7 OCM Option Hidden for CFC Faceplate Link

David Krause13 min read
HMI / SCADASiemensTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

Problem Overview

When configuring Operator Control and Monitoring (OCM) faceplates in Siemens PCS 7, engineers encounter a situation where the OCM option in the CFC block properties is hidden, greyed-out, or unavailable, preventing the block instance from being linked to its associated faceplate. The symptom appears in the SIMATIC PCS 7 engineering station after a custom function block type is created, imported, or modified, and is recompiled. Although the CFC chart compiles without errors, the block instance Properties dialog never exposes the OCM tab, and the instance cannot be registered as an operator-controllable element on the WinCC Operator Station (OS) picture. The result is that the faceplate cannot be assigned, the block icon and faceplate cannot be created, and runtime access to I/O, limits, messages, and trends is blocked.

This fault is almost always a system-attribute configuration error on the block type itself rather than a defect in the faceplate designer or the OS server. PCS 7 decides whether a block instance is eligible for the OCM interface based on attributes declared in the FB/FC source code of the block type. When those attributes are missing or set incorrectly, the CFC editor suppresses the OCM tab altogether, regardless of whether the OS server is online or whether the WinCC picture already references the block.

Root Cause: Missing S7_m_c System Attribute

The OCM interface is gated by the system attribute S7_m_c (WinCC-relevant control/monitoring attribute). A block type is eligible for OCM only if at least one I/O parameter (VAR_INPUT, VAR_OUTPUT, VAR_IN_OUT, or a static data point used for operator control) carries the attribute {S7_m_c := 'true'}. If no parameter on the block type is marked with this attribute, the CFC editor treats the block as non-operator-relevant and does not display the OCM tab in the instance properties, so the faceplate link option remains hidden.

The attribute must be assigned in the block source code (the STL/SCL source file that generates the FB/FC compiled by STEP 7), not in the CFC instance. Setting S7_m_c on a single parameter is sufficient to unlock the OCM tab; the attribute then controls which individual parameters are actually exposed to the WinCC OS as operator-relevant tags. The block must subsequently be re-compiled from source so that the system data block (SDB) and the block's interface description contain the attribute flags before the CFC editor can read them.

Required System Attributes for OCM Linkage

To make a block fully operator-controllable through a faceplate, three coordinated system attributes are required in the block source. The minimum requirement for the OCM tab to appear is S7_m_c; the others govern operator input, visibility, and trend suitability.

System Attribute Meaning Effect on WinCC Required?
S7_m_c WinCC-relevant: marks a parameter as belonging to the OCM control/monitoring set Parameter becomes available as a tag on the OS; enables OCM tab in CFC Mandatory for OCM tab to appear
S7_edit Operator can change the value from the faceplate Parameter is shown as writable input control (operator authorization required) Required for input fields
S7_visible Parameter is displayed on the faceplate Element is rendered on the WinCC picture Required for display
S7_archive / S7_archive_entry Parameter can be archived (trend) Tag becomes available for trend/log configuration Required for trend views
S7_shortcut Short text used on faceplate label Tooltip / short label on faceplate element Optional but recommended
S7_unit Engineering unit (e.g. bar, degC) Unit suffix displayed and used for scaling Recommended for process values

Step-by-Step Solution

  1. Open the block source in STEP 7 / SCL/STL editor. In SIMATIC Manager, navigate to the S7 program, expand Blocks, right-click the FB (e.g. FB100) and select Object Properties > Source, or open the corresponding SCL/STL source from the Sources folder.
  2. Declare the system attributes at the parameter or block header level. Two equivalent methods are supported by the PCS 7 compiler:

Method A — Block-level declaration (applies to the whole block):

FUNCTION_BLOCK FB100
{ S7_m_c := 'true' }
TITLE = 'Custom Motor Block'
VERSION : '1.0'
VAR_INPUT
  Run_Enable   : BOOL ;   // operator-controllable
  Setpoint     : REAL ;   // operator-controllable
END_VAR
VAR_OUTPUT
  Running      : BOOL ;   // operator-monitored
  ActualValue  : REAL ;   // operator-monitored
END_VAR

Method B — Parameter-level declaration (selective):

VAR_INPUT
  Run_Enable   : BOOL { S7_m_c := 'true'; S7_edit := 'true'; S7_visible := 'true' };
  Setpoint     : REAL { S7_m_c := 'true'; S7_edit := 'true'; S7_visible := 'true' };
END_VAR
VAR_OUTPUT
  Running      : BOOL { S7_m_c := 'true'; S7_visible := 'true' };
  ActualValue  : REAL { S7_m_c := 'true'; S7_visible := 'true' };
END_VAR
  1. Save the source file and compile the block. From Sources, right-click the file and choose Compile. Verify in the STEP 7 message window that the FB was generated without errors and without warnings. If the compiler reports attribute syntax errors, the FB is not refreshed and the OCM tab will not appear.
  2. Update the type / instance in CFC. In the CFC editor open the chart that contains the block instance. Select the block, right-click and choose Block > Update Instance (or Type Update if a type change occurred). This forces the CFC editor to read the freshly compiled interface description and the new attribute flags.
  3. Re-open the block instance properties. Right-click the block instance, choose Object Properties, and confirm the OCM tab is now visible. The OCM tab contains the link control for the picture / faceplate name.
  4. Enable the OCM option. On the OCM tab, tick Enable for OCM (or the equivalent checkbox in the version-specific dialog) and select the picture name / faceplate reference. The picture must exist in the WinCC picture tree; otherwise the selection list will be empty.
  5. Compile the CFC chart and run the OS server download. The OS must be re-transferred so that the new block-instance-to-faceplate mapping is published in the OS runtime database.

Verifying the OCM Option is Enabled

After completing the steps above, the OCM option should be present and selectable. The following checks confirm the configuration is consistent with the WinCC OS runtime:

  • In CFC: Block instance > Object Properties > OCM tab shows the picture name and the parameter selection list (the per-parameter check-boxes mirror the S7_m_c attribute from the source).
  • Compile the S7 program: the download of the program to the AS must succeed without consistency errors. The CFC compiler writes an entry per OCM-relevant block into the OS data block structure.
  • Transfer the OS: from WinCC Explorer, run OS Project Editor and then Compile OS. The OS server picture tree should now contain the faceplate reference.
  • Runtime check: start the OS runtime and open the picture that should host the faceplate. The block icon should be visible and clicking it should open the faceplate with read/write access according to the S7_edit flags.

Common Pitfalls and Why the OCM Tab Still Stays Hidden

Symptom Likely Cause Remedy
OCM tab absent after editing attribute FB was not recompiled from source; CFC instance still references old type Right-click source → Compile, then Update Instance in CFC
OCM tab present but all parameters greyed No parameter has S7_m_c := 'true' in the source Add S7_m_c to at least one operator-relevant parameter
OCM tab present, picture drop-down empty WinCC picture not in the project, or faceplate file missing from picture tree Open the picture in WinCC Explorer, then re-run OS compile
Faceplate opens but inputs are read-only S7_edit attribute missing on that parameter Add S7_edit := 'true' in the source and recompile
OCM tab present, OS download reports "No operator-relevant block" Block placed in wrong S7 program; OS cannot resolve AS-OS connection Verify AS-OS Assignment in the plant view and re-download OS
Attribute syntax accepted but ignored at runtime Attribute is on VAR_TEMP (temporary), which is not transferred to OS Move S7_m_c to VAR_INPUT / VAR_OUTPUT / VAR_IN_OUT
OCM tab disappears after PCS 7 migration Block re-imported without re-compiling source; old SD7 type container Re-compile source and update type FB in master data library

Diagnostic Procedure Using the CFC Editor

When the OCM tab is still not visible after the standard remedy, walk through the following diagnostic steps to isolate the issue:

  1. Open the block instance in CFC and confirm the instance number / instance DB exists in the S7 program Blocks folder.
  2. Open the corresponding instance DB in STEP 7 and inspect the Object Properties > Attributes tab. If the Operator-relevant flag is not set, the block type itself was never compiled with the attribute — the S7_m_c setting never reached the block.
  3. From the SIMATIC Manager menu, run Options > PCS 7 > Library Update Wizard to validate the block library against the master data library. Mismatched version timestamps are a common reason for stale attribute flags.
  4. Check the S7_m_c setting on every input/output of the FB. In the source file, every parameter intended for operator control should appear in the S7_m_c list. If a single critical parameter is missing, it will be invisible in WinCC even though the OCM tab is visible.
  5. Verify the OS server connection in the plant view. The AS-OS assignment must exist or the OS will not request the operator-relevant data even if the block has the right attributes.

Block Type, Type FB, and Type Instance

PCS 7 distinguishes three block layers. Misunderstanding the layers is a frequent cause of "OCM option missing" reports:

  • Type FB (master type) — the canonical FB that lives in the master data library. S7_m_c must be set on the type FB in the library source. The library FB is then re-compiled and distributed.
  • Type / schema in the S7 program — the local copy of the FB imported into the S7 program of the AS. The type FB is referenced by every instance in the CFC chart.
  • Instance DB (instance) — the per-instance data block created by the CFC compiler. The instance inherits the OCM eligibility from the type FB; the instance itself is not where S7_m_c is configured.

If a new version of the type FB is created in the library and the S7 program is updated, the CFC instance must perform a Type Update. Skipping the type update leaves the instance tied to the old type interface, and the OCM tab will not reflect the new attributes even though the type FB in the library is correct.

OS Server, Picture Tree, and Faceplate Designer

The OCM link is only meaningful when the WinCC picture tree contains the faceplate picture file. PCS 7 faceplates are stored as PDL (Picture Designer Library) files under the OS project and referenced through the picture name. The recommended workflow is:

  1. Create the faceplate with the PCS 7 Faceplate Designer (formerly APL Faceplate Designer) in the master data library.
  2. Distribute the faceplate picture to the OS project via the OS Project Editor / Compile OS step.
  3. Confirm the picture name appears in the OCM picture-name drop-down of the block instance.
  4. Transfer the OS to the OS server and verify in the runtime that the block icon opens the faceplate.

If the faceplate has not been generated and placed in the OS picture tree, the OCM picture-name selector will be empty and the link cannot be created. The fix is to first generate the faceplate in the library, distribute it, then revisit the OCM tab.

Version-Specific Behaviour

The behaviour of the OCM tab and the location of the S7_m_c attribute syntax is stable across PCS 7 V7.x, V8.x, and V9.x, but the menu names change:

  • PCS 7 V7.x: Object Properties dialog has an explicit Operator Control and Monitoring tab. Picture name is set in the Picture sub-tab.
  • PCS 7 V8.x: Same tab structure, but additional Operator authorization sub-fields appear; the APL block library provides template FBs (MOT_SPEED, MOT_REV, VALVE_ANA, etc.) with the attribute set already configured.
  • PCS 7 V9.x: Tab is renamed OCM; the picture-name selection is integrated with the picture-tree search of the OS project. The S7_m_c attribute syntax in SCL is unchanged.

For new projects, start from the APL (Advanced Process Library) template blocks in the master data library. They already include S7_m_c, S7_edit, and S7_visible on every operator-relevant I/O. The attributes can be inspected by opening the FB source in the library and reading the attribute block at the parameter declaration — this also serves as a working template for new custom blocks.

Verification Checklist

  • [ ] Source file has S7_m_c := 'true' on at least one operator-relevant parameter (or at the block header).
  • [ ] Source compiled without errors in STEP 7 / SCL.
  • [ ] Type FB in the master data library contains the attribute; type FB in the S7 program is up to date.
  • [ ] CFC instance has been updated to the latest type interface (right-click → Type Update).
  • [ ] OCM tab is visible in the block instance Properties.
  • [ ] Picture name / faceplate reference is set to an existing picture in the OS picture tree.
  • [ ] CFC chart has been compiled and downloaded to the AS.
  • [ ] OS has been compiled and transferred to the OS server.
  • [ ] Runtime test: faceplate opens, values are visible, authorized operator can change writable parameters.

Related Settings That Often Co-Exist

Once the OCM tab is enabled, the following settings should be reviewed in the same source for consistency:

  • Limit attributesS7_hi_limit, S7_lo_limit for alarm thresholds; the limit values can be either constants or operator-modifiable values referenced through S7_m_c-tagged parameters.
  • Message configuration — operator-relevant blocks usually carry MESSAGE / ACK-GLOBAL declarations in the FB source; these must match the message class assignments in the OS message configuration.
  • Operator authorization — OS user rights (Operator, Process operator, Service) are configured at the picture level in WinCC; the block can only honour S7_edit if the logged-in user has the corresponding authorization level.
  • Trend / archive tagsS7_archive and the matching archive configuration in the OS are required if a faceplate trend view is needed.
Important: The S7_m_c attribute is the only attribute that gates the visibility of the OCM tab itself. S7_edit and S7_visible govern per-parameter behaviour, but the OCM tab is hidden when no parameter on the block type has S7_m_c set. Adding the attribute to a single, dedicated operator-input parameter (e.g. a Setpoint or Run_Enable) is the minimum and sufficient change to make the OCM tab appear.
Important: Attribute changes only take effect after the block source is compiled and the CFC instance is type-updated. Editing the FB online or manually editing the instance DB will not propagate the OCM eligibility flag.

FAQ

Why is the OCM option hidden in my PCS 7 CFC block instance?

The OCM tab only appears when at least one I/O parameter on the block type has the system attribute {S7_m_c := 'true'} declared in its FB/FC source. Open the FB source, add S7_m_c := 'true' to one operator-relevant parameter, recompile the source, and run Type Update on the CFC instance.

I added S7_m_c but the OCM tab is still missing — what now?

The block source must be re-compiled and the CFC instance must perform a type update against the freshly compiled type FB. Right-click the source file in the Sources folder and choose Compile, then right-click the CFC instance and choose Block > Update Instance. A stale type container or a manual edit to the instance DB will also keep the tab hidden.

Where exactly should I put S7_m_c — on the block or on each parameter?

Both methods are supported. Block-level {S7_m_c := 'true'} declares the whole block operator-relevant and exposes every parameter. Parameter-level S7_m_c is selective and is the recommended approach because it limits what the OS can read and write. Always combine S7_m_c with S7_edit on inputs the operator can change and with S7_visible on values that should appear on the faceplate.

OCM tab is visible but the picture-name drop-down is empty — why?

The faceplate picture file does not exist in the OS picture tree. Generate the faceplate in the master data library using the PCS 7 Faceplate Designer, distribute it to the OS project, run Compile OS, and then re-open the OCM tab. The picture name will then be selectable.

Do I need to re-download the OS after changing S7_m_c?

Yes. The CFC compiler writes the per-instance operator-relevant flag into the OS data block structure at compile time. A change in the FB attributes requires a CFC compile, a program download to the AS, and an OS compile and transfer to the OS server before the faceplate link is reflected in runtime.

Back to blog