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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2731|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

MODBUS RTU詳解

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:215387 發(fā)表于 2017-6-28 11:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
Modbus 一個工業(yè)上常用的通訊協(xié)議、一種通訊約定。Modbus協(xié)議包括RTU、ASCII、TCP。其中MODBUS-RTU最常用,比較簡單,在單片機(jī)上很容易實現(xiàn)。雖然RTU比較簡單,但是看協(xié)議資料、手冊說得太專業(yè)了,起初很多內(nèi)容都很難理解。
     所謂的協(xié)議是什么?就是互相之間的約定嘛,如果不讓別人知道那就是暗號,F(xiàn)在就來定義一個新的最簡單協(xié)議。例如,

協(xié)議: “A” --“LED滅”
        “B” --“報警”
        “C” --“LED亮”
單片機(jī)接收到“A”控制一個LED滅,單片機(jī)接收到“B”控制報警,單片機(jī)接收到“A”控制一個LED亮。那么當(dāng)收到對應(yīng)的信息就執(zhí)行相應(yīng)的動作,這就是協(xié)議,很簡單吧。

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

這一串?dāng)?shù)據(jù)的意思是:把數(shù)據(jù) 0x0017(十進(jìn)制23) 寫入 1號從機(jī)地址 0x0001數(shù)據(jù)地址。

先弄明白下面的東西。

1、報文
    一個報文就是一幀數(shù)據(jù),一個數(shù)據(jù)幀就一個報文: 指的是一串完整的指令數(shù)據(jù),就像上面的一串?dāng)?shù)據(jù)。

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

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

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

在單片機(jī)中拿出一部分內(nèi)存(RAM)進(jìn)行兩個設(shè)備通訊,例如:


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

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

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

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


二、MODBUS報文模型

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




                              

這里兩個縮略詞以前不知道,但是現(xiàn)在要明白指的是什么,“ADU”“PDU”
ADU: 應(yīng)用數(shù)據(jù)單元
PDU: 協(xié)議數(shù)據(jù)單元

三、MODBUS數(shù)據(jù)模型




   


四、MODBUS事務(wù)處理
   下列狀態(tài)圖描述了在服務(wù)器側(cè)MODBUS事務(wù)處理的一般處理過程。
            



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



                                                          modbus協(xié)議在單片機(jī)上實現(xiàn)過程


MODBUS 任務(wù)處理函數(shù)




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

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

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

使用道具 舉報

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲高清在线 | 亚洲精品乱码久久久久久蜜桃91 | 亚洲自拍偷拍视频 | 91视视频在线观看入口直接观看 | 欧美精品一区二区三区在线播放 | 亚洲一区二区在线 | 午夜不卡一区二区 | 国产精品夜色一区二区三区 | 国内精品一区二区 | 午夜激情在线视频 | 久久久久久久久久影视 | 少妇久久久久 | 波多野结衣中文字幕一区二区三区 | 性一交一乱一伦视频免费观看 | 国产999精品久久久久久绿帽 | 日本成人一区二区 | 久久精品在线免费视频 | 国产精品久久久久久久久久久久久久 | 91精品国产欧美一区二区 | 久久亚洲精品久久国产一区二区 | 国产精品1区 | 中文字幕日本一区二区 | 国产日韩精品一区 | 色综合欧美| 91久久| 天天曰天天曰 | 精品综合久久 | 日韩精品在线视频免费观看 | 日韩欧美亚洲 | 国产精品一卡二卡三卡 | 欧美一区二区黄 | 日韩三级在线观看 | 成年免费大片黄在线观看一级 | 97在线播放 | 午夜精品一区二区三区在线播放 | 日韩在线视频免费观看 | 亚洲精品一区二区三区蜜桃久 | 成人精品国产 | 欧美一级片在线看 | 欧美国产一区二区 | 亚洲精品aⅴ |