Overview
Integrating National Instruments LabVIEW with a Siemens SIMATIC S7-300 PLC (for example the S7-315-2-DP) through the PLC's MPI/DP port is a recurring integration problem in mixed-vendor test cells, laboratory rigs, and supervisory stations. The challenge is twofold: (1) NI's own OPC servers historically lack a native MPI/USB driver, and (2) the Siemens PC Adapter (USB-MPI) does not appear as a standard COM port on the host PC, which prevents classic NI USB-485 converters from being used as a transparent MPI bridge.
This reference walks through the supported and field-proven paths to expose Siemens S7-300 tags to LabVIEW via OPC, then to the LabVIEW Datalogging and Supervisory Control (DSC) module. It also documents why the NI USB-485 converter alone cannot carry MPI traffic, and which third-party OPC server fills that gap.
LabVIEW itself is a graphical system design platform from National Instruments, used for automated production test, validation, and research systems. Its DSC module adds OPC client connectivity, shared variables, alarms, and historical logging on top of the development environment, which is why OPC is the typical integration seam between LabVIEW and non-NI PLCs such as the SIMATIC family. The LabVIEW development environment is distributed via the NI LabVIEW download portal.
Communication Architecture
Three functional layers sit between the LabVIEW VI and an S7-300 CPU:
- Physical layer: Siemens PC Adapter USB-MPI (6ES7 972-0CB20-0XA0) or a compatible IBH/MPI cable terminated at the PLC's MPI/DP port.
- Protocol layer: MPI/PROFIBUS on RS-485, addressed with the Siemens S7 protocol stack (S7Comm / MPI subset).
- OPC layer: An OPC DA 2.05/3.0 server that speaks S7Comm on the southbound side and exposes standard Data Access items to LabVIEW on the northbound side.
| Layer | Component | Function |
|---|---|---|
| Physical | Siemens PC Adapter USB-MPI (6ES7 972-0CB20-0XA0) | RS-485 ↔ USB, optically isolated |
| Physical | NI USB-485 converter (778473-01) | RS-485 ↔ USB, generic serial |
| Protocol | MPI 187.5 kbit/s (default), PROFIBUS DP up to 12 Mbit/s | Siemens proprietary master/slave |
| OPC server | NI OPC Servers (with NI Serial driver) | Generic DA server, requires a serial-side driver per device |
| OPC server | IBHsoftec S7 OPC Server / IBH Link | Native S7Comm driver over MPI, PPI, ISO-on-TCP, or IBH Link |
| OPC client | LabVIEW DSC, DSC Module Shared Variables | Subscribes to DA items via the NI OPC client wrapper |
The NI USB-485 converter is a transparent serial bridge; it does not implement the Siemens MPI protocol stack and does not advertise itself as a Siemens COM port. It therefore cannot be used directly as a substitute for the Siemens PC Adapter.
NI USB-485 Converter: Capabilities and Limits
The NI USB-485 converter (P/N 778473-01) is a FTDI-based USB-to-RS-485 adapter configured for 2-wire half-duplex. It appears in Windows as a virtual COM port (typically COMx) and supports baud rates up to 8 Mbit/s. From LabVIEW it is accessed through the standard VISA serial API.
For Siemens MPI integration, the converter is only viable in two scenarios:
- Freeport ASCII on an S7-200 PPI port: The S7-200 CPU can be put into Freeport mode, after which any RS-485 master (including the NI USB-485) can read/write raw ASCII frames. This is a manual protocol implementation and does not use OPC.
- Combined with a third-party protocol translator: Some third-party OPC servers expose a "generic serial" driver that expects S7 frames on a COM port; this is uncommon and not recommended for production.
NI OPC Server Driver Support for Siemens MPI
National Instruments distributes the NI OPC Servers package (formerly MatrikonOPC, now NI), bundled with LabVIEW DSC. The server includes a catalogue of device drivers; for Siemens PLCs, the supported drivers in current releases are:
- Modbus RTU/TCP – usable with S7 CPUs that have a Modbus library loaded.
- OPC UA Siemens Driver – available in NI OPC Servers 2019 and later; requires the S7 CPU to expose an OPC UA server endpoint (S7-1500/S7-1200 native; S7-300 via NetToPLCSim or external UA gateway).
- Siemens TCP/IP Ethernet – ISO-on-TCP (RFC 1006 / port 102), requires a CP343-1 or CP343-1 Lean on the S7-300 rack.
There is no NI-blessed driver for MPI/USB in NI OPC Servers. Searching the NI documentation site for "MPI" or "S7-300 USB" returns only Ethernet-based drivers. This is the root cause of the integration problem reported in the source thread.
Therefore, when the S7-300 is connected only through its MPI port and an Ethernet CP is not present, you must either (a) add Ethernet hardware to the rack, or (b) deploy an OPC server from a third party that speaks S7Comm over MPI.
Third-Party OPC Servers That Speak MPI
Two products fill the MPI gap that NI OPC Servers leaves open:
IBHsoftec S7 OPC Server
IBHsoftec (Germany) ships an OPC DA server that communicates natively with S7-200/S7-300/S7-400 CPUs through any of the following channels:
- MPI via IBH netLink (USB or Ethernet variants: 6FL1 141-3AG or 6FL1 141-3AH)
- PPI for S7-200
- ISO-on-TCP / S7Comm over Ethernet for direct CP343/CP443 access
- PROFIBUS DP via IBH Link S7++
The IBH netLink is functionally equivalent to the Siemens PC Adapter for OPC traffic but presents itself with a Windows-side S7 driver that the IBHsoftec OPC server consumes directly, which removes the need for any NI-side MPI driver.
Softing S7/S5 OPC Server
Softing Industrial Automation also publishes an OPC DA server for Siemens S7 over MPI/PROFIBUS, used with the Softing PROFIBUS master card or the Softing USB-PB adapter. It is supported by NI LabVIEW via the same DataSocket / Shared Variable mechanism described below.
Hardware Comparison: Which Cable Do You Actually Need?
| Adapter | Order Number | Interface | Supported by NI OPC? | Supported by IBH OPC? |
|---|---|---|---|---|
| Siemens PC Adapter USB-MPI | 6ES7 972-0CB20-0XA0 | USB ↔ MPI/PROFIBUS | No | Via IBH netLink only |
| Siemens PC Adapter USB A2 | 6GK1 571-0BA00-0AA0 | USB ↔ MPI/PROFIBUS | No | Via IBH netLink only |
| NI USB-485 converter | 778473-01 | USB ↔ RS-485 | Generic serial only | Not supported |
| IBH netLink S7 | 6FL1 141-3AG (USB), 6FL1 141-3AH (ETH) | USB/Ethernet ↔ MPI/DP | No | Yes, native |
| Softing USB-PB | FCA-USBM-PB | USB ↔ PROFIBUS DP | No | Softing OPC only |
Prerequisites
- LabVIEW 2019 or later with the DSC Module installed (provides the OPC client and Shared Variable Engine).
- NI OPC Servers 2019 or later (installed automatically with the DSC Module).
- S7-315-2-DP (or compatible S7-300 CPU) with the MPI/DP port enabled and a configured MPI address (default = 2).
- One of: Siemens PC Adapter USB-MPI (6ES7 972-0CB20-0XA0) + IBHsoftec S7 OPC Server, or IBH netLink S7, or a CP343-1 Lean with Ethernet and an ISO-on-TCP driver.
- Administrator rights on the Windows host for OPC DCOM configuration.
Step-by-Step: S7-315-2-DP via IBH netLink into LabVIEW DSC
Step 1 — Wire and configure the MPI link
- Connect the IBH netLink to the PLC's MPI port with a PROFIBUS cable terminated at both ends (typically the PLC bus connector and the netLink have integrated terminations).
- Set the PLC MPI address to 2 (default) in STEP 7 / TIA Portal under PLC Properties → MPI/DP Interface.
- Set the IBH netLink MPI address to 0 (master) via the IBH netLink configurator or the rotary switches on the device.
- Verify the link: from Windows, open IBH netLink Config → "Search Active Stations" — the S7-315-2-DP should appear with order number 6ES7 315-2AG10-0AB0 and firmware version listed.
Step 2 — Install and configure IBHsoftec S7 OPC Server
- Install IBHsoftec S7 OPC Server. Reboot.
- Launch the IBH OPC Configurator.
- Add a new PLC station: Connection = "IBH netLink", Address = the USB/ETH address returned by the netLink configurator, MPI Station Address = 2.
- Add the DBs and Merker/Prozessvariablen tags you want to expose. Example for DB10:
DB10.DBD0 REAL "Process_Temperature" DB10.DBD4 REAL "Setpoint" DB10.DBX8.0 BOOL "Pump_Run" DB10.DBX8.1 BOOL "Alarm_High" - Click Test Connection — you should see "OK" and live values updating.
Step 3 — Expose the IBH server to the NI OPC client
- Open Windows Component Services (dcomcnfg) → Computers → My Computer → DCOM Config.
- Confirm that the IBHsoftec OPC server ProgID is registered, for example
IBHS7.OPCServer.1. - If the NI OPC client is on a different machine, configure DCOM launch and access permissions for the IBH server to allow the LabVIEW host user.
Step 4 — Bind the OPC tags in LabVIEW DSC
- In the LabVIEW Project, right-click My Computer → New → I/O Server, choose OPC Client, and finish.
- In the OPC Client configuration, click Browse Server and select
IBHS7.OPCServer.1. - Drag the desired items from the server list into the I/O Server. LabVIEW generates Shared Variables bound to the DA items.
Step 5 — Use the variables in a VI
// Front panel indicator bound to: \opc:\<project>\Process_Temperature
// Reading a value:
SharedVariableRead(SharedVariableRef, 5000, errorCluster);
// Writing back:
SharedVariableWrite(SharedVariableRef, 21.5, errorCluster);
Drop a Shared Variable Node on the block diagram and bind it to the auto-created variable under opc:\<project>\<ioServerName>\<tag>. Update rate is configured on the variable's properties page; 100 ms is a typical default for monitoring, 1000 ms for trends.
Alternative Path: CP343-1 Ethernet (No MPI Cable Required)
If you can add a Siemens CP343-1 Lean (6GK7 343-1CX10-0XE0) to the S7-300 rack, you can drop the MPI cable entirely and let NI OPC Servers communicate over ISO-on-TCP directly:
- Configure the CP in STEP 7 Hardware Config: IP address, subnet mask, S7 connection activated.
- Open NI OPC Servers Configuration → New Channel → Driver = Siemens TCP/IP Ethernet.
- Device ID = the CP IP address, port 102 (ISO-on-TCP default).
- Add tags using the DB offset notation; NI OPC Servers handles the S7Comm PDU encoding internally.
This path is the cleanest for new installations and removes all MPI-specific hardware from the bill of materials.
DCOM and Security Checklist
OPC DA relies heavily on Windows COM/DCOM. On a default Windows install with the firewall on, OPC browsing between machines fails with error 0x80070005 (E_ACCESSDENIED). To eliminate these:
- Open Component Services → My Computer and ensure Enable Distributed COM is on.
- In Default Protocols, add the user running the LabVIEW DSC service under COM Security → Access Permissions → Edit Limits.
- Disable or open Windows Firewall for
opcda.exeand the IBH OPC service executable. - Set the IBH OPC service to run as Local System with "Allow interaction with the desktop" disabled, or as a dedicated domain account.
Troubleshooting Matrix
| Symptom | Likely Cause | Diagnostic | Fix |
|---|---|---|---|
| LabVIEW cannot see the IBH OPC server in the Browse dialog | DCOM or firewall blocking | Run opcenum enumerator test; review Windows Event Viewer |
Enable DCOM, open firewall for opcda.exe and the IBH service |
| OPC tags show quality = Bad | Wrong MPI address or terminator missing | IBH netLink Config → Search Active Stations | Correct address; verify bus terminator ON at PLC and netLink ends only |
| Item browse returns no items but connection is OK | DB not optimised for OPC; security level in PLC | Check STEP 7: DB must have standard access (not "optimised"; that flag is S7-1500 specific but cross-check) | Enable PUT/GET access on the CPU: Properties → Protection → Permit access with PUT/GET |
| Intermittent timeouts | MPI speed mismatch, EMI, or address conflict | Reduce to 187.5 kbit/s; check for duplicate MPI addresses | Lower MPI baud rate on PLC and netLink; verify unique MPI addresses on every node |
| NI USB-485 converter not recognised | Missing VISA driver | NI MAX → Devices and Interfaces → Serial & Parallel | Install NI-VISA, reboot; the converter must enumerate as a VISA serial resource |
| OPC DA 3.0 client cannot connect to a DA 2.05-only server | Server registered as v2 only | Inspect registry HKCR\CLSID\<server CLSID>
|
Re-register the server with admin rights, or switch the NI OPC client to DA 2.05 |
| LabVIEW DSC project loses tags after reboot | I/O Server not started as a service | NI IO Server Manager | Set I/O Server to start automatically with the SVE (Shared Variable Engine) service |
Verification
- In the NI OPC Servers or IBH Configurator, force a read on each tag — every value should update within the configured scan rate.
- In LabVIEW, place a Shared Variable Node on the block diagram, set mode to "Read", and run the VI. The front-panel indicator should show a value matching the PLC.
- Toggle a boolean bit (e.g. DB10.DBX8.0) in STEP 7's VAT table and confirm the indicator in LabVIEW updates within one scan period.
- From the I/O Server property page, enable Logging to a TDMS file and run the system for one hour. Open the TDMS file in DIAdem or the TDMS viewer to confirm continuous recording with no gaps.
Notes for the S7-200 User
If the target is an S7-200 (CPU 224, 226, etc.) and the application does not need full S7Comm, two simpler paths remain viable:
- PPI over COM port: The S7-200 ships with a PPI slave that the IBHsoftec server also supports, with the same netLink USB variant.
- Modbus RTU on Freeport: Implement a simple Modbus RTU slave in the S7-200 and read/write through the NI Modbus library. This is the only path where the NI USB-485 converter is genuinely useful, because the S7-200 in Freeport mode behaves like a generic RS-485 slave.
Note that S7-200 CPUs do not expose a standard MPI/DP front port in the same sense as S7-300; PPI and Freeport are the only RS-485-native modes.
Frequently Asked Questions
Can the NI USB-485 converter replace the Siemens PC Adapter USB-MPI?
No. The NI USB-485 converter is a transparent RS-485-to-USB bridge and does not implement the Siemens MPI protocol. For S7-300 MPI traffic you must use a Siemens PC Adapter (6ES7 972-0CB20-0XA0) together with a third-party OPC server such as IBHsoftec, or an IBH netLink.
Does NI OPC Servers ship with an MPI driver?
No. NI OPC Servers supports Siemens S7 communication over Ethernet (ISO-on-TCP / S7Comm) and via OPC UA on S7-1500/S7-1200. MPI/USB requires a third-party OPC server such as IBHsoftec S7 OPC Server or Softing S7 OPC.
What is the minimum STEP 7 CPU setting for OPC read/write?
Enable "Permit access with PUT/GET communication from remote partners" under the CPU's Protection properties in STEP 7/TIA Portal. Without it, both NI OPC Servers and IBHsoftec will read but writes will be rejected with quality Bad.
Which MPI baud rate should I select for an S7-315-2-DP?
187.5 kbit/s is the default and most robust value. Higher rates (1.5 Mbit/s, 12 Mbit/s) reduce scan time but require quality cabling, terminators at both ends only, and unique MPI addresses on every bus node.
Can I mix an S7-300 MPI link and a CP343-1 in the same LabVIEW project?
Yes. Add two I/O Servers in the LabVIEW project, each pointing at a different OPC server or device. Bind shared variables to the appropriate server. Use namespace prefixes (e.g. \opc:\<project>\MPI\ and \opc:\<project>\ETH\) to keep the two tag spaces separate.