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样本供应模块
0x02TIP/CUP 电梯模块
0x03样本针模块
0x04试剂仓模块
0x05液路模块 1(测量)
0x06液路模块 2(系统)
0x07试剂针模块 1
0x08试剂针模块 2
0x09试剂针模块 3
0x10反应盘模块
0x11清洗模块 1
0x12清洗模块 2
0x13清洗模块 3
0x14进测量室模块
0x15固体废料仓模块
0x16TIP/CUP 架平移模块
0x21中位机模块中位机指令的目标模块
0x22AD 采集卡USB 采集卡指令的目标模块

指令类型

值类型说明
0x01握手通信建立确认
0x02工作模式复位、启动采集、停止等
0x03单步单步调试指令
0x04设置配置参数
0x05查询读取状态/参数
0x06测试自检、回环测试等

二、中位机串口指令(模块号 0x21)

指令速查

指令类型指令码指令名称数据帧说明
握手 0x010x01通信握手无建立通信连接
工作模式 0x020x01复位无系统复位
0x02样本条码扫描有参数:起始槽位/孔位/停止槽位/孔位;返回条码数据
0x03试剂条码扫描有参数:孔位;返回 8 字节条码
0x04样本检测/质控/定标有参数:进反应杯位/测试项目/样本序号/起止位置
0x05启动校准无完成校准品上样,采集仍需上位机发 AD 卡指令
0x06停止校准无
0x07单独上样(工程师模式)
0x08停止上样(工程师模式)
0x09开机清洗无
0x10关机清洗无
0x11月清洗无
0x12排气泡无
单步 0x030x01~0x099 条单步指令无工程师调试用
设置 0x040x01~0x044 条设置指令无参数待细化
查询 0x050x01~0x044 条查询指令有返回状态/参数
测试 0x060x01测试指令无

条码扫描返回格式

样本条码扫描(每次扫描多个):

  • 参数:起始槽位、起始孔位、停止槽位、停止孔位
  • 返回数据帧:槽位、孔位、字节 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)

错误类型错误码警告内容参数
0x000x01CAN 总线通讯异常
0x010x01参数异常
0x020x01模块运行异常0xXX(模块号)
0x02TIP 余量不足
0x03目标槽无样本架
0x04目标位置无样本
0x05未取到 TIP
0x06未取到反应杯
0x07试剂 1(磁珠)余量不足
0x08试剂 2(抗体)余量不足
0x09试剂 3(亲和素)余量不足
0x10进测量室未取到反应杯
0x11数据采集卡采集未完成
0x12气压异常
0x030x01鞘液空
0x02清洗剂空
0x03废液满
0x04废料仓满

设计要点:警告信息帧分为不同严重级别。通讯/参数/执行类错误会停止工作并发送结果帧,而提示类错误(03XX)仅上报不中断流程。


四、主动上传帧(帧类型 0x08)

TIP 架 / 反应杯状态 / 样本 / 耗材 / 仪器状态

指令码:0x01(TIP 架状态相关)

参数位内容说明
1TIP/CUP 盒剩余数量0-8
2TIP 余量0-35
3CUP 余量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)

指令速查

指令类型指令码指令名称数据帧说明
握手 0x010x01通信握手无USB 连接确认
工作模式 0x020x01复位无
0x02停止采集无
0x03实时采集有返回微球数据流
0x04读取数据有参数:样本序号高低位;返回采集结果
单步 0x030x01单步指令无调试用
设置 0x040x01通道增益(DAC output)无参数:通道 + 增益高低位
0x02通道阈值(ADC 阈值)无参数:通道 + 阈值高低位
0x03停止条件(采集个数)无参数:停止条件高中低位(3 字节)
0x04设置通道个数无参数:通道个数
查询 0x050x01通道增益有返回增益参数
0x02通道阈值有返回阈值参数
0x03停止条件有返回停止条件高中低位
测试 0x060x01自检(回环测试)无内部固定数据,复位消除此模式

微球数据格式

每个微球的数据包含 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) ──→ 荧光信号采集与处理

设计特点

  1. 统一帧格式:中位机串口和 AD 采集卡 USB 采用几乎完全相同的帧结构(帧头/帧尾/帧类型/帧号/模块号/指令类型/指令/参数/校验和),降低学习成本
  2. 固定 32 字节帧:除 AD 卡数据帧外,所有指令固定 32 字节,简化缓冲区管理
  3. 帧号循环机制:0x00~0x99 BCD 编码循环,支持异步通信帧匹配
  4. 三阶段握手:命令帧 → 命令应答帧 → 命令结果帧,确保指令可靠执行
  5. 四级错误分类:通讯类 / 参数类 / 执行类 / 提示类,严重程度递减
  6. 模块化扩展:16 个功能模块 + 2 个系统模块,通过模块号寻址,支持 CAN 总线扩展

与其他项目协议对比

待细化项

  1. 主动上传帧详细定义(标注”待细化”)
  2. AD 采集卡警告信息帧(标注”暂不需要”)
  3. AD 采集卡主动上传帧(标注”待细化”)
  4. 单步指令 9 条具体含义未定义
  5. 设置/查询指令具体参数未完整列出
  6. 部分指令码位命名不统一(如”工作模式”下的子指令编号跳跃)

相关笔记