Resolving S7-300 MPI S7 Connection Resource Errors in NetPro

David Krause14 min read
S7-300SiemensTroubleshooting
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

Problem Overview

When configuring an MPI network in STEP 7 with a CPU 317-2DP (order number 6ES7 317-2AJ10-0AB0) acting as master and two CPU 312 modules (6ES7 312-1AE13-0AB0) acting as slaves, NetPro returns the following error when the engineer attempts to insert a configured S7 connection:

A route could not be established between the local and remote partners. No configuration or network connection resources available.

The error wording is identical to the original German NetPro message: "Eine Route konnte zwischen den lokalen und entfernten Partnern nicht aufgebaut werden (keine Ressourcen verfügbar)". The condition is raised by NetPro before the connection is downloaded; it is not a runtime error. Most engineers initially assume a routing, subnet, or address conflict because the message mentions "no route". The wording is misleading: the failure is at the S7 connection resource table of one of the two endpoint CPUs, not at the MPI network layer.

Hardware and Firmware in Scope

Module Order Number Integrated Interfaces Max S7 Connections Default PG Reserved Default OP Reserved
CPU 317-2DP 6ES7 317-2AJ10-0AB0 MPI/DP combo, PROFIBUS DP master/slave 16 1 1
CPU 312 6ES7 312-1AE13-0AB0 MPI only 6 1 1

The CPU 317-2DP ships with 512 KB of work memory, 4 MB of load memory, and a 0.1 ms / 1 kbit instruction execution profile suitable for medium-sized plants. The CPU 312 ships with 32 KB of work memory and is intended for small, low-cost installations.

Reference: S7-300 CPU 31xC and CPU 31x: Operating Instructions (Siemens Support, entry ID 12996906).

Technical Background: MPI, PROFIBUS, and S7 Connections

The Multi-Point Interface (MPI) is a Siemens-proprietary protocol that runs on the RS-485 physical layer standardized by IEC 61158 / EN 50170 (PROFIBUS). The MPI subset is engineered for engineering, HMI, and peer-to-peer traffic between S7 controllers rather than high-performance I/O. The default baud rate for legacy S7-300 CPUs is 187.5 kbps; all stations on a single bus segment must operate at the same baud rate. The maximum number of nodes per MPI segment is 32, of which one address is reserved for the programming device (address 0).

Parameter Value Notes
Physical layer RS-485, 9-pin D-sub Shielded twisted pair (6XV1 830-0EH10)
Default baud rate 187.5 kbps Selectable: 19.2 kbps / 187.5 kbps / 1.5 Mbps
Max segment length @187.5 kbps 50 m Up to 1100 m with two repeaters
Max nodes per segment 32 Address 0 reserved for PG
Topology Line, terminated at both ends Terminating resistor on first and last connector

Across MPI and PROFIBUS, S7 communication uses the S7 connection model. An S7 connection is a logical, fully-configured link used for services such as PUT, GET, USEND, URCV, BSEND, BRCV, and X_PUT/X_GET. Each S7 connection is identified by a local connection ID (an integer 1..N) and consumes one slot in the S7 connection resource table of the local CPU and one slot in the S7 connection resource table of the remote CPU. Resources are not shared; they are pre-allocated at HW Config compile time and downloaded with the hardware configuration.

Root Cause Analysis: Connection Resource Exhaustion

The CPU 312 family is a budget PLC. With only six S7 connection resources, the CPU 312 must share those resources between PG (STEP 7 online), OP/TP (HMI), and S7 peer-to-peer links. STEP 7 reserves one resource for PG and one for OP by default, leaving four resources for S7 communication with other CPUs. The CPU 317-2DP, with sixteen resources, is not the bottleneck in a three-CPU project.

When NetPro attempts to compile a new S7 connection between the 317-2DP and one of the CPU 312s, STEP 7 performs a per-endpoint check:

  1. Look up the partner CPU in the project.
  2. Read the Communication tab of both endpoints' CPU objects.
  3. Verify at least one S7 connection resource is free on the local CPU.
  4. Verify at least one S7 connection resource is free on the remote CPU.
  5. If both checks pass, allocate a connection ID and emit the connection into the SDT (System Data Table).

