Resolving S7-200 Micro/Win 'Port Busy' Error on CPU 224

David Krause13 min read
S7-200SiemensTroubleshooting
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 Summary

When attempting to connect STEP 7-Micro/WIN (versions V4.0 SP9 and earlier, including V3.2) to a SIMATIC S7-200 CPU 224 over the RS-485 programming port, the application returns the error "Port could not be opened or is being used by another application" (also reported as "the port is already busy") on the Communication dialog refresh. The error persists across two different programming devices (PGs), two different PC/PPI cables, and across an MPI/CP5611 interface, indicating the fault is on the PLC side, not the host.

This symptom is distinct from a generic cable fault, address collision, or baud-rate mismatch. It is the typical signature of a CPU 224 whose Port 0 has been switched from PPI slave mode to Freeport (USS/Modbus RTU/custom protocol) mode by a user program, or whose stored project has corrupted communication parameters such that Micro/WIN cannot complete a PPI handshake. The factory default protocol for CPU 224 Port 0 is PPI slave at 9600 bit/s, address 2, 11-bit frame, and HSA 15/31/63/126 depending on the firmware generation.

Affected Hardware and Firmware

Item Order Number / Designation Notes
CPU 224 AC/DC/RLY 6ES7214-1AD23-0XB0 14 inputs / 10 outputs, Port 0 + Port 1
CPU 224 DC/DC/DC 6ES7214-1BD23-0XB0 Transistor outputs, two RS-485 ports
CPU 224 XP AC/DC/RLY 6ES7214-2AD23-0XB0 Analog I/O, higher instruction execution
CPU 224 CN 6ES7214-1AD23-0XB8 China-localized variant; same port behavior
CPU 224 AC firmware FW 1.x and 2.x PPI default 9600 bit/s, 11-bit, address 2
CPU 224 DC firmware FW 1.x and 2.x Same default; SM0.7 mode-switch behavior identical

Reference: SIMATIC S7-200 Programmable Controller System Manual (entry ID 1109582).

Root Cause Analysis

Five root causes generate the "port busy / port cannot be opened" condition. Each must be ruled out in sequence before the PLC is declared healthy.

Cause 1: Port 0 is in Freeport Mode

Freeport mode puts the RS-485 transceiver under direct control of the user program. While in Freeport, the CPU 224 will not respond to PPI frames from Micro/WIN. The mode is set by writing a value to SMB30 (Port 0) or SMB130 (Port 1) and is typically entered by a USS drive library, Modbus RTU master/slave routine, or a user-written XMT/RCV sequence.

Diagnostic signal: SM0.7 reflects the position of the mode switch. SM0.7 = 0 means the switch is in TERM (or STOP, depending on CPU generation), SM0.7 = 1 means the switch is in RUN. If a project enables Freeport only when SM0.7 = 1, the operator can recover PPI access by switching to TERM/STOP, which forces the SMB30 configuration to be ignored at the next scan.

Cause 2: Node Address Collision

PPI is a token-passing master/slave bus. If the CPU 224 default address (2) is the same as the PG/PC address in Micro/WIN's PG/PC interface, the token is rejected and Micro/WIN reports the port as busy. The PG default is typically address 0, but RSLinx Classic (where installed) or a previous project may have re-numbered the host to 2.

Cause 3: Baud Rate Mismatch

CPU 224 supports PPI at 9.6, 19.2, and 187.5 kbit/s on Port 0. If a project stored on the PLC (or written to the system block via download) set the port to a non-standard rate, Micro/WIN will fail to enumerate and may surface the failure as a port-busy error rather than a timeout. The 187.5 kbit/s rate is the only rate that supports MPI multi-master traffic over a CP5611.

Cause 4: System Block Corruption

If a partial download or power loss during programming left the CPU 224 with an invalid communication configuration in the system block, Port 0 will fail to initialize cleanly. The PLC will still execute user logic, but the RS-485 transceiver remains silent.

Cause 5: Cable/Driver Conflict

A USB-to-RS485 PC/PPI cable in use on the same PG as a CP5611 MPI card, or an active RSLinx service bound to the COM port, will claim the resource. Micro/WIN then reports the port as held by another application.

