Omron SYSMAC Mini SP16 Programming Cable Pinout and PC Connection

James Nishida14 min read
HMI ProgrammingOmronTechnical Reference
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

Overview

The Omron SYSMAC Mini SP16 is a compact 16-point PLC from the SP-series brick controller family (SP10/SP16/SP20). Programming the SP16 from a modern PC requires a custom serial cable because the CPU's peripheral port uses a non-standard 7-pin mini-DIN (PS/2-style) connector with logic-level signalling rather than true RS-232C levels. The peripheral port is shared with the handheld programming console; there is no dedicated RS-232C port on the CPU module itself.

This reference documents the field-proven cable wiring originally reverse-engineered by Jay Anthony and clarified by Wim Huiskamp, the full SP10/SP16/SP20 peripheral port pinout, the two valid PC-side cable options, the minimum 3-wire build used by technicians, supported programming environments (MiniLSS, SSS, Syswin, CX-Programmer), and the resolution for the well-known "Runtime error 200 at 3753:91" failure when installing MiniLSS on a fast machine.

The authoritative source for hardware-level electrical and logical specifications is the SP10/SP16/SP20 Operation Manual (W197-E1-2B). Use the manual as the canonical reference for jumper settings, I/O assignments, and instruction set details not reproduced in full here.

SP16 Hardware Identification

The SP16 is the 16-I/O version of the SYSMAC Mini brick family. Before building the cable, confirm the CPU you have on the bench:

Model I/O Count Peripheral Port Programming Tools
SP10 10 points 7-pin mini-DIN (PS/2 form factor) MiniLSS, SSS, Syswin, CX-Programmer (LSS subset)
SP16 16 points 7-pin mini-DIN (PS/2 form factor) MiniLSS, SSS, Syswin, CX-Programmer (LSS subset)
SP20 20 points 7-pin mini-DIN (PS/2 form factor) MiniLSS, SSS, Syswin, CX-Programmer (LSS subset)
The peripheral port on the SP10, SP16, and SP20 is electrically identical. A cable built for the SP10 works on the SP16 and SP20 without modification. The connector is keyed so the cable can only be inserted in one orientation.

Serial Port Electrical Characteristics

The SP16 peripheral port is NOT a true RS-232C port. It uses TTL-level signals (0 to 5 VDC) with an internal 7404-series hex inverter between the CPU and the connector, plus a current-limiting resistor and filter capacitor on the receive line. The two data signals (SD and RD) are inverted relative to RS-232C convention:

PLC Port Direction Internal Net Name Logic Level RS-232C Equivalent
PLC receives (from PC) "to CPU" TTL high = mark (idle) Negative voltage (-3 to -15 V) = mark on a true RS-232 port
PLC transmits (to PC) "from CPU" TTL high = mark (idle) Negative voltage (-3 to -15 V) = mark on a true RS-232 port

The 7404 inside the CPU handles level translation and inversion in both directions, so the cable only needs to cross the SD/RD lines and provide a common ground. Do not attempt to drive the peripheral port with a real RS-232 line driver (e.g., MAX232) - the voltage swing will damage the CPU input. Conversely, do not connect the SP16 port to another SP16 without a level inverter in between.

Peripheral Port Pin Assignment (7-pin mini-DIN)

Pin Signal Direction (PLC viewpoint) Notes
1 SD (Send Data) Output (from CPU to PC) Inverted TTL, idle = 5 V
2 RD (Receive Data) Input (from PC to CPU) Inverted TTL, idle = 5 V
3 Common / SG Reference Signal ground; tie to PC DB9 pin 5
4 +5 V (Vcc) Output (CPU power) Used by programming console for power; not required for PC cable
5 RTS / Handshake Output (from CPU) Optional; not required for one-way programming session
6 CTS / Handshake Input (to CPU) Optional; not required for one-way programming session
7 Frame Ground / Shield Reference Optional chassis bond