When the CPU 312's S7 connection table is full, step 4 fails and NetPro reports the misleading "no route" message. The CPU 312's S7 connection count can be exhausted by:

  • Two configured S7 connections (one to the 317-2DP, one to a third CPU),
  • Reserved resources for an OP or TP that is not actually in use,
  • Reserved resources for a PG that is not actually used in this station,
  • Implicit reservations by libraries or CPs that pre-allocate resources.

The error is not raised by an MPI routing failure, an MPI bus fault, or a duplicate address. Resolving the resource table is the only path to a green S7 connection.

Diagnostic Procedure

  1. Open SIMATIC Manager and load the station hardware configuration of the CPU 312 slave that fails.
  2. Double-click the CPU 312 in HW Config to open the object properties.
  3. Select the Communication tab. STEP 7 displays the S7 connection resource table with three columns: Total, Configured, and Free. For a CPU 312 the Total field is 6.
  4. Note the Free value. If it is 0, the CPU is the bottleneck and is the direct cause of the NetPro error.
  5. Repeat for the CPU 317-2DP. Confirm the 317-2DP has at least 2 free S7 connection resources (one per slave CPU).
  6. Open the online diagnostic buffer of the CPU 312 (PLC > Module Information > Diagnostic Buffer). Look for events with ID 0xE0FE, 0xE1FE, or 0x494A indicating resource exhaustion at the communication subsystem.
The Communication tab is only visible in offline HW Config. If you are online only, the alternative is the online diagnostic buffer and the Connection Status view, which lists each configured connection with its handle, partner address, and current state.

Solution 1: Free Connection Resources on the CPU 312

The most direct fix is to reclaim S7 connection resources by reducing the reserved PG and OP counts on the CPU 312, since PG and OP are usually served by the master CPU 317-2DP in this topology.

  1. Open the CPU 312 in HW Config.
  2. Select the Communication tab.
  3. Set PG Communication from 1 to 0 if no local PG is connected directly to the CPU 312 MPI port.
  4. Set OP Communication from 1 to 0 if no local OP/TP is connected to the CPU 312 MPI port.
  5. Set S7 Communication to the maximum (4 for CPU 312).
  6. Save and recompile the station (Station > Save and Compile).
  7. Download the hardware configuration to the CPU 312 (target system must be in STOP or run with consistent blocks; for hardware reconfiguration, STOP is recommended).

If PG communication is required at the slave CPU 312 (because the local MPI port is used for engineering), leave the PG count at 1. The same applies to OP. Each slot freed here directly adds one S7 connection to the available pool.

Setting Default After Optimization S7 Conn Free
PG Communication 1 0 +1
OP Communication 1 0 +1
S7 Communication 4 4 4
Total Free S7 Conn 2 6 —

Solution 2: Switch to PUT/GET Communication

If only a small, periodic data exchange is required (read 20 bytes from each slave, write 20 bytes back), unconfigured S7 communication with SFB 14 / SFB 15 avoids the per-connection resource reservation. PUT/GET works over a "connection for all" slot and is a one-shot allocation, not a per-peer slot.

  1. Open the CPU 312 in HW Config.
  2. Select the Protection tab.
  3. Check the box Permit access via PUT/GET communication from remote partner (CPU, CPs, ...).
  4. Save and download to the CPU 312.

Then in the CPU 317-2DP user program, instantiate SFB 14 "GET" and SFB 15 "PUT". The relevant parameters are:

CALL "GET", DB_GET_312_1   // Read 20 bytes from CPU 312 MPI addr 3
REQ    := TRUE
ID     := W#16#0001         // Connection ID (assigned by NetPro or hardcoded)
ADDR_1 := P#M 100.0 BYTE 20 // Source area in the remote CPU
RD_1   := P#M 200.0 BYTE 20 // Destination area in local CPU
NOP    := 0

Reference: STEP 7 S7-300/400 System and Standard Functions Reference Manual (entry ID 44240604).

PUT/GET does not require a configured S7 connection in NetPro. The MPI routing is performed dynamically by the SFB call using the partner MPI address. This pattern is widely used for small, deterministic data exchanges and completely sidesteps the connection resource table ceiling.

Solution 3: Validate the MPI Network Itself

Resource exhaustion should not be confused with physical MPI issues. Validate the network independently of the resource analysis:

