Why Technological Blocks Are Missing from SFC Type Block Contacts in SIMATIC PCS 7

Why Technological Blocks Are Missing from SFC Type Block Contacts in SIMATIC PCS 7

In SIMATIC PCS 7, when configuring Block Contacts within the SFC Type Characteristics editor and a required technological block (such as PIDConL) does not appear in the selection dropdown, the issue is caused by the location where the SFC Type is being edited or missing block attributes. If the SFC Type is opened inside the Master Data Library, the selection list displays only function blocks present in that specific library's block folder. Furthermore, a function block must possess the system attribute S7_contact = 'true' in its interface declaration. To resolve this, ensure the target function block exists in the offline block folder of the container where the SFC Type resides, verify that S7_contact is enabled, and instantiate the block in the project before selection.

Table of Contents

SFC Type Block Contact Architecture and Mechanism

SIMATIC PCS 7 SFC Types provide reusable technological state machines (such as phase logic for dosing, heating, or mixing in batch processes). Unlike standard SFC charts which are tied to individual instances, an SFC Type is defined centrally in the project or Master Data Library and instantiated in CFC charts as an SFC instance (FB247+).

To control lower-level technological control modules (CMs) such as motors (MotL), valves (VlvL), or controllers (PIDConL) directly from the phase steps, the SFC Type employs Block Contacts (Bausteinkontakte). Block contacts create standardized technological interfaces on the SFC instance. When the engineer defines a block contact for PIDConL, the SFC Type editor automatically exposes standard setpoint, mode, and feedback pins (SP_Ext, AutAct, MV) on the SFC block icon and instance, enabling seamless interconnection without manually mapping dozens of raw pins.

When an engineer accesses Characteristics -> Block Contacts in the SFC Type editor, the system dynamically populates the block dropdown list by scanning the active database container for compatible function blocks.

Root Causes of Missing Function Blocks in the Contact Selection List

When expected technological blocks like PIDConL are absent from the block contact dropdown (while MotL and VlvL are visible), the failure stems from two specific software mechanisms:

  1. Container Context Mismatch (Library vs. CPU Chart Folder):
    - When an SFC Type is created or edited inside the Master Data Library (Component View -> Library -> Blocks/Charts), the SFC editor queries only the library's local offline block folder. If PIDConL has not been copied from the APL library into the Master Data Library's block folder, it is invisible to the editor.
    - Conversely, when the SFC Type is edited directly under a CPU's Chart Folder (Pläne), the editor queries all blocks instantiated in the active multiproject charts. If PIDConL is used in a chart under CPU1, it appears when editing under CPU1, but remains absent when editing in the library.

  2. Missing System Attribute S7_contact = 'true': For any block to be recognized as a valid technological contact for an SFC Type, its SCL or STL interface declaration must carry the system attribute { S7_contact := 'true' }. Standard APL blocks possess this attribute by default, but custom blocks or legacy standard library blocks lack this flag unless manually specified.

  3. Unassigned Plant Hierarchy / Model Context: In ISA-88 batch architectures, if the SFC Type is assigned to an Equipment Module Type (EMT) or Control Module Type (CMT), the type manager filters available contacts by technological role. If role definitions are unassigned, blocks are suppressed from selection.

Block Contact System Attributes and Library Scope Comparison

The following table compares block contact visibility criteria across engineering container contexts in PCS 7:

Context Where SFC Type Is EditedSource of Available Block ContactsCriteria for Block AppearanceCommon Missing SymptomMaster Data LibraryLibrary's Offline Block Folder (Blocks)Block must reside in Library Blocks with S7_contact=trueBlocks used in CPU charts do not appearCPU Chart Folder (Pläne)CPU's Active Project Block FolderBlock must be placed in a CFC chart or CPU block folderLibrary-only blocks do not appearCustom SCL BlockSCL Source File Interface HeaderMust define { S7_contact := 'true' }Block completely invisible in all listsAPL Standard (PIDConL)APL V8/V9 Library (6ES7653-...)Pre-configured with S7_contact=trueVisible once imported into active containerLegacy Standard LibraryStandard PCS 7 Library V7.1Lacks S7_contact attribute on older FBsRequires attribute patch in source

