Customizing VlvMotL Block Icons in PCS 7 WinCC Faceplates

David Krause12 min read
HMI / SCADASiemensTutorial / How-to
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

Customizing VlvMotL Block Icons in PCS 7 WinCC Faceplates

The standard Siemens PCS 7 VlvMotL (Valve Motor, Large) block from the Advanced Process Library (APL) provides a fixed set of inputs, outputs, alarms, and faceplate views designed for pneumatically or motor-operated valves. In real plant retrofits and brownfield integrations, however, the field device frequently exposes additional status information that is not modelled in VlvMotL. Typical examples include Valve Jammed, Loss of Control, Torque Alarm, Number of Operations, Operating Hours, and Remote Feedback. These tags often arrive in the controller over Foundation Fieldbus, PROFIBUS PA, HART multiplexers, or hard-wired I/O.

This reference describes four engineering methods to surface these extra signals inside the WinCC Runtime faceplate of an existing VlvMotL instance: (1) APL multi-instance faceplate, (2) SelFp1 / SelFp2 select-faceplate jumpers, (3) a derived custom block type, and (4) the Industry Library JumDistributor. The article assumes PCS 7 V9.0 SP2 or later with APL V9.0, WinCC Runtime Professional V16/V17, and the CFC editor from the SIMATIC Manager or PCS 7 engineering toolset.

Engineering rule: Never modify the original APL block in the master data library. Always create a derived block type or use a multi-instance wrapper so that future APL hotfix upgrades can replace the original blocks without overwriting custom code.

1. Prerequisites and Toolchain

Before customizing VlvMotL faceplates, verify the following engineering station and runtime prerequisites.

Item Required Version / Setting Notes
PCS 7 Engineering V9.0 SP2 or V9.1 Includes APL V9.0 with VlvMotL block icon 12
APL Library APL V9.0 (or V8.2 with manual style adjustments) Located in master data library under @APL_V9
WinCC Explorer V7.5 / V16 / V17 (matches OS Server) Picture Tree and Alarm Logging required
CFC / SFC Editor From SIMATIC Manager or PCS 7 Type import via "Update Block Type" enabled
GraphVis / Styleguide APL Styleguide PDF, latest revision Defines multi-instance faceplate construction rules
Faceplate Designer WinCC Graphics Designer with APL symbols Ensure "@PG_VlvMotL_Preview" opens without warnings

For Foundation Fieldbus integration, confirm that the FF block is imported into CFC as an instance and that its outputs (e.g. VALVE_JAMMED, TORQUE_ALM, OP_TIME, OP_COUNT, RMT_FBK, CTRL_LOSS) are available as chart I/O or as interconnected output pins.

2. Architecture of the Standard VlvMotL Block

The APL VlvMotL block exposes a fixed I/O interface. The signals relevant for motor status extensions are summarised in the table below.

I/O Pin Direction Data Type Initial Purpose Reuse Possibility
ExtVa104 Input (process) REAL External value 1 Operating hours, number of operations
ExtVa105 Input (process) REAL External value 2 Cycle time, torque
ExtVa106 Input (process) REAL External value 3 Number of starts
ExtMsg1 Input (process) BOOL External message 1 Valve Jammed
ExtMsg2 Input (process) BOOL External message 2 Loss of Control
ExtMsg3 Input (process) BOOL External message 3 Torque Alarm
Feature.Bit32 ... 36 Input (parameter) BOOL Behavioural feature bits Enable new message class routing
Rbk_Open / Rbk_Close Input (process) BOOL Position feedback Local feedback only

The faceplate @PG_VlvMotL_Preview renders standard values from the FB and exposes operator buttons Open, Close, Stop, and a Maintenance view. The Messages view already lists ExtMsg1 to ExtMsg3 as configurable external messages; the Trends view can be extended with ExtVa104 through ExtVa106.

3. Topology of the Customization

The diagram below shows the four available integration paths. The signal source is typically a Foundation Fieldbus transducer block (TB) or a motor management relay (SIRIUS 3UF7, SIMOCODE pro) that exposes the diagnostics.

Field Device FF TB / SIMOCODE / Relay CFC Chart FF Driver + VlvMotL WinCC Faceplate @PG_VlvMotL_Preview SelFp (JumDist) Multi-Instance Custom FB Type ExtMsg/ExtVa Jam, Torque, OpCount, OpHours, RmtFbk, CtrlLoss CFC interconnect to ExtMsg1..3, ExtVa104..106 Derive type from FB include add. signals Combine multiple faceplates in one window Up to 5 sibling faceplates jump-distributed

