久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2806|回復: 0
打印 上一主題 下一主題
收起左側

MODBUS RTU詳解

[復制鏈接]
跳轉到指定樓層
樓主
Modbus 一個工業上常用的通訊協議、一種通訊約定。Modbus協議包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比較簡單,在單片機上很容易實現。雖然RTU比較簡單,但是看協議資料、手冊說得太專業了,起初很多內容都很難理解。
     所謂的協議是什么?就是互相之間的約定嘛,如果不讓別人知道那就是暗號。現在就來定義一個新的最簡單協議。例如,

協議: “A” --“LED滅”
        “B” --“報警”
        “C” --“LED亮”
單片機接收到“A”控制一個LED滅,單片機接收到“B”控制報警,單片機接收到“A”控制一個LED亮。那么當收到對應的信息就執行相應的動作,這就是協議,很簡單吧。

   先來簡單分析一條MODBUS-RTU報文,例如:01  06  00 01  00 17  98 04
     01             06            00 01           00 17          98 04
   從機地址        功能號          數據地址          數據         CRC校驗

這一串數據的意思是:把數據 0x0017(十進制23) 寫入 1號從機地址 0x0001數據地址。

先弄明白下面的東西。

1、報文
    一個報文就是一幀數據,一個數據幀就一個報文: 指的是一串完整的指令數據,就像上面的一串數據。

2、CRC校驗
意義:例如上面的  98 04  是它前面的數據(01 06 00 01 00 17)通過一算法(見附錄2,很簡單的)計算出來的結果,其實就像是計算累加和那樣。(累加和:就是010600010017加起來的值,然后它的算法就是加法)。
作用:在數據傳輸過程中可能數據會發生錯誤,CRC檢驗檢測接收的數據是否正確。比如主機發出01 06 00 01 00 17 98 04,那么從機接收到后要根據01 06 00 01 00 17 再計算CRC校驗值,從機判斷自己計算出來的CRC校驗是否與接收的CRC校驗(98 04主機計算的)相等,如果不相等那么說明數據傳輸有錯誤這些數據不能要。

3、功能號
   意義:modbus 定義。見附錄1。
   作用:指示具體的操作。

MODBUS-RTU
一、一個報文分析
先聲明下我們的目的,我們是要兩個設備通訊,用的是MODBUS協議。上面簡單介紹了:“報文”“CRC校驗”“功能號”。

在單片機中拿出一部分內存(RAM)進行兩個設備通訊,例如:


數組后面的注釋,說明
OX[20]   代表是輸出線圈,用功能碼 0x01,0x05,0x0F 訪問, 開頭地址是 0 (這個后續說明)
IX[20]    代表是輸入線圈,用功能碼 0x02 訪問,             開頭地址是 1 (這個后續說明)
另外兩個一樣的道理。
注意:所謂的“線圈”“寄存器”就是“位變量”“16位變量”,不要被迷惑。之所以稱“線圈”我覺得應該是對于應用的設備,MODBUS協議是專門針對485總線設備(例PLC)開發的。

1、主機對從機寫數據操作
如果單片機接收到一個報文那么就對報文進行解析執行相應的處理,如上面報文:
     01             06            00 01           00 17          98 04
   從機地址        功能號          數據地址          數據         CRC校驗

假如本機地址是 1 ,那么單片機接收到這串數據根據數據計算CRC校驗判斷數據是否正確,如果判斷數據無誤,則結果是:
             HoldDataReg[1]  =  0x0017;
MODBUS主機就完成了一次對從機數據的寫操作,實現了通訊。

2、主機對從機讀數據操作
主機進行讀HoldDataReg[1] 操作,則報文是:
     01             03            00 01           00 01          D5 CA
  從機地址        功能號          數據地址      讀取數據個數       CRC校驗
那么單片機接收到這串數據根據數據計算CRC校驗判斷數據是否正確,如果判斷數據無誤,則結果是:返回信息給主機,返回的信息也是有格式的:
返回內容:  
     01         03            02             0017          F8 4A
   從機地址   功能號     數據字節個數    兩個字節數據    CRC校驗
MODBUS主機就完成了一次對從機數據的讀操作,實現了通訊。


二、MODBUS報文模型

以上了解到了MODBUS的一幀報文是如何通訊的,其實每個報文的格式都基本一樣的。




                              

這里兩個縮略詞以前不知道,但是現在要明白指的是什么,“ADU”“PDU”
ADU: 應用數據單元
PDU: 協議數據單元

三、MODBUS數據模型




   


四、MODBUS事務處理
   下列狀態圖描述了在服務器側MODBUS事務處理的一般處理過程。
            



五、MODBUS請求與響應
   看MODBUS協議手冊,中文第 10 頁開始,英文第 24 頁開始。手冊非常詳細舉例說明了MODBUS協議各個功能號的請求與響應。



                                                          modbus協議在單片機上實現過程


MODBUS 任務處理函數




函數中,RcvBuf 為串口接收緩沖區,如果接收了一個報文則,RcvBuf[0] 為從機地址,RcvBuf[0] 為MODBUS功能號。根據功能號做出響應,而具體的操作根據功能號在各自的函數中執行,相當于解析接收到的數據。

附錄1:MODBUS-RTU功能碼
  最常用功能碼:
  下面“線圈”“寄存器”其實分別直的就是“位變量”“16位變量”
         01 (0x01)        讀線圈
         02 (0x02)        讀離散量輸入
         03 (0x03)        讀保持寄存器
         04(0x04)         讀輸入寄存器
         05 (0x05)        寫單個線圈
         06 (0x06)        寫單個寄存器
         15 (0x0F)        寫多個線圈
         16 (0x10)        寫多個寄存器

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲福利电影网 | 国产精品永久免费视频 | 精品久久久久一区二区国产 | 欧美黑人一区二区三区 | 亚洲视频免费在线观看 | 综合视频在线 | 毛片a级 | 成年视频在线观看福利资源 | 中文字幕av在线 | 成人欧美在线 | 国产美女黄色 | 欧美成人免费在线视频 | 日韩精品视频一区二区三区 | 色综合区 | 欧美亚洲国产日韩 | 精品美女在线观看 | 日韩欧美一二三区 | 国产精品福利在线 | 亚洲第一天堂无码专区 | 美女三区| 麻豆changesxxx国产 | 一区精品国产欧美在线 | 亚洲综合在线视频 | 国产亚洲一区二区三区在线观看 | 午夜天堂精品久久久久 | 欧美一级视频在线观看 | 中文字幕亚洲视频 | 视频1区| 狠狠色狠狠色综合系列 | 夜夜操天天操 | 亚洲三区在线 | 国产成人精品a视频一区www | 亚洲精品视频三区 | 国产成人综合一区二区三区 | 欧美成人高清 | 日韩精品一区二区三区在线观看 | japanhdxxxx裸体 | 天天综合久久 | 一区二区三区精品在线视频 | 欧美1页| 国产精品久久久久久久久久久久 |