ModbusPoll軟件主要用于仿真Modbus主站或Modbus客戶端;ModbusSlave軟件主要用于仿真Modbus從站或Modbus服務(wù)器;而VSPD全稱Configure Virtual Serial Port Driver,是用來給電腦創(chuàng)建虛擬串口使用的。
Modbus Poll
MODBUS主機(jī)仿真器,用于測(cè)試和調(diào)試MODBUS從設(shè)備。該軟件支持ModbusRTU、ASCII、TCP/IP。用來幫助開發(fā)人員測(cè)試MODBUS從設(shè)備,或者其它MODBUS協(xié)議的測(cè)試和仿真。它支持多文檔接口,即可以同時(shí)監(jiān)視多個(gè)從設(shè)備/數(shù)據(jù)域。每個(gè)窗口簡(jiǎn)單地設(shè)定從設(shè)備ID,功能,地址,大小和輪詢間隔??梢詮娜我庖粋€(gè)窗口讀寫寄存器和線圈。如果你想改變一個(gè)單獨(dú)的寄存器,簡(jiǎn)單地雙擊這個(gè)值即可?;蛘吣憧梢愿淖兌鄠€(gè)寄存器/線圈值。提供數(shù)據(jù)的多種格式方式,比如浮點(diǎn)、雙精度、長(zhǎng)整型(可以字節(jié)序列交換)。
Modbus Poll使用
Modbus Poll安裝過程一直點(diǎn)next即可,安裝完成之后破解一下(輸一下密鑰,很簡(jiǎn)單),軟件界面如下圖所示。

狀態(tài)框:
Tx=0表示向主站發(fā)送數(shù)據(jù)幀次數(shù),圖中為0次;
Err=0表示通訊錯(cuò)誤次數(shù),圖中為0次;
ID=1表示模擬的Modbus子設(shè)備的設(shè)備地址,圖中地址為1;
F=03表示所使用的Modbus功能碼,圖中為03功能碼;
SR=1000ms表示發(fā)送周期,1s一次。
紅字部分,表示當(dāng)前的錯(cuò)誤狀態(tài),“No Connection”表示未連接狀態(tài)。
單擊Setup----Read/Write Definition… 或者按F8進(jìn)行參數(shù)設(shè)置,會(huì)彈出參數(shù)設(shè)置對(duì)話框。

Slave ID為要訪問的Modbus從機(jī)的地址;
Function功能碼的選擇;
Address為寄存器起始地址,根據(jù)功能碼的不同,訪問地址不同;
Quantity為訪問寄存器個(gè)數(shù);
Scan Rate為讀取數(shù)據(jù)周期,輪詢發(fā)送,單位毫秒。
MODBUS協(xié)議同時(shí)規(guī)定了二十幾種功能碼,但是常用的只有8種,用于對(duì)存儲(chǔ)區(qū)的讀寫,如下表所示:

當(dāng)然我們用的最多的就是03和06,一個(gè)是讀取數(shù)據(jù),一個(gè)是修改數(shù)據(jù)。
點(diǎn)擊Display可以設(shè)置數(shù)據(jù)的顯示方式,默認(rèn)為Signed方式(16進(jìn)制無符號(hào)二進(jìn)制),數(shù)據(jù)范圍為-32768~32767。

點(diǎn)擊Connection→Connect或者按“F3”進(jìn)行連接
端口主從機(jī)分別選擇我們虛擬出來的com10和com11端口,其他選項(xiàng)如波特率9600,比特位8,校驗(yàn)位1,無等價(jià)位等可以保持不變,然后點(diǎn)擊確定進(jìn)行連接,未連接成功窗口第二行會(huì)給出提示信息。

Response Timeout,表示讀取超時(shí)時(shí)間,從站在超時(shí)時(shí)間內(nèi)沒有返回?cái)?shù)據(jù),則認(rèn)為通訊失敗。
Delay Between Polls,每次掃描的最小間隔時(shí)間,默認(rèn)為20ms。
Remote Modbus Server,表示TCP/IP模式時(shí)的終端從站設(shè)備的網(wǎng)絡(luò)設(shè)置。
IP Address,表示TCP/IP模式時(shí)從站IP地址。
Port,表示TCP模式時(shí)從站網(wǎng)絡(luò)端口
Connect Timeout 表示TCP鏈接超時(shí)時(shí)間
IPV4/IPV6
這里我們等從機(jī)設(shè)置完成再進(jìn)行連接
修改寄存器值(06或16功能碼時(shí)生效):
在主窗口寄存器地址上雙擊鼠標(biāo),彈出修改對(duì)話框,如下圖:

