Siemens PCS 7 CFC Drag and Drop Block Insertion Troubleshooting

David Krause13 min read
S7-400SiemensTroubleshooting
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

1. Problem Overview

Engineers commissioning a Siemens PCS 7 plant frequently encounter a situation in which the Continuous Function Chart (CFC) editor refuses to accept blocks placed by drag and drop from the block catalog. The symptom is consistent: the user opens the catalog view, attempts to drag a standard FC, FB, or library block onto a CFC sheet, and the editor either rejects the action silently, highlights the cursor in a no-drop state, or accepts the block but immediately raises a compile error such as "Out of range error for FC1".

The behavior is rarely caused by hardware. In nearly every documented case, the root cause is a mismatch between the visible block catalog, the configured block number range, the active S7 program container, or the runtime group / OB cycle assignment. This reference walks through every layer of the CFC placement pipeline so the failure can be isolated without a phone call to support.

Scope. This article applies to PCS 7 V8.x and PCS 7 V9.x with the SIMATIC S7-400 / S7-400H CPU family, the optional AS Runtime V9.0, and the CFC editor shipped with the corresponding PCS 7 installation. TIA Portal's "CFC" add-on is a different product line and follows different catalog rules; verify which editor is launched from the SIMATIC Manager before applying these steps.

2. CFC Editor Architecture in PCS 7

CFC is a graphical configuration tool that sits on top of STEP 7. It does not replace the underlying S7 program structure; it generates STL-equivalent logic inside the chart folder and the system data blocks that STEP 7 compiles and downloads to the AS.

Three hierarchical objects are involved when a block is dropped onto a sheet:

  • Chart folder – the S7 program / chart container that owns the runtime groups and the generated blocks.
  • Runtime group – a logical container that runs at a fixed OB cycle (OB30 through OB38) and owns the install order of all charts assigned to it.
  • Chart (CFC) – the sheet itself, containing the I/Os, blocks, and interconnecting signals.

For a complete description of CFC internals see the Siemens manual SIMATIC PCS 7 CFC Manual and the PCS 7 Engineering System configuration manual.

3. Block Catalog Visibility – First Check

The catalog is the panel on the left of the CFC editor. If it is not visible, drag and drop is impossible regardless of input device or Windows state. Restore the catalog by selecting View > Catalog in the menu bar, or by pressing Ctrl+K. The catalog tree must then display the libraries relevant to the S7 program: standard library, PCS 7 APL (Advanced Process Library), PCS 7 Basis Library, and any user-defined libraries imported into the master data library.

Catalog Pane State Indicates Remedy
Pane hidden User view configuration View > Catalog (Ctrl+K)
Pane visible, no entries No master data library opened Options > PCS 7 > Master Data Library… and select the project master data library
Pane visible, APL missing PCS 7 APL not installed on this engineering station Reinstall the PCS 7 APL DVD component or import the APL from the support package
Pane visible, blocks greyed out Target CPU does not support the block family Verify CPU order number and firmware in HW Config

4. Drag and Drop Mechanics – What the Editor Expects

The CFC drag and drop implementation is built on Windows OLE drag-drop semantics. The editor registers the chart sheet as a drop target and validates the source block against the following rules before the drop is accepted:

  1. The dragged object must be a recognized block type (FC, FB, OB, UDT, DB) or a CFC chart reference.
  2. The target chart must belong to an S7 program that is offline-consistent with the S7 project.
  3. The target runtime group must be assigned to a valid OB (typically OB35 for 1000 ms, OB36 for 500 ms, OB37 for 200 ms, OB38 for 100 ms – exact slot depends on the PCS 7 version).
  4. The block number being inserted must fall inside the configured number range for that block type within the active S7 program.

If any of these checks fail the editor rejects the drop. The cursor remains a no-drop icon and no entry is created in the chart. The user is not informed of the specific reason – the editor simply refuses the operation, which is the most common cause of "drag and drop is not possible" reports.

5. The "Out of Range Error for FC1" Failure

The single most reported failure on PCS 7 forums is the out-of-range error raised when the user attempts to drop an FC block that does not exist in the S7 program symbol table or whose number is outside the FC number range configured in the program properties.

Open the S7 program in SIMATIC Manager and inspect Properties > Blocks. The default FC range in PCS 7 is FC0 to FC999, with FC0..FC2 and FC100..FC999 reserved for system and PCS 7 housekeeping. The user FC range is therefore FC3..FC99 by default in older PCS 7 versions. If a user attempts to drop FC200 while the project is configured for FC3..FC99, the editor raises "Block number FC200 is outside the user number range" and the block is not placed.

The fix is one of two options:

  • Extend the user FC number range in the S7 program properties so the desired number falls inside it, or
  • Drop a different FC whose number is inside the configured range and then use the standard block interface to call the desired logic from it.
