Configuring Omron CPM2A Host Link for Remote Modem Access

James Nishida11 min read
OmronSerial CommunicationTutorial / How-to
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 CPM2A is a compact brick-style PLC equipped with a single RS-232C peripheral port and, on most CPU variants, an RS-232C or RS-422A option board slot. For remote engineering access across the PSTN (Public Switched Telephone Network), the CPM2A's Host Link (SYSWAY) serial protocol can be carried transparently through a pair of dial-up modems. This allows an engineer in one state or country to dial into a PLC in another location and use CX-Programmer to upload/download the program, monitor I/O, force bits, and edit data tables online.

Host Link is Omron's legacy master/slave SCADA protocol documented in the CPM1/CPM1A/CPM2A/CPM2C Serial Communications Manual. Every CPM2A ships with Host Link support built into the peripheral port; no special option board is required for the standard 7-bit even parity 2-stop framing mode at 9600 bps that this article describes.

Scope: This article addresses CX-Programmer v4.x and v5.x direct modem connections to the CPM2A peripheral port. For Ethernet-based remote access on the CJ2, CP1L-EM, CP1H-EM, NJ/NX, or CS1 platforms, use the FINS/TCP route described in the NX-series Communications Interface Units User's Manual instead. For protocol selection across modern Omron PLCs, see the Omron Communication Protocols overview.

Prerequisites

Before configuring the link, verify that the following hardware and software are present.

Item Specification / Catalog Reference
CPU CPM2A-20CDR-A, CPM2A-30CDR-A, CPM2A-40CDR-A, CPM2A-60CDR-A (AC supply versions) or the -D (DC) equivalents
Peripheral port adapter CPM2A-CN111 (RS-232C, 2 m, D-sub 9-pin) or CPM2A-CIF01/CIF02 for the option-board port
Modem (remote site) External industrial modem (US Robotics 56K, Multi-Tech MT5634ZPX, or equivalent Hayes AT-compatible) — avoid Win-modems or soft-modems
Modem (engineering PC) External serial modem on a true COM port, or a USB-to-RS232 adapter that maps a stable virtual COM port
Programming software CX-Programmer v4.0 through v5.0 (Sysmac WAY network type required; FINSGateway not used for direct modem)
Cable — PLC to modem DB9 male to DB25 male (or DB9 male to DB9 female depending on modem), null-modem crossover, with the pinout shown below
Telephone line Analog PSTN with dial-tone; PBX extensions must be able to dial through to the PSTN

Avoid internal (PCI/USB bus) modems on the engineering PC. They share IRQ resources with CX-Programmer's COM port and frequently produce framing errors during the long-lived Host Link sessions used for online monitoring.

CPM2A Peripheral Port Configuration

The CPM2A peripheral port is fixed at Host Link (SYSWAY) slave mode on power-up — it cannot be re-purposed without writing DM parameters into the PLC. To confirm or change the serial framing, the DIP switch on the front of the CPU must be set, and the relevant DM words must contain the default values listed in the table.

Parameter Address Value Meaning
Host Link unit number DM6651 (channel) 0000 to 0031 0 = master broadcast ignore; 01 = unit #1 (default for single-PLC sites)
Serial mode — port 1 (peripheral) DM6650 0000 (Host Link, default) Do NOT change to 0100 (no-protocol) or 1000 (1:1 NT link)
Serial mode — port 2 (option) DM6652 (if option board fitted) 0000 Only relevant if you are using the RS-232C option port instead of the peripheral port

The peripheral port's fixed communication parameters are:

  • Baud rate: 9 600 bps (cannot be changed on the peripheral port)
  • Data bits: 7
  • Parity: Even
  • Stop bits: 2
  • Start bits: 1
  • Frame: 11 bits total (1-7-E-2)
  • Protocol: Host Link (SYSWAY), 1:1 (one-to-one) mode — the host (PC) is unit #00, the PLC is the value held in DM6651
Why 7,E,2? The 7-E-2 framing is required by the legacy Host Link frame structure, which uses ASCII-encoded commands with a parity bit and two stop bits for noise tolerance on industrial shop floors. Many modern external modems, however, support only 8-bit data paths with software (XON/XOFF or hardware RTS/CTS) flow control. If you cannot negotiate 7-E-2 through your modem, configure the port for 8,N,1 at 9 600 bps — Host Link tolerates 8,N,1 on the CPM2A provided the modem does not alter the bits between end-points. CX-Programmer's Modem tab handles the host-side matching.

RS-232C Cable Pinout (PLC Side)

The cable between the CPM2A peripheral port (DB9 male on the CPM2A-CN111 adapter) and the modem (DB25 male on a typical industrial modem, or DB9 female on a desktop unit) must perform a null-modem crossover. The pinout below matches the standard Omron programming cable so the same harness works for both serial programming and modem pass-through.

