[FreeModbus源碼分析] 1.協議簡介

來源:互聯網
上載者:User

MODBUS協議分為兩層,一層是資料連結層,一層是應用程式層。在官網上,分別有兩篇文檔描述了MODBUS的資料連結層和應用程式層。當然,資料連結層有多種實現方式,官網給的是基於串列的方式。兩篇文檔分別為 MODBUS over Serial Line Specification and Implementation Guide 和 MODBUS Application Protocol Specification。兩篇specifiaction 加起來100頁左右,很快就能看完。所以那些想學協議的同學,最好是從官網下載正規的規格書。

FreeModbus協議是一個基於MODBUS協議的開源實現,實現了從機部分的功能。代碼不長,移植也十分方便。

資料連結層

在此層上,MODBUS是主從結構,一個匯流排上只能有一個主機,允許有247個從機,所有的通訊都是由主機發起的。主機有兩種發送模式,一種是單向,另一種是廣播。MODBUS的地址空間一共有256個,第0個用於廣播,248-255保留,剩餘247個分配給從機,而主機是沒有地址的。

MODBUS的資料單元(protocol data unit, PDU)由功能碼和資料群組成,而在物理層上的一幀則是在PDU前加上地址,在PDU後加上CRC校正組成。

有兩種串列傳輸模式。一種是RTU(remote terminal unit),另一種是ASCII。RTU應用的更多一些,在 specification 中,明確規定,RTU是必須實現的,而ASCII只是可選的。
RTU的優勢在於資訊比ASCII更緊湊,也就是傳輸的更快。RTU中每一個位元組是11 bits,由1個起始位,8個資料位元,1個同位位元,一個停止位。預設是偶校正位。

在MODBUS中,是用時間間隔來區分每一幀的,由此可以聯想到,單片機實現的時候一定要用定時器。每一幀的間隔要大於3.5倍的字元,每兩個位元組之間不能大於1.5個字元,否則會認為出錯。
在傳輸速率小於19200的時候,這兩個規則必須實現。當大於19200的時候,t3.5取為1750us,t1.5取為750us。

在每一幀的最後是CRC16校正。校正的c實現,在 specification 上已經給出。起始位,校正位,結束位不參與CRC校正。

從機的狀態轉換圖如下

這可以用狀態機器實現。

應用程式層

應用程式層是一種請求和響應的模式,功能是由功能碼指出。值得一提的是MODBUS還可以通過TCP/IP協議的502連接埠來實現通訊。

PLC中資料分為四種,線圈,數字量輸入,輸入寄存器和保持寄存器。前兩種是可以位訪問,後兩種是字訪問。對於每一種資料,其資料可以分別定址,從0-65535。

特別指出,這裡地址是以MODBUS而言的。與裝置中的寄存器地址有別。
寄存器資訊地址(PLC地址)
寄存器資訊地址指的是存放於控制器中的地址,這些控制器可以使PLC,也可以是觸控螢幕,或是文本顯示器。例如40001,30002等,這些地址一般使用10進位描述。
寄存器定址地址(協議地址)
寄存器定址地址指的是通訊時使用的寄存器地址,例如資訊地址40001對應定址地址0x0000,40002對應定址地址0x0001,寄存器定址地址一般使用16進位描述。再如,資訊寄存器40003對應定址地址0002,資訊寄存器30003對應定址地址0002,雖然兩個資訊寄存器通訊時使用相同的地址,但是需要使用不同的命令才可以訪問,所以訪問時不存在衝突。

功能碼

一共有127個功能碼,其中部分是公用的,其他可以使用者自己定義。

現在舉一例
功能1 讀寄存器值
這個功能可以讀1-2000個連續的寄存器值。讀時需要制定起始寄存器地址,寄存器數量。如果請求的格式正確,則返回寄存器數量,和每一位寄存器值,對於不是8的倍數的寄存器數量請求,則添0補全。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.