Resolving CFC Compiler Error (Mehrfacheinbau - Die Instanz ist nicht im OB100 eingebaut) in PCS 7

Resolving CFC Compiler Error (Mehrfacheinbau - Die Instanz ist nicht im OB100 eingebaut) in PCS 7

The CFC compilation error 'Mehrfacheinbau: Die Instanz XXX ist nicht im OB100 eingebaut' (Multiple installation: Instance XXX is not installed in OB100) occurs in SIMATIC PCS 7 when Chart-based insertion ('Planorientierter Einbau') is active and a technological block requiring startup initialization (s7_tasklist = 'OB100') possesses an inconsistent or orphaned runtime group call. This happens when a block is duplicated or moved across charts, leaving the startup initialization call unlinked or misassigned in OB100. To resolve this error, open the Chart folder properties in Component View, navigate to the 'Advanced' tab, temporarily disable 'Chart-based insertion', recompile the charts, or manually re-insert the missing block instance into the OB100 runtime group via the Runtime Editor.

Table of Contents

Executive Summary

In SIMATIC PCS 7 engineering workflows, Continuous Function Chart (CFC) compilation translates graphical block interconnections into executable machine code and runtime execution schedules across controller Organization Blocks (OBs). When compiling an automation program containing technological blocks with startup characteristics (such as APL controllers, timers, or motor blocks), engineers may encounter the compiler abort error:

Mehrfacheinbau: Die Instanz <BlockName> ist nicht im OB100 eingebaut.
(Multiple installation: The instance <BlockName> is not installed in OB100.)

This error halts compilation and prevents program downloading. It indicates an internal desynchronization in the CFC runtime database where a block configured for dual-task execution exists in a cyclic task but lacks its mandatory startup call in OB100. This technical guide explains why this condition occurs under Chart-based Insertion and details proven remediation workflows.

Root Cause Analysis: The Mechanics of 'Mehrfacheinbau' in CFC

The term Mehrfacheinbau refers to blocks that must be scheduled in more than one Organization Block:

  1. Dual Scheduling Requirement: Technological blocks often execute their main algorithm cyclically in OB30 through OB38, while executing an initialization pass in OB100 during CPU warm restart to clear edge flags, reset alarm histories, and initialize tracking variables.
  2. Database Inconsistency: If an engineer copies a block from another chart, moves a block between runtime groups, or if an earlier compilation crashed, the pointer linking the cyclic call to the OB100 call can be severed.
  3. Compiler Detection: During compilation, the CFC compiler checks the s7_tasklist attribute. If it detects that the instance exists in the cyclic task but is missing from OB100—or exists in multiple conflicting OB100 runtime groups—it aborts with the Mehrfacheinbau error to prevent indeterminate controller startup behavior.

The Role of Chart-Based Insertion ('Planorientierter Einbau')

The introduction of Chart-based insertion (Planorientierter Einbau) in PCS 7 V8.x altered runtime group management:

  • Legacy Behavior (Pre-V8.0): Blocks placed in a CFC chart were placed into a shared global runtime group per task (e.g. OB35).
  • Chart-Based Behavior (V8.0+): The compiler automatically generates chart-specific runtime groups in every assigned OB (e.g. OB35\Chart1 and OB100\Chart1). This structure supports Selective Download, enabling download of individual modified charts.
  • The Pitfall: If blocks are moved between charts or if insertion predecessors are misconfigured, the automated runtime group generator can fail to create the corresponding OB100 chart group, triggering the error.

Organization Block OB100 and the s7_tasklist Attribute

System scheduling attributes in the block header govern compiler validation:

  • The attribute s7_tasklist = 'OB100' informs the compiler that every instance of this block must have an active call in OB100.
  • If the OB100 call is missing, the controller cannot execute bumpless parameter initialization during restart, risking false trips.
  • The compiler enforces strict 1-to-1 parity between the cyclic instance and the startup instance.

Step-by-Step Procedure to Resolve the OB100 Insertion Error

