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.
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.
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
- Open the CFC chart that contains the
VlvMotLinstance. - Click the
ExtMsg1input and select Interconnection to Address or wire it to the corresponding FF output, for example:
ExtMsg1 := "MOT_001".VALVE_JAMMED - Map the remaining digital alarms:
ExtMsg2 := "MOT_001".CTRL_LOSS
ExtMsg3 := "MOT_001".TORQUE_ALM - Map the analog signals to the spare
ExtVainputs:
ExtVa104 := "MOT_001".OP_HOURS(REAL, h)
ExtVa105 := "MOT_001".OP_COUNT(REAL, dimensionless)
ExtVa106 := "MOT_001".RMT_FBK(REAL 0/1, scaled) - 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]". - Compile the OS, transfer, and verify in WinCC Runtime that the Messages and Trends tabs of the faceplate show the new entries.
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.
- 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. - Wire
VlvMotL.SelFp1to theOpHrsinstance address:SelFp1 := "UNIT_101"."MOT_001".OPHRS - Wire the operating hours value into the
OpHrsblock:OPHRS.Value := "MOT_001".OP_HOURS - Repeat for the cycle counter and the motor protection block:
SelFp2 := "UNIT_101"."MOT_001".CYCCNT - 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.
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
- 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 - Inside
VlvMotLDia, copy the input / output / static variable interface of the originalVlvMotLinto a new chart interface so that CFC chart I/O appears on the wrapping chart. - 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. - 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
- Open WinCC Graphics Designer and copy the standard faceplate
@PG_VlvMotL_Preview.pdlto a new name, e.g.@PG_VlvMotLDia_Preview.pdl. - 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. - Update the variable mapping in the property dialog: Configuration > Tag > Linked Structure > VlvMotLDia.
- 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).
- Save the faceplate and register it in the OS picture tree under the parent Motors / Valves node.
6.3 Compiling the OS
- In PCS 7, open the OS project and select OS > Compile OS. Activate the option Update picture tree from plant view.
- Watch the compilation log for warnings such as "No faceplate found for type VlvMotLDia". This indicates a missing or misnamed
*.plf/*.pdlfile. - Transfer the OS to the target server, then start the runtime and verify the new faceplate opens without "Type unknown" errors.
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.