Connecting Citect SCADA to PCS 7 CFC via SIMATIC NET OPC Server

David Krause12 min read
OPC / OPC UASiemensTutorial / How-to
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. Overview: PCS 7 + CFC + Third-Party HMI Architecture

Siemens PCS 7 is an integrated process control system in which WinCC Operator Station (OS) is not an optional add-on — it is the runtime environment for the standard PCS 7 faceplates, alarm line, and the OS server/client topology. Replacing WinCC with a third-party HMI such as Citect SCADA (now AVEVA Plant SCADA) breaks the PCS 7 concept but is technically possible when the customer mandates it.

The challenge is that PCS 7 programs built in CFC generate tag instances dynamically inside instance data blocks (DBs) tied to function block (FB) calls inside charts. There is no static tag list exported by default the way a WinCC OS compile produces one. Any third-party HMI must therefore expose those tags through one of four mechanisms covered in this article.

Concept warning: PCS 7 is not a license model — it is an engineered solution. Using CFC/SFC on an S7-400 with Citect as HMI means you are running a plain S7-400 project, not PCS 7. You will lose automated faceplate generation, APL block parameter harmonization, the WinCC alarm line, and the multi-project engineering tools.

The reference architecture for the configurations described below is:

Citect IO Server  --OPC DA-->  SIMATIC NET OPC Server  --S7 (TCP/ISO)> AS 400 CPU
       (Citect SCADA)              (PC Station)                     (CFC program)

The driver alternative to OPC is PSDirect, a native Citect driver that talks to S7 PLCs over Industrial Ethernet or MPI/PROFIBUS. PSDirect bypasses OPC entirely and reduces one failure point, but it still requires a symbol table to map CFC tags to readable names.

2. Four Methods to Expose CFC Tags to a Third-Party HMI

# Method Engineering Effort Risk of Address Shift on FB Edit Symbolic Access
1 Global Data Block interface High (manual mapping) None (DB number is fixed by user) Optional
2 Instance DB — symbolic Medium (auto export from CFC XRef) High if FB interface changes Yes
3 Instance DB — absolute Low (manual address entry) High if FB interface changes No
4 PCS 7 OS OPC Server (built-in) Lowest (compile OS tags) Resolved at OS compile Yes

2.1 Method 1 — Global DB Interface

Create one or more global data blocks (DBs not associated with an FB) that act as the HMI mirror. Inside the CFC, use READ/WRITE blocks or named I/O connections to copy process values from instance DBs into the global DB. The Citect tag database then references only the global DB.

Advantages: DB number is owned by the engineer and never re-numbered by STEP 7. Symbol table in STEP 7 maps cleanly to Citect variable names.

Disadvantages: All operator commands must be routed through this DB. PCS 7 operator commands inside faceplates are not linkable to a global DB by default; they are bound to the APL/standard faceplate I/O. You will need custom command blocks in CFC for every setpoint, mode selector, and start/stop.

2.2 Method 2 — Instance DB Symbolic

Every FB call in a CFC chart creates an instance DB. The instance DB number is assigned by STEP 7 during compile and can shift if the FB interface changes. Use CFC cross-reference (Options > Cross-References > Chart/Block) to resolve (Chart > Block > Instance DB number > Tag) relationships.

Export the cross-reference from the SIMATIC Manager and convert it to a STEP 7 symbol file (.sym) importable into the S7 program, or directly into Citect's variable tag database. The Citect OPC client then browses the symbolic namespace.

2.3 Method 3 — Instance DB Absolute

Hard-code DB number and offset (e.g. DB1050.DBX12.0) into Citect tags. The CFC cross-reference provides the lookup table. This is the fastest initial build but the most fragile: any change to an FB interface causes STEP 7 to re-issue the instance DB number for all instances of that FB type, and all absolute references become invalid.

2.4 Method 4 — PCS 7 OS OPC Server