Prerequisites

  1. STEP 7-Micro/WIN V4.0 SP9 (or the latest service pack compatible with the target CPU firmware) installed on the engineering station.
  2. Siemens PC/PPI USB cable (6ES7 901-3DB30-0XA0) or RS-232 PC/PPI cable (6ES7 901-3CB30-0XA0) with a known-good DB-9 male-to-female extension no longer than 3 m.
  3. SIMATIC Field PG with built-in MPI interface and CP5611 module (PCI variant 6GK1561-1AA01, PCIe variant 6GK1561-1AU01), if MPI is the chosen path.
  4. Knowledge of the current mode-switch position on the CPU 224 (TERM, RUN, STOP).
  5. For final recovery: a blank Micro/WIN project and access to the S7-200 Tool Suite or Micro/WIN installation CD containing EEPROM / Wipeout utility.

Diagnostic Procedure

Run the following steps in order. Each step isolates one cause from the list above.

Step 1 - Verify Cable and COM Port

  1. Close Micro/WIN and any background service that may have claimed the COM port: RSLinx Classic, RSLinx Enterprise, ProTool/Pro RT, WinCC flexible, or any HMI runtime.
  2. Open Windows Device Manager → Ports (COM & LPT) and confirm the PC/PPI cable is enumerated (e.g., USB Serial Port (COM4)).
  3. In Micro/WIN, open Set PG/PC Interface and select PC/PPI cable (PPI). The Properties dialog must show the correct COM port, 9600 bit/s, 11-bit frame, and a PG address different from the PLC address. The factory PG address is 0.

Step 2 - Toggle the Mode Switch

  1. Place the CPU 224 in STOP (SM0.7 = 0).
  2. Wait 2 seconds, return the switch to TERM, and immediately attempt Communication → Double-Click to Refresh in Micro/WIN.
  3. If the PLC appears in the address table, the cause is Freeport mode running in RUN. Proceed to the Freeport Recovery solution.

Step 3 - Test All Three PPI Rates

  1. In Set PG/PC Interface → PC/PPI cable PPI → Properties, cycle through 9600, 19200, and 187500 bit/s.
  2. At each rate, double-click the address table. If the PLC appears at one rate only, the stored system block contains a non-default rate. The next download must restore 9600 bit/s to the system block.

Step 4 - Isolate the PLC on a Bus

  1. Disconnect the PPI/MPI network and connect the PG directly to the CPU 224 Port 0 with no other devices, no terminator resistors, and no TD/RETURN jumpers on the PC/PPI cable.
  2. Use a fresh Micro/WIN project (do not open the suspected corrupted project).
  3. Re-run the address-table refresh. A "port busy" error on a bus with a single PLC and a single PG eliminates Cause 5 and leaves Causes 1, 2, and 4 as candidates.

Solution 1: Recover from Freeport Mode

If the user program enabled Freeport on Port 0 (SMB30), the PLC can be forced back into PPI slave mode with the following approach.

  1. Power down the CPU 224.
  2. Move the mode switch to STOP.
  3. Power up. While the switch is in STOP, the SMB30 value controlling Freeport is ignored on most firmware revisions; PPI becomes the default behavior of Port 0.
  4. Connect Micro/WIN, double-click the address table, and confirm the PLC appears at address 2, 9600 bit/s.
  5. Once online, open the program block that contains the XMT or USS_init instruction, comment it out, and re-download the project with SMB30 left at the default value (0 = PPI slave).
Important: The Freeport configuration in SMB30 is evaluated at the END of every scan only when SM0.7 = 1. A STOP-position switch forces SM0.7 = 0 and effectively disables Freeport until RUN is re-entered, giving the operator a window for PPI access.

Solution 2: Resolve Address Collision

  1. In Micro/WIN, open Set PG/PC Interface → Properties.
  2. Change the PG/PC Address from 0 (or 2) to a unique value, e.g., 5.
  3. Leave Highest Station Address (HSA) at 31 for PPI or 126 for MPI/CP5611.
  4. Re-attempt the address-table refresh.

If RSLinx Classic is installed and a previous driver bound to the same COM port, stop the RSLinx service (Stop RSLinx Classic from the system tray), then re-attempt the connection. RSLinx will not free a COM port while its driver configuration points to that port.

Solution 3: Restore Baud Rate and Frame Format

