USB & 串口通信协议 - 液相芯片检测系统
液相芯片检测系统的双总线通信协议规范:PC 通过串口与中位机通信,通过 USB 与 AD 采集卡通信。两个独立协议栈共享相同的帧格式设计理念。
一、通用帧格式
帧结构
【FA】【帧类型】【帧号】【模块号】【指令长度】【指令类型】【指令】【参数1】…【参数N】【校验和】【校验和】【FB】
- 帧头:
0xFA
- 帧尾:
0xFB
- 固定长度:除 AD 采集卡返回数据帧外,所有通信指令均为 32 字节,不足补零
- 编码:除帧头帧尾外,所有帧由数字组成,不含字母
- 校验和:双字节(CK+CK),覆盖帧头到参数的全部内容
帧类型(8 种)
| 值 | 帧类型 | 说明 |
|---|
0x01 | 命令帧 | 上位机下发指令 |
0x02 | 重发命令帧 | 暂未实现 |
0x03 | 重获结果帧 | 暂未实现 |
0x04 | 命令应答帧 | 接收方确认收到,含应答结果码 |
0x05 | 命令结果帧 | 执行完成后返回结果 |
0x06 | 数据帧 | 返回采集数据等大批量数据 |
0x07 | 警告信息帧 | 故障/警告主动上报 |
0x08 | 主动上传帧 | 状态/耗材等信息主动上报 |
帧号机制
- 取值范围:
0x00 ~ 0x99(BCD 编码)
- 发送方在模块内循环累加,每发一条加 1
- 应答/结果/警告/数据上报帧的帧号与接收的命令帧保持一致
- 用于帧匹配和去重
模块号定义
| 模块号 | 模块名称 | 说明 |
|---|
0x01 | 样本供应模块 | |
0x02 | TIP/CUP 电梯模块 | |
0x03 | 样本针模块 | |
0x04 | 试剂仓模块 | |
0x05 | 液路模块 1(测量) | |
0x06 | 液路模块 2(系统) | |
0x07 | 试剂针模块 1 | |
0x08 | 试剂针模块 2 | |
0x09 | 试剂针模块 3 | |
0x10 | 反应盘模块 | |
0x11 | 清洗模块 1 | |
0x12 | 清洗模块 2 | |
0x13 | 清洗模块 3 | |
0x14 | 进测量室模块 | |
0x15 | 固体废料仓模块 | |
0x16 | TIP/CUP 架平移模块 | |
0x21 | 中位机模块 | 中位机指令的目标模块 |
0x22 | AD 采集卡 | USB 采集卡指令的目标模块 |
指令类型
| 值 | 类型 | 说明 |
|---|
0x01 | 握手 | 通信建立确认 |
0x02 | 工作模式 | 复位、启动采集、停止等 |
0x03 | 单步 | 单步调试指令 |
0x04 | 设置 | 配置参数 |
0x05 | 查询 | 读取状态/参数 |
0x06 | 测试 | 自检、回环测试等 |
二、中位机串口指令(模块号 0x21)
指令速查
| 指令类型 | 指令码 | 指令名称 | 数据帧 | 说明 |
|---|
| 握手 0x01 | 0x01 | 通信握手 | 无 | 建立通信连接 |
| 工作模式 0x02 | 0x01 | 复位 | 无 | 系统复位 |
| 0x02 | 样本条码扫描 | 有 | 参数:起始槽位/孔位/停止槽位/孔位;返回条码数据 |
| 0x03 | 试剂条码扫描 | 有 | 参数:孔位;返回 8 字节条码 |
| 0x04 | 样本检测/质控/定标 | 有 | 参数:进反应杯位/测试项目/样本序号/起止位置 |
| 0x05 | 启动校准 | 无 | 完成校准品上样,采集仍需上位机发 AD 卡指令 |
| 0x06 | 停止校准 | 无 | |
| 0x07 | 单独上样(工程师模式) | | |
| 0x08 | 停止上样(工程师模式) | | |
| 0x09 | 开机清洗 | 无 | |
| 0x10 | 关机清洗 | 无 | |
| 0x11 | 月清洗 | 无 | |
| 0x12 | 排气泡 | 无 | |
| 单步 0x03 | 0x01~0x09 | 9 条单步指令 | 无 | 工程师调试用 |
| 设置 0x04 | 0x01~0x04 | 4 条设置指令 | 无 | 参数待细化 |
| 查询 0x05 | 0x01~0x04 | 4 条查询指令 | 有 | 返回状态/参数 |
| 测试 0x06 | 0x01 | 测试指令 | 无 | |
条码扫描返回格式
样本条码扫描(每次扫描多个):
- 参数:起始槽位、起始孔位、停止槽位、停止孔位
- 返回数据帧:槽位、孔位、字节 1~4(条码内容)
试剂条码扫描(每次扫描 1 个):
- 参数:孔位
- 返回数据帧:孔位 + 8 字节条码数据
命令应答帧
| 位置 | 字段 | 值/说明 |
|---|
| 1 | 帧头 | 0xFA |
| 2 | 帧类型 | 0x04 |
| 3 | 帧号 | 同命令帧 |
| 4 | 模块号 | 同命令帧 |
| 5 | 指令长度 | 同命令帧 |
| 6 | 指令类型 | 同命令帧 |
| 7 | 指令 | 同命令帧 |
| 8 | 应答结果 | 0x01=正确 / 0x02=校验和错误 / 0x03=指令超长 / 0x04=指令太短 / 0x05=指令不完整(无帧尾) / 0x06=其它 |
| 30-31 | 校验和 | CK+CK |
| 32 | 帧尾 | 0xFB |
命令结果帧
- 执行结果:
0x01=正确 / 0x02=错误
- 错误码分类:
00XX:通讯类错误 → 停止工作并发结果帧
01XX:参数类错误
02XX:执行类错误
03XX:提示类错误 → 不停止工作、不发结果帧
三、警告信息帧(帧类型 0x07)
| 错误类型 | 错误码 | 警告内容 | 参数 |
|---|
0x00 | 0x01 | CAN 总线通讯异常 | |
0x01 | 0x01 | 参数异常 | |
0x02 | 0x01 | 模块运行异常 | 0xXX(模块号) |
| 0x02 | TIP 余量不足 | |
| 0x03 | 目标槽无样本架 | |
| 0x04 | 目标位置无样本 | |
| 0x05 | 未取到 TIP | |
| 0x06 | 未取到反应杯 | |
| 0x07 | 试剂 1(磁珠)余量不足 | |
| 0x08 | 试剂 2(抗体)余量不足 | |
| 0x09 | 试剂 3(亲和素)余量不足 | |
| 0x10 | 进测量室未取到反应杯 | |
| 0x11 | 数据采集卡采集未完成 | |
| 0x12 | 气压异常 | |
0x03 | 0x01 | 鞘液空 | |
| 0x02 | 清洗剂空 | |
| 0x03 | 废液满 | |
| 0x04 | 废料仓满 | |
设计要点:警告信息帧分为不同严重级别。通讯/参数/执行类错误会停止工作并发送结果帧,而提示类错误(03XX)仅上报不中断流程。
四、主动上传帧(帧类型 0x08)
TIP 架 / 反应杯状态 / 样本 / 耗材 / 仪器状态
指令码:0x01(TIP 架状态相关)
| 参数位 | 内容 | 说明 |
|---|
| 1 | TIP/CUP 盒剩余数量 | 0-8 |
| 2 | TIP 余量 | 0-35 |
| 3 | CUP 余量 | 0-35 |
| 4 | 完成样本槽位 | |
| 5 | 完成样本孔位 | |
| 6 | 鞘液状态 | 0x00=充足 / 0x01=不足 |
| 7 | 废液状态 | 0x00=未满 / 0x01=将满 |
| 8 | 系统液状态 | 0x00=充足 / 0x01=不足 |
| 9-10 | 试剂仓温度 | 高位+低位 |
| 11-12 | 孵育仓温度 | 高位+低位 |
试剂仓状态
指令码:0x02(试剂仓状态)
- 6 个试剂位,每个试剂位包含:测试项目 + 剩余人份
- 共 12 个参数(6 × 2)
五、AD 采集卡 USB 指令(模块号 0x22)
指令速查
| 指令类型 | 指令码 | 指令名称 | 数据帧 | 说明 |
|---|
| 握手 0x01 | 0x01 | 通信握手 | 无 | USB 连接确认 |
| 工作模式 0x02 | 0x01 | 复位 | 无 | |
| 0x02 | 停止采集 | 无 | |
| 0x03 | 实时采集 | 有 | 返回微球数据流 |
| 0x04 | 读取数据 | 有 | 参数:样本序号高低位;返回采集结果 |
| 单步 0x03 | 0x01 | 单步指令 | 无 | 调试用 |
| 设置 0x04 | 0x01 | 通道增益(DAC output) | 无 | 参数:通道 + 增益高低位 |
| 0x02 | 通道阈值(ADC 阈值) | 无 | 参数:通道 + 阈值高低位 |
| 0x03 | 停止条件(采集个数) | 无 | 参数:停止条件高中低位(3 字节) |
| 0x04 | 设置通道个数 | 无 | 参数:通道个数 |
| 查询 0x05 | 0x01 | 通道增益 | 有 | 返回增益参数 |
| 0x02 | 通道阈值 | 有 | 返回阈值参数 |
| 0x03 | 停止条件 | 有 | 返回停止条件高中低位 |
| 测试 0x06 | 0x01 | 自检(回环测试) | 无 | 内部固定数据,复位消除此模式 |
微球数据格式
每个微球的数据包含 8 个通道的分析结果:
H1, A1, W1, H2, A2, W2, H3, A3, W3, H4, A4, W4 ...
- H(高度):24 bit
- A(面积):24 bit
- W(宽度):16 bit
- 每个微球合计:
(24+24+16) × 8 通道 = 512 bit = 64 字节
- 数据帧包含:数据包长度 n + n 个微球数据 + 校验和
AD 采集卡命令应答帧
- 应答结果:
0x01=正确 / 0x02=错误(定义较中位机简略)
AD 采集卡命令结果帧
- 执行结果:
0x01=正确 / 0x02=错误
- 返回参数:所有通道 8-1 的增益和阈值
六、协议设计分析
双总线架构
上位机 (PC)
├─ 串口 ──→ 中位机 (0x21) ──→ CAN 总线 ──→ 16 个运动/液路模块
└─ USB ──→ AD 采集卡 (0x22) ──→ 荧光信号采集与处理
设计特点
- 统一帧格式:中位机串口和 AD 采集卡 USB 采用几乎完全相同的帧结构(帧头/帧尾/帧类型/帧号/模块号/指令类型/指令/参数/校验和),降低学习成本
- 固定 32 字节帧:除 AD 卡数据帧外,所有指令固定 32 字节,简化缓冲区管理
- 帧号循环机制:0x00~0x99 BCD 编码循环,支持异步通信帧匹配
- 三阶段握手:命令帧 → 命令应答帧 → 命令结果帧,确保指令可靠执行
- 四级错误分类:通讯类 / 参数类 / 执行类 / 提示类,严重程度递减
- 模块化扩展:16 个功能模块 + 2 个系统模块,通过模块号寻址,支持 CAN 总线扩展
与其他项目协议对比
待细化项
- 主动上传帧详细定义(标注”待细化”)
- AD 采集卡警告信息帧(标注”暂不需要”)
- AD 采集卡主动上传帧(标注”待细化”)
- 单步指令 9 条具体含义未定义
- 设置/查询指令具体参数未完整列出
- 部分指令码位命名不统一(如”工作模式”下的子指令编号跳跃)
相关笔记