Purchase a PCS 7 OS license (e.g. 1000 PO), add the OS as a PC Station in NetPro, compile the OS. The OS compile generates a tag list and exposes it through the built-in WinCC OPC DA Server with full symbolic names. You do not have to run the OS graphics; the runtime can be installed in Single-Station mode without WinCC Runtime licenses if you only need the OPC service. This is the highest-cost but lowest-risk option for ongoing maintenance.

3. SIMATIC NET OPC Server: Symbolic Data Inheritance

The SIMATIC NET OPC Server is bundled with the SIMATIC NET PC software and supports OPC DA 2.0 / 3.0 and OPC UA. The relevant configuration flag for this integration is "Symbolic Inheritance from S7 Programs".

3.1 HW Config of the PC Station

  1. Open the PC Station in HW Config (SIMATIC Manager > right-click the PC Station > Open HW Config).
  2. Insert an OPC Server application (catalog: SIMATIC PC Station > OPC Server).
  3. Insert an Industrial Ethernet CP (e.g. CP 1613, CP 1623, or the softnet IE card) and assign a connection to the S7-400 CPU over TCP/RFC1006 or ISO-on-TCP.
  4. Open the OPC Server object properties and check "Inherit all symbolic data of the S7 programs assigned to the connections" (or equivalent wording depending on SIMATIC NET version; in newer releases this is on the S7 connection properties).
  5. Save and compile the HW Config.

3.2 NetPro Configuration

  1. Open NetPro for the project containing the PC Station.
  2. Add an S7 connection from the OPC Server to the AS 400 CPU.
  3. Confirm the connection target is the CPU in the same STEP 7 project.
  4. Save and compile NetPro. The configuration is downloaded to the OPC Server PC using Station Configuration Editor and the "Download Station" function.
Multi-project caveat: The SIMATIC NET OPC Server is not multi-project aware for symbolic inheritance. All S7 programs whose tags should appear symbolically in the OPC namespace must reside in the same STEP 7 project as the PC Station. If you are working across sub-projects in a multi-project, you must flatten the master project or move programs to the local project, or symbolic browsing will only return tags from the local project.

3.3 Symbol Inheritance Mechanics

When the OPC Server downloads the configuration to the local PC, it reads the S7 program symbol tables from the project file. The OPC address space namespace is built from:

  • Symbolic names from S7-Program > Symbols
  • Symbolic names from instance DBs (DB name + element name)
  • Global DB names and structure element names

The OPC browser will show an item path similar to:

S7:[S7-Program_1]Chart_1/MOTOR_SPEED
S7:[S7-Program_1]DB1050/MOTOR_SPEED_PV

4. Citect OPC Item Name Syntax

Citect's OPC client parses item names using the SIMATIC NET OPC Server syntax. The full syntax is documented in the Siemens FAQ How do you address S7 variables with the OPC server of SIMATIC NET?

Syntax Element Description Example
<protocolID> Protocol identifier. For SIMATIC NET OPC DA use OPC. OPC
[<connectionname>] Optional logical connection name as configured in NetPro. If omitted, the default connection is used. [AS400_OPC]
<variablename> OPC item path. For S7 symbolic: S7:[Program]Block/Element; for absolute: DB<n>,BYTE<x> or DB<n>,REAL<x>. S7:[S7-Program_1]DB1050/MOTOR_SPEED_PV

Full item name examples:

// Symbolic - recommended
OPC:[AS400_OPC]S7:[S7-Program_1]Chart_1/MOTOR_SPEED

// Absolute - only if symbolic not available
OPC:[AS400_OPC]DB1050,REAL12

// Bit access
OPC:[AS400_OPC]DB1050,X12.0

4.1 Configuring the OPC Client in Citect

  1. In Citect SCADA, open the Computer Setup Editor for the IO Server.
  2. Add an OPC board of type OPC DA.
  3. Add a port referring to the OPC Server ProgID. For SIMATIC NET OPC DA this is OPC.SimaticNET.
  4. Add a logical connection name matching the NetPro connection (e.g. AS400_OPC).
  5. In the Citect Variable Tags database, set the I/O Device field to the OPC port and the Address field to the item name as in section 4.
  6. Compile and run the Citect IO Server.