CPM2A (DTE) Pin Signal Modem (DCE) Pin Notes
2 (RD) Received Data 3 (TD) Crossover
3 (TD) Transmitted Data 2 (RD) Crossover
4 (DTR) Data Terminal Ready 20 (DTR) Straight — modem sees DTR as carrier-detect enable
5 (SG) Signal Ground 7 (SG) Straight
6 (DSR) Data Set Ready 6 (DSR) Loopback — tie 6 to 20 on PLC side if modem does not drive DSR
7 (RTS) Request To Send 4 (RTS) Straight (hardware flow control)
8 (CTS) Clear To Send 5 (CTS) Straight

Pin 1 (CD) and Pin 9 (RI) are not used for Host Link. If the modem does not assert DSR, jumper pins 6-1-4 together on the PLC end so that the Host Link driver sees an "always ready" state. Many CPM2A-CN111 cables do this internally; verify with a continuity tester if Carrier Detect never rises in CX-Programmer.

Modem Configuration — Remote Site (PLC End)

  1. Connect the modem's serial port to the CPM2A peripheral cable as wired above.
  2. Connect the modem's line jack to the analog PSTN extension.
  3. Connect an analog handset to the modem's PHONE jack — this is critical for the operator-dial workflow described below.
  4. From a terminal program on the PLC side (or by writing the modem's NVRAM), store the following AT command string:
    AT&F1&W0
    ATS0=1E0Q1&W0
    AT&K3\N3&W0
  5. The first line resets the modem to a known factory profile ("&F1" on USR/Multi-Tech). The second line sets auto-answer on the first ring (S0=1), disables command echo (E0), and enables result codes (Q1) so the Host Link driver sees clean CONNECT/CARRIER responses. The third line enables hardware RTS/CTS flow control (&K3) and normal-speed buffering (\N3) and stores the profile to NVRAM (&W0).
  6. Cycle power to the modem and re-dial from a handset to confirm the modem answers, hisses, and connects.
Use an external modem. Internal PCI/USB bus modems at the PLC site introduce a Windows-side latency and a separate IRQ that the Host Link driver does not handle gracefully. The combination of a USR Sportster 56K or Multi-Tech MT5634ZPX on a dedicated COM port, with the phone line and a handset in parallel, is the most reliable remote configuration.

CX-Programmer Configuration — Engineering PC

  1. Launch CX-Programmer. From the menu bar select PLC > Edit Network Configuration. When prompted, choose New and select the network type Sysmac WAY. Do not select SYSMAC NET, SYSMAC LINK, or Ethernet — those are routed network types that require an intermediate FINS gateway.
  2. Right-click the new network entry and choose Modify. In the dialog box set:
    • Network Address: 0
    • Node Address (Local): the unit number configured on your PC's Host Link driver (use 00 unless you are bridging through another PLC)
    • Network Address (Remote): same — Sysmac WAY is a single-segment serial network
  3. Select the Modem tab. Click Add, then choose the installed modem from the device list. If the device list is empty, install the modem's INF driver from the manufacturer disk first.
  4. Click Configure for the modem entry. In the configure dialog match the modem's serial settings to the CPM2A: 9 600 bps, 7 data bits, Even parity, 2 stop bits. Set flow control to Hardware (RTS/CTS). Save.
  5. In the Modem tab, tick Use Operator to Dial. With this option enabled CX-Programmer waits for the engineer to dial manually, hear the modem handshake, hang up the phone, and click OK before continuing the connect sequence. This is invaluable for diagnosing line-quality issues in the field.
  6. Fill in the Country, Area Code, and Phone Number fields — even if Use Operator to Dial is enabled. Leaving these blank triggers the legacy CX-Programmer bug "Selected port is in use by another application" on the Work Online dialog, and the bug is not fixed in CX-Programmer v5.0. Enter the actual digits of the remote site's line so CX-Programmer has a string to validate, then ignore the auto-dial string.
  7. Click Work Online from the PLC menu. The dial dialog appears; lift the handset, dial the remote site's number, listen for the answering modem's whistle, wait until the PLC modem answers and switches to data mode (you will hear the line go quiet), hang up the handset, then click OK in CX-Programmer.
  8. CX-Programmer transmits the Host Link unit-number handshake to the CPM2A and, on success, transitions to Online mode. The status bar displays the unit number and the current cycle time of the CPM2A.

Verifying the Host Link Session

After clicking OK in the Work Online dialog, perform these checks to confirm a healthy link.

Check Expected Result Fault if Observed
Status bar text "Online, PLC = CPM2A, Unit 01, Cycle 10 ms" "Could not connect to PLC" — check DM6651 unit number
PLC > Transfer > From PLC Ladder program retrieved without CRC error CRC error indicates parity/baud mismatch
Monitor mode — CIO 0.00 Input status reflects physical field inputs Frozen display indicates Host Link timeouts
PLC > Mode > Monitor PLC enters Monitor without "Communications Error" (AR0804) AR0804 set — incorrect 7-E-2 framing or wrong unit number
Force-set CIO 100.00 Output cycles in field Forced bit ignored — protocol mode is 1:1 NT Link instead of Host Link

If the link drops after a few minutes, suspect modem buffer overrun. Lower the connection rate to 4800 bps by writing DM6650 = 0000 with the cycle-time scan time of the CPM2A lengthened (DM0009) — Host Link uses window-based flow control and a slow PLC scan can starve the modem buffer. Alternatively, replace the modem with a "reliable-mode" industrial unit such as the Multi-Tech MT2834ZPX or the Phoenix Contact PSI-MODEM/ETH for sites where line quality is marginal.

Troubleshooting Matrix

Symptom Likely Cause Action
Modem answers but no Host Link handshake DM6650 corrupted, port set to No-Protocol Connect locally with CX-Programmer, restore DM6650 = 0000, re-cycle PLC
"Selected port is in use by another application" CX-Programmer v4.x/5.x bug — Country/Area/Phone empty Fill in Country, Area Code and Phone Number fields with placeholder digits, save project
CRC errors during program transfer Baud mismatch — host set to 19200, PLC peripheral is fixed 9600 Set CX-Programmer Modem Configure to 9600 bps
Link drops on long file transfers Modem buffer overrun or PC COM FIFO buffer too large Reduce COM FIFO to 16 bytes in Windows Device Manager; enable hardware flow control
AR0804 Communications Error in CPM2A Wrong Host Link unit number in DM6651 Write DM6651 = 0001 and reset PLC; CX-Programmer unit number must match
One-way communication only (upload but not download) TD/RD crossover reversed on cable Swap pins 2 and 3 on the PLC end of the cable
Modem does not auto-answer S0 register = 0 or A/AA switch in OFF position Set ATS0=1, verify AA switch on rear of modem in ON position
Phone-line echo or hybrid feedback Handset not isolated after hangup Place modem in PHONE jack on modem; do not use a parallel handset tap
CX-Programmer connects but program is empty Wrong node number — PC talking to a different Host Link node on a multi-drop RS-422A trunk Verify network is Sysmac WAY 1:1, not part of a multi-drop network

Operational Notes for Field Engineers

  • The Host Link frame is documented in the CPM1/CPM1A/CPM2A/CPM2C Serial Communications Manual (W356-E1) — keep a printed copy at the site for offline reference.
  • If the remote site has a CP1L-EM or CP1H-EM available, prefer the Ethernet-based FINS/TCP route. The CJ-series Communication Units family and NX-series Communications Interface Units describe modern equivalents that bypass the PSTN entirely.
  • For multi-vendor environments, review the Omron Communication Protocols guide — Toolbus, FINS/UDP, FINS/TCP, and EtherNet/IP each serve different use cases on the NJ/NX and CS1 platforms.
  • Always power the modem from an uninterruptible source. A momentary PSTN loss drops the Host Link session and may leave AR0804 latched in the CPM2A — clear it with the CX-Programmer "Reset All Errors" function.
  • Document the modem's NVRAM profile on a sticker affixed to the modem chassis. Field service personnel arriving without the AT command string waste hours re-commissioning the link.

FAQ

What serial parameters does the CPM2A peripheral port use for Host Link?

The port is fixed at 9600 bps, 7 data bits, Even parity, 2 stop bits (1-7-E-2). If your modem cannot negotiate 11-bit framing, you may use 8,N,1 but both ends must match and the modem must not modify the data bits in transit.

Why does CX-Programmer show "Selected port is in use by another application" when going online?

This is a documented bug in CX-Programmer v4.x and v5.0. The Country, Area Code and Phone Number fields in the modem tab must be populated with valid digit strings (even if you intend to dial manually) before Work Online will release the COM port.

Can I use an internal PCI or USB modem at the PLC site?

It is not recommended. Internal modems share IRQ resources with the Host Link driver and frequently corrupt long Host Link sessions. Use an external industrial modem such as the US Robotics 56K or Multi-Tech MT5634ZPX on a dedicated COM port, with a parallel handset in the modem's PHONE jack.

How do I set the Host Link unit number on the CPM2A?

Write the desired unit number (00 through 31, default 01) to DM6651 and cycle power. CX-Programmer's network configuration must specify the same unit number, or CX-Programmer will time out without an AR error.

Why does the link drop during long program transfers?

Modem buffer overrun or an oversized COM FIFO on the engineering PC is the most common cause. Reduce the COM FIFO buffer to 16 bytes in Windows Device Manager, enable hardware RTS/CTS flow control, and consider lowering the baud rate to 4800 bps if line quality is marginal.

Back to blog