Reserved FC numbers in PCS 7 V9.0. FC0..FC2 (system), FC3 (PCS 7 mode switch), FC4 (PCS 7 time functions), FC5..FC99 (user FCs, by default). The exact reservation table is published in the PCS 7 Engineering System manual, appendix "Reserved blocks". Always check the version-specific table before re-numbering.

6. Runtime Groups and OB Cycle Assignment

Once a block is dropped successfully, the runtime properties of the containing chart determine when the logic executes. Double-click the runtime group icon in the top-right corner of the chart to open the runtime group properties. The fields and their typical PCS 7 values are listed below.

OB Cycle (typical) PCS 7 use case
OB30 Free cycle Background / low-priority housekeeping
OB32 1000 ms Slow loops, trends, non-critical monitoring
OB35 1000 ms (default) Standard PCS 7 application cycle (APL default)
OB36 500 ms Faster control loops, motor control
OB37 200 ms High-speed interlocks, fast process protection
OB38 100 ms Fastest PCS 7 OB – reserved for very short loops

Charts assigned to OB35 are the default in PCS 7 because OB35 was historically the only OB in which the APL blocks were certified. Modern PCS 7 versions (V8.1 and later) allow APL blocks in OB30, OB32, OB36, OB37, OB38 as well, but only after the OB has been explicitly enabled in the project settings. The procedure is documented in the CFC manual section "Changing the runtime group OB".

7. Do You Need to Call OB1?

A recurring question from engineers new to PCS 7 is whether OB1 must be programmed to call the CFC charts. In a pure PCS 7 program, OB1 is empty by design. The PCS 7 runtime scheduler, generated by the CFC compiler, dispatches the runtime groups from the appropriate OB3x directly. The user is never required to insert a CALL into OB1 – doing so would duplicate the execution path and cause a double-scan of every chart.

If OB1 in your PCS 7 program contains CALL FCxxx or CALL FBxxx instructions written by hand, those are either legacy artifacts from a STEP 7 conversion or, more commonly, blocks that were meant to be moved into a CFC chart. Move the logic into a CFC chart on the appropriate runtime group, delete the manual call in OB1, recompile, and download.

8. FC vs FB in CFC Charts – Architectural Rules

The choice of FC versus FB inside a CFC chart is not arbitrary. The rules enforced by the CFC editor are summarized below.

Aspect FC FB
Remembers state between calls No – FCs are stateless Yes – backed by an instance DB
Requires a background DB No Yes, generated automatically by CFC
Suitable for closed-loop control with integrator Rarely – needs static tags in DB Preferred – CTRL_PID, MOT_SPEED, VALVE_ANA in APL are FBs
Typical PCS 7 use Calculations, signal conditioning, mode switching, custom interlocks Controlled blocks: motors, valves, PID controllers, dosing
Number range in PCS 7 V9.0 User FCs 3..999 (configurable) User FBs 3..999 (configurable)

A practical consequence: a typical PCS 7 project will use FB1 / FB2 for the APL block types (CTRL_PID, MOT_SPEED, VALVE_ANA, …) and call them from CFC charts. If a user replaces an APL FB with a hand-written FC, the chart's diagnostic faceplate, alarm behavior, and operator control blocks will not work because those are bound to the FB instance interface. The standard answer is to keep the FB and call additional logic from a custom FC that the FB calls internally, or to wrap the logic into a UDT-backed user FB.

9. Block Library Configuration

The catalog only displays blocks that the project can resolve. The block resolution chain is:

  1. Project master data library (Options > PCS 7 > Master Data Library…)
  2. Global libraries opened in SIMATIC Manager
  3. STEP 7 standard library delivered with the installation
  4. PCS 7 APL library (if installed)

If the catalog is empty for FC / FB blocks, the most likely cause is that the master data library is not set. Open Options > PCS 7 > Master Data Library… and confirm the path points to the project master data directory created during PCS 7 installation (typically \<project>\s7asécom\library). If the path is missing or refers to a non-existent directory, the catalog will be empty and drag and drop will fail with no error message.

10. Compiling and Downloading the Chart

After a successful drop, the chart must be compiled. The compile sequence in PCS 7 is:

  1. Select the chart(s) in the plant view.
  2. Right-click and select Charts > Compile (or press Ctrl+B).
  3. The compiler generates STL, resolves all block instances, allocates DB numbers, and updates the program symbol table.
  4. Download the entire S7 program (not just the modified chart) to the AS. Incremental download is supported in PCS 7 V8.2+ but a full download of the user program is recommended after the first compile of a session.

Compile errors with the message "Block number outside user range", "DB not generated", or "FB instance assignment failed" are direct consequences of misconfigured block number ranges and must be fixed in the S7 program properties before re-compiling.

11. Diagnostic Procedure – Step-by-Step