Note: pin numbering above is the convention used by the field wiring diagram in the original reverse-engineered schematic. Some Omron service notes number the connector differently (1=Shield, 2=SD, 3=RD, 4=+5V, 5=SG, 6=RTS, 7=CTS). Always probe with a multimeter and an oscilloscope before soldering: SD and RD will show 5 V idle, SG will show 0 V referenced to PLC 24 V common, and +5 V will power a small LED indicator.

DB9 PC Serial Port Reference

DB9 Pin Signal Direction (PC viewpoint) Standard RS-232 Voltage (Mark/Space)
1 DCD Input Mark = -3 to -15 V
2 RD (Receive Data) Input Mark = -3 to -15 V
3 TD (Transmit Data) Output Mark = -3 to -15 V
4 DTR Output Mark = -3 to -15 V
5 SG (Signal Ground) Reference 0 V
6 DSR Input Mark = -3 to -15 V
7 RTS Output Mark = -3 to -15 V
8 CTS Input Mark = -3 to -15 V
9 RI Input Mark = -3 to -15 V

Cable Option A: Converter Cable + Null Modem

The first valid configuration uses a short converter pigtail that adapts the SP16 mini-DIN to a female DB9 wired as a "DTE" device (i.e., it looks like a PC to the next cable in the chain). A standard null-modem cable is then used between this pigtail and the PC's DB9.

Option A: Converter + Null Modem SP16 mini-DIN (male) 1 SD --------+ 2 RD -------+| 3 SG ------+|| 4 +5V ---- 5 RTS --- 6 CTS --- 7 GND--- Converter Pigtail (DB9F) 2 RD <---- SD (1) 3 TD <---- RD (2) 5 SG ----- SG (3) 4 DTR --R-- +5V (4) 7 RTS ----- RTS (5) 8 CTS ----- CTS (6) ---- Shield (7) PC DB9 (male) 2 RD <---- 3 TD <---- 5 SG ----- 4 DTR --- 7 RTS --- 8 CTS --- Pigtail NULL MODEM (internal crossings: 2-3, 4-5, 6-20, 7-8)

The internal cross-over of the null-modem cable provides the 7404-based inversion at the PC end, and the converter pigtail simply re-routes SD/RD/SG to the matching mini-DIN pins. The 7404 hex inverter stays inside the SP16 CPU; it is NOT replicated in the pigtail. The pigtail is fully passive.

Cable Option B: Direct SP16-to-PC Cable

The second valid configuration is a single integrated cable that connects the SP16 peripheral port directly to a PC DB9 male. This is the preferred field build because it removes the extra null-modem adapter and reduces failure points.

Option B: Direct SP16 to PC Cable (one-piece) SP16 mini-DIN (male) 1 SD (out) ---------- 1 (DCD) 2 RD (in) ----------- 2 (RD) 3 SG --------------- 5 (SG) 4 +5V ------------- (no conn) 5 RTS ------------- 7 (RTS) 6 CTS ------------- 8 (CTS) 7 Shield ----------- Shell PC DB9 (male) 1 DCD 2 RD 5 SG 7 RTS 8 CTS Shell No null modem; crossings done inline. Internal CPU inverter handles RS-232 polarity.

The direct cable is mechanically simple: a male 7-pin mini-DIN (salvaged PS/2 cable works) on the PLC end and a female DB9 on the PC end, with five conductors. The 7404 inside the SP16 provides the inverting buffer so the PC sees proper RS-232 polarity on its DCD/RD inputs.

