博客專欄

        EEPW首頁 > 博客 > 工程監測無線中繼采集儀的參數讀寫MODBUS協議

        工程監測無線中繼采集儀的參數讀寫MODBUS協議

        發布人:河北穩控科技 時間:2023-05-22 來源:工程師 發布文章

        工程監測無線中繼采集儀的參數讀寫MODBUS協議

        511.png

        無線中繼采集儀支持基于地址的 MODBUS 協議、自定義的 AAB/B 協議以及字符串指令集協議,使用這些通訊協議可對寄存器(參數)進行訪問。


        MODBUS 協議

        無線中繼采集儀支持 MODBUS 的 03、 04、 06 指令碼。(1) 03(0x03) /03(0x04) 指令碼: 讀取多個連續的寄存器數據,指令格式如下

        MODBUS 協議.png


        例:讀取地址為 129 的無線中繼采集儀寄存器值,寄存器開始地址為 0,連續讀取 10 個寄存器主機發送指令: 0x81 0x03 0x00 0x00 0x00 0x0A 0xDA 0x0D

        從機返回應答: 81 03 14 00 81 00 01 00 02 00 01 00 01 00 0A 00 0A 00 01 09 60 00 07 A1 EF(下劃線為讀取到的 10 個寄存器值)讀取多個連續寄存器時, 單次讀取不要超過 32 個寄存器, 不要試圖讀取不存在的寄存器。


        (2) 06(0x06) 指令碼: 修改單個寄存器的值, 指令格式如下

        MODBUS 協議2.png


        例:將地址為 129 的無線中繼采集儀中的寄存器 8 的值修改為 100 主機發送指令: 0x81 0x06 0x00 0x08 0x09 0x60 0x11 0xB0 從機返回應答: 0x81 0x06 0x00 0x08 0x09 0x60 0x11 0xB0

        (3)校驗碼算法

        CRC16-MODBUS 算法:

        unsigned int crc16(unsigned char *dat, unsigned int len)

        {

        unsigned int crc=0xffff;

        unsigned char i;

        while(len!=0)

        {

        crc^=*dat;

        for(i=0;i<8;i++)

        {

        if((crc&0x0001)==0)

        crc=crc>>1;

        else

        {

        crc=crc>>1;

        crc^=0xa001;

        }

        }

        len-=1;

        dat++;

        }

        return crc;

        }





        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。




        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 广水市| 湘阴县| 囊谦县| 桐梓县| 安西县| 栾川县| 宝山区| 新干县| 饶河县| 灵璧县| 民权县| 望城县| 安岳县| 尼玛县| 大悟县| 张家口市| 洛南县| 六安市| 营口市| 邳州市| 旌德县| 井陉县| 晋宁县| 汤阴县| 龙游县| 宁晋县| 临颍县| 长汀县| 吴旗县| 新民市| 仁寿县| 定州市| 太湖县| 玉树县| 辽中县| 白城市| 顺昌县| 高安市| 马鞍山市| 南澳县| 随州市|