通信协议 ======== 通讯格式 -------- 全双工异步串口(UART),8N1 模式(1 个起始位,1 个停止位,8 个数据位,没有校验位),波特率 1200-115200bps,可以软件设置不同波特率。出厂默认波特率为 **9600**。 波特率恢复 ~~~~~~~~~~ 将 **J5 短路**,彩屏终端将使用出厂默认的 9600 波特率通讯。 指令帧结构 ---------- 串口指令帧由 5 个数据块组成: .. list-table:: :header-rows: 1 :widths: 15 15 15 15 15 15 10 * - 定义 - 帧头 - 数据长度 - 指令 - 寄存器地址 - 数据 - CRC16 * - 说明 - 可通过工程配置 - 从指令(含)开始计算 - 80-87 - 0000-FFFF - -- - 可选 * - 长度(字节) - 2 - 2 - 1 - 2 - N - 2 * - 写指令示例 - A5 5A - 00 05 - 80 - 00 00 - 00 03 - -- * - 读指令示例 - A5 5A - 00 03 - 82 - 00 00 - -- - -- * - 写指令(带CRC) - A5 5A - 00 07 - 80 - 00 00 - 00 03 - 65 DF * - 读指令(带CRC) - A5 5A - 00 05 - 82 - 00 00 - -- - D1 E8 .. note:: - 指令帧头为双字节,用户可以自定义,通过 Visual OCM 2.0 开发工具中"初始参数配置"设置 - 用户可以通过设定不同的帧头,实现多台串口屏的并联应用 - CRC 校验码也是双字节,可自定义是否启用,采用 ANSI-16(X16+X15+X2+1)格式 - 5D 系列串口屏刷新周期最快为 80ms,最慢为 200ms CRC 校验结果应答帧结构 ~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: :header-rows: 1 :widths: 15 15 15 15 20 20 * - 定义 - 帧头 - 数据长度 - 指令 - 数据 - CRC 校验 * - 长度 - 2 - 2 - 1 - 1 - 2 * - 说明 - 可通过工程设置 - 固定 0x0004 - 接收到的指令 - 0xFF 正确 / 0x00 错误 - -- 指令类型 -------- 5D 系列组态串口屏指令非常精简,总共有 **5 条寄存器操作指令** 与 **3 条曲线操作指令**。 寄存器操作数据类型总共 8 种: .. list-table:: :header-rows: 1 :widths: 15 25 60 * - 编号 - 类型 - 说明 * - 1 - S8 - 8 位有符号整数 * - 2 - U8 - 8 位无符号整数 * - 3 - S16 - 16 位有符号整数 * - 4 - U16 - 16 位无符号整数 * - 5 - S32 - 32 位有符号整数 * - 6 - U32 - 32 位无符号整数 * - 7 - R32 - 单精度浮点数 * - 8 - TEXT - 文本信息 .. important:: - 写入的数据与寄存器的数据类型必须一致:U8 对应 1 字节,U16 对应 2 字节,U32 对应 4 字节,浮点数对应 4 字节 - 读写连续寄存器组的数据类型必须确保一致,文本类型不支持连写 - 寄存器数据改变后向主机报告的数据格式与读单个寄存器返回指令格式一样 指令总览 -------- .. list-table:: :header-rows: 1 :widths: 15 10 40 35 * - 功能 - 指令 - 数据 - 说明 * - 写单个寄存器 - 0x80 - 寄存器地址(0x0000-0xFFFF) + 写入数据 - 修改指定的寄存器数据 * - 写多个寄存器 - 0x81 - 寄存器起始地址(0x0000-0xFFFF) + 写入数据 - 修改连续寄存器组的数据 * - 读单个寄存器 - 0x82 - 寄存器地址(0x0000-0xFFFF) - 读取指定的寄存器数据 * - 读多个寄存器 - 0x83 - 寄存器起始地址(0x0000-0xFFFF) + 寄存器数量(1字节) - 读取连续寄存器组的数据 * - 复制寄存器 - 0x84 - 目标寄存器地址 + 源寄存器地址 - 将源寄存器数据复制到目标寄存器 曲线缓冲区操作指令 ------------------ .. list-table:: :header-rows: 1 :widths: 25 30 45 * - 功能 - 指令 - 说明 * - 写指定缓冲区(8位采样深度) - 0x90 + CH_MASK + DATA0(Byte) + ... - CH_MASK 每一位对应 1 个缓冲区 * - 写指定缓冲区(16位采样深度) - 0x91 + CH_MASK + DATA0(Word) + ... - CH_MASK 每一位对应 1 个缓冲区 * - 清空指定缓冲区数据 - 0x92 + CH_MASK - CH_MASK 每一位对应 1 个缓冲区 .. note:: 5D 系列总共支持 **8 个数据缓冲区**,无论是 U8 类型或 U16 类型,每个缓冲区最大都支持 **1024 个采样点**。