我們需要一款支持Modbus RTU通信的PLC和一根USB轉(zhuǎn)串口線。
然后電腦這邊準(zhǔn)備一個工具軟件。
1 我們確認(rèn)下PLC的串口參數(shù)。
PLC當(dāng)前的串口,支持了Modbus協(xié)議。
串口參數(shù)是115200波特率,數(shù)據(jù)位為8,停止位為1,無校驗。
2 打開Modbus Poll工具。
設(shè)置參數(shù)也是115200,8,1,無即可。
3 選擇寄存器變量。
點擊圖中按鈕,即可選擇要讀寫的寄存器。
Slave ID 是從站設(shè)備的ID。設(shè)置為1,和PLC對應(yīng)上。
Function: 也就是功能碼。0X寄存器對應(yīng)的功能就是01為read.
Address: 要讀的寄存器地址。設(shè)置為0,也就是從0開始讀,剛好對應(yīng)PLC上面的輸出點。
Quantity: 寄存器個數(shù)。設(shè)置10,我們先讀10個。
Sacn Rate: 掃描周期。默認(rèn)1000ms。也就是每1000ms讀一次。
其它參數(shù)不關(guān)心,默認(rèn),然后點OK。
然后就顯示都通信上了。
我們試著拿偶數(shù)地址都設(shè)置為1看一下。
對里面的值雙擊,會出來設(shè)置值界面。因為是單獨寫,可以默認(rèn)使用05功能碼。
可以看到PLC里相應(yīng)的輸出點,也被置1了。
這就是很基本的一個Modbus RTU通信的demo。
如果你認(rèn)為到此就結(jié)束了,那可能你猜對了。
我們上手學(xué)Modbus 協(xié)議,沒必要搞那么復(fù)雜。一天收獲一點點,慢慢消化Modbus 協(xié)議。
先學(xué)會怎么使用的,再進(jìn)一步了解協(xié)議。
好了,如果前面的內(nèi)容已經(jīng)消化的,我們可以繼續(xù)往下了。如果還沒有消化的,那下面的內(nèi)容,建議你先收藏,改天再繼續(xù)看。
在剛才的實驗中,我們看到通過電腦的Modbus Poll對PLC進(jìn)行讀寫操作了。
難道我們不想知道,他們是怎么起使用的么。
Modbus Poll 有一個功能,可以顯示發(fā)送和接收的報文,對于我們學(xué)習(xí)Modbus 協(xié)議非常有幫助。
我們找到Display->Communication選項,就可以看到發(fā)送和接收的報文了。
Tx:072-01 01 00 00 00 0A BC 0D
Rx:073-01 01 02 55 01 47 6C
我們復(fù)制一個報文。
對于剛?cè)腴T的,不管是使用者,還是開發(fā)者,建議還是找個支持Modbus 的設(shè)備以及工具,比如Modbus Poll,進(jìn)行通信測試,看一下Modbus的報文是什么樣的,看一下讀寫的情況。
因為遇到有些入門者,自己上來就拿個串口工具,給單片機或者PLC發(fā)送數(shù)據(jù),發(fā)現(xiàn)對方怎么都不回。除了串口參數(shù)要設(shè)置正常之外,要確保你的報文是正確的Modbus 協(xié)議才可以哦。
比如讀0X寄存器,讀10個,報文為01 01 00 00 00 0A BC 0D
前面的報文01 01 00 00 00 0A 估計很多人都會了。
然后用工具或者在線計算CRC,要么計算出來是錯誤的,要么計算正常了,卻拼成這樣的報文 01 01 00 00 00 0A 0D BC。CRC的字節(jié)反了。
怎么發(fā),PLC就是不回復(fù)。
這是很多新手,入門者常犯的錯誤。
所以不要小看一個簡單的Modbus, 要怎么把它用好,還不是件簡單的事。
有時候,你的設(shè)備和對方設(shè)備進(jìn)行通信,就是有問題,你都說不清楚是你設(shè)備的問題還是對方設(shè)備的問題,就容易產(chǎn)生不必要的誤會和工作了。
Modbus Poll還提供了不同功能碼的讀寫測試。
-
寄存器
+關(guān)注
關(guān)注
31文章
5273瀏覽量
119657 -
PLC控制
+關(guān)注
關(guān)注
9文章
251瀏覽量
27217 -
RTU
+關(guān)注
關(guān)注
0文章
398瀏覽量
28587 -
USB轉(zhuǎn)串口
+關(guān)注
關(guān)注
0文章
38瀏覽量
11624 -
ModBus通信
+關(guān)注
關(guān)注
0文章
32瀏覽量
2535
發(fā)布評論請先 登錄
相關(guān)推薦
評論