To resolve the Mehrfacheinbau error and successfully compile CFC charts:

  1. Method 1: Toggle Chart-Based Insertion (Quick Reset):
    * In SIMATIC Manager Component View, navigate to the target AS S7 Program container.
    * Select the Charts folder, right-click, and select Object Properties.
    * Select the Advanced (Erweitert) tab.
    * Uncheck the option Chart-based insertion (Planorientierter Einbau).
    * Click OK.
    * Recompile CFC charts (Chart -> Compile -> Charts as Program). The compiler reorganizes runtime groups globally, fixing broken pointers.
    * If Chart-based insertion is required for Selective Download, re-enable the checkbox and recompile.
  2. Method 2: Manual Runtime Group Insertion (Runtime Editor):
    * In CFC, open the Runtime Editor (Ctrl + R).
    * Expand OB100 and locate the chart's runtime group.
    * If the instance is missing, locate the block in the cyclic task (OB35), drag it into the corresponding chart group under OB100.
    * Ensure the instance DB numbers match.
  3. Method 3: Re-instantiate Corrupted Block:
    * If a specific chart remains corrupted, delete the affected block from the CFC chart.
    * Perform a fast compile to clear database locks.
    * Drag a fresh block from the Master Data Library into the chart and reconnect pins.

Chart-Based Insertion and Runtime Group Error Matrix

The following table provides diagnosis and remediation for CFC runtime group compilation errors:

Compiler Error MessageUnderlying DefectSpecific Task AffectedRemediation WorkflowMehrfacheinbau: Instanz nicht im OB100Missing OB100 call for dual-task blockOB100 (Warm restart)Toggle Chart-based insertion; manually insert block in OB100Predecessor for insert position invalidInsertion pointer set to deleted groupAny OB (OB3x or OB100)Right-click valid block -> Set Predecessor for insert positionRuntime group empty in OB100Unused runtime group created by deleted chartOB100Open Runtime Editor (Ctrl + R) -> Delete empty runtime groupSelective download rejectedRuntime groups out of sync across tasksEntire programPerform Entire Program compilation and full downloadBlock type s7_tasklist mismatchLibrary block updated without updating CFCOB100 / OB35Run Options -> Block Types -> New Version in CFC

Verification

Confirm that the Mehrfacheinbau error is fully cleared:

  1. CFC Compilation Log Review: Verify that Chart -> Compile -> Charts as Program completes with 0 errors and zero OB100 warnings.
  2. Runtime Editor Inspection: Open the Runtime Editor (Ctrl + R). Confirm that the target block appears in both the cyclic task (OB35\ChartGroup) and the startup task (OB100\ChartGroup).
  3. Consistency Check: Run Options -> Check Consistency in SIMATIC Manager. Confirm that the AS program passes with 0 errors.
  4. Delta Download Test: Perform a delta download to the CPU in RUN mode, confirming that runtime groups update without fault.

CFC Compiler Updates and Patch Levels (CFC V8.1 SP1 Update 6)

This class of runtime group desynchronization is significantly mitigated by modern CFC software updates:

  • In early builds of CFC V8.1 SP1, copying blocks under Chart-based insertion frequently dropped the cyclic or OB100 runtime group.
  • Installing CFC V8.1 SP1 Update 6 (or latest update bundle) permanently resolves the internal scheduling defect.

Limitations and Operational Precautions

Disabling Chart-based insertion consolidates runtime groups into global lists. If your facility utilizes Selective Download procedures, you must re-enable Chart-based insertion and recompile before executing selective downloads.

Never manually delete standard system runtime groups (@OB100, @OB35) generated by the driver wizard.

Engineer FAQ

What does 'Mehrfacheinbau' translate to in English?

'Mehrfacheinbau' translates to 'Multiple installation' or 'Multiple placement', referring to blocks that must be called in multiple OBs.

Does disabling Chart-based insertion erase block parameters?

No. It only changes how the compiler organizes runtime execution groups in OBs; all parameters and connections remain intact.

Can a block run safely without its OB100 call?

No. The block will not initialize properly during CPU startup, which can cause erratic initial control values and nuisance trips.

Where do I find the 'Planorientierter Einbau' setting?

In Component View, right-click the S7 Program 'Charts' folder, select Object Properties, and go to the Advanced tab.

Technical References

Related Articles

Related Tags

8 respuestas