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