軟件介紹
Modscan32是一個(gè)運(yùn)行在windows下,作為在RTU或這ASCII傳輸模式下的MODBUS協(xié)議主設(shè)備的應(yīng)用程序。用來模擬主設(shè)備(與之相對(duì)的是Modsim32,用于模擬從設(shè)備)。它可以發(fā)送指令報(bào)文到從機(jī)設(shè)備中,從機(jī)響應(yīng)之后,就可以在界面上返回相應(yīng)寄存器的數(shù)據(jù)。
文章只談及工具的使用,對(duì)于Modbus本身通信協(xié)議的具體內(nèi)容,請(qǐng)移步Modbus通信協(xié)議詳解。
下載鏈接
鏈接:https://pan.baidu.com/s/1eno-yg6VZVNcjR44O0h0Uw
提取碼:84z1
軟件使用
連接
兩種方式,一種普通連接,一種是快速連接。
普通連接
點(diǎn)擊菜單欄"連接設(shè)置"->"連接",彈出連接配置窗口。
在"使用的連接"那里選擇"Direct Connection to COMXX"(XX是根據(jù)當(dāng)前使用的端口號(hào)來定),表示當(dāng)前是用串口通信,如果使用的是Modbus/TCP,則選擇"Remote modbusTCP Server"。
快速連接
點(diǎn)擊菜單欄"連接設(shè)置"->"快速連接",或點(diǎn)擊 ,可根據(jù)前一時(shí)刻的連接配置進(jìn)行連接。
斷開連接
點(diǎn)擊菜單欄"連接設(shè)置"->"斷開連接",或點(diǎn)擊 ,斷開當(dāng)前連接。
串口配置:
在配置窗口中配置好端口號(hào)、波特率、數(shù)據(jù)位、校驗(yàn)位、停止位,一般是9600波特率(9600 Baud),8個(gè)數(shù)據(jù)位(8 Data bits),無校驗(yàn)位(None Parity),1個(gè)停止位(1 Stop Bit)。當(dāng)然這個(gè)是要根據(jù)實(shí)際通信的從機(jī)設(shè)備進(jìn)行匹配設(shè)置。
點(diǎn)擊"協(xié)議選擇",根據(jù)通信的從機(jī)設(shè)備選擇使用RTU模式或ASCII模式,工業(yè)應(yīng)用的話一般使用RTU模式,很少使用ASCII模式。另外還有"Daniel/enron/OMNI"(一種基于標(biāo)準(zhǔn)的擴(kuò)展形式)的RTU和ASCII模式可以選。
再設(shè)置下超時(shí)時(shí)間和幀間隔時(shí)間(實(shí)際就是每個(gè)窗口之間的發(fā)送間隔),超時(shí)時(shí)間可以按默認(rèn)1s就行,Modbus國標(biāo)規(guī)定是200ms到1s。幀間隔時(shí)間按默認(rèn)20ms設(shè)置即可。
另外勾選""可選擇單個(gè)寫入線圈/寄存器時(shí),要使用15/16指令(支持批量寫入)還是05/06指令(只支持單個(gè)寫入)。
硬件流控制如果沒有使用的話,按默認(rèn)設(shè)置即可。設(shè)置完點(diǎn)確認(rèn)即可完成設(shè)置進(jìn)行連接。
TCP配置:
在"使用的連接"處選擇"Remote modbusTCP Server",設(shè)置好IP及端口號(hào),Modbus/TCP的默認(rèn)端口號(hào)為502。實(shí)際根據(jù)從機(jī)設(shè)備的IP和端口號(hào)來設(shè)置。
窗口配置
可以在窗口里直接配置,也可以點(diǎn)擊"配置"->"數(shù)據(jù)定義",在彈窗中進(jìn)行配置。
Address:可以配置讀/寫的寄存器/線圈起始地址(注意這里最低只能配置為1,對(duì)應(yīng)Modbus指令里的0地址)
Length:可以配置讀/寫的寄存器/線圈個(gè)數(shù)
Device Id:可以配置目標(biāo)從機(jī)地址
MODBUS Point Type:可以配置使用的Modbus點(diǎn)位類型。(注意:修改不同的點(diǎn)位類型時(shí),對(duì)應(yīng)地址前面會(huì)帶有不同的前綴數(shù)據(jù),這個(gè)并不影響Modbus指令里的起始地址,只是用于PLC的地址分段)
01:COIL STATUS,線圈(可讀可寫)
02:INPUT STATUS,輸入線圈(只讀)
03:HOLDING REGISTER,保持寄存器(可讀可寫)
04:INPUT REGISTER,輸入寄存器(只讀)
掃描速率:配置當(dāng)前窗口報(bào)文發(fā)送的周期間隔。
窗口狀態(tài)顯示
Number of Polls:表示當(dāng)前已發(fā)送的指令數(shù)量
Valid Slave Responses:表示目標(biāo)從機(jī)回復(fù)的指令數(shù)量
紅色字樣表示當(dāng)前故障狀態(tài),詳見以下故障說明。
** Device NOT CONNECTED! **:表示當(dāng)前未連接。
** Data Uninitialized **:表示當(dāng)前窗口未進(jìn)行配置。
** MODBUS Message TIME-OUT **:表示發(fā)送指令后從設(shè)備超時(shí)未響應(yīng)。
而從機(jī)設(shè)備不回復(fù),可能性有很多,比如:
1、連接配置錯(cuò)誤,主機(jī)的波特率、Slave ID等信息跟從機(jī)設(shè)備對(duì)應(yīng)不上,從機(jī)就不會(huì)回。
2、線路異常,電腦跟從機(jī)設(shè)備之前的通信線存在異常,也是無法正常收到回復(fù)。
3、從機(jī)設(shè)備解析異常不回復(fù),這個(gè)具體可以查看Modbus協(xié)議詳解。
** Checksum Error in Response Message **:響應(yīng)的數(shù)據(jù)校驗(yàn)錯(cuò)誤。
** MODBUS Exception Response from Slave Device **:地址異常,一般是當(dāng)訪問的從機(jī)設(shè)備不存在要讀取的寄存器/線圈地址時(shí),會(huì)返回不存在此地址的02異常碼,軟件接收到此指令時(shí)就會(huì)報(bào)出這個(gè)錯(cuò)誤。
設(shè)置數(shù)據(jù)格式
點(diǎn)擊"配置"->"顯示選項(xiàng)"->"二進(jìn)制"/"十進(jìn)制"……,或點(diǎn)擊 ,選擇對(duì)應(yīng)的數(shù)據(jù)制式(數(shù)據(jù)流里的數(shù)據(jù)也會(huì)有變化)。
原始報(bào)文
點(diǎn)擊"配置"->"顯示選項(xiàng)"->"顯示數(shù)據(jù)流",或點(diǎn)擊 ,可以切換查看當(dāng)前的收發(fā)數(shù)據(jù),其中白底的是軟件發(fā)送的,黑底是從設(shè)備回復(fù)的。
數(shù)據(jù)記錄
點(diǎn)擊"配置"->"數(shù)據(jù)捕獲"
報(bào)文記錄
點(diǎn)擊"配置"->"文本捕獲",設(shè)置保存的模式。
保存每次掃描,即每發(fā)送一次報(bào)文記錄一次。
保存所選的掃描,然后設(shè)置間隔時(shí)間,則按設(shè)置的時(shí)間進(jìn)行記錄。
保存運(yùn)行平均,則是保存當(dāng)前窗口這些數(shù)據(jù)這段時(shí)間內(nèi)的平均值進(jìn)行記錄。
保存窗口及打開
點(diǎn)擊"文件"->"保存",或點(diǎn)擊 ,對(duì)當(dāng)前選中的窗口進(jìn)行保存。
點(diǎn)擊"文件"->"打開",或點(diǎn)擊 ,則可對(duì)已保存的文件進(jìn)行打開操作。
使用注意
1、這個(gè)工具上的一些時(shí)間設(shè)置,當(dāng)時(shí)間設(shè)置較短時(shí),可能不準(zhǔn)。比如以前試過把每一幀的發(fā)送間隔時(shí)間調(diào)成1ms,但實(shí)際用示波器抓到的數(shù)據(jù),間隔大概100ms左右,基本低于100ms的都實(shí)現(xiàn)不了。這個(gè)可能跟電腦本身性能有關(guān)系,所以要注意不要太過于相信這里面的時(shí)間設(shè)置,最好以實(shí)際的為主。
2、因?yàn)檫@個(gè)軟件是在window系統(tǒng)上運(yùn)行的,當(dāng)系統(tǒng)卡頓時(shí),可能會(huì)影響軟件的運(yùn)行,表現(xiàn)出來就是查看的報(bào)文有異常。Modbus Slave或其他串口調(diào)試工具也會(huì)有類似的問題。
相關(guān)知識(shí)
Modbus通信協(xié)議、串口通信協(xié)議、Modsim32、Modbus Poll、Modbus Slave、TCP/IP