Minimum 3-Wire Build (Sid's Field Build)

For sites where the SP16's RTS/CTS handshaking is not used (typical for upload/download operations with MiniLSS), a 3-wire variant is fully functional. This is the build documented by Sid Newman and the variant most often reproduced on the bench:

SP16 mini-DIN Pin Wire PC DB9 Pin
1 (SD) TX wire 2 (RD)
2 (RD) RX wire 3 (TD)
3 (SG) Ground 5 (SG)
Without hardware handshaking the PC software (MiniLSS, SSS, or CX-Programmer in LSS mode) must be set to XON/XOFF or no-flow-control. If you observe garbled characters or session timeouts, enable software flow control in the programming tool's COM port settings before suspecting the cable.

PC Side Handshake Jumpering

Many older PC serial ports refuse to assert DTR/RTS by default, which trips a "PLC not connected" error in MiniLSS. If the SP16 is wired to the PC's DTR/DSR/DCD lines (pins 4, 6, 1), the following DB9 jumpers force the port to believe a device is present and active:

  • Jumper DB9 pin 1 (DCD) to DB9 pin 4 (DTR)
  • Jumper DB9 pin 6 (DSR) to DB9 pin 4 (DTR)
  • Jumper DB9 pin 7 (RTS) to DB9 pin 8 (CTS)

This is a 1-4-6 plus 7-8 loop. Modern USB-to-serial converters typically assert DTR/RTS automatically; on these adapters the jumpers are usually unnecessary. On a true 16550-era DB9 from a 486 laptop, the loopback may be required.

USB-to-Serial Adapter Caveats

Modern laptops no longer ship with a DB9 serial port. A USB-to-RS232 adapter (FTDI FT232, Prolific PL2303, or CH340 based) is required. Critical caveats for the SP16:

  • Set the COM port number to COM1..COM4. Some legacy programming tools (MiniLSS, SSS) only scan the first four COM ports. Use the adapter's advanced properties dialog to force the port number.
  • Disable FIFO buffers in the adapter's advanced properties. The SP16 uses 9600 bps (default) or 19200 bps; FIFO-buffered adapters can introduce latency that breaks the SP16's polling protocol.
  • Avoid PL2303 clones. Counterfeit Prolific chips on eBay adapters drop characters at 9600 bps. Genuine FTDI or official Prolific adapters are recommended for programming older Omron brick controllers.
  • Match voltage levels. The USB adapter presents true RS-232 levels ( +/-5 to +/-10 V ) on its DB9; this is correct for the SP16 cable, which passes the levels to the 7404 inverter on the CPU.

Programming Software Options

Tool SP16 Support Modern Windows Notes
MiniLSS (V3 / V4) Full LSS subset Win95/98/ME only; XP with compatibility shim Native LSS editor; the original Omron tool for the SP-series
SSS (Sysmac Support Software) Full LSS subset Windows 3.1/95/98 Older Omron tool; superseded by CX-Programmer
Syswin SP-series supported Win95/98/NT 4.0 Ladder and SFC editor; free download from Omron legacy archive
CX-Programmer (LSS mode) SP-series via device type "SP-series (LSS)" Windows XP / 7 / 10 (32-bit; partial 64-bit) Modern path; use PLC type C-series (LSS) or SP-series driver

CX-Programmer can communicate with the SP16 if the correct PLC Device Type is selected. The relevant Omron part is the "SYSMAC Way LSS" driver. CX-Programmer v9.x and later expose the SP family under "Device Type: SP-series". If the device type is not visible, install the legacy LSS plugin that ships with CX-Programmer v6.1 or earlier. Reference the SP10/SP16/SP20 Operation Manual (W197-E1-2B) for the instruction subset supported by the LSS driver.

MiniLSS Installation and the Runtime Error 200 Fix

MiniLSS is a 16-bit DOS/Windows 3.1 application. On faster PCs the installer and runtime will fail with the well-known:

Runtime error 200 at 3753:91

Root cause: the original MiniLSS installer calls a Borland Pascal RTL delay-loop routine whose iteration count is computed from the CPU clock. On machines faster than ~200 MHz the integer overflows and the delay routine divides by zero, producing Runtime error 200. There are two field-proven fixes:

Fix 1: CPU Speed Throttling (Not Recommended)

Some legacy forums suggest slowing the CPU using BIOS settings, ThrottleWatch, or the older AMD K6/K7 clock dividers. This works on a 1.3 GHz Athlon (as reported in the source thread) but is fragile - the OS scheduler can change clock multipliers dynamically. Use only as a last resort.

Fix 2: Patch the Binary (Recommended)

  1. Download a "Turbo Pascal CRT patch" utility, e.g., TPCRTPATCH by Kennedy Software, or use a hex editor to locate the offending DIV instruction at offset 3753h.
  2. Replace the instruction bytes with NOPs (0x90) or patch the divisor to a non-zero constant.
  3. Run the patched MiniLSS.EXE from a Windows 95/98 DOS box or under Windows XP compatibility mode.

Alternatively, run MiniLSS in DOSBox with a fixed cycles setting (e.g., cycles=10000) which emulates a slow 486 and prevents the overflow. Set cycles lower than auto; 5000-15000 cycles is the workable range for a P133 emulation.

MiniLSS Installation Procedure (from Floppy)

  1. Copy the contents of the MiniLSS distribution disk to a working directory on the target PC, e.g., C:\OMRON\MINILSS.
  2. From a DOS prompt, change to that directory and run INSTALL.EXE.
  3. Press F2 to install from drive A: to C: (or modify the source path to match your working directory).
  4. When the installer prompts for a working directory, accept the default C:\OMRON\MINILSS.
  5. Reboot into Windows 95/98 (or boot pure DOS on a 486-class machine for best compatibility).
  6. Launch MiniLSS; configure the COM port (COM1..COM4), baud rate (9600), and PLC type (SP-series).
If INSTALL.EXE produces a "General Protection Fault" on Windows XP or later, extract the installation archive with 7-Zip and run MiniLSS directly from the extracted directory; the installer is not strictly required if all files are present.

Communication Parameters

Parameter Value Notes
Baud rate 9600 (default), 19200 (SP16B only) Set by SP-series DIP switch or by ladder program
Data bits 7 LSS protocol uses 7-bit ASCII
Parity Even Required by LSS host link
Stop bits 2 Required by LSS host link
Flow control None (3-wire) or XON/XOFF MiniLSS default is XON/XOFF
Protocol Omron LSS Host Link (1:N, unit 00) Half-duplex, polled
PLC unit number 00 Default; can be changed in CX-Programmer / Syswin

Verification Procedure

  1. Power the SP16 from a 100-240 VAC or 24 VDC supply per the W197 manual. Confirm the POWER LED is steady green and the RUN LED is green or flashing.
  2. Place the CPU in PROGRAM mode: set the mode switch to PROG (or stop the scan from the programming tool).
  3. Connect the cable, then connect to the PC's serial (or USB-serial) port.
  4. Launch MiniLSS or CX-Programmer. Set COM port, 9600, 7-E-2.
  5. Issue a "Read PLC" or "Upload Program" command. A successful session returns the program checksum and the PLC type string (e.g., "SP16") within 2-3 seconds.
  6. Verify with an oscilloscope or a serial line analyzer: a 5 V idle on the SP16 SD line (pin 1) and transitions to 0 V during transmission.
  7. Toggle a discrete output (e.g., 100.00) from the programming tool and confirm the corresponding SP16 output LED changes state.

Troubleshooting Matrix

Symptom Likely Cause Fix
"Communications error" immediately on connect Wrong COM port selected, or USB adapter not enumerated Verify COM port in Device Manager; set to COM1..COM4
Garbled characters, frequent timeouts FIFO buffers enabled on USB-serial Disable FIFO in advanced port properties
Runtime error 200 at 3753:91 on MiniLSS start CPU too fast for Borland Pascal RTL Patch binary or use DOSBox with cycles=10000
PLC does not respond, all LEDs off No power or PLC in run with watchdog fault Check 24 VDC or 100-240 VAC supply; clear fault and cycle power
RX LED on USB adapter flickers but TX stays dark Cable RX/TX swapped, or SD pin miswired Recheck mini-DIN pin 1 to DB9 pin 2 connection
Connection works on 486 laptop, fails on 1.3 GHz Athlon CPU speed issue or USB-serial latency Use patched MiniLSS or slower COM port emulator
CX-Programmer does not list SP-series device LSS plugin not installed Install CX-Programmer v6.1 or run Add/Remove on v9.x
Programs upload but cannot be edited PLC memory protected, or wrong PLC type selected Switch CPU to PROGRAM mode; verify PLC type matches CPU
SP20 used with same cable: works Expected - SP10/SP16/SP20 share the peripheral port No action needed; the cable is compatible across the family

Safety Notes

Disconnect AC mains and 24 VDC field power before inserting or removing the programming cable on a live machine. The mini-DIN connector on the SP16 is not rated for hot-plug; a partial insertion can short the +5 V pin (4) to a data line and damage the 7404 hex inverter inside the CPU.
The SP16 uses 24 VDC inputs on most models. Field devices (limit switches, sensors) share a common with the 24 VDC supply return. When probing with an oscilloscope, use an isolated differential probe or float the scope; the PLC's 24 VDC common is NOT at earth ground on many installations.

Field-Build Tips and Connector Sources

  • Salvage a male mini-DIN connector from an obsolete PS/2 keyboard or mouse extension cable. The pin numbering is identical, and the PS/2 form factor is the same as the SP-series peripheral port.
  • Crimp the SP16-end pins carefully. Omron used machined pins in the original cable; modern Molex 70058-series or similar 0.635 mm pins are direct replacements.
  • Use shielded cable (e.g., Alpha 5471 or Belden 9533) if the cable run exceeds 1.5 m. The programming tool uses slow baud rates and is not particularly noise-sensitive, but ESD transients on the shop floor can corrupt long unprotected runs.
  • Do not rely on a USB-serial adapter's DB9 shield for chassis ground. Run a separate drain wire from the SP16 end of the cable shield to earth ground at the panel.

Frequently Asked Questions

Can the SP16 be programmed directly with CX-Programmer?

Yes, but only with the LSS device driver. In CX-Programmer v6.1 or later, select Device Type "SP-series (LSS)" or "C-series (LSS)" with the correct CPU model. Newer CX-Programmer versions (v9.5+) require the legacy LSS plugin to be installed manually. The SP10/SP16/SP20 manual lists the exact instruction subset supported.

What is the simplest cable to build for occasional programming?

Three wires: SP16 mini-DIN pin 1 (SD) to DB9 pin 2 (RD), pin 2 (RD) to DB9 pin 3 (TD), and pin 3 (SG) to DB9 pin 5 (SG). Add the 1-4-6 / 7-8 DB9 loopback jumpers for older PC serial ports. Use 9600 baud, 7-E-2, XON/XOFF flow control in MiniLSS.

Why does MiniLSS fail with Runtime error 200 on modern PCs?

The original MiniLSS binary uses a Borland Pascal delay loop that divides by a CPU-clock-derived value. On CPUs faster than about 200 MHz, the divisor overflows. Either patch the EXE with a Turbo Pascal CRT patcher or run MiniLSS inside DOSBox with cycles=5000-15000.

Does the same cable work for the SP10, SP16, and SP20?

Yes. All three CPUs share an identical 7-pin mini-DIN peripheral port with TTL-level signalling. A cable built for any one of them works on the other two without modification.

Can I use a USB-to-serial adapter with the SP16?

Yes, but choose a genuine FTDI or Prolific chip adapter, force the COM port to COM1..COM4, and disable FIFO buffers in the adapter's advanced properties. Counterfeit Prolific chips on cheap adapters drop characters and will not communicate reliably at 9600 baud.

Where can I find the official SP16 operation manual?

The SP10/SP16/SP20 Operation Manual (W197-E1-2B) is hosted on Omron's eData portal and contains full electrical specifications, I/O wiring, and instruction set details for all three brick controllers.

Back to blog