Learn PLCs free
Programming Guides14 min read2 318 words

Moxa PLC Integration Guide 2026 | Remote I/O & Industrial Networking

Complete guide to integrating Moxa devices with PLCs. ioLogik remote I/O setup, MGate protocol converters, industrial switches, and step-by-step Modbus TCP configuration.

IAE
Senior PLC Programmer
15+ years hands-on experience • 50+ automation projects completed
PLC
Programming Excellence

Moxa is one of the most widely used industrial networking and remote I/O brands in PLC-based automation systems. If you're working with distributed I/O, serial-to-Ethernet protocol conversion, or industrial Ethernet infrastructure, there's a good chance Moxa hardware is involved. This guide covers everything PLC programmers need to know about integrating Moxa devices into control systems.

New to PLC communication protocols? Start with our complete PLC communication protocols guide for foundational knowledge, or see our Modbus protocol tutorial for in-depth Modbus coverage.

What is Moxa and Why PLC Engineers Use It

Moxa Inc. is a Taiwanese industrial networking company that manufactures remote I/O modules, protocol converters, industrial Ethernet switches, serial device servers, and edge computing platforms. Founded in 1987, Moxa has become a go-to brand for PLC engineers who need to extend I/O capabilities, convert between communication protocols, or build reliable industrial Ethernet networks.

Why Moxa is popular with PLC programmers:

  • Extends PLC I/O to remote locations via Ethernet without running signal cables
  • Converts legacy serial devices (Modbus RTU, RS-485) to Ethernet (Modbus TCP)
  • Provides managed industrial switches with PROFINET and EtherNet/IP compatibility
  • Works with every major PLC brand through standard protocols (Modbus TCP, MQTT, RESTful API)
  • Offers built-in web server for configuration — no proprietary software required for basic setup

Moxa Product Lines for PLC Integration

Product Family Purpose Key Models PLC Connection Method
ioLogik E1200 Ethernet remote I/O E1210 (16 DI), E1211 (16 DO), E1240 (8 AI), E1260 (6 TC) Modbus TCP, EtherNet/IP, RESTful API
ioLogik E2200 Smart Ethernet I/O with logic E2210, E2240, E2260 Modbus TCP, SNMP, MQTT
ioLogik R1200 RS-485 remote I/O R1210, R1240 Modbus RTU
MGate Protocol converters MB3170 (Modbus gateway), MB3660 (PROFINET-Modbus) Modbus, PROFINET, EtherNet/IP
EDS/IKS Industrial Ethernet switches EDS-408A, IKS-6726A Managed Layer 2/3
NPort Serial device servers NPort 5110, NPort 5610 Serial-to-Ethernet (COM port redirection)
UC Series Edge computing UC-8100, UC-8200 Linux-based, MQTT, Node-RED

Moxa ioLogik E1200 — Remote I/O Setup with PLCs

The ioLogik E1200 series is the most common Moxa product PLC programmers encounter. These modules provide remote digital and analog I/O accessible over Ethernet via Modbus TCP.

Step 1: Physical Setup and IP Configuration

  1. Connect the ioLogik E1200 module to the same Ethernet network as your PLC
  2. Power the module with 24VDC (standard industrial power supply)
  3. Default IP address is 192.168.127.254 — access the web console via a browser
  4. Navigate to Network Settings and assign a static IP in your PLC network subnet
  5. Set the Modbus TCP port (default: 502) and enable the Modbus TCP slave function

Step 2: Understand the Modbus Register Map

Every ioLogik E1200 model has a fixed Modbus register map. Here are the common mappings:

ioLogik E1210 (16 Digital Inputs):

Function Modbus Address Modbus Type Description
DI Channel 0 00000 Coil (read) Digital input status
DI Channel 0-15 10000-10015 Discrete Input Read-only DI status
DI Counter 0 30000 Input Register 32-bit pulse counter (low word)
DI Counter 0 (high) 30001 Input Register 32-bit pulse counter (high word)

ioLogik E1240 (8 Analog Inputs):

Function Modbus Address Modbus Type Description
AI Channel 0 Raw 30000 Input Register Raw ADC value
AI Channel 0 Scaled 30016 Input Register Engineering unit value
AI Range Config 40000 Holding Register 0=0-10V, 1=4-20mA, 2=0-20mA

Important: Always download the specific Modbus address table for your ioLogik model from the Moxa website. Register addresses vary between models.

Step 3: Test Communication

Before programming the PLC, verify communication using Moxa's ioSearch Utility or a Modbus polling tool like Modbus Poll or QModMaster (free):

  1. Set the tool to Modbus TCP mode
  2. Enter the ioLogik IP address and port 502
  3. Read Input Register 30000 — you should see the analog input value
  4. Read Coils starting at address 10000 — you should see DI states

Connecting Moxa ioLogik to Siemens PLCs (TIA Portal)

Method: MB_CLIENT Function Block (Modbus TCP)

Siemens S7-1200 and S7-1500 support Modbus TCP natively via the MB_CLIENT function block in TIA Portal.

Step 1: Create a Modbus TCP connection