4. Method 1 — Reusing ExtMsg and ExtVa Inputs

The fastest, lowest-risk path is to wire the new diagnostics into the spare pins of the unmodified VlvMotL. This avoids any new block type and any change to the faceplate *.plf graphic.

4.1 Step-by-step procedure

  1. Open the CFC chart that contains the VlvMotL instance.
  2. Click the ExtMsg1 input and select Interconnection to Address or wire it to the corresponding FF output, for example:
    ExtMsg1 := "MOT_001".VALVE_JAMMED
  3. Map the remaining digital alarms:
    ExtMsg2 := "MOT_001".CTRL_LOSS
    ExtMsg3 := "MOT_001".TORQUE_ALM
  4. Map the analog signals to the spare ExtVa inputs:
    ExtVa104 := "MOT_001".OP_HOURS   (REAL, h)
    ExtVa105 := "MOT_001".OP_COUNT   (REAL, dimensionless)
    ExtVa106 := "MOT_001".RMT_FBK   (REAL 0/1, scaled)
  5. In the block instance properties of VlvMotL, set the External Messages and External Values text attributes to descriptive strings, e.g. "Valve Jammed", "Operating hours [h]".
  6. Compile the OS, transfer, and verify in WinCC Runtime that the Messages and Trends tabs of the faceplate show the new entries.
Limit: Only three external messages and three external values are available. If the application requires more than three discrete alarms, escalate to Method 2 or Method 3.

4.2 Attribute text examples

The APL block reads free-text attributes that you configure on the instance. The example below is what the operator will see in the alarm line and trend legend.

Block Attribute Suggested Text
MsgTxtExt1 Valve Jammed (MOT_001)
MsgTxtExt2 Loss of Control Loop (MOT_001)
MsgTxtExt3 Torque Limit Exceeded (MOT_001)
ExtVa104_Unit h
ExtVa105_Unit cnt
ExtVa106_Unit bool

5. Method 2 — Select Faceplate (SelFp1 / SelFp2)

When an additional tag already has a fully engineered APL faceplate (for example the MotSpd block, the OpHrs block, or a custom Counter block), the operator can open that faceplate from inside the VlvMotL faceplate. The mechanism uses the SelFp1 and SelFp2 inputs of the standard APL block.

5.1 Wiring the SelFp inputs

On the VlvMotL instance, open the Inputs tab. The two select faceplate inputs accept any block instance address whose faceplate is registered with the OS picture tree.

  1. Create the OpHrs block instance in the same CFC chart as the VlvMotL (or in a sibling chart of the same unit). Example chart name: UNIT_101 / MOT_001_OPHRS.
  2. Wire VlvMotL.SelFp1 to the OpHrs instance address:
    SelFp1 := "UNIT_101"."MOT_001".OPHRS
  3. Wire the operating hours value into the OpHrs block:
    OPHRS.Value := "MOT_001".OP_HOURS
  4. Repeat for the cycle counter and the motor protection block:
    SelFp2 := "UNIT_101"."MOT_001".CYCCNT
  5. Compile OS, perform picture tree update. The faceplate Standard view will show a new button labelled with the user-defined text of the SelFp configuration.

5.2 SelFp button behaviour

The faceplate Additional Views section will display one button per used SelFp input. Clicking the button opens a new faceplate window at runtime, with full operator authorization scope inherited from the parent VlvMotL instance.

Engineering tip: Use SelFp for read-only diagnostic blocks (counters, runtime, trends). Do not place command blocks on the SelFp chain because operator confirmations can stack and produce unintended double-confirmation prompts.

6. Method 3 — Custom Block Type with Multi-Instance Faceplate

This is the canonical method described in the APL Styleguide. A custom FB is generated that contains the VlvMotL as a multi-instance (static instance) together with one or more "shadow" FBs that hold the extra signals. A single custom faceplate renders all values.

