振弦采集模块AABB 通讯协议
AABB 通讯协议是一种非标准自定义协议, 相较于 MODBUS 通讯协议,结构更简单,指令生成方法更容易,便于进行快速测试。 AABB 通讯协议支持单寄存器读写两种指令。
( 1) 读取单个寄存器
指令头: 固定为 16 进制 AABB
地址码: VMXXX 模块的地址( 1~255, 其中地址 255 为通用地址,详见后续“通用模块地址” 说明)
寄存器地址: 要访问的寄存器地址( 0~63), 寄存器地址字节最高位是读写标志位,为 0 时表示
读寄存器,为 1 时表示写寄存器。
和校验: 之前所有数据之和, 0xAA 0xBB 地址码 寄存器地址, 校验和超过 255 时,仅使用低字节。 如下例中,校验和=0xAA 0xBB 0x01 0x08=0x016E,则只使用 0x6E 作为最终和校验码。
例:读取地址为 0x01 的模块寄存器值,寄存器地址为 8
主机发送指令: 0xAA 0xBB 0x01 0x08 0x6E
从机返回应答: 0xAA 0xBB 0x01 0x08 0x00 0x60 0xCE
( 2) 修改单个寄存器
例: 修改地址为 0x01 的模块寄存器值,寄存器地址为 8,修改值为 100
主机发送指令: 0xAA 0xBB 0x01 0x88 0x00 0x64 0x52
从机返回应答: 0xAA 0xBB 0x01 0x08 0x00 0x64 0xD2
( 3) 通用模块地址
AABB 通讯协议支持模块通用地址, 无论模块的当前地址为何值,使用 0xFF 作为地址对模块发送读写指令,均可得到模块正确应答。
例:使用通用地址,读取任一模块的寄存器 8
主机发送指令: 0xAA 0xBB 0xFF 0x08 0x6C
从机返回应答: 0xAA 0xBB 0x01 0x08 0x00 0xC8 0x36
注: 当总线上连接有多个模块时(通常为 RS485 总线), 使用通用地址时总线上所有模块均会响应指令,导致指令无法正常使用。
注: 严禁在连接有多个 VM 模块的总线中使用通用地址修改模块地址。
( 4)特殊模块地址
模块地址保存于寄存器 ADDR.[7:0], 取值范围为 1~255,这些地址中, 255 在 AABB 协议中作为通用地址使用, 地址 128( 0x80) 用于特殊用途, 故此对模块地址进行修改时可使用的地址有: 1~127、 129~254, 共 253 个。