Modbus 通訊協(xié)議是什么?
Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個品牌)在1979年發(fā)明的,是全球第一個真正用于工業(yè)現(xiàn)場的總線協(xié)議。為更好地普及和推動Modbus在基于以太網上的分布式應用,目前施耐德公司已將Modbus協(xié)議的所有權移交給IDA(Interface for Distributed Automation,分布式自動化接口)組織,并成立了Modbus-IDA組織,為Modbus今后的發(fā)展奠定了基礎。
MODBUS是一種國際標準的通訊協(xié)議,用于不同廠商之間的設備交換數(shù)據(一般是工業(yè)用途);
Modbus 協(xié)議是應用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經由網絡(例如以太網)和其它設備之間可以通信。它已經成為一通用工業(yè)標準。有了它,不同廠商生產的控制設備可以連成工業(yè)網絡,進行集中監(jiān)控。此協(xié)議定義了一個控制器能認識使用的消息結構,而不管它們是經過何種網絡進行通信的。
它描述了一控制器請求訪問其它設備的過程,如何回應來自其它設備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內容的公共格式。Modbus是一種單主站的主/從通信模式。一條Modbus網絡上同時只能有一臺主站,從站可以有若干個。
Modbus具有以下幾個特點:
1.標準、開放,用戶可以免費、放心地使用Modbus協(xié)議,不需要交納許可證費,也不會侵犯知識產權。目前,支持Modbus的廠家超過400家,支持Modbus的產品超過600種。
2.Modbus可以支持多種電氣接口,如RS-232、RS-485等,還可以在各種介質上傳送,如雙絞線、光纖、無線等。
3.Modbus的幀格式簡單、緊湊,通俗易懂。用戶使用容易,廠商開發(fā)簡單。
一般情況下,兩臺設備通過MODBUS協(xié)議傳輸數(shù)據:最早是用RS232作為硬件接口,(也就是普通電腦上的串行通訊口(串口));也有用RS422的,也有常用的RS485,這種接口傳輸距離遠,在一般工業(yè)現(xiàn)場用的比較多。
MODBUS協(xié)議著名的又分MODBUS RTU,MODBUS ASCII和后來發(fā)展的MODBUS TCP三種模式。
Modbus RTU和Modbus TCP的區(qū)別
Modbus RTU和Modbus TCP是Modbus通信中比較好用的兩個協(xié)議,兩者協(xié)議很相似。
在工業(yè)現(xiàn)場一般都是采用Modbus RTU協(xié)議,一般而言,大家說的基于串口通信的Modbus通信協(xié)議都是指Modbus RTU通信協(xié)議。與Modbus RTU協(xié)議相比較,Modbus TCP協(xié)議則是在RTU協(xié)議上加一個MBAP報文頭,并且由于TCP是基于可靠連接的服務,RTU協(xié)議中的CRC校驗碼就不再需要,所以在Modbus TCP協(xié)議中是沒有CRC校驗碼的,所以就常用一句比較通俗的話來說:Modbus TCP協(xié)議就是Modbus RTU協(xié)議在前面加上五個0以及一個6,然后去掉兩個CRC校驗碼字節(jié)就OK。雖然這句話說得不是特別準確,但是也基本上把RTU與TCP之間的區(qū)別說得比較清楚了。
RTU協(xié)議中的指令由地址碼(一個字節(jié)),功能碼(一個字節(jié)),起始地址(兩個字節(jié)),數(shù)據(N個字節(jié)),校驗碼(兩個字節(jié))五個部分組成。
數(shù)據由數(shù)據長度(兩個字節(jié),表示的是寄存器個數(shù),假定為M)和數(shù)據正文(M乘以2個字節(jié))組成。
發(fā):01 03 01 8E 00 04 25 DE //讀(0x03),從寄存器地址01 8E 開始讀,讀4個寄存器00 04
回:01 03 08 00 01 00 01 00 01 00 01 28 D7 // 08表示數(shù)據長度 ,00 01 00 01 00 01 00 01讀到的數(shù)據
發(fā):00 10 00 20 00 01 02 00 00 AC A0 // 寫(0x10),從寄存器地址 00 20開始寫,寫一個寄存器 00 01,寫入值 00 00
回:00 10 00 20 00 01 01 D2
Modbus TCP協(xié)議是在RTU協(xié)議前面添加MBAP報文頭,由于TCP是基于可靠連接的服務,RTU協(xié)議中的CRC校驗碼就不再需要,所以在Modbus TCP協(xié)議中是沒有CRC校驗碼。
|
可以理解為報文的序列號,一般每次通信之后就要加1以區(qū)別不同的通信數(shù)據報文
|
|
|
|
表示接下來的數(shù)據長度,單位為字節(jié)
|
|
|
發(fā):00 00 00 00 00 06 00 03 00 20 00 01
回:00 00 00 00 00 05 00 03 02 00 00
發(fā):00 00 00 00 00 06 00 04 00 30 00 01
回:00 00 00 00 00 05 00 04 02 00 08
發(fā):00 00 00 00 00 09 00 10 00 20 00 01 02 00 00
回:00 00 00 00 00 06 00 10 00 20 00 01
免責聲明:本網站部分文章、圖片等信息來源于網絡,版權歸原作者平臺所有,僅用于學術分享,如不慎侵犯了你的權益,請聯(lián)系我們,我們將做刪除處理!