博客專欄

        EEPW首頁(yè) > 博客 > 振弦采集模塊UART 通訊協(xié)議

        振弦采集模塊UART 通訊協(xié)議

        發(fā)布人:河北穩(wěn)控科技 時(shí)間:2022-11-15 來(lái)源:工程師 發(fā)布文章

        振弦采集模塊UART 通訊協(xié)議


        UART 接口支持標(biāo)準(zhǔn)的工業(yè) MODBUS 通訊協(xié)議( 03、 04、 06、 16 指令碼)和自定義的簡(jiǎn)單 AABB協(xié)議以及$字符串指令集。 前兩種協(xié)議均支持基于模塊地址和總線連接的一主多從應(yīng)用結(jié)構(gòu), 在總線中, VMXXX 模塊始終作為從機(jī)使用( 被動(dòng)等待指令, 不主動(dòng)上傳數(shù)據(jù),但“ 自動(dòng)上傳數(shù)據(jù)”和“ 軟件握手” 除外, 詳見(jiàn)后續(xù)對(duì)應(yīng)章節(jié)說(shuō)明)。

        VM501-11.jpg

        建議使用專用的 VMTool 工具進(jìn)行寄存器指令的生成和測(cè)試,關(guān)于 VMTool 的基本用法,請(qǐng)?jiān)斠?jiàn)“ 第四章:參數(shù)配置工具的使用” 。根據(jù)下述通訊協(xié)議規(guī)則,讀寫寄存器。在使用 MODBUS 或 AABB 通訊協(xié)議時(shí), 請(qǐng)確認(rèn)模塊的軟件握手參數(shù)處于關(guān)閉狀態(tài)(默認(rèn))。


        (一) MODBUS 通訊協(xié)議

        在 MODBUS 協(xié)議下, VMXXX 內(nèi)部所有寄存器被定義為“ 保持寄存器” (詳見(jiàn) MODBUS 通訊協(xié)議標(biāo)準(zhǔn)說(shuō)明),模塊支持基于 MODBUS 協(xié)議的多個(gè)連續(xù)寄存器讀取、單個(gè)寄存器寫入、多個(gè)連續(xù)寄存器寫入三種指令, 對(duì)應(yīng)指令碼分別為 0x03(或 0x04)、 0x06、 0x10。 下面逐一說(shuō)明每種指令碼的指令和返回?cái)?shù)據(jù)幀格式。



        ( 1) 03/04( 0x03/0x04) 指令碼: 讀取多個(gè)連續(xù)的寄存器數(shù)據(jù),指令格式如下

        指令數(shù)據(jù)幀結(jié)構(gòu)

        通訊協(xié)議指令數(shù)據(jù)幀結(jié)構(gòu).jpg


        例:讀取地址為 0x01 的模塊寄存器值,寄存器開(kāi)始地址為 0,連續(xù)讀取 10 個(gè)寄存器

        主機(jī)發(fā)送指令: 0x01 0x03 0x00 0x00 0x00 0x0A 0xC5 0xCD


        從機(jī)返回應(yīng)答: 0x01 0x03 0x14 0x00 0x01 0x00 0x60 0x00 0x00 0x00 0x00 0x00 0x000x00 0x01 0x01 0xF4 0x00 0x00 0x00 0x64 0x00 0xC8 0x5F 0x8F(下劃線為讀取到的 10 個(gè)寄存器值)

        主機(jī)發(fā)送指令: 0x01 0x04 0x00 0x00 0x00 0x0A 0x70 0x0D

        從機(jī)返回應(yīng)答: 0x01 0x04 0x14 0x00 0x01 0x00 0x60 0x00 0x00 0x00 0x00 0x00 0x000x00 0x01 0x01 0xF4 0x00 0x00 0x00 0x14 0x14 0xC8 0xB7 0x62(下劃線為讀取到的 10 個(gè)寄存器值)

        讀取多個(gè)連續(xù)寄存器時(shí), 單次讀取不要超過(guò) 64 個(gè)寄存器, 不要試圖讀取不存在的寄存器( 地址大于 63 的寄存器)。


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

        通訊協(xié)議指令數(shù)據(jù)幀結(jié)構(gòu)2.jpg



        例: 將地址為 0x01 的模塊中的寄存器 8 的值修改為 100

        主機(jī)發(fā)送指令: 0x01 0x06 0x00 0x08 0x00 0x64 0x09 0xE3

        從機(jī)返回應(yīng)答: 0x01 0x06 0x00 0x08 0x00 0x64 0x09 0xE3

        ( 3) 16( 0x10) 指令碼: 修改連續(xù)的多個(gè)寄存器的值, 指令格式如下


        通訊協(xié)議指令數(shù)據(jù)幀結(jié)構(gòu)3.jpg

        例:修改地址為 0x01 的模塊中 0~31 寄存器的值

        主機(jī)發(fā)送指令( 16 進(jìn)制指令): 01 10 00 00 00 20 40 00 01 00 60 00 00 00 03 00 00 00 01 01 F4 00 00 00 C8 C8 C8 00 01 82 35 00 05 03 E8 00 A0 05 DC 06 40 00 05 00 64 00 00 00 0A 00 0A 00 04 01 77 03 15 00 00 00 00 03 E8 00 01 00 00 00 00 00 00 A3 70(下劃線數(shù)據(jù)為 32 個(gè)寄存器值)

        從機(jī)返回應(yīng)答: 0x01 0x10 0x00 0x00 0x00 0x20 0xXX 0xXX  VMXXX 的 UART 接收緩存為 80 字節(jié),向模塊發(fā)送多寄存器寫指令時(shí),單幀指令長(zhǎng)度不要超限。


        *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。




        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 松溪县| 隆安县| 修武县| 九寨沟县| 十堰市| 乡宁县| 松桃| 辰溪县| 宁武县| 丹巴县| 任丘市| 蒙阴县| 陆河县| 渭南市| 将乐县| 进贤县| 双峰县| 边坝县| 洛扎县| 会东县| 靖西县| 麻城市| 清新县| 长丰县| 保德县| 楚雄市| 滨州市| 乌海市| 宜君县| 内乡县| 嘉义县| 金堂县| 长子县| 安岳县| 阜新市| 潢川县| 金川县| 松桃| 康平县| 深圳市| 富宁县|