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 軟體主介面說明

- 狀態欄位
- 標題字串:顯示狀態指示
- 2 個 LED 指示燈:分別顯示資料的 RX 和 TX (讀和寫)。
- 通訊欄位
- Address 單選按鈕:切換位址列的十六進位或十進位格式
- I/O 選單:選擇目前顯示的區域/文件或暫存器類型
- Fmt 選單:選擇資料格式,以指定所顯示資料的呈現方式
- Prot:更改通訊協議。
- 地址欄位:顯示各個暫存器的狀態,可以滑鼠雙擊手動修改。
- 站點欄位:所有這些綠色方框是切換按鈕,滑鼠點擊可以將它們變為紅色禁,當訪問站點時,邊框也會短暫地以動畫顯示該節點上的活動。
- 工具列(從左到右):
- 儲存暫存器數值
- 讀取暫存器數值
- 清除暫存器數值
- TCP/IP 連線設定
- 自動刷新位址設定
- RS232 雜訊測試設定
- 關於 ModRSsim2
- 介面半透明設定
- 暫存器與其他設定
- 連線 / 斷線
- 模擬器和日誌按鈕
- 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
- 最大值
- 一鍵將所有項目設為最大值,方便壓力測試或不受限情境。


