Resolving PCS 7 V9.1 SFC Technological Action Failures on MotL Blocks
This technical reference documents a recurring failure mode in Siemens PCS 7 V9.1 where a Technological Action configured inside an SFC (Sequential Function Chart, version 9.0 + SP5 + Upd2) does not drive the targeted input of a technological block (for example, MotL.StartAut) and does not reset the command in the Termination step. The article walks through the affected environment, the root cause related to block-contact interconnections, the architectural prerequisites, and a complete step-by-step remediation procedure with verification checks.
1. Problem Description
A technological action assigned inside an SFC step is expected to:
- Set the target input of a technological block (for example,
StartAut.Value := TRUE) at the start of the Initialization or Processing phase. - Reset that same input to
FALSEin the Termination phase of the SFC, restoring the block to operator-controlled behavior.
Observed symptom on PCS 7 V9.1 with SFC V9.0 + SP5 + Upd2:
- The action appears in the SFC and is correctly assigned to a command (for example,
SetStart). - The action is not executed at runtime; the target input (for example,
StartAutofMotL) is never written, or it is written but immediately overwritten. - No diagnostic event, no SFC error, and no operator message is raised in the OS runtime.
- Manual traces on the block contact show the value flickering or remaining at the last wired source value.
The failure is silent: the SFC will report Action executed successfully even though the technological effect is missing, because the action itself is dispatched correctly. The conflict is downstream at the block I/O.
2. Affected Environment
| Component | Version / Setting | Notes |
|---|---|---|
| SIMATIC PCS 7 | V9.1 | Engineering & Runtime |
| SFC Visualization / SFC Editor | V9.0 + SP5 + Upd2 | Used for compiling the SFC chart |
| APL (Advanced Process Library) | V9.1 | MotL / VlvL / MotSpdL / VlvAnL |
| AS blocks | CPU 410 (PCS 7) with firmware ≥ 8.2 | Standard AS bundle |
| Engineering | SIMATIC Manager / CFC / SFC | CMT/EMT/EPHT workflow |
| OS Runtime | WinCC V9.1 | Operator and diagnostic views |
Always re-validate against the latest SIMATIC PCS 7 V9.1 release notes and update packages before commissioning. The same pattern is known to appear on V9.0 SP4 and later APL revisions; the underlying mechanism is the same.
3. Root Cause Analysis
The root cause is an unintended interconnection at the block contact of the technological block. In PCS 7, a command such as SetStart assigned to a technological action writes directly to the input pin (for example, StartAut) of the target block. If the same input is also wired to another source (for instance, the EPH block contact, an operator faceplate signal, a derived status, or a hand-coded interconnection in the CFC), then:
- The command's value reaches the input pin.
- CFC resolves interconnections strictly: the most recently written source wins, and PCS 7 closes the source side of an "auto-generated" command wiring only if no other writer exists.
- The other writer overwrites the command's value, so the action has no observable effect at the block I/O.
- On Termination, the command tries to write
FALSEto the same input, with the same result — it is silently overridden.
Compounding factors reported in the field:
- Reusing a CMT that was originally configured for direct operator control and then migrated to SFC commands without re-cleaning the block contact wiring.
- Hand-written CFC interconnections inserted to "force" behavior during commissioning tests and never removed.
- Use of legacy Initialization / Processing / Termination tabs in the SFC together with the new Technological Action mechanism on the same input — both write to the same pin, the second writer always wins.
- Using a non-standard interface block for command/status handling, where the SFC Type is connected via a custom block contact rather than the standard APL contact.
4. Architectural Context: CMT, EMT, EPHT
PCS 7 separates the reusable type definition from the instance use. Three template levels are relevant for technological actions:
| Level | Type | Purpose | SFC Location |
|---|---|---|---|
| Control Module Type | CMT | Defines a self-contained process object (motor, valve) with all block I/O, statuses, and commands. | Optional SFC inside the CMT for inner sequences. |
| Equipment Module Type | EMT | Coordinates several CMTs; encapsulates a sub-unit (e.g., a dosing skid). | SFC inside the EMT (sub-sequences). |
| Equipment Phase Type | EPHT | Atomic, batch-recipe-visible operation step. Holds the technological actions/conditions. | SFC inside the EPHT (the recipe-visible sequence). |
The correct path for an SFC technological action to drive MotL.StartAut is:
- The CMT exposes the
StartAutinput through a block contact. - The EMT/EPHT embeds the CMT as a template instance via a role assignment, with the option Basic requirement enabled so that the necessary preconditions for the command are wired automatically.
- The SFC inside the EPHT/EMT defines a technological action of type "command" (for example,
SetStart), maps it to the CMT role, and the framework writes to the CMT's block contact on the host side. - The CMT, in turn, is allowed to forward that command to the
StartAutinput of theMotLinstance — only if no other interconnection exists at that input.
When the SFC Type is connected through a custom interface block (an in-house command/status block), the same rule applies but the block contact is the custom block. Mixing standard APL contact wiring with custom command blocks is the most common source of the override described above.
5. Preconditions for Technological Actions to Work
Before assuming a software defect, validate these preconditions in the engineering system:
- APL version aligned: CMT, EMT, EPHT, and the SFC chart all reference the same APL revision. A mixed-version chart will compile but fail at runtime.
-
Command defined in CMT: Open the CMT, switch to the Commands tab, and confirm that a command such as
SetStartexists. Its target must reference a block contact of a technological block inside the CMT (e.g.,MotL.StartAut). -
Role assignment in EPHT/EMT: In the EPHT/EMT, the CMT is inserted as a template instance and the Basic requirement checkbox is enabled. This auto-wires the preconditions (e.g.,
IsAuto,IsReady). -
Status/feedback defined: The CMT exposes the feedback (e.g.,
IsRunning) that the SFC condition uses, mapped to the EPHT/EMT role. -
No competing writers: Use CFC cross-references on the target input (e.g.,
MotL.StartAut). There must be exactly one source: the CMT's command output routed via the role assignment. Any other writer — even an inactive one — is a candidate for the override. - Compile order: Compile the SFC after the CMT/EMT/EPHT types. Out-of-order compiles can leave dangling references that the SFC then refuses to write.
6. Step-by-Step Solution
The remediation follows a strict sequence. Do not skip steps; the override is reintroduced whenever a hidden interconnection is left behind.
6.1 Identify the conflicting interconnection
- Open the CFC of the CMT instance that contains the affected
MotL. - Right-click the input pin (for example,
MotL.StartAut) and choose Go to → Interconnection partner (or "Cross-references"). - Record every writer. Acceptable writers are exactly one: the command output coming from the EPHT/EMT role assignment.
- If a second writer is found (operator faceplate signal, hand-coded CFC block, EPH contact, or a bridging CFC connection made for testing), mark it for removal.
6.2 Remove the second writer
- For each non-essential writer, right-click the connection in the CFC and select Delete (or Disconnect).
- If the writer was placed for test purposes (e.g., a constant
TRUEblock), delete the source block as well. - Save and close the CFC.
- Repeat for every chart level: instance CFC, master data library CFC, and the EPHT/EMT SFC charts.
6.3 Clean up mixed Initialization/Processing/Termination writers
- Open the SFC chart inside the EPHT/EMT.
- Switch to the Properties dialog of every step that previously used the legacy Initialization / Processing / Termination tabs to write to the same input.
- Remove the legacy write and replace it with a Technological Action referencing the proper command (e.g.,
SetStart). - Save the SFC.
6.4 Re-validate command and role assignment
- In the CMT, open the command (e.g.,
SetStart) and confirm that:-
Target block contact = the input of the technological block (e.g.,
MotL.StartAut). -
Initialization / Processing sets the value to
TRUE. -
Termination sets the value to
FALSE.
-
Target block contact = the input of the technological block (e.g.,
- In the EPHT/EMT, confirm that the role assignment still has Basic requirement enabled and that the CMT is inserted as a template with the correct role instance.
- Save and recompile the type.
6.5 Adopt a dedicated command/status interface (recommended)
For projects that already use a custom interface block to decouple the SFC Type from the CMT, define the block contact explicitly:
- One input contact per SFC-controlled value (for example,
SetStartCmd). - One output contact per status returned to the SFC (for example,
IsRunningSt). - A separate block contact (for example,
SetAutoMode) for "set to automatic", wired so it never overlaps with command inputs.
This split makes it impossible for a hidden writer to compete with the SFC, because each contact is dedicated to a single source role.
7. Verification Procedure
After applying the fix, verify at three levels.
7.1 Static verification (engineering)
- Run Compile & Check on the SFC chart. There must be no warnings on the action block.
- Open Chart → Cross-references on the target input (
MotL.StartAut). Confirm exactly one writer. - Open the SFC online in the ES. The action must show a green executable indicator before the step is processed.
7.2 Functional verification (AS / OS)
- Put the controller into Manual and start the SFC.
- Watch the SFC step transition log: the Technological Action line must report Executed and the target tag (e.g.,
MotL.StartAut) must transition toTRUEwithin one OB1 cycle. - Force the Termination condition. The action's reset must drive
MotL.StartAutback toFALSEwithin one OB1 cycle. - Capture the tag trace and archive it under the change ticket.
7.3 Operator-level verification (OS)
- Open the
MotLfaceplate in WinCC Runtime. The Auto lamp must follow the action's state. - Run the EPHT/EMT sequence from the batch view. All steps must complete without Action failure messages in the OS message log.
- Confirm that no spurious operator messages ("command rejected", "interlock active") appear during the action window.
8. Common Pitfalls and Edge Cases
| Pitfall | Symptom | Detection | Mitigation |
|---|---|---|---|
| Two writers on the same input (operator + command) | Action appears to run; tag is overwritten | CFC cross-references | Remove the second writer, reserve the input for the command only |
| Custom interface block contact wired in parallel to the APL contact | Action runs only when one writer is offline | Visual check of the CFC | Use only the dedicated contact defined in section 6.5 |
| Legacy Initialization/Processing/Termination tab still wired | Action step runs but value flickers | SFC step properties | Remove legacy writes; use Technological Action only |
| Partial delta download of the SFC chart | Working in PLCSIM, failing on AS | Compare ES vs. AS versions | Full Compile & Download All for the affected AS |
| CMT/EMT/EPHT compiled out of order | Action compiles, but the role is empty at runtime | Compile log warnings | Compile CMT → EMT → EPHT → SFC in that order |
Interlock Intlock not satisfied |
Command is dispatched but the block rejects it | APL MsgLock / MsgErr on the block | Resolve the interlock; the action itself is correct |
| APL block version mismatch between CMT and instance | Input exists in type but not in instance | Type / instance comparison | Re-import the type and recompile the instance |
9. Diagnostic Checklist
Use this checklist the first time you encounter a silent SFC technological-action failure on PCS 7 V9.1:
- Open CFC cross-references on the target input (e.g.,
MotL.StartAut). How many writers? - If more than one, list them and identify which is the CMT's command output.
- Open the SFC step. Does it use Technological Action only, or also legacy Init/Proc/Term writes?
- In the CMT, open the command (e.g.,
SetStart). Are the Initialization, Processing, and Termination values all correct? - In the EPHT/EMT, is the CMT inserted as a role instance with Basic requirement enabled?
- Was the AS fully recompiled, or only the SFC chart delta-downloaded?
- Does the OS show any interlock, permission, or mode message on the affected block?
- Is a custom interface block contact wired in parallel to the APL contact?
Each "yes" on a multi-writer, mixed write, partial download, or parallel contact pinpoints one of the documented root causes. Resolve them in this order; do not patch the SFC before clearing the CFC.
10. Version Compatibility Notes
The SFC Technological Action mechanism was extended in the PCS 7 V9.0 time frame and refined in V9.0 SP4 / SP5 / Upd1 / Upd2. The block contact / command interaction is stable across these updates, but the following items differ from earlier releases (V8.2 and older):
| Aspect | PCS 7 ≤ V8.2 | PCS 7 V9.0+ |
|---|---|---|
| SFC Technological Action | Limited; mostly via Init/Proc/Term | Full action/condition editor with CMT roles |
| Block contact auto-close on command | Partial | Full — but only when no other writer exists |
| Role assignment in EPHT/EMT | Manual block-icon mapping | Template insert with Basic requirement |
| Custom command/status interface | Custom | Recommended; many sites standardize on it for V9.1 |
If a project is migrated from V8.2 to V9.1, pay particular attention to block-icon mappings and to the legacy SFC steps still writing to inputs that are now reserved for technological actions. The migration tool will not warn about overlapping writers.
11. Preventive Engineering Practices
To avoid the override recurring in future development:
- One input, one role. Treat each SFC-controlled input as reserved; document this in the CMT's interface specification.
- No test interconnections left in production charts. Add a code-review check: "no constant blocks write to command-target inputs in released CMTs".
- Compile order discipline. Compile CMT → EMT → EPHT → SFC for every release; never rely on delta downloads of SFCs only.
- Use the dedicated command/status interface. The custom block is not a workaround — it is the architectural clean separation. Adopt it project-wide.
- Add a runtime tag trace on every technological action's target input. The trace file is the smoking gun when the action runs and the tag does not move.
12. Frequently Asked Questions
Why does the SFC report "Action executed" even when the MotL input does not change?
The action's dispatch is correct: PCS 7 writes the command value to the role's block contact. The override happens downstream at the technological block input, where a second writer (a hand-coded CFC connection, an EPH contact, or a parallel block-icon mapping) overwrites the command's value. The SFC has no visibility into the second writer, so it reports success.
Is this a bug in SFC V9.0+SP5+Upd2 or in the MotL block?
No. It is a configuration conflict, not a product defect. PCS 7 only auto-closes the source side of a command wiring when no other writer exists; if a second writer is present, the framework correctly leaves it alone. Removing the second writer restores the expected behavior on every APL version including V9.1.
Can the legacy Initialization/Processing/Termination tabs coexist with a Technological Action on the same input?
No. Both write to the same input. Only one will be the effective writer, and the result depends on the compile and download order. Replace any legacy Init/Proc/Term writes with a Technological Action referencing the appropriate command, and remove the legacy writes before recompiling.
Why does the override appear after migrating from PCS 7 V8.2 to V9.1?
On V8.2 most sequences drove block I/O via Init/Proc/Term tabs. The migration to V9.1's role-based Technological Action does not strip legacy wirings; they remain on the CFC. Once a Technological Action is added on the same input, the two compete and the override is observed for the first time.
Is a custom command/status interface block required, or is the standard APL contact enough?
The standard APL contact is sufficient for most projects as long as no other writer is connected to the same input. The custom block is recommended when a project wants an explicit, dedicated contact per command/status, which eliminates the possibility of an accidental parallel writer. Both approaches are supported; the discipline matters more than the choice.
What is the fastest way to confirm the override from a runtime trace?
Tag-trace MotL.StartAut in a 100 ms window. Start the SFC step manually. If the value transitions briefly to TRUE and then collapses back to FALSE, or if it never leaves its previous value, a second writer is overriding the command. Cross-reference the input in the CFC to find the offender.
Does partial download of the SFC alone ever cause this failure on PCS 7 V9.1?
Yes. A delta download of the SFC chart without re-downloading the CMT/EMT/EPHT types can leave the role's block contact un-wired at runtime, so the command is dispatched to a partner that no longer exists. Always perform a full Compile & Download All for the affected AS after type changes.