In TIA Portal, add a MB_CLIENT (or MB_CLIENT_DB on S7-1500) function block to your program:

// Modbus TCP read from Moxa ioLogik E1240 (8 analog inputs)
// Function Block: MB_CLIENT

CONNECT     := MB_Connection_DB    // Connection data block
MB_MODE     := 0                   // 0 = Read
MB_DATA_ADDR := 30000              // Start register (AI Channel 0)
MB_DATA_LEN  := 8                  // Read 8 registers (8 analog channels)
MB_DATA_PTR  := P#DB10.DBX0.0 WORD 8  // Destination: Data Block 10

Step 2: Configure the connection DB

Create a data block for the Modbus TCP connection:

  • InterfaceId: Hardware identifier of the PLC's Ethernet port
  • IP Address: The ioLogik module's IP (e.g., 192.168.0.100)
  • Connection ID: Unique ID for this connection (e.g., 1)
  • Port: 502

Step 3: Scale the analog values

The raw Modbus register values from the ioLogik typically need scaling:

// SCL example: Scale 4-20mA input to 0-100%
#ScaledValue := (REAL#(#RawValue) - 6553.0) / (32767.0 - 6553.0) * 100.0;

Polling Multiple ioLogik Modules

For systems with multiple Moxa modules, use separate MB_CLIENT instances with staggered execution to avoid simultaneous connection attempts. A common pattern is a sequencer that polls one module per scan cycle:

// Poll different Moxa modules in sequence
CASE #PollStep OF
    0: // Read Module 1 (ioLogik E1240 - Analog Inputs)
        #MB_Client_1.REQ := TRUE;
        IF #MB_Client_1.DONE THEN #PollStep := 1; END_IF;
    1: // Read Module 2 (ioLogik E1210 - Digital Inputs)
        #MB_Client_2.REQ := TRUE;
        IF #MB_Client_2.DONE THEN #PollStep := 2; END_IF;
    2: // Write Module 3 (ioLogik E1211 - Digital Outputs)
        #MB_Client_3.REQ := TRUE;
        IF #MB_Client_3.DONE THEN #PollStep := 0; END_IF;
END_CASE;

Connecting Moxa ioLogik to Allen-Bradley PLCs (Studio 5000)

Method 1: Generic Ethernet Module (EtherNet/IP)

The ioLogik E1200 series supports EtherNet/IP in addition to Modbus TCP. This enables direct integration with ControlLogix and CompactLogix PLCs.

Step 1: In Studio 5000, right-click the Ethernet module in the I/O tree and select New Module > Generic Ethernet Module

Step 2: Configure the module:

  • Name: Moxa_E1240_AI
  • Comm Format: Data - SINT or INT
  • IP Address: The ioLogik's IP address
  • Assembly Instance / Size: Refer to Moxa's EtherNet/IP configuration guide for your model

Step 3: Access I/O data via the module's input/output tags in your Logix program.

Method 2: MSG Instruction (Modbus TCP via Socket)

For Modbus TCP communication, use a MSG (Message) instruction configured for:

  • Message Type: CIP Generic
  • Service Type: Custom
  • Connection: TCP socket to the ioLogik IP, port 502

This method is more complex but provides full Modbus TCP protocol access.

Connecting Moxa to CODESYS-Based PLCs

CODESYS has a built-in Modbus TCP client library that makes connecting to Moxa I/O straightforward.

Step 1: Add the Modbus TCP Master device to your CODESYS project from the device repository.

Step 2: Add a Modbus TCP Slave under the master, configured with:

  • IP Address: ioLogik module IP
  • Port: 502
  • Unit ID: 1 (default for ioLogik)

Step 3: Add Modbus channels:

// CODESYS Modbus channel configuration
Channel 1: Read Input Registers, Start: 30000, Length: 8  // Analog inputs
Channel 2: Read Discrete Inputs, Start: 10000, Length: 16 // Digital inputs
Channel 3: Write Coils, Start: 0, Length: 16              // Digital outputs

Step 4: Map the Modbus data to your program variables in the I/O mapping tab.

Moxa MGate Protocol Converters

The MGate series bridges communication gaps between serial and Ethernet protocols — essential when connecting legacy RS-485 devices to modern Ethernet-based PLCs.

MGate MB3170 — Modbus RTU to Modbus TCP Gateway

Use case: You have RS-485 Modbus RTU instruments (flow meters, VFDs, power meters) that need to communicate with an Ethernet-based PLC.

Setup:

  1. Connect RS-485 devices to the MGate's serial port (wiring: A+, B-, GND)
  2. Connect the MGate to the PLC network via Ethernet
  3. Access the web console (default IP: 192.168.127.254)
  4. Configure serial port: Baud rate, parity, stop bits (match your field devices)
  5. Configure the Modbus gateway mode:
    • Agent Mode: The MGate transparently forwards Modbus TCP requests to serial devices. The PLC addresses each serial device by its Unit ID.
    • Transparent Mode: Direct protocol translation — best for simple setups.

From the PLC's perspective, the serial devices appear as Modbus TCP slaves at the MGate's IP address. The PLC sends Modbus TCP requests to the MGate, which translates them to Modbus RTU on the serial bus and returns the responses.