5. Alternative: PSDirect Driver (No OPC Layer)

PSDirect is a native Citect driver that communicates with S7-300/S7-400 PLCs directly over Industrial Ethernet (TCP) using the S7 communication protocol. It bypasses SIMATIC NET and OPC entirely, removing a layer of configuration and a potential failure point.

5.1 When to Choose PSDirect

  • Single-CPU or small project where OPC inheritance is not required.
  • Customer mandates Citect and disallows additional third-party software on the IO Server PC.
  • Symbolic access is not required, or the engineer is willing to maintain a manual symbol map.

5.2 Configuration Steps

  1. Install the Citect PSDirect driver on the IO Server PC (bundled with Citect SCADA).
  2. Configure the CPU's IP address, rack, and slot in the Citect port setup.
  3. Define variable tags using PSDirect syntax, e.g. DB1050,REAL12 or symbolic names if you import a STEP 7 symbol file (.sdf).
  4. Run the Citect driver trace to verify read/write PDUs.
Comparison note: PSDirect is simpler to deploy but does not give Citect access to PCS 7's concept of chart/block hierarchy or to operator command authorization. You will need to design the equivalent of WinCC user-rights enforcement manually in Citect.

6. PC Station + NetPro Prerequisites Checklist

Prerequisite Detail Reference
STEP 7 / SIMATIC Manager installed V5.5 or V5.6 for legacy PCS 7 V8/V9 projects Siemens STEP 7 V5.6 manual
SIMATIC NET PC Software Version matching STEP 7; OPC Server included SIMATIC NET manuals
PC Station type in HW Config Application > OPC Server + Industrial Ethernet CP NetPro help
S7 connection in NetPro From OPC Server to AS 400 CPU NetPro help
Symbolic inheritance flag Enabled on OPC Server object SIMATIC NET OPC manual
Station download Station Configuration Editor > Download Station SIMATIC NET commissioning
Firewall rules TCP port 102 (ISO-on-TCP) or 49152-65535 (RFC1006) open Industrial Ethernet security

7. Verification Procedure

  1. Open the SIMATIC NET OPC Scout (Start > SIMATIC > SIMATIC NET > OPC Scout).
  2. Add an S7 group and browse the server namespace.
  3. Confirm that S7:[S7-Program_1] nodes are visible and that instance DBs appear with their element names.
  4. Add a tag, force a value, and verify the IO Server in Citect receives the update.
  5. In Citect, use the Citect Kernel page (Ctrl+K) and the Variable Tag diagnostic window to read raw values.
  6. Force a write from Citect and confirm in the OPC Scout that the value arrives at the S7 CPU using VAT or PLCSIM.
Verification tip: If symbolic items do not appear in OPC Scout but absolute items do, the symbolic inheritance flag is off or the OPC Server is in a different STEP 7 project from the S7 programs. Re-check the multi-project caveat in section 3.2.

8. Risk of Instance DB Re-Numbering After FB Interface Change

When you edit the input, output, or static interface of an FB in STEP 7 and re-compile the CFC, STEP 7 re-issues the instance DB number for all instances of that FB type across all charts that use it. Only the instance DBs for the modified FB type are renumbered — not the entire project — but the effect on HMI tag databases can still be large.

Mitigations:

  • Always use Method 1 (Global DB) or Method 4 (PCS 7 OS OPC) for new projects to eliminate this risk.
  • If using Method 2/3, re-export the CFC cross-reference and re-import the symbol table into Citect after every FB interface change. A pre-commit CI script that diffs the symbol table is recommended.
  • Document FB interfaces as frozen versions in source control; treat FB interface changes as breaking changes for the HMI.

9. Troubleshooting Matrix

