Problem Overview: SCADA CommCut on a Siemens S7-300 MPI Link
A concrete-batching plant SCADA workstation reported a persistent CommCut alarm on the operator HMI. The SCADA application (Skob++) lost visibility of the controlling PLC. The PC-side stack consisted of:
| Layer | Component | Version / Detail |
|---|---|---|
| Host operating system | Microsoft Windows 98 First Edition | OSR 1, kernel 4.10.1998 |
| SCADA application | Skob++ (Borland Paradox/BDE recipe backend) | Concrete-batching recipe manager |
| PC communication card | Siemens CP 5611 | PCI, MPI/Profibus master, 12 Mbit/s |
| PLC CPU | SIMATIC S7-300 CPU 314 IFM | Integrated I/O, MPI port on X1 |
| Network | Point-to-point MPI, two nodes (PC=0, CPU=2) | 187.5 kbit/s default |
| Tooling originally present | STEP 7 V4.02 | No SIMATIC NET, no OPC server |
The symptom set included: BAT.F LED on the CPU, an MPI diagnostic test reporting Error 0xCB ("Bad configuration"), driver loss after the CP 5611 was reseated, and PC POST errors that required a RAM swap.
CP 5611 Hardware and MPI Protocol Background
The Siemens CP 5611 is a PCI master card implementing the MPI/PROFIBUS DP interface for PC-based programming and HMI/SCADA connectivity. Key characteristics:
- Form factor: 32-bit PCI, 5 V signaling.
- Supported protocols: MPI (187.5 kbit/s, 1.5 Mbit/s), PROFIBUS DP master up to 12 Mbit/s.
- Driver model: ASPC 2 (DPRAM ASIC) on Windows 9x/ME/NT/2000/XP; SIMATIC NET PC software required for runtime use.
- Default MPI address: 0 (master), bus terminating resistor on the PROFIBUS connector switchable.
- LED indicators on the bracket: ACT (yellow) and ERR (red) provide link-layer status feedback.
MPI is a token-passing, RS-485-based multi-master fieldbus derived from PROFIBUS. The CPU 314 IFM exposes an MPI port directly on the front connector X1. Two nodes are sufficient for a point-to-point link, but the bus must be terminated at both ends (typically "ON" at the CPU connector and "ON" at the CP 5611 PROFIBUS connector). Without termination, intermittent CommCut symptoms appear identical to a driver-stack failure.
CPU 314 IFM Buffer-Battery, BAT.F LED, and What It Means
The CPU 314 IFM (6ES7 314-5AE0x-0AB0) integrates 24 DI / 16 DO / 4 AI / 2 AO onboard. The BAT.F LED indicates that backup voltage for the internal RAM and retentive data has dropped below threshold. On a 314 IFM the buffer-battery compartment is accessible from the front of the module:
- Power off the rack and remove the door flap.
- Insert one 3.6 V lithium thionyl chloride AA cell (Siemens part
6ES7971-1AA00-0AA0) observing polarity as marked inside the cavity. - Power on. BAT.F must clear within 10 seconds if retentive load is within spec.
Interpreting Error 0xCB from "Set PG/PC Interface > Diagnostics > Test"
The "Set PG/PC Interface" diagnostic test runs a Layer-2 loopback handshake against the active access point (for example S7ONLINE (STEP7) -> CP5611(MPI)). The result codes are derived from the SIMATIC NET / S7-DOS interface, not from the SCADA tag database.
| Result | Hex Code | Meaning | Likely Cause |
|---|---|---|---|
| OK | 0x0000 | Layer-2 handshake passed, partner found | Healthy bus, correct access point, no duplicate addresses |
| Bad configuration | 0x00CB | Configured access point do not match installed hardware or the configured protocol is not active on the device | CP 5611 driver not bound to the active access point, wrong firmware, or wrong PCI slot resource |
| No partner found | 0x0A0A | Bus physically present, no response from configured address | Wrong MPI address, terminated bus, CPU in STOP/HALT with no bus activity |
| Duplicate address | 0x0C8C | Two nodes claim the same MPI address | PG and CPU both at 0, or two CPUs with default address |
| Bus short-circuit | 0x0F0F | A and B lines shorted or reversed | Cabling error, missing terminator active at a midpoint |
Error 0xCB therefore is a configuration error, not a cable error. The bus is physically present (the "Diagnostics > Read" step returned ticks on MPI addresses 0 and 2) but the test cannot open the configured protocol endpoint on the CP 5611. Typical root causes on Windows 98 FE:
- The SIMATIC NET / S7-DOS interface is not installed, but the access point was left pointing at
CP5611(MPI). - The PCI card was reseated and Windows 98 reassigned the PCI IRQ. The CP 5611 driver expects the legacy IRQ it was bound to at install time.
- A second PCI card (e.g., the 2S+1P combo card) was removed, changing the PCI enumeration order and forcing Windows to re-enumerate the CP 5611 on a different IRQ.
- The driver was partially uninstalled by hand, leaving a phantom device entry with no matching hardware.
Driver Stack and DLL Dependencies for Windows 9x
The MPI access path on Windows 9x is layered. Knowing which DLL performs which job is the difference between a ten-minute fix and a day of guessing.
| DLL | Role | Owner |
|---|---|---|
S7ONLINX.DLL |
S7ONLINE access point engine. Resolves the configured interface (CP5611, SoftMPI, etc.) and dispatches S7 protocol PDUs. | STEP 7 / SIMATIC NET |
W95_S7.DLL |
Windows 9x-specific transport binding between S7ONLINE and the ASPC 2 driver. Provides read/write access to PLC tags through MPI without a full SIMATIC NET install. | STEP 7 V4.x |
ASPC2.SYS |
Kernel-mode CP 5611 driver. Owns the PCI resource and the ASPC 2 ASIC. | SIMATIC NET |
CP5611.DLL |
User-mode helper that abstracts ASPC 2 to S7ONLINE. | SIMATIC NET |
BDE / IDAPI |
Borland Database Engine used by Skob++ for recipes (not for live tag polling). | Borland |
S7ONLINX.DLL alongside W95_S7.DLL confirms a STEP 7 V4.x style install (not SIMATIC NET). Skob++ in this stack almost certainly loads S7ONLINX.DLL directly via a vendor SDK, so any missing or version-mismatched S7ONLINE binary breaks CommCut reporting even when the CP 5611 itself is healthy.Root-Cause Analysis of This Incident
Cross-referencing the symptoms on site with the bench verification on a Windows XP / STEP 7 Lite V3 host yields a deterministic root-cause map:
- Battery (resolved). BAT.F LED cleared after battery replacement. Confirmed not the CommCut cause.
- Cabling and CPU (resolved). On a known-good XP/STEP 7 Lite V3 host the same CP 5611 reached MPI node 2 cleanly. This proves cable, connector, terminator, and CPU X1 port are functional.
- CP 5611 driver (suspected). After the card was moved back to the Windows 98 FE PC, the device was visible to Windows but threw Error 0xCB on the access-point test. Reinstalling the driver without re-binding the S7ONLINE access point leaves the system in an inconsistent state.
- PCI enumeration drift (confirmed). Replacing the system RAM and removing an unused 2S+1P PCI card forced Windows 98 to renumber PCI slots. The CP 5611 landed on a new IRQ. The S7ONLINE access point "CP5611(MPI)" was still configured against the old binding.
- SCADA configuration (untested). Skob++ recipe handling uses BDE; live tag polling typically uses an S7ONLINE-access-point setting inside Skob++'s own project file. That project-side setting was never re-validated against the freshly installed driver stack.
Step-by-Step Recovery Procedure
Prerequisites
- Original Windows 98 FE PC, power cycled.
- CP 5611 PCI card seated in a slot with no IRQ sharing (BIOS "Assign IRQ to VGA" and "PNP OS" set to No if available).
- STEP 7 Lite V2.0 + SP1 + SP2 media. According to Siemens STEP 7 Lite V2 SP2 release note, version 2 SP2 is the last release that supports Windows 98.
- Access to Siemens Industry Online Support via a working machine for KB article retrieval.
Procedure
- Verify PCI resources. Boot the PC into Windows 98 FE. Open Control Panel > System > Device Manager. Confirm the CP 5611 appears with no yellow exclamation mark. If a question mark is shown, force a re-scan with Refresh after seating the card.
-
Reinstall the driver cleanly.
- In Device Manager, right-click the CP 5611 and uninstall the device, deleting the driver.
- Power off, reseat the CP 5611 in the same PCI slot.
- Power on. Windows 98 detects the PCI device and prompts for the driver source. Point it at the STEP 7 Lite V2 SP2 install media
\CP5611\WIN98directory. - Reboot after install.
-
Re-bind the S7ONLINE access point. Open Set PG/PC Interface. From the Access Point of the Application dropdown, select
S7ONLINE (STEP7) -> CP5611(MPI). Set CP 5611 parameters: Address = 0, Transmission rate = 187.5 kbit/s, Highest MPI address = 31. Confirm with OK. -
Validate with the diagnostics tool. Still inside Set PG/PC Interface, run Diagnostics > Read. Two ticks (on MPI 0 and 2) must appear. Run Test. The expected result is
OK; anError 0x00CBat this stage means the access-point is bound to a non-existent or wrong protocol DLL. - Validate STEP 7 online connection. Open STEP 7 Lite V2 SP2, create an empty project, choose PLC > Display Accessible Nodes. The CPU 314 IFM at MPI 2 must appear within 5 seconds. If it does, the S7ONLINE stack is healthy.
-
Re-point Skob++ to the access point. Inside Skob++ project settings, confirm the S7 interface points at
S7ONLINE, not at a hard-codedCP5611(MPI). Restart the SCADA service. - Force a recipe database consistency check. Skob++ uses Borland BDE/Paradox. Run BDE Administrator > Configuration > Drivers > Paradox > Net Dir and ensure the path resolves. A stale Net Dir entry does not cause CommCut but will mask it with a misleading error.
Verification
- The Set PG/PC Interface > Test button returns
OKwith two ticks on nodes 0 and 2. - STEP 7 Lite V2 SP2 can go online to MPI 2 and toggle the CPU between STOP and RUN.
- Skob++ polls live tags without generating a new
CommCutalarm within a 30-minute burn-in. - The CP 5611 ACT LED flashes at roughly 1 Hz with the SCADA online; ERR LED remains dark.
MPI Bus Setup Reference
For two-node MPI, the bus must meet the following constraints:
| Parameter | Value | Notes |
|---|---|---|
| Topology | Point-to-point with active terminators on both ends | RS-485, 2-wire shielded |
| Baud rate | 187.5 kbit/s | CPU 314 IFM default; do not exceed unless all nodes support the higher rate |
| Maximum stub length | 0 m (no stubs on point-to-point) | Repeater (RS 485) required if longer distance is needed |
| Node addresses | PC=0, CPU=2 | Default MPI addresses; do not duplicate |
| Connector | PROFIBUS connector with switchable terminator (e.g., 6ES7972-0BA12-0XA0) | Set terminator to ON at both ends |
When extending a multi-node MPI that connects an HMI station and two CPUs through a common bus with PG socket, refer to Siemens KB "How to set up MPI network for programming two PLC (S7-300)" for the wiring and terminator rules applicable to three-node topologies.
Troubleshooting Matrix
| Symptom | First Check | Second Check | Resolution |
|---|---|---|---|
| CommCut, BAT.F lit | Battery voltage | CPU buffer OK after replacement | Replace 6ES7971-1AA00-0AA0 |
| Set PG/PC Test = 0x00CB | Access point bound to installed hardware | Device Manager shows CP 5611 without warning | Re-bind access point; reinstall driver |
| Diagnostics Read shows 0 and 2 ticks but Test fails | Wrong protocol in access point | Wrong transmission rate | Switch to CP5611(MPI), 187.5 kbit/s |
| SCADA comm OK on bench PC but not on plant PC | PCI IRQ drift after hardware change | Driver DLL mismatch | Uninstall driver, reseat card, rebind access point |
| Skob++ "CommCut" with green CP 5611 ACT LED | Skob++ project-side S7 interface | S7ONLINX.DLL version mismatch | Reinstall STEP 7 V4.x DLL set; reconfigure project |
| Step7 Lite V2 not running on Windows 98 FE | OS version | Installed STEP 7 Lite build | Use STEP 7 Lite V2.0 SP2, the last Windows 98 release per Siemens |
Step 7 Lite Compatibility on Legacy Windows
Siemens published the following compatibility map for STEP 7 Lite:
| Version | Last Service Pack | Supported Windows | Notes |
|---|---|---|---|
| STEP 7 Lite V2.0 | SP2 | Windows 98 / ME / NT 4.0 / 2000 | Last generation that runs on Windows 98 FE |
| STEP 7 Lite V3.0 | SP2 | Windows 2000 / XP | Does not install on Windows 98 FE |
For Windows 98 FE the only sanctioned online diagnostic tool is STEP 7 Lite V2.0 + SP1 + SP2. Both the V2.0 base media and SP2 are published under entry 23642592 and 24372175 on the Siemens Industry Online Support site. When direct download is unavailable the recommended channel is a Siemens regional sales representative with a Support Request; dealers in many regions still hold physical media.
Field-Proven Caveats
- PCI enumeration drift on Windows 9x. Windows 98 re-assigns IRQs at every hardware change until the registry PNP key is stable. Always reinstall the CP 5611 driver after any RAM or other PCI card swap, and never assume the S7ONLINE access point survives the move.
-
Don't trust a green ACT LED. The ACT LED reflects ASPC 2 transmit activity, not application-layer success. A SCADA can drive ACT while still throwing
CommCutif the S7ONLINE access point is misbound. -
Battery vs. comms. A lit BAT.F LED is often unrelated to
CommCut. Treat it as an independent housekeeping task. - Borland BDE shadow. Recipe errors look similar to comms errors in Skob++ log output. Always confirm live tag polling first before chasing the recipe database.
- Terminators on every rebuild. When a connector is unplugged and re-seated, the terminator switch position is occasionally toggled by mistake. Always verify "ON at both ends, OFF in the middle" before chasing driver errors.
When to Escalate to SIMATIC NET or a Newer OS
If the Windows 98 FE host cannot host a clean S7ONLINE stack after two clean reinstall attempts, escalate to one of the following paths:
- Migrate the SCADA host to a supported OS (Windows 7 / Windows 10 LTSC) and install SIMATIC NET PC software with the S7 OPC server. The Skob++ vendor should provide an OPC client mode; if not, contact the SCADA vendor for a current S7ONLINE build.
- Add an external MPI/Profibus-to-Ethernet gateway (e.g., a Siemens IE/PB Link PN IO) and migrate the SCADA link to PROFINET. This decouples the SCADA PC from the legacy PCI card and the Windows 98 OS entirely.
- Replace the SCADA PC with an industrial panel (e.g., SIMATIC IPC or a third-party HMI panel running WinCC flexible) and use PROFINET or MPI natively.
Frequently Asked Questions
What does Error 0x00CB mean on the "Set PG/PC Interface" diagnostic test?
It is a configuration error, not a cable error. The CP 5611 driver is installed but the S7ONLINE access point is bound to a hardware/protocol combination that is not active. Re-bind S7ONLINE (STEP7) -> CP5611(MPI) at 187.5 kbit/s and confirm the device appears in Device Manager without warnings.
Does a lit BAT.F LED on a CPU 314 IFM cause CommCut on the SCADA?
No. The BAT.F LED signals low buffer battery voltage for the internal RAM. Replace the 3.6 V lithium AA cell (Siemens 6ES7971-1AA00-0AA0). The LED clears within 10 seconds; this does not fix MPI faults and should be treated as an independent housekeeping task.
Which STEP 7 Lite version supports Windows 98 First Edition?
STEP 7 Lite V2.0 SP2 is the last release that supports Windows 98. STEP 7 Lite V3.0 requires Windows 2000/XP and will not install on Windows 98 FE. Refer to Siemens KB 23642592 and 24372175 for the V2 base media and SP2 release note.
Why did the CP 5611 driver fail after I moved it to another PCI slot or replaced RAM?
Windows 9x reassigns PCI IRQs whenever the hardware enumeration changes. The S7ONLINE access point "CP5611(MPI)" was bound to the old IRQ/DLL pair. Uninstall the CP 5611 driver, reseat the card, reinstall the driver, and re-bind the access point.
How do I confirm the MPI bus and CPU are healthy without a SCADA running?
Open STEP 7 Lite, choose PLC > Display Accessible Nodes. The CPU 314 IFM at MPI address 2 must appear within 5 seconds. On the bench a healthy CP 5611 returns "OK" on Set PG/PC Interface > Diagnostics > Test. Both checks together isolate the bus and the PC stack.