MGate MB3660 — PROFINET to Modbus Gateway

Use case: You have a Siemens PROFINET PLC but need to communicate with Modbus TCP or Modbus RTU devices.

This gateway appears as a PROFINET device to the Siemens PLC and as a Modbus master to the field devices. Configure the data exchange mapping through the MGate's web console or GSD file imported into TIA Portal.

Moxa Industrial Ethernet Switches for PLC Networks

Moxa's EDS (Entry) and IKS (Industrial) series switches are commonly used in PLC network infrastructure.

Key Features for PLC Networks

Feature Why It Matters for PLCs
Turbo Ring (recovery <20ms) Ensures ring topology redundancy for critical control networks
PROFINET compliance EDS-400A series tested for PROFINET Conformance Class B
EtherNet/IP compatible Passes CIP traffic without modification
Port mirroring Enables protocol analysis with Wireshark for troubleshooting
IGMP snooping Manages multicast traffic in EtherNet/IP networks
DIN-rail mounting Standard industrial panel mounting
Wide temp range -40°C to 75°C operation for harsh environments

Managed vs Unmanaged for PLC Networks

Use managed switches (EDS-408A, IKS-6726A) when:

  • Network segmentation or VLANs are required
  • Ring topology redundancy is needed (Turbo Ring)
  • PROFINET diagnostics require switch-level visibility
  • You need port-level traffic monitoring for troubleshooting

Use unmanaged switches (EDS-205A, EDS-208A) when:

  • Simple star topology with fewer than 8 devices
  • Budget is constrained and redundancy is not critical
  • No network segmentation requirements

Troubleshooting Moxa-PLC Communication Issues

Common Problem: Modbus TCP Connection Timeout

Symptoms: PLC reports timeout error, MB_CLIENT shows error code 8200-series

Checklist:

  1. Ping the ioLogik from the PLC network — if ping fails, check IP addressing and subnet masks
  2. Verify port 502 is open — some ioLogik models have Modbus TCP disabled by default in the web console
  3. Check Unit ID — ioLogik default is 1; make sure PLC request matches
  4. Verify register addresses — ioLogik uses 0-based addressing; some PLCs use 1-based (40001 = register 0)
  5. Check maximum connections — ioLogik E1200 supports up to 8 simultaneous TCP connections; exceeding this drops new connections

Common Problem: Incorrect Analog Values

Symptoms: Analog input reads wrong value or stays at 0

Checklist:

  1. Check input range configuration — access the ioLogik web console and verify the AI channel is set to the correct range (0-10V, 4-20mA, or 0-20mA)
  2. Verify wiring polarity — 4-20mA connections require correct +/- orientation
  3. Read the correct register — raw value (30000) vs scaled value (30016) return different numbers
  4. Check byte order — Siemens PLCs use big-endian; verify the ioLogik byte order setting matches

Common Problem: MGate Serial Communication Failure

Symptoms: Modbus RTU devices behind MGate are not responding

Checklist:

  1. Match serial parameters — baud rate, parity, data bits, and stop bits must be identical on MGate and all serial devices
  2. Check RS-485 termination — enable the built-in termination resistor on the MGate if it's at the end of the bus
  3. Verify Unit IDs — each serial device must have a unique Modbus address; the MGate routes by Unit ID
  4. Monitor with diagnostics — the MGate web console shows real-time Modbus transaction logs to identify which device is not responding

Frequently Asked Questions

Can Moxa ioLogik replace PLC I/O modules?

The ioLogik is remote I/O, not a PLC. It cannot run control logic — it only provides I/O data to a PLC over Ethernet. Use ioLogik when you need to collect I/O from locations too far from the PLC for direct wiring (hundreds of meters or more). For local I/O within a control cabinet, use your PLC's native I/O modules for better determinism and faster scan times.

Which Moxa model should I use for 4-20mA sensors?

The ioLogik E1240 provides 8 channels of analog input supporting 0-10V and 4-20mA signals. For thermocouple inputs, use the ioLogik E1260 (6 thermocouple channels with cold junction compensation). For RTD inputs, use the ioLogik E1262.

Does Moxa support PROFINET?

Moxa's industrial switches (EDS-400A series) are PROFINET conformance tested, and the MGate MB3660 provides a PROFINET-to-Modbus gateway. However, the ioLogik E1200 series does not natively support PROFINET — it uses Modbus TCP and EtherNet/IP. For PROFINET I/O, consider Siemens ET 200 or Wago 750 series instead.

How many ioLogik modules can one PLC handle?

This depends on your PLC's Modbus TCP client capacity and your scan time requirements. A Siemens S7-1500 can typically handle 16-32 simultaneous Modbus TCP connections. With sequential polling (one module per scan), the practical limit is determined by your acceptable update rate: polling 20 modules at 100ms per poll gives a 2-second update cycle for all modules. For time-critical applications, keep the number of remote I/O modules low or use EtherNet/IP for faster cyclic exchange.

#Moxa#PLCIntegration#RemoteI/O#ModbusTCP#IndustrialNetworking#ioLogik
Share this article:

Related Articles