Node-RED 連接失敗怎麼辦? 建立 Modbus TCP 模擬從站測試

ModRSsim2 是一個免費開源的 Modbus 從站模擬器,可以很方便的在沒有外部設備或 PLC 的情況下測試 Modbus 網路通訊。藉由在電腦上建立從站(slave)模擬,ModRSsim2 可以建立 Modbus TCP/IP 、RS-232 的連線,除了可以變更位址的值,ModRSsim2 也支援依照腳本或隨機的自動刷新位址,來模擬多個感測資料輸入的情況。

什麼是 ModRSsim2?

  • 它是一款 Modbus 處理器從站(slave)模擬器,支援 RS-232/RS-485(RTU)TCP/IP(Modbus TCP) 通訊協定。
  • 此軟體為舊有 mod_RSsim 的「分支」(fork)版本,由 Doug Lyons 負責更新後續版本。
  • 適用於 Windows 作業系統(32 位與 64 位皆可)且為免費開源(GPLv3 或 AGPL-3.0)授權。

核心功能一覽

功能說明
模擬 Modbus TCP/IP 從站可以作為 TCP slave 裝置,讓你在 Ethernet 網路模擬多台從站。
模擬 Modbus RTU/RS-232從站支援透過 COM 埠做 RS-232(或經 RS-485 轉 RS-232)通訊。
多從站(Station)支援可設定不同 Station ID,模擬多地址從站裝置。
腳本/VBScript 支援利用腳本控制回應邏輯、自動資料生成、時鐘同步等。
通訊日誌與除錯支援包含通訊 Debug 視窗、日誌檔案,對於測試/開發很有用。

下載與安裝

sourceforge 的 ModRSsim2 頁面點選 Download 下載最新版本,開啟軟體時時允許防火牆,該軟體不需要安裝即可使用。


ModRSsim2 軟體主介面說明

  1. 狀態欄位
    • 標題字串:顯示狀態指示
    • 2 個 LED 指示燈:分別顯示資料的 RX 和 TX (讀和寫)。
  2. 通訊欄位
    • Address 單選按鈕:切換位址列的十六進位或十進位格式
    • I/O 選單:選擇目前顯示的區域/文件或暫存器類型
    • Fmt 選單:選擇資料格式,以指定所顯示資料的呈現方式
    • Prot:更改通訊協議。
  3. 地址欄位:顯示各個暫存器的狀態,可以滑鼠雙擊手動修改。
  4. 站點欄位:所有這些綠色方框是切換按鈕,滑鼠點擊可以將它們變為紅色禁,當訪問站點時,邊框也會短暫地以動畫顯示該節點上的活動。
  5. 工具列(從左到右):
    • 儲存暫存器數值
    • 讀取暫存器數值
    • 清除暫存器數值
    • TCP/IP 連線設定
    • 自動刷新位址設定
    • RS232 雜訊測試設定
    • 關於 ModRSsim2
    • 介面半透明設定
    • 暫存器與其他設定
    • 連線 / 斷線
  6. 模擬器和日誌按鈕
    • T:啟動模擬 I/O 的程式 。該程式模擬了一個水箱、一個進水閥和一個出水閥,以及一個加熱器,加熱器會根據水量嘗試加熱水。
    • Comms:通訊按鈕,此按鈕可切換到通訊故障或通訊日誌螢幕,顯示詳細的協定狀態。

I/O 選單的暫存器類型說明:

Modbus 資料區PLC 精確類比資料型態主站存取權限常見位址範圍
Coil數位輸出 (DO / Y點)單一位元 (Bit)讀 / 寫0xxxx
Discrete Input數位輸入 (DI / X點)單一位元 (Bit)唯讀 (Read-Only)1xxxx
Input Register類比輸入 (AI) / 唯讀的 D 暫存器16位元字 (Word)唯讀 (Read-Only)3xxxx
Holding Register通用數據暫存器 (D 暫存器) / 類比輸出 (AO)16位元字 (Word)讀 / 寫4xxxx

TCP/IP 連線設定說明

