日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MODBUS通讯协议详解(基于485)

發布時間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MODBUS通讯协议详解(基于485) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考:靈育科技Modbus課程總結
作者:Naunyang
時間:2020-11-23 13:51:58
網址:https://blog.csdn.net/Naunyang/article/details/108740456?spm=1001.2014.3001.5502

參考:MODBUS用于單片機通訊
作者:hillchina
發布時間:2017-02-22 08:25:11
網址:https://www.bilibili.com/video/BV1Bx411y7N5

參考:Modbus協議解析(Modbus-RTU、Modbus-TCP、Modbus-PLUS)
作者:panda@Code 發布時間:2019-07-01 23:44:03
網址:https://blog.csdn.net/panda5_csdn/article/details/94332166?spm=1001.2014.3001.5502

完整視頻及資料下載鏈接: https://pan.baidu.com/s/1AZQKnipbGF63UW2a5TdFZA
提取碼: wzy7

目錄

  • 什么是Modbus
  • 通訊的硬件層協議機制,主從模式的建立
  • 硬件層半雙工通訊方式的實現
  • 基于485通訊(硬件層協議)的MODBUS協議(軟件層協議),確定主機尋地址幀格式
    • RTU(2進制方式)的機制及數據傳輸實現方式
    • ASC(字符方式)的機制及數據傳輸實現方式
  • MODBUS從設備回應數據包格式
  • MODBUS從機協議實現
  • STM32編程實現一個MODBUS從機協議
    • MODBUS通訊的硬件層及底層通訊準備

什么是Modbus

顧名思義,他是一個bus,即總線協議,如果你接觸到這種協議,相信你所處的行業很可能是工業方面或者你的產品用于工業。

Modbus是一種串行通信協議,是Modicon公司(現在的施耐德電氣 Schneider Electric)于1979年為使用可編程邏輯控制器(PLC)通信而發表。Modbus已經成為工業領域通信協議的業界標準(De facto),并且現在是工業電子設備之間常用的連接方式。

通訊的硬件層協議機制,主從模式的建立

協議分類:硬件層協議、軟件層協議

硬件層:RS232、RS485 、CAN等 。主要解決硬件傳輸問題,解決如何傳輸0與1的問題(物理上以什么樣的電平、多少伏電壓傳輸,儀表可以測到這個電壓,還有以雙絞線還是什么線傳輸)。交通道路

軟件層協議:傳輸的目的,為什么要傳,傳數據要干啥。Modbus、TCP/IP……交通規則

  • 單工模式:只能從一方發送數據到另一方,而不能反過來發。

  • 半雙工模式:可以A發送給B,也可以B發送給A,但是不能同時發

  • 主從模式:
    (1)在這樣一個系統中,只能有一個主機,其他的都是從機。
    (2)系統中的從機都不能主動發信息給主機。

硬件層半雙工通訊方式的實現

主從模式:
(3)系統上電之后,默認狀態,主機,從機都是在監聽狀態;
(4)主機與從機之間的通信,只能由主機發起;

主機要建立起一次通信,要滿足以下要求:
(1)主機要將自己置為發送狀態;
(2)主機要按照預先約定好的格式(比如MODBUS協議格式)發送尋址數據幀,發完之后立刻把自己轉回接收狀態;
(3)尋址完成之后,目標從機要返回給我消息,才能算這次通信成功;

基于485通訊(硬件層協議)的MODBUS協議(軟件層協議),確定主機尋地址幀格式

1、MODBUS是主從模式:
整個系統只能有一個主機,每個從機都有唯一的地址(0-247),0號地址是廣播地址,發送給所有的從機。0號地址尋址,所有從機不回應(相互會沖突嘛);

2、MODBUS主機尋址幀格式:

  • (1)RTU方式:也叫16進制方式,或者2進制方式
    比如:0x03: 0000 0011
  • (2)ASC方式:字符方式(方便調試)
    比如:0x03–> 轉換成字符’0’與字符’3’再發送出去;那么就會發
    字符’0’(ASCII碼是0x30)的2進制0011 0000 + 字符’3’(ASCII碼0x33)的2進制 0011 0011,最終發送的就是:0011 0000 0011 0011

ASC方式最大的優勢就是方便調試(可打印),整個線路上傳輸的都是ASCII碼,都是可打印字符,可以清楚的知道這個線路上傳輸的是什么,因為ASCII碼中可打印字符是32-126,其他顯示亂碼。

RTU(2進制方式)的機制及數據傳輸實現方式

ASC方式數據幀格式:

從機地址 + 功能碼 + 數據 + 16位CRC校驗

不同的功能碼對應的緊接于功能碼之后的數據是不同的。
比如:03功能碼,是要讀取從機的數據。那么從機要知道從他的存儲器的哪里(哪個地址)開始讀,讀到哪里結束,讀幾個地址長度。

還有一個問題就是:從機怎么知道主機發送完了?
從機以接收數據停止之后開始計時,達到3.5個字節以上的時間就認為主機的尋址幀完成,并開始處理。

3.5個字節轉化成時間計算:

ASC(字符方式)的機制及數據傳輸實現方式

ASC方式數據幀格式:

起始位‘ :’ + 地址(2個字節) + 功能碼(2個字節)+ 數據(1、2…n)+校驗位(LRC校驗)

這些地址、還有功能碼、還有數據為什么是兩個字節呢
因為是ASC方式,字符的方式。比如:0x03,要發送就要變成:字符’0’ 與’3’
字符’0’ (0x30)的二進制0011 0000是與’3’(0x33)的二進制是:0011 0011就成2個字節了。
這種方式非常冗長,工作少用。

校驗位是從地址開始到數據位的最后結束。

校驗位的計算:把所有的值加起來的和對256取余,然后取反加1 ,就是校驗位。

MODBUS從設備回應數據包格式

(1)回應的數據包與主機查詢的數據包格式一致;

(2)正常回應是,功能碼與主機發送時的功能碼一致(1-127);

(3)異常的回應時,功能碼要在收到的功能碼的基礎上加128

MODBUS從機協議實現

(1)硬件上具備串口(485接口)

(2)硬件上需要一個精確的毫秒級別的定時器

STM32編程實現一個MODBUS從機協議

MODBUS通訊的硬件層及底層通訊準備

總結

以上是生活随笔為你收集整理的MODBUS通讯协议详解(基于485)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。