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
- Root Cause Analysis: The Mechanics of 'Mehrfacheinbau' in CFC
- The Role of Chart-Based Insertion ('Planorientierter Einbau')
- Organization Block OB100 and the s7_tasklist Attribute
- Step-by-Step Procedure to Resolve the OB100 Insertion Error
- Chart-Based Insertion and Runtime Group Error Matrix
- Verification
- CFC Compiler Updates and Patch Levels (CFC V8.1 SP1 Update 6)
- Limitations and Operational Precautions
- Engineer FAQ
- Technical References
- Related Articles
- Related Tags
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:
- Dual Scheduling Requirement: Technological blocks often execute their main algorithm cyclically in
OB30throughOB38, while executing an initialization pass inOB100during CPU warm restart to clear edge flags, reset alarm histories, and initialize tracking variables. - 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.
- Compiler Detection: During compilation, the CFC compiler checks the
s7_tasklistattribute. 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\Chart1andOB100\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:
- Method 1: Toggle Chart-Based Insertion (Quick Reset):
* In SIMATIC Manager Component View, navigate to the target AS S7 Program container.
* Select theChartsfolder, right-click, and selectObject 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. - Method 2: Manual Runtime Group Insertion (Runtime Editor):
* In CFC, open the Runtime Editor (Ctrl + R).
* ExpandOB100and 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 underOB100.
* Ensure the instance DB numbers match. - 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:
Mehrfacheinbau: Instanz nicht im OB100Predecessor for insert position invalidRuntime group empty in OB100Selective download rejectedBlock type s7_tasklist mismatchOptions -> Block Types -> New Version in CFCVerification
Confirm that the Mehrfacheinbau error is fully cleared:
- CFC Compilation Log Review: Verify that
Chart -> Compile -> Charts as Programcompletes with 0 errors and zero OB100 warnings. - 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). - Consistency Check: Run
Options -> Check Consistencyin SIMATIC Manager. Confirm that the AS program passes with 0 errors. - 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.