Slave為Modbus從站的地址
Address 為當(dāng)前操作的寄存器的地址
Value 修改的值 范圍為-32768-32767
Use Function 設(shè)置功能碼,是06還是16
Modbus Slave
Modbus從設(shè)備仿真器,可以仿真32個(gè)從設(shè)備/地址域。每個(gè)接口都提供了對(duì)EXCEL報(bào)表的OLE自動(dòng)化支持。主要用來模擬Modbus從站設(shè)備,接收主站的命令包,回送數(shù)據(jù)包。幫助MODBUS通訊設(shè)備開發(fā)人員進(jìn)行MODBUS通訊協(xié)議的模擬和測(cè)試,用于模擬、測(cè)試、調(diào)試MODBUS通訊設(shè)備。可以32個(gè)窗口中模擬多達(dá)32個(gè)MODBUS子設(shè)備。Modbus Slave與Modbus Poll的用戶界面相同,支持功能01,02,03,04,05,06,15,16,22和23,監(jiān)視串口數(shù)據(jù)。
Modbus Slave使用
安裝過程一直點(diǎn)next即可,安裝完成之后破解一下(輸一下密鑰,很簡(jiǎn)單),軟件界面如下圖所示。

ID:表示從機(jī)的地址
F:功能碼
下方為寄存器數(shù)據(jù)
點(diǎn)擊Setup----slave definition 設(shè)置從機(jī)數(shù)據(jù)

點(diǎn)擊 Connection -> Connect或者按“F3”進(jìn)行連接

要注意的一個(gè)區(qū)別是從機(jī)這里的Function 是4個(gè)存儲(chǔ)區(qū)
輸出線圈
輸入線圈
保持寄存器
輸入寄存器
Modbus協(xié)議規(guī)定了4個(gè)存儲(chǔ)區(qū) 分別是0、1、3、4區(qū),其中1區(qū)和4區(qū)是可讀可寫,1區(qū)和3區(qū)是只讀。

和主機(jī)部分基本一致,不再闡述,就是要注意主機(jī)如果選擇COM10從機(jī)就要選擇COM11
雙擊從機(jī)寄存器數(shù)據(jù)框,即可修改寄存器數(shù)據(jù)
查看通訊數(shù)據(jù)幀:

點(diǎn)擊“Display”----“Communicatio”,可以調(diào)出串口收發(fā)數(shù)據(jù)幀監(jiān)視信息對(duì)話框,用來查看分析收發(fā)的數(shù)據(jù)幀。如下圖所示:

如果是從機(jī) Rx為接收到的主機(jī)消息幀,Tx為發(fā)送到的主機(jī)數(shù)據(jù), 我們可以對(duì)數(shù)據(jù)進(jìn)行分析:
1、主機(jī)對(duì)從機(jī)讀數(shù)據(jù)操作
主機(jī)發(fā)送報(bào)文格式如下:

含義:
0x01:從機(jī)的地址
0x03:查詢功能,讀取從機(jī)寄存器的數(shù)據(jù)
0x00 0x00:代表讀取的起始寄存器地址.說明從0x0000開始讀取.
0x00 0x0A:查詢的寄存器數(shù)量為0x000A(10)個(gè) Modbus把數(shù)據(jù)存放在寄存器中,通過查詢寄存器來得到不同變量的值,一個(gè)寄存器地址對(duì)應(yīng)2字節(jié)數(shù)據(jù); 寄存器地址對(duì)應(yīng)著從機(jī)實(shí)際的存儲(chǔ)地址
0x62 0x67:循環(huán)冗余校驗(yàn) CRC
從機(jī)回復(fù)報(bào)文格式如下:

含義:
0x01:從機(jī)的地址
0x03:查詢功能,讀取從機(jī)寄存器的數(shù)據(jù)
0x14:返回字節(jié)數(shù)為14個(gè)
0x00… 0x00:寄存器的值
0x62 0x67:循環(huán)冗余校驗(yàn) CRC
從機(jī)修改寄存器值,主機(jī)接收也會(huì)改變 功能碼03

主機(jī)修改寄存器值,從機(jī)寄存器值會(huì)改變 功能碼06

Virtual Serial Port Driver 9.0虛擬com端口工具
Modbus調(diào)試需要需要兩臺(tái)電腦聯(lián)機(jī)或者上位機(jī)與下位機(jī)進(jìn)行調(diào)試。有了這個(gè)工具后就可以在一個(gè)電腦上虛擬出兩個(gè)連接的com端口,就可以在一臺(tái)電腦上進(jìn)行調(diào)試。
作者:Z小旋