Parameter PPI Factory Default MPI Default Recommended Setting
Baud rate 9 600 bit/s 187 500 bit/s 9 600 bit/s for first contact
Frame 11-bit 11-bit 11-bit
Address 2 2 2 (PLC) / 0 (PG)
HSA 15 (FW 1.x) / 31 (FW 2.x) 126 31 or 126
Gap update factor 10 n/a 10
Max station address 15 / 31 126 Match network size
  1. In Micro/WIN, choose System Block → Communication Ports.
  2. Set Port 0 to 9600 bit/s, 11-bit, PPI slave, address 2.
  3. Download the system block to the CPU 224. If the upload fails, perform a Stop-to-Run-to-Stop cycle to commit the system block to EEPROM.

Solution 4: Wipeout Utility (Factory Reset)

When the system block is corrupted and Micro/WIN cannot go online, the CPU 224 must be reset to factory defaults. Siemens provides the S7-200 Wipeout / Reset to Factory Defaults utility for this purpose. Reference: How do you reset a SIMATIC S7-200 CPU to factory defaults? (entry ID 2123168).

  1. Stop Micro/WIN.
  2. Install or extract the Wipeout utility from the Micro/WIN installation CD or from the Siemens support site.
  3. Connect the PC/PPI cable to Port 0 of the CPU 224.
  4. Launch the Wipeout tool, select the correct COM port and 9600 bit/s, then execute Reset to Factory Defaults.
  5. The PLC performs a memory clear, restoring address 2, 9600 bit/s, PPI slave, and clears the user program, data block, and system block.
  6. Re-open Micro/WIN and double-click the address table. The PLC must now appear.
Data loss: Wipeout erases the user program, all data blocks, the system block, the recipe area, the data log, and any retentive V/M/T/C values. Document the current program before running Wipeout, or use this as the last-resort step after a documented outage.

Solution 5: Cable and Interface Card Selection

Cable / Card Order Number Max Rate Use Case
USB PC/PPI 6ES7 901-3DB30-0XA0 187.5 kbit/s Notebook, single PLC
RS-232 PC/PPI 6ES7 901-3CB30-0XA0 187.5 kbit/s Legacy PG, no USB
CP5611 PCI 6GK1561-1AA01 12 Mbit/s MPI multi-master, PROFIBUS
CP5611 PCIe 6GK1561-1AU01 12 Mbit/s Modern PG with PCIe
CP5512 PC Card 6GK1551-2AA00 12 Mbit/s Laptop with CardBus

If the operator selected the wrong interface in Set PG/PC Interface, Micro/WIN can present a "port busy" error even though the cable is good. Confirm the selection matches the physical hardware (e.g., PC/PPI cable (PPI) for a USB PC/PPI cable, CP5611(MPI) for an MPI card).

Special Memory Reference for Freeport Control

SM Address Function Notes
SM0.7 Mode-switch position 0 = TERM/STOP, 1 = RUN
SMB30 Port 0 freeport control Bits 0-7: protocol, baud, parity
SMB130 Port 1 freeport control Same layout as SMB30
SMB86 / SMB186 RCV message status Port 0 / 1 Bit 7 = 1 if Freeport active
SMB87 / SMB187 RCV message control Port 0 / 1 Bit 6 = enable Freeport RCV
SMW92 Port 0 idle-line timeout (ms) Default 0; sets Freeport idle detect

Upload Failure at 100% Progress (CPU 224 CN Variant)

A second failure mode, reported on the CPU 224 CN (6ES7214-1AD23-0XB8) and similar Asian-localized variants, is Micro/WIN closing abruptly when the upload progress bar reaches 100%. The connection establishes and the program transfers, but the application terminates before the project is written to disk. Mitigations:

  1. Disable antivirus real-time scanning on the project directory during upload.
  2. Set the project directory to a non-synced local path (not OneDrive, Dropbox, or a network share).
  3. Run Micro/WIN in Run as administrator mode on Windows 10 / 11 to bypass the UAC virtualized write path.
  4. Upgrade to Micro/WIN V4.0 SP9 or later, which contains a fix for the 100% upload crash on localized firmware.
  5. Try the upload at 9 600 bit/s; some CN firmware revisions have upload stability issues at 187.5 kbit/s.

