網(wǎng)站地址:http://www.modbustools.com/
該網(wǎng)站提供了幾個(gè)軟件工具,可以運(yùn)行于windows2000/XP/Vista/7環(huán)境下,用來測(cè)試和仿真Modebus設(shè)備。
-
ModbusPoll :Modbus主機(jī)仿真器,用于測(cè)試和調(diào)試Modbus從設(shè)備。該軟件支持ModbusRTU、ASCII、TCP/IP。
-
ModbusSlave: Modbus從設(shè)備仿真器,可以仿真32個(gè)從設(shè)備/地址域。每個(gè)接口都提供了對(duì)EXCEL報(bào)表的OLE自動(dòng)化支持。
-
WSMBT :Modbus主設(shè)備的.NET控件,支持C#,VB,managedC++語言,支持Modbus TCP/IP。
-
WSMBS:Modbus從設(shè)備的.NET控件,支持C#,VB,managedC++語言,支持ModbusRTU/ASCII。
-
MBAXP:一個(gè)易用的ActiveX控件,支持Excel,VisualBasic,Visual C++,Delphi等。支持Modbus RTU/ASCII和Modbus TCP/IP
Modbus Poll是一個(gè)主機(jī)仿真器,用來幫助開發(fā)人員測(cè)試Modbus從設(shè)備,或者其它MOdbus協(xié)議的測(cè)試和仿真。它支持多文檔接口,即,可以同時(shí)監(jiān)視多個(gè)從設(shè)備/數(shù)據(jù)域。每個(gè)窗口簡單地設(shè)定從設(shè)備ID,功能,地址,大小和輪詢間隔。你可以從任意一個(gè)窗口讀寫寄存器和線圈。如果你想改變一個(gè)單獨(dú)的寄存器,簡單地雙擊這個(gè)值即可。或者你可以改變多個(gè)寄存器/線圈值。提供數(shù)據(jù)的多種格式方式,比如浮點(diǎn)、雙精度、長整型(可以字節(jié)序列交換)。
狀態(tài)條顯示錯(cuò)誤信息。
如果你是一個(gè)從設(shè)備開發(fā)者,你可以通過"testcenter" 菜單,組織并發(fā)送你自己的測(cè)試字符串,并以16進(jìn)制形式檢查從設(shè)備返回的結(jié)果。
為VB,EXCEL等提供了OLE自動(dòng)化接口。可以用OLE接口解析和顯示Modbus數(shù)據(jù),然后送達(dá)你指定的設(shè)備,即,在EXCEL中編輯數(shù)據(jù),然后發(fā)送到你的從設(shè)備!示例參看安裝后的Excelexample.xls。
支持下列協(xié)議:
- Modbus RTU
- Modbus ASCII
- Modbus TCP/IP
- Modbus RTU Over TCP/IP
- Modbus ASCII OverTCP/IP
- Modbus UDP/IP
- Modbus RTU Over UDP/IP
- Modbus ASCII OverUDP/IP
MODBUSPOLL功能:
- OLE自動(dòng)化可以簡單地與Visual Basic接口,使用起來類似于ActiveX控件。參見VBExample.vbp
- 讀/寫多達(dá)125個(gè)寄存器
- 讀/寫多達(dá)2000個(gè)輸入/線圈
- TestCenter菜單 (組織你自己的測(cè)試字串)
- 打印和打印預(yù)覽
- 監(jiān)視串行數(shù)據(jù)流量serial datatraffic
- Datalogging to a text file
- Data logging direct to Excel
- 上下文敏感的HLP文件
- 10 Displayformats such as float, double etc.
- Adjustable Address Base (0 or1).
- 字體和顏色選項(xiàng)
- 廣播功能(從設(shè)備ID=0)
- Easy control of RS-485 converters with RTStoggle.
支持MODBUS功能:
- 01: Read coil status 讀線圈狀態(tài)
- 02: Read input status 讀輸入狀態(tài)
- 03: Read holdingregister讀保持寄存器
- 04: Read input registers 讀輸入寄存器
- 05: Force single coil 強(qiáng)制單線圈
- 06: Preset single register預(yù)置單寄存器
- 15: Force multiple coils 強(qiáng)制多線圈
- 16: Preset multiple registers預(yù)置多寄存器
- 17: Report slave ID 報(bào)告從設(shè)備ID
- 22: Mask write register 屏蔽寫寄存器
- 23: Read/Write registers 讀/寫寄存器
測(cè)試環(huán)境:XP32系統(tǒng),一臺(tái)機(jī)器運(yùn)行Poll,一臺(tái)運(yùn)行Slave,中間用串口線連接。線序:2-3,3-2,5-5。
操作:
- 兩邊分別用F3設(shè)定連接參數(shù):串口,串口1,9600band,8數(shù)據(jù)位,Even校驗(yàn),1停止位,RTU模式,其它缺省。
- 主機(jī)端未正確連接,會(huì)給出提示
- 通訊開始,主機(jī)端顯示:TX=35,Err=0,ID=1,F(xiàn)=03,SR=1000ms。意思是,發(fā)送35次命令,錯(cuò)誤次數(shù),從機(jī)ID,功能號(hào),輪詢間隔。
- 如果通訊出錯(cuò),會(huì)在窗口第二行顯示錯(cuò)誤信息
- 使用Display菜單的"Communication Traffic"命令,可以顯示出當(dāng)前發(fā)送命令和接受的數(shù)據(jù)。
- 主機(jī)改變通訊功能,快捷鍵F8,令功能為4,讀輸入寄存器,然后在從機(jī)的10個(gè)寄存器上點(diǎn)擊鼠標(biāo),輸入每個(gè)寄存器的新值,則,在主機(jī)上會(huì)讀取到這個(gè)新的寄存器值。
測(cè)試環(huán)境:微機(jī)運(yùn)行Poll,AVR MEGA88運(yùn)行移植后的代碼,串口連線同上。
AVR代碼:串口用9600bps,even校驗(yàn),1停止位,RTU模式,SlaveID=1,其它未改變。
Poll設(shè)置:
- F3呼出連接對(duì)話框,設(shè)定9600bps同單片機(jī)波特率。
- F8呼出讀寫對(duì)話框,設(shè)定SlaveID=1;功能=4,地址=999,數(shù)量=4,掃描頻率=1000ms,其它未變。
- 界面顯示出AVR寄存器內(nèi)容,通訊無錯(cuò)誤提示。
- 換用9600/11400/19200/38400/115200bps波特率,通訊正常。因?yàn)镻oll沒有57600/230400等設(shè)置,這些波特率未測(cè)。AVR在該時(shí)鐘下最高可達(dá)230400bps,無差錯(cuò)。
數(shù)據(jù)分析:
TX: 01 04 03 E7 00 04 41 BA 01-從設(shè)備地址,04-功能號(hào),0x03E7=999,0x0004-讀出寄存器個(gè)數(shù),CRC校驗(yàn)
RX: 01 04 06 00 00 00 00 00 00 60 93 01-從設(shè)備地址,04-功能號(hào),06-返回字節(jié)數(shù),CRC校驗(yàn)
出現(xiàn)的問題:
- 用不同AVR數(shù)據(jù)測(cè)試時(shí),發(fā)現(xiàn)AVR代碼有下列問題:設(shè)置的地址要比實(shí)際demo.c中設(shè)定的地址少一個(gè)。比如,demo.c中起始地址1000,但測(cè)試時(shí)Poll只能設(shè)定999,否則測(cè)試出錯(cuò)。
- 該問題的根源在mbfuncinput.c中,解析出變量地址usRegAddress之后有個(gè)++動(dòng)作,人為將其增加1。其它函數(shù)如mbfuncholding.c也是如此。
- 參看Modbus協(xié)議的定義:從零開始尋址寄存器,比如尋址輸入寄存器1-16,則輸入為0-15。真是奇怪啊!
- 自此可以看出,DEMO.C中定義的輸入寄存器起始地址最小為1,此時(shí)才能滿足Master要求的輸入寄存器=0。
協(xié)議里規(guī)定,如果通訊出錯(cuò),則返回?cái)?shù)據(jù)格式為:
01 84 xx CRC2字節(jié)
這里xx表示錯(cuò)誤碼:xx=01 02 03 04,其中02-無效的數(shù)據(jù)地址
Modbus Poll 4.3.4 破解版下載地址
點(diǎn)擊下載 https://pan.baidu.com/s/1C2RXZ9oTcRIJ_RJu9qo66A?pwd=dzkf
提取碼:dzkf