久久国产精品免费一区二区三区-超级碰碰色偷偷免费视频-精品国产AV一区二区三区-久久国产欧美日韩精品图片

      <tr id="8dyvy"></tr>
      1. <pre id="8dyvy"></pre>
        <table id="8dyvy"></table>
      2. 網站導航

        技術文章

        當前位置:首頁>技術文章
        RS485 Modbus協議解析
        日期:2021-09-22 11:35:05 點擊量:35 作者:管理員

        在工作中,當我們采集采用RS485主從式半雙工通訊的傳感器時,會接觸到Modbus協議。有時我們手上沒有實物,只能通過協議文檔手冊,編寫完代碼后,自己用RS485來模擬發送驗證。下面就說說如何快速組裝數值發送驗證,以及解析數值。


        標準Modbus協議結構如下:


        主機發送讀寄存器協議數據結構形式為:


        設備地址           1字節


        讀寄存器命令   1字節


        寄存器地址       2字節


        讀寄存器個數   2字節


        CRC校驗(低字節在前,高字節在后)   2字節


         


        例(主機發送數據到傳感器):01 03 00 12 00 02 64 0E


        解析:


        01    表示設備地址


        03    表示讀寄存器指令


        00 12 表示寄存器的起始地址


        00 02 表示讀取兩個寄存器


        64 0E 表示CRC校驗碼


         


        從機返回寄存器是數據結構形式為:


        設備地址   1字節


        讀寄存器命令   1字節


        讀取字節個數   N字節


        XX *N   N個所讀取字節數據


        CRC校驗(低字節在前,高字節在后)


         


        例(傳感器發送回給主機):01 03 04 41 E6 28 F6 91 BE


        解析:


        01          表示設備地址


        03          表示讀寄存器指令


        04          表示有四個16進制數據


        41 E6 28 F6  表示傳感器的有效數據


        91 BE       表示CRC校驗碼


         


        1.若廠家對傳感器的數據存儲采用標準單精度浮點數方式,則對于一串采集回來的16進制數據,要轉成浮點數是比較麻煩的,可以看下先用科學計數法方式存儲計算:


        方式1:如解析上述的返回值41 E6 28 F6


        計算 41 E6 28 F6 (采用科學計數法方式存儲計算)


        轉為二進制:01000001111001100010100011110110?


        紅色’0’:表示符號位,1為負,0為正


        10000011:表示指數位,轉為十進制為2^0+2^1+2^7=131 131-127=4 說明指數位為4


        則表示為((1.11001100010100011110110)*2^4)=11100. 1100010100011110110=


        2^2+2^3+2^4. 2^-1+2^-2+…..=28.77


        即41 E6 28 F6 轉為十進制為28.77


         


        方式2:采用工具快速轉換,如下圖所示

        1.png

        有了該工具,想要自己模擬發送任意數值的modbus協議數據,也是非常方便的。

        比如主機發送了01 03 00 12 00 02 64 0E 采集命令,想要模擬傳感器數值為12.34

        通過工具轉換如下:

        2.png

        則可組裝modbus協議數據為01 03 04 41 45 70 A4 , 對于后面兩位crc校驗可以采用如下工具,可以得到:

        1.png

        2.png

        可知組裝的完整mobdus協議數據為01 03 04 41 45 70 A4 DB A1

        2.若廠家對傳感器的數據處理是采用16進制轉整數方式處理,就像如下圖所示:

        這種形式的16進制傳感器數據,可以采用電腦的計算器快速計算得到。

        如計算00 9B

        1.png

        16進制模擬負值,可以采用計算器

        如模擬-50,計算器輸入如下0-50

        1.png

        再點擊計算器上的xor

        1.png

        則16進制FF CE 則表示負數-50


        ————————————————

        版權聲明:本文轉載為CSDN博主「Psyduck_ing」的原創文章,遵循CC 4.0 BY-SA版權協議。

        原文鏈接:https://blog.csdn.net/Psyduck_ing/article/details/101309744


        上一篇:RS485通訊和Modbus通訊協議

        下一篇:沒有了!

        如您有任何問題,請隨時與我們聯系!

        聯系我們

        Copyright (C) 2021 南京智慧太陽能科技發展有限公司 All Rights Reserved 工信部備案:蘇ICP備2021019702號-1

        地址:江蘇省南京市溧水區晶橋鎮 電話:13809024005

        在線客服 聯系方式 二維碼

        服務熱線

        13809024005

        掃一掃,關注我們

        久久国产精品免费一区二区三区-超级碰碰色偷偷免费视频-精品国产AV一区二区三区-久久国产欧美日韩精品图片