Verification Checklist

Run the following checks after the recovery procedure:

  1. Open Micro/WIN, click Communication → Double-Click to Refresh. The CPU 224 must appear in the address table at address 2, 9600 bit/s (or the configured rate).
  2. Click Upload. The program, system block, and data block must transfer without the "port busy" error.
  3. Go Online → Compare against the project on disk. The system block communication settings must show Port 0 = PPI slave, 9600 bit/s, address 2.
  4. Toggle the mode switch to RUN. SM0.7 must read 1 in the status chart.
  5. Toggle the mode switch to STOP. The PLC must remain online and the program must be paused (yellow RUN indicator off, green STOP on).

Troubleshooting Matrix

Symptom Most Likely Cause First Action Fallback
"Port busy" on first contact Freeport mode active Switch to STOP, retry Wipeout utility
"Port busy" only at 187.5 kbit/s CP5611 mismatch Set PG/PC to CP5611 MPI Switch to USB PC/PPI
"Port busy" on one PLC, OK on others System block corruption Try all three PPI rates Wipeout utility
"Port busy" on every PLC RSLinx or HMI software Stop RSLinx, close HMI Reboot PG, no services
Upload at 100% closes Micro/WIN Localized firmware (CN) Upgrade to SP9, run as admin Upload at 9 600 bit/s
PG sees PLC only in STOP Freeport enabled in RUN only Use SM0.7 guard in user program Disable XMT/USS_init at end of scan

Preventive Measures

  1. Default the CPU 224 to PPI slave (SMB30 = 0x00) at the top of the user program and only switch to Freeport inside a conditional that checks SM0.7, e.g., IF SM0.7 = 1 THEN SMB30 := 16#09.
  2. Document the PPI rate and PG address on a label affixed to the PLC enclosure.
  3. Keep a backup of the working project, system block, and data block on the engineering server; this avoids the Wipeout step if corruption is suspected.
  4. Maintain a one-to-one relationship between the COM port and the application; do not let RSLinx bind a port that Micro/WIN will use.
  5. For new installations, prefer the USB PC/PPI cable (6ES7 901-3DB30-0XA0) and set the PG/PC address to 0 with HSA 31.

Why does Micro/WIN report "port busy" on a CPU 224 that I have never programmed?

The PLC was likely loaded with a project that placed Port 0 into Freeport mode (SMB30 = non-zero). Switch the mode toggle to STOP (SM0.7 = 0), which forces Port 0 back to PPI slave on most firmware revisions, then refresh the address table in Micro/WIN. If the port still does not respond, run the Wipeout utility to restore factory defaults.

What is the default PPI address and baud rate of a CPU 224?

Factory default is address 2, 9600 bit/s, 11-bit frame, PPI slave mode. The Highest Station Address (HSA) is 15 on firmware 1.x and 31 on firmware 2.x. CP5611 MPI traffic normally runs at 187.5 kbit/s, but for first contact via Micro/WIN the cable must be set to 9600 bit/s to match the default.

How do I tell if my CPU 224 Port 0 is in Freeport mode?

Read SMB30 (Port 0) or SMB130 (Port 1) in the status chart. A value of 0x00 indicates PPI slave. A non-zero value indicates Freeport with the corresponding baud rate and parity. If you cannot go online, toggle the mode switch to STOP and reattempt the connection; if the PLC appears in STOP but disappears in RUN, the user program is enabling Freeport on entry to RUN.

Can I use a CP5611 MPI card to connect to a CPU 224?

Yes. Select CP5611(MPI) or CP5611(Auto) in Set PG/PC Interface, set the PG address to 0, the PLC address to 2, and use 187.5 kbit/s. The CP5611 supports PPI/MPI multi-master at 187.5 kbit/s and 1.5 Mbit/s. For first contact after a suspected Freeport lock-up, drop to 9.6 kbit/s to force a slower handshake.

Will the Wipeout utility delete the user program?

Yes. Wipeout clears the user program, all data blocks, the system block, the recipe area, and the data log. It resets the CPU to factory defaults. Document or upload the existing program from a working PG before running Wipeout. If the program cannot be uploaded, the Wipeout is the last-resort recovery and the program must be rebuilt or restored from backup.

Back to blog