振弦采集模塊UART 通訊協(xié)議
振弦采集模塊UART 通訊協(xié)議
UART 接口支持標準的工業(yè) MODBUS 通訊協(xié)議( 03、 04、 06、 16 指令碼)和自定義的簡單 AABB協(xié)議以及$字符串指令集。 前兩種協(xié)議均支持基于模塊地址和總線連接的一主多從應用結構, 在總線中, VMXXX 模塊始終作為從機使用( 被動等待指令, 不主動上傳數(shù)據(jù),但“ 自動上傳數(shù)據(jù)”和“ 軟件握手” 除外, 詳見后續(xù)對應章節(jié)說明)。
建議使用專用的 VMTool 工具進行寄存器指令的生成和測試,關于 VMTool 的基本用法,請詳見“ 第四章:參數(shù)配置工具的使用” 。根據(jù)下述通訊協(xié)議規(guī)則,讀寫寄存器。在使用 MODBUS 或 AABB 通訊協(xié)議時, 請確認模塊的軟件握手參數(shù)處于關閉狀態(tài)(默認)。
(一) MODBUS 通訊協(xié)議
在 MODBUS 協(xié)議下, VMXXX 內(nèi)部所有寄存器被定義為“ 保持寄存器” (詳見 MODBUS 通訊協(xié)議標準說明),模塊支持基于 MODBUS 協(xié)議的多個連續(xù)寄存器讀取、單個寄存器寫入、多個連續(xù)寄存器寫入三種指令, 對應指令碼分別為 0x03(或 0x04)、 0x06、 0x10。 下面逐一說明每種指令碼的指令和返回數(shù)據(jù)幀格式。
( 1) 03/04( 0x03/0x04) 指令碼: 讀取多個連續(xù)的寄存器數(shù)據(jù),指令格式如下
指令數(shù)據(jù)幀結構
例:讀取地址為 0x01 的模塊寄存器值,寄存器開始地址為 0,連續(xù)讀取 10 個寄存器
主機發(fā)送指令: 0x01 0x03 0x00 0x00 0x00 0x0A 0xC5 0xCD
從機返回應答: 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 個寄存器值)
主機發(fā)送指令: 0x01 0x04 0x00 0x00 0x00 0x0A 0x70 0x0D
從機返回應答: 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 個寄存器值)
讀取多個連續(xù)寄存器時, 單次讀取不要超過 64 個寄存器, 不要試圖讀取不存在的寄存器( 地址大于 63 的寄存器)。
( 2) 06( 0x06) 指令碼: 修改單個寄存器的值, 指令格式如下
例: 將地址為 0x01 的模塊中的寄存器 8 的值修改為 100
主機發(fā)送指令: 0x01 0x06 0x00 0x08 0x00 0x64 0x09 0xE3
從機返回應答: 0x01 0x06 0x00 0x08 0x00 0x64 0x09 0xE3
( 3) 16( 0x10) 指令碼: 修改連續(xù)的多個寄存器的值, 指令格式如下
例:修改地址為 0x01 的模塊中 0~31 寄存器的值
主機發(fā)送指令( 16 進制指令): 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 個寄存器值)
從機返回應答: 0x01 0x10 0x00 0x00 0x00 0x20 0xXX 0xXX VMXXX 的 UART 接收緩存為 80 字節(jié),向模塊發(fā)送多寄存器寫指令時,單幀指令長度不要超限。
*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。