The fastest way to connect a legacy RS-485 Modbus RTU PLC to a modern Modbus TCP SCADA system is to install a Modbus gateway between them. The gateway connects to the existing RS-485 serial bus on one side and to the plant Ethernet network on the other. It translates every Modbus RTU request from the SCADA into a properly timed RTU query on the serial bus, then packages the response back into Modbus TCP. The PLC's firmware, wiring, and programming are untouched. Commissioning a single serial bus typically takes two to four hours.
The scenario is extremely common in Thai manufacturing facilities: a plant installs a new SCADA or upgrades an existing one, and the field equipment PLCs, VFDs, power meters, and RTUs is still on RS-485 serial buses installed years or decades earlier. The equipment works reliably, there is no business case for replacing it, but the new SCADA speaks Modbus TCP over Ethernet and has no serial port. This is not a difficult problem. It is a solved one.
What Stops Most Engineers From Connecting RS-485 PLCs to a New SCADA
The most common reason this integration stalls is a misconception about the scope of the problem. Engineers sometimes assume that because the protocols are "incompatible," the field equipment must be replaced or a full rewire is required. Neither is true.
A second source of confusion is conflating serial servers with protocol gateways. A serial server (device server) tunnels serial data over TCP but the SCADA must still understand Modbus RTU to use it. If the SCADA only speaks Modbus TCP, the serial server alone is not enough. A protocol gateway performs actual protocol translation at the application layer, presenting a genuine Modbus TCP server to the SCADA while polling field devices as a Modbus RTU master.
The third issue is sizing. Engineers count devices when they should count buses. The number of RS-485 bus segments not the number of PLCs determines how many serial ports the gateway needs. If 12 PLCs are all wired on a single daisy-chained RS-485 segment, that requires exactly one serial port on the gateway.
The Architecture: What the Network Looks Like After the Gateway Is Installed
Before the gateway, the network has two isolated segments with no way to communicate:
- Serial side: RS-485 bus with PLCs, VFDs, or RTUs, each with a unique Slave ID (1–247), communicating in Modbus RTU
- Ethernet side: Plant LAN with SCADA server, historian, and HMI, communicating in Modbus TCP
After a Modbus gateway is installed, the architecture becomes:

