Problem Overview
In SIMATIC PCS 7 V7.x, V8.x, and V9.x projects, attempting to compile or download an Automation Station (AS) CFC/SFC program with Generate module drivers enabled in the compile dialog halts with the error:
"The Program contains signal processing blocks from different libraries."
The error aborts compilation before code generation, blocks the AS download, and persists even when:
- The project has been reduced to a single chart with one block.
- Working against an S7-PLCSIM V5.x or S7-PLCSIM V6 instance (no real CPU).
- The hardware configuration (HW Config) has been re-imported from a clean export.
The error is not caused by chart logic, signal wiring, or hardware; it is a structural property of the S7 program block folder. The same error pattern surfaces during OS (Operator Station) compile & load when the AS has been brought online without first resolving the driver mix.
Root Cause Analysis
Every PCS 7 channel driver is delivered as an FB type inside the master libraries that ship with each PCS 7 release. Each FB carries an Author attribute (visible in SIMATIC Manager → Blocks → right-click → Object Properties → Author) that encodes the originating library version. The standard author tags observed in field projects are:
| Author Tag | Source Library | PCS 7 Release | Master Library Path |
|---|---|---|---|
DRIVER52 |
PCS 7 Library V5.2 | V5.2 | S7LIBS\PCS7_V52\DRIVER |
DRIVER60 |
PCS 7 Library V6.0 | V6.0 | S7LIBS\PCS7_V60\DRIVER |
DRIVER61 |
PCS 7 Library V6.1 | V6.1 | S7LIBS\PCS7_V61\DRIVER |
DRIVER70 |
PCS 7 Library V7.0 | V7.0 | S7LIBS\PCS7_V70\DRIVER |
DRIVER71 |
PCS 7 Library V7.1 | V7.1 | S7LIBS\PCS7_V71\DRIVER |
DRIVER80 |
PCS 7 Library V8.0 | V8.0 | S7LIBS\PCS7_V80\DRIVER |
DRIVER81 |
PCS 7 Library V8.1/V8.2 | V8.1/V8.2 | S7LIBS\PCS7_V81\DRIVER |
DRIVER90 |
PCS 7 Library V9.0 | V9.0 | S7LIBS\PCS7_V90\DRIVER |
DRIVER91 |
PCS 7 Library V9.1 | V9.1 | S7LIBS\PCS7_V91\DRIVER |
DRIVER52 with DRIVER61 or DRIVER71 in the same S7 program is the classic trigger.The condition typically appears after one of the following maintenance actions:
- Migrating a project from a previous PCS 7 release using the PCS 7 Migration Tool without performing a master data library update.
- Copying CFCs between stations that were authored on different PCS 7 versions.
- Manually inserting driver blocks from an older PCS 7 Library catalog when the master data library was not updated.
- Installing a PCS 7 service pack (for example V9.0 SP3 → V9.0 SP8) but failing to update the master data library.
Identifying the Conflicting Authors
Before applying the recovery procedure, capture the current author distribution so the migration is auditable.
- Open the affected AS in SIMATIC Manager.
- Expand Charts → select the S7 program (S7-Program) node.
- Double-click Blocks to open the offline block container.
- Press Ctrl+A to select all blocks.
- Right-click → Object Properties. The Author field lists the originating library version for each FB.
- Right-click the column header in the block view and enable Author as a visible column; sort by this column to group offenders.
Any FB that is an instance of a type from the DRIVER family (FB1869, FB1870, FB1871, FB1872, FB1873, FB1874, FB1875, FB1876, FB1877, FB1878, FB1879, FB1880, FB1881, FB1882, FB1883, FB1884, FB1885, FB1886, FB1887, FB1888, FB1889, FB1890 in PCS 7 V8.x; the same FBs renumbered in V9.x) must carry the same DRIVERnn stamp.
Solution: Update Block Types from the Master Data Library
The recovery procedure replaces every DRIVER-family block instance in the S7 program with the equivalent type from the newer PCS 7 Library, eliminating the mixed-version condition. This is the recommended procedure for plants already in operation where a full project migration is not scheduled.
Prerequisites
- The Master Data Library for the target PCS 7 release is installed on the engineering station (ES). Verify via SIMATIC Manager → File → Master Data Library → Open.
- All charts are closed in CFC/SFC Editor.
- No active download to the AS is in progress.
- Logged in with a Windows account that has write access to the project directory.
Step-by-Step Procedure
- CPU must be in STOP for the duration of the operation. Bring the AS to STOP using PLC → Operating Mode → Stop or via the CPU front panel. For PLCSIM, toggle the mode switch to STOP.
- Open the Master Data Library for the target version (e.g., V9.1) via File → Master Data Library → Open.
- Navigate to the DRIVER sub-library within the Master Data Library.
- Open the target S7 program in the project side: Charts → S7-Program → Blocks.
- Select all blocks inside the S7 program's Blocks container (Ctrl+A).
- Choose Options → Charts → Update Block Types. The Update Block Types wizard starts.
- Select the destination Master Data Library if prompted, then enable Replace block types with the corresponding type from the Master Data Library.
- Click Continue through the wizard pages until Finish is offered.
- The wizard reports the number of types replaced. Confirm the count matches the count of DRIVER-family FBs detected in the previous audit.
- Re-open the Blocks container and verify that the Author column now contains a single
DRIVERnnvalue matching the target PCS 7 release. - Save the project (Ctrl+S).
- Compile the AS: Charts → Compile → Charts (entire program). The compile dialog must show Generate module drivers enabled (do not uncheck it — the option is required to instantiate channel drivers from the signal processing blocks).
- Download the AS to the CPU. The download is only permitted while the CPU remains in STOP.
- Compile the OS: right-click the OS → Compile OS. Use Entire OS with Scope = All.
- Download the OS to the operator station.
- Bring the CPU back to RUN.
Alternative Recovery: Clean Re-Import of the Station
When the wizard-based update fails (for example due to inconsistent type references in deeply nested multi-instance charts, or when the Update Block Types wizard reports zero replacements even though a mix exists), the station can be reconstructed cleanly.
- Export the HW Config of the affected station: Station → Export. Save the
.cfgfile to a known path. - Delete the affected station from the project (right-click → Delete).
- Create a new station of the same type (SIMATIC 400 Station or SIMATIC PC Station as appropriate).
- Re-import the hardware: Station → Import and point at the saved
.cfg, OR open HW Config and re-insert the rack / I/O manually from the PCS 7 catalog of the target version. - Create a new chart folder (Insert New Object → S7 Program → Charts).
- Insert a new CFC and add the signal processing blocks (CH_AI, CH_AO, CH_DI, CH_DO, PADP_L0, PADP_L1) from the current PCS 7 catalog. These catalog blocks are the type stubs that Generate module drivers expands into the DRIVER-family FBs.
- Re-create the interconnections using the Cross-References tool from the prior charts as input.
- Compile → Download AS → Compile OS → Download OS.
Block Catalog Reference
The signal processing blocks that Generate module drivers expands are catalog blocks in the CFC library browser. They are the visible face of the channel driver layer:
| Catalog Block | Function | Generated FB Type |
|---|---|---|
CH_AI |
Analog input channel driver | DRIVER family FB for AI |
CH_AO |
Analog output channel driver | DRIVER family FB for AO |
CH_DI |
Digital input channel driver | DRIVER family FB for DI |
CH_DO |
Digital output channel driver | DRIVER family FB for DO |
PADP_L0 |
PROFIBUS PA lower-level driver | DRIVER family FB for PA |
PADP_L1 |
PROFIBUS DP/PA level-1 driver | DRIVER family FB for PA/DP |
MOD_XX |
Module-level driver stubs | DRIVER family FB per module |
Verification
After performing either procedure, validate the following before resuming production:
- Compile success: CFC compile completes with no warnings of different library category. The compiler log should be empty for type conflicts.
-
Single author: Open the S7 program Blocks container, sort by Author, confirm a single
DRIVERnnvalue matches the target PCS 7 release. - CPU in RUN: Bring the CPU from STOP → RUN. The diagnostic buffer (accessible via PLC → Diagnostic Buffer or via the CPU front panel) must contain no entries for SF (system fault) or OB121 (programming error) attributable to channel driver FBs.
- Process image update: Verify on the OS faceplate that an analog input changes value when the field signal is forced, confirming the CH_AI → DRIVER FB chain is alive.
- WinCC restart: For OS-side anomalies, execute reset_wincc.vbs from the WinCC project directory on each OS server, then re-load the OS project.
- Cross-station consistency: Repeat the audit (Step 6 of identification) on every AS in the multiproject. Mixed-version conditions frequently propagate via copy/paste of charts across stations.
Prevention
- Single library policy: Establish a project-level rule that only one PCS 7 Library version is allowed in any S7 program. Enforce via a project engineering checklist signed before each hot-cut or migration.
- Master Data Library discipline: Every time the engineering station receives a PCS 7 service pack or upgrade, the Master Data Library must be refreshed via Options → PCS 7 → Library Update Wizard before any project is opened.
-
Pre-compile audit: Add an automated report (VBA macro against the SIMATIC Manager automation interface, or a PCS 7 Commissioning Tool script) that lists the
Authorof every FB in every S7 program and flags heterogeneity. - PLCSIM regression: Before any code change is downloaded to a live AS, recompile against PLCSIM and verify the absence of the different libraries warning. This catches mix conditions introduced by copying chart snippets.
Troubleshooting Matrix
| Symptom | Likely Cause | Diagnostic Step | Fix |
|---|---|---|---|
| Compile fails with "different libraries" | Mixed DRIVERnn authors in S7 Blocks | Sort Blocks by Author column | Update Block Types from Master Data Library |
| Wizard replaces 0 blocks but mix exists | Type references broken (orphan FBs) | Cross-reference → Types | Clean re-import of station |
| CPU stays in STOP after download | OB121 on driver FB, type mismatch | Diagnostic buffer | Re-run Update Block Types, re-download |
| OS faceplates show # replaced values | OS compiled before AS successfully downloaded | OS compile log timestamp | Recompile OS after successful AS download |
| One station compiles, neighbor fails | Charts were copy-pasted between stations | Per-station Blocks Author audit | Run Update Block Types on each station individually |
| Wizard not available in menu | CFC Editor not focused on a chart folder | Select chart folder node first | Click Charts container, re-open Options menu |
| Download rejected: "online version differs" | AS was compiled but not downloaded before CPU restart | PLC → Compare | Re-download AS in STOP |
Firmware and Software Compatibility Notes
The driver version mix error is independent of the CPU firmware (e.g., CPU 410-5H V8.x or CPU 416-3 V7.x) but interacts with the PCS 7 version installed on the ES. The following table lists the supported combinations for the most common deployments:
| PCS 7 ES Version | Required STEP 7 | Master Data Library | CPU Firmware |
|---|---|---|---|
| V8.2 | STEP 7 V5.6 + HF | PCS7_V81 | V8.2.x compatible |
| V9.0 | STEP 7 V5.7 | PCS7_V90 | V9.0.x compatible |
| V9.1 | STEP 7 V5.7 | PCS7_V91 | V9.1.x compatible |
When upgrading ES software without upgrading the project, the Master Data Library must be reinstalled to match. Refer to the SIMATIC PCS 7 installation manual for the ES-specific prerequisites:
- SIMATIC PCS 7 V9.1 - Function Manual
- SIMATIC PCS 7 Engineering System - Configuration Manual
- SIMATIC PCS 7 Library Updates – Service Pack Notes
Why does the "different libraries" error appear even when my chart has no blocks?
The check is performed against the S7 program's Blocks folder, not against the visible CFCs. Even after deleting all chart instances, driver FBs copied from the Master Data Library during a prior compile remain in the Blocks container with their original author tag. Inspect S7-Program → Blocks directly.
How do I check the DRIVERnn version currently present in the project?
Open the offline Blocks container of the S7 program, right-click the column header to enable the Author column, and sort. The values DRIVER52, DRIVER61, DRIVER70, DRIVER71, DRIVER80, DRIVER81, DRIVER90, DRIVER91 correspond to PCS 7 V5.2 through V9.1 respectively. A single station must contain only one such value across all channel driver FBs.
Can I uncheck "Generate module drivers" to bypass the error?
No. The checkbox is mandatory in PCS 7 because the signal processing blocks (CH_AI, CH_AO, CH_DI, CH_DO, PADP_L0, PADP_L1) in the CFC catalog are type stubs; Generate module drivers is the step that expands them into the runtime channel driver FBs. Disabling it breaks the driver chain and produces runtime SF (system faults) at CPU start-up.
Do I need the CPU in STOP for the Update Block Types wizard?
Yes. The wizard modifies type references in offline blocks; the modified S7 program must then be downloaded. Download requires STOP. After the download completes and the OS is recompiled and downloaded, the CPU can return to RUN.
After fixing one station, the next station in the multiproject still fails. What now?
Chart copy/paste between AS stations in a multiproject propagates the type references from the source station. The Update Block Types wizard must be executed on every AS whose Blocks folder contains the older DRIVERnn author. Run the audit (sort by Author) on every S7 program in the project to confirm homogeneity before re-attempting compile.