同樣是 Serial 轉 Ethernet,MOXA 的 NPort 和 MGate 有什麼不同

以 Modbus RTU 裝置為例

Yu
7 min readMar 6, 2022

有時候可能會遇到 PC 需要跟串列通訊裝置收值的情況,這時候常常會透過 MOXA 的 NPort 或 MGate 將 RS-485 / RS-422 的 Serial 訊號轉換成 Ethernet 的網路訊號。

這 2 種產品要怎麼選?當然是直接問賣產品的廠商最快,最專業。

結論

簡單粗暴來說,大致上可以分成 2 種
1. 要把 Modbus RTU/ASCII 轉成 Modbus TCP/IP,選 MGate
2. 其他的無協議串列通訊轉 Ethernet,選 NPort
* 個別專案的架構和設定,請尋求專業廠商的諮詢和建議,以免因小失大

NPort 和 MGate 的架構

差異

如果只是要把 Modbus RTU 的裝置要轉 Ethernet 的話,其實 NPort 和 MGate 都可以用。

MGate 會轉換 Protocol,會把 Modbus RTU 的封包格式,轉換成 Modbus TCP 的封包格式。

NPort 則是把串列的資料,整串包成符合 TCP/IP 的格式封包。以 Modbus RTU 來說,會轉換成 Modbus RTU Over TCP/IP 格式。

Modbus RTU Over TCP/IP 和 Modbus TCP/IP 的封包格式不一樣。最明顯是差異是 Modbus RTU、 有 CRC 校驗碼,Modbus TCP/IP 沒有 CRC 校驗碼。

小火龍要飛有 2 種方式。一個是進化成噴火龍,另一個是搭飛機。Modbus RTU Over TCP/IP 就是小火龍搭飛機,同樣飛起來了,但本質還是小火龍 (Modbus RTU)。

Modbus Protocol 比較表

封包分析

用 Wireshark 分別監測 Modbus RTU Over TCP 和 Modbus TCP 的網路封包。

分析 Modbus TCP/IP 封包

硬體架構

操作方式

  1. 在 PC 上用 Radzio! Modbus Master Simulator 軟體 (設定 Modbus TCP 模式) 讀取 PLC D0 - D1 位址的數值。
  2. 在讀取數值的過程中,同時開啟 Wireshark 來監視網路封包。
Radzio Modbus Master simulator 設定方式

PC 和 PLC 的參數設定

  1. DVP PLC
    IP : 192.168.127.122
    ID : 7
    PORT : 502
    D0 : Holding Register, Function Code 03, Address 01
    D1 : Holding Register, Function Code 03, Address 02
  2. PC
    IP : 192.168.127.15

分析 Wireshark 的封包

Wireshark 的會顯示並分類 Modbus TCP 的相關資料

[Query] Modbus TCP/IP

[詢問] Modbus TCP/IP

07 : PLC ID
03 : Holding Register Function Code
00 00 : D0 Address
00 02 : Length (D0, D1)
*Modbus TCP 無 CRC

[Response] Modbus TCP/IP

[回答] Modbus TCP/IP

07 : PLC ID
03 : Holding Register Function Code
04 : Length (4 Byte)
00 4C : DATA1 (D0 Value = 16#004C = 10#76)
00 01 : DATA2 (D1 Value = 16#0001 = 10#1)
*Modbus TCP 無 CRC

分析 Modbus RTU Over TCP/IP 封包

硬體架構

操作方式

  1. 在 PC 上用 Radzio! Modbus Master Simulator 軟體 (設定 Modbus RTU Over TCP/IP 模式) 讀取 PLC D0 - D9 位址的數值。
  2. 在讀取數值的過程中,同時開啟 Wireshark 來監視網路封包。
Radzio! Modbus Master simulator 設定方式

PC , NPort, PLC 的參數設定

  1. DVP PLC
    ID : 7
    Baud Rate : 9600
    Data Bits : 8
    Parity : NONE
    Stop Bit : 1
    D0 - D9 : Holding Register, Function Code 03, Address 01–09
  2. NPort
    IP : 192.168.127.254
    Operation Mode : TCP Server Mode
    Local TCP Port : 4001
  3. PC
    IP : 192.168.127.15

分析 Wireshark 的封包

Wireshark 的顯示資料如下:

[Query] Modbus TCP/IP Over TCP/IP

[詢問] Modbus RTU Over TCP

03 : PLC ID
03 : Holding Register Function Code
00 00 : D0 Address
00 0A : Length (D0 — D9)
C4 2F : CRC

[Response] Modbus TCP/IP Over TCP/IP

[回答] Modbus RTU Over TCP

03 : PLC ID
03 : Holding Register Function Code
14 : Length (16#14 = 10#20, 20 Byte)
25 58 : DATA1 (D0 Value = 16#2558 = 10#9560)
00 01 : DATA2 (D1 Value = 16#0001 = 10#1)
00 02 : DATA3 (D2 Value = 16#0002 = 10#2)
00 03 : DATA4 (D3 Value = 16#0003 = 10#3)
00 04 : DATA5 (D4 Value = 16#0004 = 10#4)
00 05 : DATA6 (D5 Value = 16#0005 = 10#5)
00 06 : DATA7 (D6 Value = 16#0006 = 10#6)
00 00 : DATA8 (D7 Value = 16#0000 = 10#0)
00 00 : DATA9 (D8 Value = 16#0000 = 10#0)
00 00 : DATA10 (D9 Value = 16#0000 = 10#0)
D8 73 : CRC

參考資料

MOXA Website Product FAQ

  1. 我能在主机上对 NPort 服务器使用 Ping 和 Telnet 命令,但 TCP 客户端程序无法连接 NPort 服务器。这是为什么?
  2. How can I configure my NPort 5450 to send data from its serial port 1 to serial port 2?

技術文件

  1. moxa-tcp-server-mode-for-nport-tech-note-v1.0
  2. moxa-tcp-client-mode-for-nport-tech-note-v1.0

--

--

No responses yet