The SCADA sees the gateway as a Modbus TCP server accessible at its IP address (port 502). Each PLC on the RS-485 bus retains its original Slave ID. The SCADA uses the same Slave ID it would have used for direct serial access the gateway routes the request to the correct device automatically.
Nothing on the serial side changes. The PLCs do not know a gateway exists. They receive Modbus RTU requests and respond exactly as they always have.
Choosing the Right MGate Model for the Project
Three models cover the full range of Modbus serial-to-TCP requirements:
| Model | Serial Ports | Max Serial Slaves | Choose When... |
|---|---|---|---|
| MGate MB3180 | 1 | 31 | Single RS-485 bus, all devices in one zone |
| MGate MB3280 | 2 | 62 (31 per port) | Two separate RS-485 bus segments, or RS-232 and RS-485 combined |
| MGate MB3480 | 4 | 124 (31 per port) | Three or four bus segments, plant-wide integration |
All three models share the same Ethernet side behavior: up to 16 simultaneous Modbus TCP master connections, support for routing by Slave ID mapping or by TCP port, and the Moxa Auto Device Routing feature for large deployments.
Sizing rule in practice: Walk the bus. Identify each independent RS-485 daisy-chain in the plant. Each chain is one serial port. If all PLCs are on one run of cable from the control room to the production floor, that is one port use the MB3180. If the plant has two production zones on separate RS-485 loops, use the MB3280. Four zones or more: MB3480.
The MB3480 costs more upfront but is almost always the right choice for plant-wide integrations. Buying two MB3180 units when one MB3480 would serve both buses is a common and avoidable mistake.
Step-by-Step: How to Commission the Integration
This procedure covers a standard integration where the SCADA is the Modbus TCP master and the RS-485 PLCs are slaves. All configuration is done through the Moxa MGate Manager utility or via web browser no serial terminal required.
Step 1 - Audit the Existing RS-485 Bus
Before touching the gateway, document the existing serial network:
- List every device on the bus with its Slave ID, baud rate, parity, stop bits, and RS-485 standard (2-wire or 4-wire)
- Identify bus topology: daisy-chain is correct; star wiring causes reflections and must be reconfigured
- Confirm termination resistors are installed at both physical ends of the bus (typically 120 Ω)
- Note the bus voltage: some RS-485 buses require pull-up/pull-down bias resistors when no device is actively driving the line; the MB3280 and MB3480 have built-in jumper-selectable bias and termination
Missing termination is the single most common cause of intermittent Modbus RTU failures in existing installations.
Step 2 - Assign a Static IP Address to the Gateway
Connect the gateway to a PC via Ethernet and use Moxa's Device Search Utility (DSU) to locate it on the network. Assign a static IP address in the same subnet as the SCADA server. Avoid DHCP for gateways an IP change will break every SCADA data point linked to that gateway's address.
Record the IP, subnet, and default gateway settings before closing the configuration tool.
Step 3 - Configure the Serial Port
In the MGate web interface or MGate Manager, configure each serial port to match the existing RS-485 bus parameters exactly:
- Mode: Modbus RTU Slave (the gateway acts as RTU master, polling serial devices on behalf of the TCP master)
- Interface: RS-485 2-wire or 4-wire, as appropriate
- Baud rate: Match the existing bus commonly 9,600, 19,200, or 38,400 bps
- Data bits: 8
- Parity: None, Even, or Odd must match every device on the bus
- Stop bits: 1 or 2 must match the bus
A single mismatched parity setting between the gateway and any slave will cause that slave to drop all requests silently no error, no response. Always verify with the device manual.
Step 4 - Configure Slave ID Routing
The gateway needs to know which Slave IDs exist on each serial port so it can route incoming TCP requests to the correct port.
For small deployments (under 10 devices): Enter the Slave ID routing table manually. Map each Slave ID to the corresponding serial port.
For larger deployments: Use Moxa's Auto Device Routing function. The gateway scans each serial port and automatically discovers which Slave IDs are present, then builds the routing table with one click. This eliminates manual entry errors and saves significant commissioning time on buses with many devices.
Step 5 - Add the Gateway as a Modbus TCP Data Source in SCADA
In the SCADA system (WinCC, iFIX, Ignition, InTouch, or any Modbus TCP-capable system), add a new device:
- Driver: Modbus TCP
- IP address: The static IP assigned in Step 2
- Port: 502 (standard Modbus TCP port)
- Unit ID: The original Slave ID of each PLC (e.g., Unit ID 3 in the SCADA reaches PLC with Slave ID 3 on the serial bus)
- Register addresses: Unchanged from the original RS-485 configuration
No register remapping is required. The Modbus data model is identical between RTU and TCP. Register 40001 on a serial device appears as register 40001 in the SCADA TCP driver.
Step 6 - Test and Verify
With the gateway live and the SCADA connected, verify communication for each PLC:
- Check the gateway's LED status indicators - the serial port LED should flash on each poll cycle
- In the SCADA, confirm all configured tags show valid values (not timeout or error)
- Manually write a test value to a writable register from the SCADA and confirm the PLC receives it
- Monitor the gateway's diagnostic page for CRC error counts a non-zero and growing error count indicates a serial wiring or configuration problem
If a specific Slave ID is not responding, test it independently with a Modbus poll tool (such as Modscan or Modbus Poll) connected directly to the RS-485 bus to isolate whether the issue is in the gateway configuration or in the existing serial network.
Three Use Cases Where This Approach Has Been Applied
Food Processing Plant - Legacy PLCs on Four Production Lines
Situation: A food processing plant in central Thailand had 20 PLCs across four production lines, all on RS-485 Modbus RTU, installed over the previous 15 years. The plant invested in a new SCADA system for centralized monitoring. The PLCs were from three different vendors but all supported Modbus RTU with Slave IDs 1–20.
Solution: One MGate MB3480 installed in the main control room, with the four RS-485 bus lines from each production zone terminated at the gateway's four serial ports (5 PLCs per port). The SCADA was configured with 20 Modbus TCP device entries, each pointing to the same gateway IP with the corresponding Unit ID.
Outcome: Full SCADA visibility across all 20 PLCs within a single commissioning day. Zero modifications to any existing PLC program or wiring. The plant retained the existing serial infrastructure and avoided a full rewire estimated at several hundred thousand baht.
Automotive Parts Supplier - Mixed RS-232 and RS-485 Devices
Situation: A stamping plant had eight VFDs on an RS-485 bus and one older servo controller with only an RS-232 port, all needing to report to a new MES (Manufacturing Execution System) via Modbus TCP.
Solution: MGate MB3280, with Port 1 configured for RS-485 (8 VFDs, Slave IDs 1–8) and Port 2 configured for RS-232 (1 servo controller, Slave ID 10). Each port independently configured for the correct baud rate and serial parameters.
Outcome: All nine devices accessible from the MES through a single gateway unit. The RS-232 device was integrated without purchasing a separate RS-232-to-485 converter, saving one additional device in the control panel.
Chemical Plant - Existing SCADA Supplemented With Second SCADA System
Situation: A chemical plant running an existing SCADA needed to add a second SCADA (from a different vendor, for a different department) that also needed access to the same RS-485 serial devices.
Solution: MGate MB3280 installed between the existing RS-485 bus and the plant LAN. Both SCADA systems connected to the gateway as Modbus TCP masters. The gateway's 16-master capability meant both could poll simultaneously without conflicts.
Outcome: Both SCADA systems read from the same physical devices in parallel. No hardware duplication, no RS-485 bus splitters, no scheduling conflicts between masters.
Common Wiring Mistakes That Cause Intermittent Failures
Engineers who have worked with RS-485 Modbus networks recognize that most integration problems are not software they are wiring. The protocol is unforgiving of physical layer faults.
Missing termination resistors. Every RS-485 bus must have a 120 Ω termination resistor at both physical ends of the cable run. A bus without termination works reliably at short distances and low baud rates, then fails unpredictably as more devices are added or baud rate increases. The MB3280 and MB3480 have built-in termination that can be enabled via jumper verify the jumper position before installation.
Ground reference not connected. RS-485 is a differential signal, but the signal pairs still require a common ground reference between devices. In 2-wire RS-485, connect the GND terminal of every device on the bus to a common ground. Floating grounds cause noise susceptibility and intermittent framing errors.
Star topology instead of daisy-chain. RS-485 is specified for bus (daisy-chain) topology. Wiring devices in a star from a central point creates impedance mismatches and signal reflections that become visible as communication errors at higher device counts or longer cable runs. If existing wiring is star-topology, add termination at each stub or convert to daisy-chain.
Duplicate Slave IDs. Two devices with the same Slave ID on the same bus will both respond to the same request simultaneously, causing garbled data that the master reads as a CRC error. Before adding devices to an existing bus, poll each ID individually to confirm what is already present.
VFD/Inverter EMI on the same cable tray. Variable frequency drives are among the most aggressive sources of electromagnetic interference on a factory floor. Running an RS-485 cable parallel to VFD power cables in the same wireway will cause random CRC errors that appear and disappear as load changes making the fault extremely difficult to trace. The fix is physical separation: maintain at least 20–30 cm between RS-485 signal cables and motor power cables. Where separation is not possible, route the RS-485 cable through a grounded steel conduit (EMT) instead of an open cable tray. Use shielded twisted-pair cable rated for RS-485 (Belden 9841 or equivalent, 120 Ω characteristic impedance).
Shield grounded at both ends - creating a ground loop. A shielded RS-485 cable is often wired by well-intentioned technicians with the shield connected to earth ground at both the gateway end and the remote device end. This creates a ground loop: the shield becomes a conductor for ground potential differences between the two panels, and interference current flows through the cable shield and couples into the signal pair. The correct practice is single-point earthing - connect the shield to ground at the master (gateway) end only, and leave the shield floating (cut back and taped) at each slave device end.
Ground potential difference between panels in separate buildings. When integrating PLCs located in different buildings or at significant physical distance from the gateway, the protective earth ground at each panel may sit at a different voltage - sometimes by several volts. Directly connecting the RS-485 signal ground (GND terminal) between these panels allows fault current to flow through the signal cable, which can damage or destroy the RS-485 transceiver chip on the gateway or PLC in seconds. Before bridging any serial ground connection across buildings, measure the DC voltage between the two ground systems. If the difference exceeds approximately 1–2 V, do not connect the signal grounds directly. The MGate MB3180, MB3280, and MB3480 all include 1.5 kV galvanic isolation between the serial port circuitry and the Ethernet/power side, which provides protection in many installations. For severe ground potential differences or high-EMI environments, consider adding an external RS-485 optical isolator module between the gateway serial port and the bus.
Protocol and Timing Issues That Only Appear After Integration
Physical wiring accounts for the majority of integration problems, but a second class of failures emerges after the physical layer is confirmed good. These are protocol-level and timing-related, and they are specific to the combination of legacy PLC firmware with modern SCADA polling behavior.
Legacy PLCs with slow response times. Some older PLCs particularly older Mitsubishi FX-series, early-generation Omron C-series, and other hardware from the 1990s and early 2000s have serial port processors that respond to Modbus queries significantly more slowly than modern equipment. When a new SCADA polls through the gateway at aggressive intervals, the PLC may fail to respond within the gateway's default timeout window, generating repeated timeout errors even though the physical connection is healthy. The fix is in the gateway configuration: increase the Serial Response Timeout setting from the default (typically 200 ms) to 500–1,000 ms, and add an Inter-Request Delay of 10–50 ms to give older PLCs time to process one request before the next arrives.
Byte order mismatch on 32-bit values (Endianness). When reading 32-bit floating-point values (IEEE 754 float) or 32-bit integer values from legacy PLCs, the byte and word order varies between manufacturers and even between firmware versions of the same product. A value that should read 1,234.56 may appear as 0.00, a large nonsense number, or a byte-reversed approximation. This is not a wiring problem and does not produce CRC errors the data arrives intact but in the wrong order. The MGate series provides Byte Swap and Word Swap options in the register configuration. Test by reading a known value (such as a register set to exactly 1.0) and comparing the raw hex result against the expected IEEE 754 encoding to determine which swap combination is required.
How to Diagnose Communication Failures on the Bench and on the Floor
When communication does not work after installation, a structured diagnostic sequence is faster than random troubleshooting.
Step 1 - Check gateway LED indicators first. Before opening any configuration tool, watch the serial port Tx and Rx LEDs on the gateway while the SCADA is polling:
- Tx flashing, Rx dark: The gateway is sending RTU queries on the serial bus but receiving no response. The fault is on the serial side check wiring, Slave ID, baud rate, or whether the device is powered.
- Tx and Rx both flashing, but SCADA shows timeout: The gateway is communicating on the serial bus, but responses may be arriving too late. Increase the response timeout in the gateway configuration.
- Rx flashing rapidly and continuously with no pattern: Noise on the bus or a device stuck in transmit mode is flooding the line. Check for EMI sources, termination, or a faulty device.
Step 2 - Measure the RS-485 idle voltage. With no active communication on the bus, set a multimeter to DC voltage and measure between the A(+) and B(−) terminals at the gateway's serial port. A healthy biased bus reads between +200 mV and +6 V (A positive relative to B). A reading near 0 V means the bus has no bias either the bias resistors are missing or the bus cable is open. A reading outside this range may indicate a device is driving the line when it should not be.
Step 3 - Isolate one device at a time. If multiple Slave IDs are not responding, disconnect all devices from the bus except one. Test that single device. If it responds, reconnect devices one at a time until the fault reappears that device is the problem node. This method finds duplicate Slave IDs, faulty transceivers, and impedance mismatches faster than any other approach.
Step 4 - Use a Modbus polling tool for raw testing. Tools such as Modscan32 or Modbus Poll connected directly to the RS-485 bus via a USB-RS485 adapter can confirm whether the serial device responds correctly before the gateway is introduced. If the device responds to direct polling but not through the gateway, the issue is in the gateway configuration, not the field wiring.
Frequently Asked Questions
Does installing a gateway require modifying the PLC program?
No. The gateway presents itself to the PLC as a Modbus RTU master the same role previously filled by a serial connection to a HMI or SCADA. The PLC program does not know or care whether the master is a serial device or a gateway. No changes to the PLC ladder logic or communication configuration are required.
What is the maximum cable length for the RS-485 bus?
The RS-485 standard specifies a maximum of 1,200 meters at low baud rates (under 100 kbps). In practice, 300–500 meters is achievable at 9,600–38,400 bps with good cable quality (120 Ω characteristic impedance, twisted pair, shielded). Above 115,200 bps, cable length should be kept under 100 meters. For longer runs, use an RS-485 repeater.
Can the gateway handle devices from different manufacturers with different Slave ID ranges?
Yes. Slave IDs are just addresses the gateway routes by ID regardless of which manufacturer's device holds that ID. As long as each device on the bus has a unique Slave ID and matching serial parameters (baud rate, parity, stop bits), the gateway handles them identically.
What happens to the SCADA data if the RS-485 bus has a temporary fault?
The gateway will return timeout errors to the SCADA for all devices on the affected serial port. The SCADA displays these as communication errors or bad-quality values. Once the serial fault clears, the gateway resumes polling immediately without any restart or reconfiguration.
How many TCP master connections can the gateway serve simultaneously?
All MGate MB3180, MB3280, and MB3480 units support up to 16 simultaneous Modbus TCP master connections. This means a SCADA server, an HMI, a historian, and additional monitoring systems can all poll the gateway at the same time.
Is it possible to write to PLC registers from the SCADA through the gateway?
Yes. The gateway supports both read (Function Codes 01, 02, 03, 04) and write (Function Codes 05, 06, 15, 16) operations. Write commands from the SCADA pass through the gateway to the serial device in the same way as read commands. Verify that the target registers in the PLC are writable before testing write operations from the SCADA.
Does the gateway work with all SCADA software platforms?
Any SCADA or HMI software with a standard Modbus TCP driver works with the MGate series Ignition, Wonderware InTouch, Siemens WinCC, Rockwell FactoryTalk, Aveva System Platform, and others. The gateway implements the Modbus TCP standard; it does not require vendor-specific drivers.
Why does the SCADA show timeout errors even though the wiring looks correct?
The most common cause with legacy PLCs is a response timeout setting that is too short. Older PLC serial processors need more time to respond than modern firmware assumes. In the MGate configuration, increase the Serial Response Timeout to 500–1,000 ms and add an Inter-Request Delay of 10–50 ms. This is particularly common with older Mitsubishi FX-series, early Omron C-series, and similar hardware from the 1990s–early 2000s.
Why is my 32-bit float register showing the wrong value through the gateway?
This is almost always a byte order (endianness) mismatch between the PLC and the SCADA. The data arrives intact without CRC errors, but the bytes are assembled in the wrong order. In the MGate register configuration, enable Byte Swap, Word Swap, or both test each combination against a register containing a known value until the correct reading appears. This is not a hardware fault and requires no rewiring.