狀態(Status)

Supporting 10 simultaneous connections.

  • 目前模擬器允許最多10個用戶端同時連線。

Local IP

GA-06-943-NB

  • 顯示本機(模擬器運行的電腦)呼叫的名稱或IP。

Remote IP

  • 當有客戶端連線時會顯示其IP,無連線時保持空白。

Server Settings(伺服器設定)

# Server connections

  • 最大連線數,設定模擬器最多可以被幾個Modbus主站(HMI、SCADA等)同時連線。
  • 此處設定為10。

Port (502)

  • 伺服器通訊埠,Modbus TCP規範預設埠號為502。
  • 客戶端(如 Node-RED)需以此埠號連線。

Alternate port

  • 備用埠,僅在有特殊用途或多網路需求時設,可略過。

Socket Timeout (sec)

  • 連線超時秒數,單位為秒。若連線閒置達此時間,模擬器會自動中斷連線,避免佔用系統資源。
  • 例:設為1000,表示客戶端連線超過1000秒未動作會自動斷線。

Responsiveness (ms)

  • 模擬器反應延遲,單位毫秒。用來仿真設備回應慢或網路延遲情形。
  • 設為0代表即時回應,不做額外延遲。

Load register values at startup

  • 啟動時載入暫存器資料(如斷電前儲存狀態),不勾選則啟動為空值。

Units are all off at startup

  • 所有線圈/暫存器啟動時皆為0(關閉),適合測試初始狀態。

Linger on close of socket (SO_LINGER)

  • 當TCP連線關閉時是否等待所有封包送出,通常不需勾選,特殊通訊情境可使用。

暫存器與其他設定頁面說明

Upper register limits (暫存器上限設定)

Outputs (0-65536)

  • 作用:設定線圈(Coils/DO)的最大位址號碼,超過此號碼將回傳異常。

Inputs (0-65536)

  • 作用:設定離散輸入(DI)的最大位址。

Analog inputs (0-65536)

  • 類比輸入
  • 作用:對應 Modbus 的 Input Registers(3x),設最大位址。

Holding registers (0-65536)

  • 保持暫存器
  • 作用:對應 Modbus 的 Holding Registers(4x),設最大位址。這是最常用的數值類暫存器。

Extended registers (0-65536)

  • 擴展暫存器
  • 作用:用來測試特殊設備或自訂功能用的額外暫存器。

Other settings (其他設定)

Max. byte length of data request allowed. PDU (data portion) size

  • 允許的最大資料請求長度 (PDU資料部分大小)
  • 作用:限制每個請求的資料payload最大位元組數。設定太大可能造成某些設備或軟體無法處理。

Perform MOSCAD (row/table) checks

  • 執行MOSCAD (行/表) 檢查
  • 作用:僅用於與Motorola SCADA (MOSCAD) 相容性檢查。一般Modbus設備不需勾選。

Modify coils/regs. before responding

  • 回應前修改線圈/暫存器
  • 作用:勾選後,寫入操作時會「立即」修改暫存器,回應內容反映新值(多數PLC預設為此);不勾則先回傳舊值再寫入新值。

Disable writing of coils/regs (PLC is read-only)

  • 停用線圈/暫存器寫入(PLC為唯讀)
  • 作用:啟用後,所有寫入操作皆被拒絕,模擬現場唯讀設備(如測量專用儀表),可測試上位機異常處理能力。

Use a separate set of registers for each station

  • 每個站號使用獨立暫存器區
  • 作用:啟用時,針對不同Modbus ID/站號模擬獨立暫存器,適合輪詢多設備場景。下方數值設定每站暫存器數量。

registers or I/O per station

  • 每個站的暫存器/IO數量
  • 作用:上面勾選後可設定,如16則每一站號有獨立16個暫存器,可測試多台設備輪詢時的行為。

按鈕區

  • Defaults
    • 預設值
    • 恢復出廠或軟體預設值。
  • Maximums
    • 最大值
    • 一鍵將所有項目設為最大值,方便壓力測試或不受限情境。