Symptom Likely Cause Corrective Action
Citect IO Server reports "Bad quality" for all tags OPC Server not running or COM security misconfigured Verify OPC.SimaticNET service is started; check DCOMCNFG permissions on the IO Server account.
Symbolic tags invisible in OPC Scout Symbolic inheritance not enabled, or OPC Server in a different project Re-check HW Config flag and project boundaries (see 3.2).
Absolute tags OK, symbolic tags "Bad" S7 program not downloaded to CPU, or symbols not compiled with the program Re-download S7 program; recompile HW Config + NetPro.
Values stuttering or stale Polling rate too low, or SIMATIC NET connection quality reduced Increase Citect poll rate, check for network errors in NetPro diagnostics.
Some instance DBs return wrong values DB number shifted after FB interface change Re-export cross-reference; regenerate symbol file.
OPC Scout shows "Cannot connect to S7" PC Station not downloaded, or CP driver mismatch Use Station Configuration Editor to verify the OPC Server is "Configured" and "Running".
Write from Citect has no effect in CFC OPC item path is to a read-only area, or the CFC block uses operator authorization not satisfied Check the CFC block's authorization flags; ensure write item targets an INPUT of the block, not an OUTPUT.

10. Field-Proven Recommendations

  • Engage Siemens Application Engineering before a customer commits to PCS 7 + Citect. The license delta rarely justifies the engineering cost.
  • If the customer must use Citect, push for Method 1 (Global DB interface). It is the only method that survives FB interface edits without re-engineering the HMI.
  • If the customer insists on Method 4 (PCS 7 OS OPC), run the OS as a dedicated server. The PCS 7 OS license includes the OPC server and the OS single-station runtime.
  • Always document the Citect tag database versioning in source control. Rebuilding 5000 tags after a DB shift is a multi-day job if the symbol export is not reproducible.
  • Set up an OPC Scout test page on the engineering station so commissioning engineers can verify tag quality without Citect running.

11. Citect Resources and Documentation

Citect SCADA is now distributed as AVEVA Plant SCADA. The current AVEVA product pages and the historical Schneider Electric / Citect knowledge base contain the PSDirect driver documentation, OPC client setup, and tag import guides referenced in this article.

12. FAQ

Can I use Citect SCADA as a drop-in replacement for WinCC in a PCS 7 project?

No. PCS 7 is an engineered solution that bundles STEP 7, CFC/SFC, WinCC, and the APL. Replacing WinCC with Citect means you are running a plain S7-400 project with CFC, not a PCS 7 system. You will lose automated faceplate generation, the WinCC alarm line, and the operator authorization model.

What is the SIMATIC NET OPC Server ProgID I should enter in Citect?

Use OPC.SimaticNET for the OPC DA 2.0/3.0 server bundled with SIMATIC NET. For OPC UA, the endpoint is configured via the SIMATIC NET OPC UA Server configuration tool and the ProgID varies by version.

How do I prevent instance DB numbers from shifting when I edit a CFC block?

Use a Global Data Block interface (Method 1) or the PCS 7 OS OPC Server (Method 4). For Methods 2 and 3, re-export the CFC cross-reference and re-import the symbol file after every FB interface change.

Why are my symbolic tags invisible in OPC Scout even though absolute tags work?

The most common cause is that the symbolic inheritance checkbox on the OPC Server object in HW Config is not enabled, or the OPC Server PC Station is in a different STEP 7 project from the S7 programs. The SIMATIC NET OPC Server is not multi-project aware for symbolic inheritance.

Can I bypass SIMATIC NET OPC and connect Citect directly to the S7 CPU?

Yes — use the PSDirect driver bundled with Citect SCADA. PSDirect talks the S7 protocol natively over Industrial Ethernet (TCP/IP) or PROFIBUS, removing one software layer and one configuration point. Symbolic access is available only if you import a STEP 7 symbol file.

What is the correct OPC item name syntax for a CFC chart tag?

Use the SIMATIC NET syntax: OPC:[ConnectionName]S7:[ProgramName]Chart_Block/Element. For absolute access use OPC:[ConnectionName]DB<n>,REAL<offset>. The full grammar is documented in the Siemens FAQ 24843817.

Back to blog