<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發網

      電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> PLC基礎及應用 >> 正文

      ModBus通信協議

      作者:佚名    文章來源:本站原創    點擊數:    更新時間:2022-04-05

      ModBus通信協議
      1 1. 主從模式

      RS-485上的軟件層協議ModBus主要依賴于主從模式。主從模式是指在半雙工通訊方式上,2個或者2個以上的設備組成的通訊系統中: 
      ModBus通信協議 主從模式 
      (1) 至少且只有一個主機,其他的都是從機
      (2) 不管任何時候,從機都不能主動向主機發送數據

      (3) 主機具有訪問從機的權限,從機不可以主動訪問從機,任何一次數據交換,都要由主機發起
      (4)不管是主機還是從機,系統一旦上電,都要把自己置于接收狀態(或者稱為監聽狀態)

      主從機的數據交互,需要:
      a. 主機將自己轉為發送狀態
      b. 主機按照預先約定的格式發出尋址數據幀。
      所謂的約定,可是主機開發者和從機開發者約定好的規約,好,例如主機要通過從機控制接在從機的電機,主機要啟動電機就往從機發0x1,停止電機就往從機發0x2。這就是一種預
      先約定好的格式,但是這樣做,互換性、兼容性、通用性差,例如其他公司是約定發送0x03讓電機轉動,發0x04讓電機停止。導致不同廠家的主機、從機不能相互通訊。用戶需要的,就像網絡操作,只要接入有網的網線那么計算機都能上網。
      所以說,我們需要一種大家都共同遵循的規則(可以是ModBus,也可以是TCP/IP等上層協議),這種大家認可,共同遵循的軟件層協議。軟件層協議主要是解決如何解析傳輸的數據,即傳輸的目的或者更加可靠的傳輸數據。
      半雙工通訊中,都是主機尋找從機,主機的目的無非有: 主機要發數據給從機,或者主機要從從機中獲取數據。
      c. 主機恢復自身的接收狀態
      主機等待自身所尋址的從機作回應,也就是說從機接收到主機的尋址命令、數據后一定要回應主機,不然主機會認為從機通訊異常;貞獢祿彩且凑誐odBus協議規約(其實不局限ModBus,像TCP/IP也需要回應是吧!~)
      2. ModBus通訊協議

      通俗點來講,ModBus規約了起停電機,主機要分別發送什么命令給從機。ModBus規定主從機之間數據的交互,需要遵循什么樣的格式,如何保證數據在傳輸過程中不發生沖突。只要都遵循這個協議,那么不同廠家的主從機就可以共用了。
      ModBus一般是工作在一主多從的場景,還是這個圖: 
       
      主機和從機之間的連線不一定是非要485來作為載體,也可以是IIC,SPI。因為ModBus是軟件層的協議,它既可以規約485硬件接線方式,也可以規約其他硬件接線方式。很多資料會寫”基于RS-485的ModBus通訊協議”,意思是底層的0、1數據是通過RS-485方式去傳輸的,0、1的意義則是通過ModBus去解析的。強調,硬件協議可以確保數據得以傳輸出去,軟件協議保障數據的有序傳輸,數據不會發生沖突。
      ModBus規定:
      (1) 主從模式
      有的協議規定是多主模式,意思是系統中的設備都是主機,它們并沒有主從之分,任何時刻,誰想發送數據都可以往總線上發送,例如網絡通信、CAN總線通訊,自然它們自有一套防止數據沖突機制,485由于不具備沖突檢測的硬件機制,所以它必須遵循主從模式。主從模式的原則是,整個系統只能有一個主機,每一個從機都必須有一個唯一的地址
      (2) 從機的地址是作為每個從機的唯一標識。地址取值是0-247,0號地址表示廣播地址,廣播地址由主機保留,當主機向0號地址發數據包的時候,每一個從機設備都會收到數據包。也就是說,當主機發出的尋址幀的地址是0的時候,所有從機都要執行主機要求的動作。按理說,從機收到主機的尋址幀之后,是要做出應答包的,但是現在是0號地址,也就是要回的話每臺從機都要回,那么肯定會造成RS-485通訊線上的數據混亂,因此所有從機在主機發0號地址時候不予返回數據包應答。
      從機的地址有兩個作用
      a. 主機向目標從機發尋址幀時其地址部分為從機地址,這樣主機才可以檢索到目標從機
      b. 對于主機的目標從機,當收到主機發來的非0地址時,要做出數據包應答,假設從機要返回數據包給主機,自然是要把數據包放到RS-485總線上,因為每臺從機,其物理連線是在一起的,所以這就會造成其他從機認為數據是要發送給它的現象,所以在從機回復主機的數據包中,加上從機自身的地址,那么其他從機讀取到這個地址值跟自己的地址不相同,就不會去響應了。
      (3) ModBus數據包的格式
      主機要尋找某臺從機,需要發出相應格式的信息,這就需要談到ModBus的兩種傳輸方式:
      a. RTU傳輸方式
      RTU實際上也成為二進制方式。假設主機要發送0x23,那就是發送0010 0011,按照485通訊協議,先發高位,即1100 0100。前后分別加上起始、停止位: “起始位 1100 0100 停止位”共10位數據
      b. ASC傳輸方式
      同樣要發送0x23,它是十六進制數,會將其拆成十位的’2’和個位的’3’,將它們的asc碼依次發出去,’0’的asc碼是0x32,’3’的asc是0x33,轉為二進制為0011 0010和0011 0011,同樣要加上停止、起始位,共20位數據
      很明顯,asc傳輸方式比較低,但是由于它傳輸的是asc碼,所以可以利用一些串口終端將其數值打印出來。

      特別提醒,RS-485硬件協議決定,對于每一個字節數據的傳輸是先發高位,再發地位,所以假設數組u8型數組revArr[2]存放著接收到的數據,那么接收端解析數據應該是u16型data = revArr[0] * 256 + revArr[1]。

      Tags:ModBus,通信協議  
      責任編輯:admin
      請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      推薦文章
      最新推薦
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 精品久久久久久亚洲综合网| 色综合视频一区二区三区| 一本色道久久综合网| 久久亚洲欧洲国产综合| 亚洲狠狠婷婷综合久久久久 | 久久婷婷香蕉热狠狠综合| 亚洲综合色婷婷七月丁香| 久久99国产综合精品免费| 五月综合激情婷婷六月色窝 | 狠狠色综合久久婷婷色天使| 亚洲国产综合无码一区二区二三区 | 天天综合网网欲色| 久久婷婷五月综合97色一本一本| 国产精品成人免费综合| 亚洲综合图片小说区热久久| 国产成人AV综合久久| 成人综合久久综合| 色综合天天综合网国产成人| 天天躁夜夜躁狂狂躁综合| 国产亚洲综合色就色| 日韩亚洲人成在线综合| 一本色道久久88—综合亚洲精品 | 国产成人综合亚洲一区| 亚洲综合小说另类图片动图| 一本一本久久A久久综合精品| 亚洲综合色视频在线观看| 天天爱天天做色综合| 亚洲欧美熟妇综合久久久久| 亚洲精品综合在线影院| 综合在线免费视频| 天天综合色天天综合| 一本大道久久a久久综合| 国产精品综合一区二区三区| 思思91精品国产综合在线 | 天天综合亚洲色在线精品| 亚洲欧美综合精品成人导航| AV狠狠色丁香婷婷综合久久 | 天啪天天久久天天综合啪| 伊人伊成久久人综合网777| 九九综合九九综合| 亚洲综合色婷婷七月丁香|