6.1 Step-by-step procedure

  1. In the S7 program, create a new FB (e.g. FB1180 "VlvMotLDia") with the following data layout:
    FUNCTION_BLOCK VlvMotLDia
    VAR
      VlvMotL_inst : VlvMotL;     // static instance of APL block
      OpHrs_inst   : OpHrs;       // runtime counter
      CycCnt_inst  : CycCnt;      // operations counter
      Jam          : BOOL;        // digital alarm 1
      CtrlLoss     : BOOL;        // digital alarm 2
      TorqueAlm    : BOOL;        // digital alarm 3
      RmtFbk       : BOOL;        // remote feedback
    END_VAR
  2. Inside VlvMotLDia, copy the input / output / static variable interface of the original VlvMotL into a new chart interface so that CFC chart I/O appears on the wrapping chart.
  3. Add chart I/Os for the extra diagnostics. Use the same symbol naming convention as the plant standard: JAM_AH, CTRL_LOSS, TRQ_ALM, OPHRS_PV, CYCCNT_PV, RMT_FBK.
  4. Compile the FB as a block type using Block > Compile > Type in the SIMATIC Manager. Provide the FB number, version, and attribute flags:
Attribute Value Meaning
S7_m_c true Block is a multi-instance-capable type
S7_tasklist OB35, OB100 Cyclic / restart OB execution
s7_alarm false No OB40 interrupt needed
s7_release [email protected] Type / version for OS compilation

6.2 Building the custom faceplate

  1. Open WinCC Graphics Designer and copy the standard faceplate @PG_VlvMotL_Preview.pdl to a new name, e.g. @PG_VlvMotLDia_Preview.pdl.
  2. Insert additional APL Status Display and APL Bar Graph objects in the Standard view, configured to the new structure elements: Jam, TorqueAlm, OpHrs_inst.Value, CycCnt_inst.Value, RmtFbk.
  3. Update the variable mapping in the property dialog: Configuration > Tag > Linked Structure > VlvMotLDia.
  4. Insert an additional APL Message Line in the Messages view that references the new digital alarms with their own message class (e.g. AH_Valve for jam, AH_Drive for torque).
  5. Save the faceplate and register it in the OS picture tree under the parent Motors / Valves node.

6.3 Compiling the OS

  1. In PCS 7, open the OS project and select OS > Compile OS. Activate the option Update picture tree from plant view.
  2. Watch the compilation log for warnings such as "No faceplate found for type VlvMotLDia". This indicates a missing or misnamed *.plf / *.pdl file.
  3. Transfer the OS to the target server, then start the runtime and verify the new faceplate opens without "Type unknown" errors.
Critical: After every APL hotfix or upgrade, recompile the custom FB after the APL blocks, and re-run Type Update in the S7 program. This guarantees the multi-instance VlvMotL inside the wrapper picks up any FB signature change.

7. Method 4 — Industry Library JumDistributor (SelFp Jump-Distribution)

The Industry Library (IL) is a paid PCS 7 add-on. One of its blocks, JumDistributor, can call up to five child faceplates from a single parent faceplate via a configurable jump list. It is functionally similar to SelFp but supports runtime reordering and per-jump authorisation levels.

JumDistributor Input Connection Target
SelFp1 OpHrs block
SelFp2 CycCnt block
SelFp3 Motor protection block (MotProt)
SelFp4 Alarm summary block
SelFp5 Drive diagnostics block

The Industry Library documentation, page 132 of the function manual, lists the available SelFp variants and the operator authorisation matrix that the JumDistributor enforces.

8. Mapping the Requested Diagnostic Tags

The original engineering request listed six specific tags. The mapping below shows which method covers which tag, and the recommended interconnect.

# Tag Data Type Recommended Method Interconnect
1 Valve Jammed BOOL Method 1 (ExtMsg1) VlvMotL.ExtMsg1 := FF.JAMMED
2 Loss of Control BOOL Method 1 (ExtMsg2) VlvMotL.ExtMsg2 := FF.CTRL_LOSS
3 Torque Alarm BOOL Method 1 (ExtMsg3) VlvMotL.ExtMsg3 := FF.TORQUE_ALM
4 Number of Operations REAL Method 2 (SelFp) or Custom FB Connect to CycCnt.Value
5 Operating Hours REAL Method 2 (SelFp) or Custom FB Connect to OpHrs.Value
6 Remote Feedback BOOL Method 1 (ExtVa106, scaled 0/1) VlvMotL.ExtVa106 := FF.RMT_FBK

For the analog values (operations counter, operating hours), the APL trend object can be embedded directly in the faceplate by mapping the trend to ExtVa104 (operating hours) and ExtVa105 (operations). A sample CFC snippet that converts an FF counter pulse to an engineering unit is shown below.

