Modbus采用主從式通信,日常使用較多的是Modbus RTU和Modbus TCP/IP兩種協(xié)議。常用調(diào)試軟件為第三方工具M(jìn)odScan32,比較簡(jiǎn)單易懂的一款軟件,下面介紹一下其使用方法。
ModScan32用來模擬主設(shè)備。它可以發(fā)送指令到從機(jī)設(shè)備(使用Modbus協(xié)議的智能儀表終端設(shè)備)中,從機(jī)響應(yīng)之后,就可以在界面上返回相應(yīng)寄存器的數(shù)據(jù)。
一、首先要保證外部的連接線正確連接好,確認(rèn)數(shù)據(jù)線連接正常。
下面打開軟件界面,如下圖:
Modscan32使用說明:
首先,要保證外部連線正確連接,確認(rèn)數(shù)據(jù)連接正常,進(jìn)入軟件界面進(jìn)行操作。
打開后,是如下界面:
第一步,點(diǎn)擊菜單欄的Connection→“connection”出現(xiàn):
第二步:點(diǎn)擊“rotecol Selection”進(jìn)入如下界面,根據(jù)下圖所示進(jìn)行設(shè)置:
第三步:通訊參數(shù)設(shè)定,進(jìn)行下面操作,點(diǎn)擊后出現(xiàn)的界面填寫如圖所示的數(shù)據(jù):
Modbus的類型選擇:在Modbus Point Type就是要讀取的寄存器區(qū)
“01:COIL STATUS”指1#命令DO寄存器
“02:INPUT STATUS”指2#命令DI寄存器
“03:HOLDING REGISERT”指3#命令保存寄存器
“04:INPUT REGISTER”指4#命令輸入寄存器
想讀哪個(gè)寄存器,就選那個(gè)就行
對(duì)應(yīng)Modbus地址分別為:
備注:采用Modbus485信號(hào)接入要求如下:
1、Server通訊的參數(shù)為:9600/8/1/無校驗(yàn)(可調(diào)整,但需要和企業(yè)通訊卡的設(shè)置參數(shù)一致)
2、Server的485站地址為:1
3、采集點(diǎn)對(duì)應(yīng)Modbus RTU地址為40001開始,數(shù)據(jù)類型為RINT,線性量程為:0-65535
4、提供的Modbus RTU Server必須是國(guó)際標(biāo)準(zhǔn)版協(xié)議,使用Modscan測(cè)試軟件能夠測(cè)試通過。
本次講解,主要為模擬主站,接收從站的數(shù)據(jù)(遙信、遙測(cè)),并且給從站下令(遙控、遙調(diào))
Connetion→connect,后如圖
類型:直接默認(rèn)Remote modbus TCP Server,IP Address:從站IP地址,端口:默認(rèn)502
PS:本地測(cè)試網(wǎng)段要跟從站一個(gè)網(wǎng)段,并在一個(gè)內(nèi)網(wǎng)里,或者你測(cè)試也可直接在從站機(jī)器上測(cè)發(fā)數(shù)據(jù)的IP地址,設(shè)好后,回到一開始的界面。
主要調(diào)整的幾個(gè)位置:①Device Id,從站和主站約定好的設(shè)備地址,按照實(shí)際情況填寫,如果填錯(cuò),會(huì)出現(xiàn)連不上的情況;
②Address,接收數(shù)據(jù)的起始地址,最小為1,不可為0,modbus tcp規(guī)約中,點(diǎn)表都是從0開始的,但測(cè)試時(shí)是從1開始的,例:遙信實(shí)際為0→99,測(cè)試時(shí)1→100,遙測(cè)實(shí)際為0、2、4、6、8...100,測(cè)試時(shí)1、3、5、7、9...101
③Length,長(zhǎng)度,modscan工具最長(zhǎng)可接100,也就是圖中設(shè)的100,
modscan使用時(shí)有個(gè)需注意的問題:如果實(shí)際從站只發(fā)出10個(gè)遙測(cè),那長(zhǎng)度設(shè)置太長(zhǎng) ,超過24,一般會(huì)造成工具中數(shù)據(jù)不刷新或者直接溢出,無法查看的情況,所以根據(jù)實(shí)際情況進(jìn)行長(zhǎng)度設(shè)置。
100長(zhǎng)度,可接100個(gè)遙信,50個(gè)遙測(cè)(單精度浮點(diǎn)占兩個(gè)寄存器位置)
④圖中的01、02、03、04就是四個(gè)功能碼,一般01為遙信和遙控、02一般不用、03為遙測(cè)和遙調(diào)、04為統(tǒng)計(jì)量上送,你要看哪個(gè)數(shù)據(jù)就選哪個(gè)類型。
⑤數(shù)據(jù)類型選擇區(qū):最常用的就是3:2標(biāo)志的Floating Pt.,如果測(cè)出的數(shù)據(jù)亂碼,可以點(diǎn)旁邊的Swapped FP,轉(zhuǎn)換報(bào)文的高低字節(jié),我們看到的數(shù)據(jù)都是解析后的,實(shí)際真正傳輸?shù)氖菆?bào)文,其之后的6:4是雙精度浮點(diǎn),之前的幾個(gè)是整型、小數(shù)之類的。
最后,介紹下遙控,遙調(diào),找到測(cè)試出對(duì)應(yīng)的點(diǎn),雙擊后,如圖所示
在Value中輸入你要下的令,然后點(diǎn)擊Update即可,模擬有風(fēng)險(xiǎn),下令需謹(jǐn)慎。
注意:數(shù)據(jù)溢出如果無法連接,那么需要先斷開連接再嘗試連接,將長(zhǎng)度改小些,經(jīng)常使用才會(huì)熟能生巧
正常測(cè)出數(shù)據(jù)截圖:
二、一直顯示MODBUS MESSAGE TIME-OUT
背景描述
1、modsim做modbus設(shè)備從站
2、modcan做modbus設(shè)備主站
3、valid slave responses:0 也就是沒有收到數(shù)據(jù)
4、modbus message time out
解決方案
建議用modbus poll與modbus slave兩個(gè)軟件來做主從站測(cè)試,modscan不適合做這個(gè),存在缺陷;
三、報(bào)文解析
淺色部分即為Modscan發(fā)送的報(bào)文:
01 03 00 00 00 0A C5 CD 其中,
01 從站地址
03 Modbus功能碼
00 00 為所要讀取的Modbus從站的起始地址
00 0A 為所要讀取的寄存器長(zhǎng)度,即所要讀取的為10個(gè)字。40001——40010
C5 CD為指令的CRC校驗(yàn)
深色部分即為Modscan接收的報(bào)文:
01 03 14 00 0A 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0A 29 33
01 從站地址
03 Modbus功能碼
14指令中所包含的數(shù)據(jù)數(shù)量,即14H(十進(jìn)制即20)個(gè)字
00 0A 40001地址寄存器的值(16進(jìn)制)
00 02 40002地址寄存器的值(16進(jìn)制)
00 03 40003地址寄存器的值(16進(jìn)制)
00 04 40004地址寄存器的值(16進(jìn)制)
00 05 40005地址寄存器的值(16進(jìn)制)
00 06 40006地址寄存器的值(16進(jìn)制)
00 07 40007地址寄存器的值(16進(jìn)制)
00 08 40008地址寄存器的值(16進(jìn)制)
00 09 40009地址寄存器的值(16進(jìn)制)
00 0A 40010地址寄存器的值(16進(jìn)制)
29 33為指令的CRC校驗(yàn)
Modsim:顯示 --> 十六進(jìn)制(此時(shí)數(shù)據(jù)均顯示為16進(jìn)制,同理二進(jìn)制、浮點(diǎn)數(shù)等也一樣)。然后,顯示 --> 顯示數(shù)據(jù)流,在此可以看到Modbus發(fā)送與接收的報(bào)文信息。其與Modscan類似,不再冗述。
四、ModSim32和ModScan32區(qū)別
ModSim32-ModScan32Modbus調(diào)試工具使用及配置說明
ModSim32下邊選擇Remote TCP/IP Server連接方式,IP Address處填寫本機(jī)IP地址,Service處為默認(rèn)的502即可,點(diǎn)擊OK。
按照Modbus協(xié)議的要求去讀相應(yīng)功能代碼(0、1、3、4)的地址即可,注意選擇相同的Device Id、功能代碼、起始地址(Address)和長(zhǎng)度(Length),否則會(huì)提示
這是ModSim32和ModScan32種的地址不一樣所致。
另外,還需要注意的是,ModSim32可以對(duì)所有功能代碼的地址進(jìn)行寫操作,而ModScan32只能對(duì)0和4功能代碼的地址進(jìn)行寫操作,不能對(duì)1和3功能代碼的地址進(jìn)行寫操作。對(duì)于ModScan32而言,1和3功能代碼的地址是只讀的,而0和4功能代碼的地址是可讀寫的。 在ModSim32中分別對(duì)地址30001、30002、30003寫入99、123、2217,則在圖6的ModScan32中可以看到30001、30002、30003三個(gè)地址顯示的值也為99、123、2217。