Parameter CPU 317-2DP CPU 312 #1 CPU 312 #2
MPI Address 2 3 4
Highest MPI Address 31 (default) — —
Baud Rate 187.5 kbps 187.5 kbps 187.5 kbps
Subnet MPI (1) MPI (1) MPI (1)
Connection Resources Used 0 (start) 0 (start) 0 (start)

Address 0 is reserved for the programming device. Do not assign address 0 to any CPU. Address 1 is sometimes used as the default for the first CPU; the auto-assigned 2, 3, 4 are valid and unique.

For the physical layer, use shielded PROFIBUS cable (Siemens 6XV1 830-0EH10) with PROFIBUS D-sub connectors (6ES7 972-0BA12-0XA0). The first and last stations in the bus must have the terminating resistor switch set to ON. Open the diagnostic buffer of each CPU and confirm there are no bus fault entries (event IDs 0x0101, 0x0201 indicating MPI faults).

Solution 4: Re-create the S7 Connection in NetPro

After freeing resources, the S7 connection must be re-created cleanly:

  1. Open the project in SIMATIC Manager.
  2. Select the S7-300 station and double-click NetPro (or right-click the project > Open NetPro).
  3. Click the CPU 317-2DP. From the toolbar, choose Insert > New Connection, or drag an S7 connection from the master CPU to one of the CPU 312s.
  4. Right-click the new connection and select Object Properties.
  5. Set the local Connection ID (e.g., 1 for slave #1, 2 for slave #2).
  6. Confirm the Type is S7 connection.
  7. Confirm the partner is the correct CPU 312 with the correct MPI address.
  8. Save and compile the network (Network > Save and Compile).
  9. Download the connection configuration to the master and to the slave CPU.

The Connection ID is a unique handle used in the user program. STEP 7 automatically assigns IDs 1..N. For a CPU 312, IDs 1..6 are valid. For the CPU 317-2DP, IDs 1..16 are valid. Never use ID 0 (it is reserved for the global "connection for all").

Verification

  1. After downloading, go online with the CPU 317-2DP (PLC > Connect to Target System).
  2. Open the connection status (right-click the master CPU in NetPro > Connection Status, or use PLC > Monitor/Modify in the project).
  3. Confirm each S7 connection is reported as Established with status word 0x0004.
  4. Inspect the diagnostic buffer of each CPU 312 for events 0x4941 / 0x4942 indicating the S7 connection has been accepted.
  5. Run a test user program on the master: call SFB 14 GET with the configured connection ID and confirm the data area in the slave CPU is correctly read.
Status Word Meaning Action
0x0004 Connection established, no errors Proceed with user program
0x0001 Not yet established Wait, then re-check
0x0002 Disabled Check Protection tab on partner
0x0008 Established with errors Check bus termination, baud rate, partner state

Troubleshooting Matrix

Symptom Likely Cause Corrective Action
NetPro error "no resources available" at S7 connection creation CPU 312 S7 connection table is full Reduce PG/OP reservations in Communication tab; or switch to PUT/GET
Connection established but data never updates Wrong connection ID used in SFB call Cross-check connection ID in NetPro with the ID parameter of SFB/FB calls
Connection drops randomly MPI bus error or termination missing Enable terminators on first and last stations; check cable for damage
Download blocked with "address conflict" Duplicate MPI addresses in the project Reassign addresses; never use 0 for a CPU
NetPro does not list the CPU 312 as a partner CPU 312 station is not in the same STEP 7 project Add the CPU 312 station to the project, or use a cross-project S7 connection
Connection online but SFB returns status 0x31 Partner CPU in STOP or faulted Bring CPU to RUN; clear faults
PUT/GET rejected with protection violation PUT/GET access disabled on CPU 312 Enable in Protection tab of HW Config
MPI bus fault event in diagnostic buffer Wiring error or missing termination Inspect PROFIBUS connectors; set terminator switches
Baud rate mismatch between stations Different profile in HW Config vs. online Set all stations to 187.5 kbps and re-download HW Config

Alternative Communication Pathways

If the CPU 312's connection resource ceiling becomes a recurring bottleneck, consider an alternative physical layer:

  • PROFIBUS DP with the CPU 317-2DP as DP master. The CPU 312 itself does not have an integrated DP interface; an external CP 342-5 (e.g., 6GK7 342-5DA02-0XE0) must be installed. This converts the CPU 312 to a DP slave and uses a different resource pool.
  • Industrial Ethernet with a CP 343-1 Lean (6GK7 343-1CX10-0XE0) on the master and a CP 343-1 Lean on each CPU 312. Ethernet lifts the S7 connection ceiling to 16-32 per CP and provides 10/100 Mbps throughput.
  • PROFINET with a CPU 317-2PN/DP (6ES7 317-2EK14-0AB0) as master. The 6ES7 317-2AJ10-0AB0 in this project does not have an integrated PROFINET interface, so a PN/DP upgrade requires a hardware replacement.

For new installations, choose PROFINET; for brownfield additions to the 317-2DP / 312 platform, PROFIBUS DP or Industrial Ethernet with CPs is the typical migration path.

Key Takeaways

  • The CPU 312 (6ES7 312-1AE13-0AB0) is limited to 6 S7 connection resources in total. With default PG and OP reservations, only 4 S7 communication slots are available. This is the typical bottleneck in a three-CPU MPI project.
  • The error "no configuration or network connection resources available" is raised at the S7 connection resource level, not the network routing level. The wording is misleading but well-documented in Siemens support entry IDs 12996906 and 44240604.
  • The fix is either to free resources on the CPU 312 (reduce PG/OP reservations) or to switch the data exchange to unconfigured PUT/GET with access enabled in the Protection tab.
  • Always confirm MPI addresses are unique (0 is reserved), the bus is terminated at both ends, and the baud rate is consistent across all stations.
  • For projects requiring more than 4 S7 communication partners on a CPU 312, upgrade to Industrial Ethernet via CP 343-1 or migrate to a CPU 31x PN/DP variant.

Related Siemens Documentation

What is the maximum number of S7 connections on a CPU 312 (6ES7 312-1AE13-0AB0)?

The CPU 312 supports a maximum of 6 S7 connection resources in total. With the default settings of 1 for PG and 1 for OP, only 4 S7 communication resources remain for peer-to-peer links with other CPUs. The default split is configurable in the Communication tab of HW Config.

What does the NetPro error "no configuration or network connection resources available" mean?

It means the S7 connection resource table on the local or remote CPU is fully allocated. The CPU 312 is the typical culprit because of its small resource budget. Free resources by reducing PG/OP reservations in the CPU's Communication tab, or switch to PUT/GET with PUT/GET access enabled in the Protection tab.

Can I use PUT/GET between a CPU 317-2DP and two CPU 312 slaves without configuring an S7 connection in NetPro?

Yes. Enable "Permit access via PUT/GET communication from remote partner" in the Protection tab of each CPU 312's HW Config. Then call SFB 14 (GET) and SFB 15 (PUT) in the CPU 317-2DP user program, supplying the partner MPI address as a parameter. PUT/GET uses a global connection slot and does not consume a per-peer S7 connection resource.

What is the maximum MPI bus length and baud rate for S7-300 CPUs?

At the default 187.5 kbps, the maximum segment length is 50 m without a repeater. With two repeaters, the segment can be extended to 1100 m. The S7-300 supports 19.2 kbps, 187.5 kbps, and 1.5 Mbps. All stations on the same MPI segment must operate at the same baud rate.

Why does the MPI address default to 2 for the CPU 317-2DP and 3 or 4 for the CPU 312 slaves in my STEP 7 project?

STEP 7 auto-assigns the next free MPI address when a CPU is added to the project. Address 0 is reserved for the programming device, and address 1 is sometimes used as a default for the first CPU. The auto-assigned 2, 3, 4 are valid and unique. Always verify the addresses manually before downloading the hardware configuration.

Can I use PROFIBUS DP between the CPU 317-2DP and the CPU 312 without an S7 connection?

Yes. The CPU 317-2DP can act as a DP master, but the CPU 312 has no integrated DP interface. You need an external CP 342-5 (e.g., 6GK7 342-5DA02-0XE0) on the CPU 312 side to act as a DP slave. DP cyclic I/O uses different resources than S7 connections and is preferable for high-throughput, deterministic I/O exchange.

Back to blog