Step-by-Step Procedure to Make Blocks Available for SFC Types

To ensure technological blocks appear in the SFC Type Block Contacts selection list:

  1. Determine the Editing Context of the SFC Type:
    - In SIMATIC Manager, inspect the location of your SFC Type.
    - If the SFC Type is located under Master Data Library -> Charts, you are working in library context.
    - If located under Project -> [CPU] -> S7 Program -> Charts, you are working in project instance context.

  2. Populate the Master Data Library Block Folder:
    - If editing in the Master Data Library, open the library's Blocks folder in Component View.
    - Open the PCS 7 AP Library (or whichever library contains PIDConL / FB1874).
    - Copy PIDConL (and any associated blocks like MotL, VlvL) from the APL block folder directly into your Master Data Library -> Blocks folder.
    - Re-open the SFC Type in the Master Data Library, navigate to Characteristics -> Block Contacts, and verify that PIDConL is now visible in the dropdown.

  3. Ensure Block Instantiation in the Target Project:
    - If editing under the CPU, ensure that PIDConL has been dragged into at least one CFC chart in that CPU program, or copied into the CPU's offline block folder.
    - Execute Options -> Block Types in CFC to verify that PIDConL is imported into the chart folder.

  4. Verify Custom Block System Attributes (If Using User-Developed FBs):
    - If your block is a custom FB, open its SCL source file.
    - In the block declaration header, ensure the following attribute is present:
    scl FUNCTION_BLOCK FB1500 TITLE = 'Custom Controller' { S7_m_c := 'true' ; S7_contact := 'true' }
    - Recompile the SCL source. The block will now appear in the SFC Type block contacts list.

Verification

Verify block contact configuration:
1. In the SFC Type editor, open Characteristics -> Block Contacts; select PIDConL from the dropdown list.
2. Assign a contact name (e.g., FIC101_Ctrl). Notice that the SFC Type automatically creates the corresponding input/output technological pins.
3. In an SFC step, open the step initialization or processing tab; verify that you can select FIC101_Ctrl and command its parameters (such as SP_Ext or AutAct).
4. Compile the SFC Type (SFC -> Compile); verify that compilation finishes with 0 errors.

Limitations and Operational Precautions

  • Library Synchronization Required: Always maintain the Master Data Library as the single source of truth. Copying blocks into the CPU without updating the library causes type conflict warnings.
  • Instance DB Re-generation: Modifying block contacts on an SFC Type forces the regeneration of instance DBs for all instantiated SFCs. Schedule delta or full downloads accordingly.
  • Getting Started Context: In PCS 7 Getting Started exercises, always follow the tutorial instruction specifying whether objects are to be created in the library or the project hierarchy.

Engineer FAQ

Why did MotL appear in the list but PIDConL was missing?

MotL was already copied into the library or active project block folder during an earlier tutorial step, whereas PIDConL had not yet been imported into that container.

What does the S7_contact attribute do in PCS 7?

The S7_contact attribute informs the SFC Type editor that the function block supports technological block contact interfaces, making it selectable in the characteristics dialog.

Can I connect non-APL blocks as Block Contacts in an SFC Type?

Yes, provided the function block carries the { S7_contact := 'true' } attribute and is present in the active block folder.

Where should I create an SFC Type - in the library or in the CPU?

In standardized PCS 7 engineering, SFC Types should always be created in the Master Data Library and then synchronized to target CPUs.

Technical References

Related Articles

Related Tags

  • SFC Type
  • Block Contacts
  • PIDConL
  • Master Data Library
  • S7_contact
  • APL
6 respuestas