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