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