Use the following ordered checklist when a user reports that drag and drop is not possible in a CFC chart.

  1. Open the catalog: View > Catalog (Ctrl+K). Confirm the catalog pane is visible and shows the expected libraries.
  2. Verify the master data library path: Options > PCS 7 > Master Data Library…. Restore the path if blank.
  3. Right-click the chart and select Properties. Verify the chart is assigned to a runtime group with a valid OB.
  4. Open S7 Program > Properties > Blocks and verify the FC/FB number range includes the block number being dropped.
  5. If the error message mentions a specific FC or FB number, change the number or extend the range, recompile, and try again.
  6. Verify the active CPU in HW Config supports the block family. For F-block functions (F-FBs), the CPU must be a F-CPU and the S7 F Systems add-on package must be installed.
  7. Close and reopen the CFC editor. The catalog cache occasionally becomes stale after a PCS 7 service pack upgrade.
  8. If the problem persists, run the CFC consistency check: Charts > Check Consistency. This will list every chart with broken references, including blocks dropped with an invalid number range.
  9. Recompile (Ctrl+B) and download the program. Verify the chart is online in the AS using the OS runtime viewer.

12. Verification

After applying the fix, verify the chart behaves as expected by performing the following checks:

  1. Open the chart online (button "Monitor on/off") and confirm the new block is shown in green (active) within one OB cycle.
  2. Check the AS diagnostic buffer for OB3x cycle time overruns. If the cycle time exceeds 80 % of the configured OB interval, the runtime group is overloaded and blocks should be moved to a slower OB.
  3. Open the operator faceplate (if APL) and verify all input and output fields are populated and the block is in the correct operating mode.
  4. Trigger a forced value on an input and confirm the output updates within one OB cycle.

13. Edge Cases and Field-Proven Caveats

  • APL blocks after a service pack upgrade. After upgrading from PCS 7 V8.2 to V9.0, the catalog may continue to show the V8.2 block icons. Close SIMATIC Manager, run the installation cleanup tool from the PCS 7 DVD, and reopen. Drag and drop will then resolve to the new block types.
  • H-system (redundant) considerations. On S7-400H, F-CPU blocks must be dropped onto a chart that is part of the H-CPU's F-runtime group. Standard FBs dropped onto a non-F runtime group are accepted by the editor but rejected at compile time.
  • Project language mismatch. The catalog displays block names in the language of the installed PCS 7 (German / English / French / Italian / Spanish / Chinese). Drag and drop will not translate block names; if the project is bilingual, ensure the engineering station language matches the OS language to avoid display issues in faceplates.
  • Number range exhausted. A project that has been in service for years may exhaust the user FC range (FC3..FC999). Extend the range in the S7 program properties, or reorganize old FCs into a global library, before adding new ones.
  • Drag and drop from Windows Explorer into CFC. This is not supported. The catalog is the only legal drop source. Files dropped from Windows Explorer are ignored by the editor.

14. Frequently Asked Questions

Why is the CFC catalog empty even though the master data library is configured?

The catalog cache becomes stale after PCS 7 service pack installations. Close SIMATIC Manager, delete the catalog cache file %LOCALAPPDATA%\Siemens\Automation\CatalogCache.bin, and reopen the project. If the catalog is still empty, verify the master data library path in Options > PCS 7 > Master Data Library… points to a directory that exists and contains the PCS 7 APL block family.

Can I drop a hand-written FC200 into a CFC chart that only allows FC3..FC99?

No. The CFC editor validates the block number against the user FC range configured in S7 Program > Properties > Blocks before the drop is accepted. Either extend the user FC range to include 200, or drop an FC whose number is already inside the configured range and use that FC to wrap the FC200 logic.

Do I need to call OB1 in a PCS 7 program?

No. In a pure PCS 7 program OB1 is intentionally empty. The CFC compiler generates the necessary calls from OB3x (typically OB35) into the runtime groups. A manual CALL FCxxx inside OB1 would cause the same chart to be executed twice, leading to scan-time overruns and incorrect integrator behavior in PID blocks.

Why does drag and drop work for FB blocks but not for FC blocks?

This is almost always a number-range problem. FBs and FCs have independent number ranges in S7 Program > Properties > Blocks. The user FB range often extends higher than the user FC range. If the FB range covers the desired number but the FC range does not, the drop succeeds for FBs and fails for FCs. Check both ranges and adjust the FC range accordingly.

Can I move logic from OB35 to OB37 in PCS 7?

Yes. Open the runtime group properties (double-click the runtime group icon in the top-right of the chart), change the OB from OB35 to OB37, recompile, and download. Confirm the new cycle time is acceptable on the OS diagnostic faceplate and that the OB37 cycle time is not exceeded. APL blocks are supported in OB30, OB32, OB35, OB36, OB37, and OB38 from PCS 7 V8.1 SP1 onward.

Back to blog