// CFC code (structured text excerpt) for cycle counter
IF "MOT_001".CYC_PULSE AND NOT "latch_prev" THEN
    "UNIT_101"."MOT_001".CYCCNT.VALUE := "UNIT_101"."MOT_001".CYCCNT.VALUE + 1.0;
    "latch_prev" := TRUE;
ELSE
    IF NOT "MOT_001".CYC_PULSE THEN
        "latch_prev" := FALSE;
    END_IF;
END_IF;

9. Verification and Acceptance Test

Run the following checks before signing off the customization. Each row must be ticked in the FAT/SAT protocol.

Step Expected Result Pass / Fail
Open @PG_VlvMotL_Preview from the OS picture Faceplate appears within 2 s, no "Type unknown" error
Trigger Valve Jammed in the simulator Message line shows "Valve Jammed" with configured class
Force Op Hours to 1234.5 Faceplate value updates ± 1 s, trend archives sample
Click SelFp1 button Child faceplate opens, parent remains in memory
Apply APL hotfix APL_V9.0_HF07 Custom block still compiles, no instance has unknown type
Check alarm priority in WinCC Alarm Control External messages inherit class configured on VlvMotL
Read authorisation matrix in OS User Administrator Operator cannot acknowledge Torque Alarm without area 6 rights

10. Troubleshooting Matrix

Symptom Likely Root Cause Corrective Action
External value not visible in trends Trend object still linked to original VlvMotL structure Re-link trend to ExtVa10x in faceplate properties
Faceplate shows "Type not found" Custom FB compiled but OS picture tree not refreshed Run OS > Compile OS > Update picture tree
SelFp button greyed out Child block instance is not in the same unit / S7 program Move child block to same AS or use AS-OS assignment
Alarm class wrong for ExtMsg Block attribute MsgClassExt1 not set Open instance properties > Messages > assign class
Operating hours shows negative values FF block sends IEEE 754 reversed byte order Insert a SwapBytes FB or correct the FF parameter
Custom faceplate opens blank after APL upgrade Block type signature changed; old multi-instance is incompatible Re-run Type Update, recompile, transfer OS
Permission denied for SelFp jump Area rights of the child block are stricter than the parent Align authorisation in User Administrator
WinCC displays "Server not connected" for new tag OS variable alias not regenerated Run OS Project Editor > Generate tag prefixes

11. Performance and Lifecycle Considerations

Each additional SelFp target increases the runtime memory footprint of the OS faceplate cache by approximately 4 to 8 KB per instance. For plants with several thousand valves, prefer Method 1 (ExtMsg / ExtVa) and avoid the multi-instance faceplate for the bulk of I/O. Reserve the custom block type for critical assets such as ESD valves and high-cycle modulating drives.

The Foundation Fieldbus block driver from the Fieldbus Integration catalog of PCS 7 must be re-imported whenever the field device firmware is updated. After import, recompile the CFC chart, then re-compile the OS to refresh the picture tree.

12. Frequently Asked Questions

Why does the standard VlvMotL block not include motor diagnostics such as operating hours and torque?

The APL VlvMotL is intentionally generic so that it can be used for both pneumatically and motor-operated valves. Detailed motor diagnostics (operating hours, number of operations, torque) are provided by dedicated APL blocks such as OpHrs, CycCnt, and MotProt, and are intended to be integrated via SelFp1/2 or by creating a derived block type.

Can I modify the master data library block VlvMotL directly?

No. Always create a derived block type or use the ExtMsg / ExtVa spare inputs. Direct modification of master data blocks is lost on the next APL hotfix installation and breaks the type-version signature used by the WinCC OS server.

What is the maximum number of external messages that can be displayed in the VlvMotL faceplate?

Three discrete external messages (ExtMsg1, ExtMsg2, ExtMsg3) and three external values (ExtVa104, ExtVa105, ExtVa106) are reserved for engineering use. For more, escalate to a custom FB type or to the Industry Library JumDistributor.

Does the SelFp method require the Industry Library?

No. The SelFp1 and SelFp2 inputs are part of the standard APL blocks. The Industry Library is only required if you need the JumDistributor with more than two child faceplate targets or with runtime reordering.

How do I retain customisations when applying an APL hotfix?

Compile the S7 program before applying the hotfix, export the custom block types and faceplates from the project, apply the hotfix, re-import the custom types, and run Type Update. Finally, recompile the OS and transfer to the runtime server.

Back to blog