半自动双激光流式细胞仪串口通信协议 — 液路与上样单元命令全集
工程文档:国科医疗/中科院苏州医工所 半自动双激光流式细胞仪项目
协议版本:2020-03-16
关联文档:《流式细胞仪通讯协议说明书_V1.0》(DOC版,协议总览 + 采集单元命令)
本文档为 XLSX 表格版通信协议,是 DOC 版协议说明书的详细命令补充,重点覆盖**液路单元(模块号 0x03)和自动上样单元(模块号 0x04)**的完整命令字典。
一、通信帧格式
【FA】【帧类型】【模块号】【命令号】【参数1】…【参数N】【校验和】【校验和】【FB】
规则:
- 帧头:
0xFA,帧尾:0xFB
- 除帧头帧尾,所有帧内容均为数字(BCD 码),不含字母
- 所有通信指令等长,不足补零
- 帧号范围:
0x00-0x99(BCD 码)
帧类型定义
| 帧类型 | 取值 | 方向 |
|---|
| 命令帧 | 0x01 | 上位机 → 下位机 |
| 重发命令帧 | 0x02 | 上位机 → 下位机(暂未实现) |
| 重获结果帧 | 0x03 | 上位机 → 下位机(暂未实现) |
| 命令应答帧 | 0x04 | 下位机 → 上位机 |
| 命令结果帧 | 0x05 | 下位机 → 上位机 |
| 数据帧 | 0x06 | 下位机 → 上位机 |
| 警告信息帧 | 0x07 | 下位机 → 上位机 |
模块号定义
| 模块 | 标识 | 通信接口 |
|---|
| 上位机 | 0x01 | — |
| 采集单元 | 0x02 | — |
| 液路单元 | 0x03 | RS232 |
| 自动上样单元 | 0x04 | RS232 |
应答结果码
| 码值 | 含义 |
|---|
0x01 | 正确 |
0x02 | 校验和错误 |
0x03 | 指令超长 |
0x04 | 指令太短 |
0x05 | 指令不完整(无帧尾) |
0x06 | 其它错误 |
二、液路单元命令集(模块号 0x03)
液路单元命令号为双字节:命令号(F列)+ 子命令/参数1(G列)。
2.1 基础命令
| 命令 | 命令号 | 子命令 | 参数 | 数据帧返回 | 说明 |
|---|
| 开机握手 | 0x00 | — | — | 无 | 建立通信,返回应答结果 |
| 复位 | 0x01 | — | — | 无 | 整机复位 |
| 自检 | 0x02 | — | — | 无 | 自检流程 |
2.2 调试/单步命令(命令号 0x03)
电磁阀控制(13 个):
| 命令 | 子命令 | 参数 |
|---|
| 电磁阀1开关(三通) | 0x01 | 开关(1/0) |
| 电磁阀2开关 | 0x02 | 开关(1/0) |
| 电磁阀3开关 | 0x03 | 开关(1/0) |
| 电磁阀4开关 | 0x04 | 开关(1/0) |
| 电磁阀5开关 | 0x05 | 开关(1/0) |
| 电磁阀6开关 | 0x06 | 开关(1/0) |
| 电磁阀7开关 | 0x07 | 开关(1/0) |
| 电磁阀8开关(三通) | 0x08 | 开关(1/0) |
| 电磁阀9开关 | 0x09 | 开关(1/0) |
| 电磁阀10开关(三通) | 0x10 | 开关(1/0) |
| 电磁阀11开关 | 0x11 | 开关(1/0) |
| 电磁阀12开关 | 0x12 | 开关(1/0) |
| 电磁阀13开关 | 0x13 | 开关(1/0) |
泵与电机控制:
| 命令 | 子命令 | 参数 | 说明 |
|---|
| 鞘液注射泵归零 | 0x14 | — | |
| 鞘液注射泵走位 | 0x15 | 步数高/中/低位 | 3字节步数 |
| 空气泵开关 | 0x16 | 开关(1/0) | |
| 清洗泵1开关 | 0x17 | 开关(1/0) | |
| 清洗泵2开关 | 0x18 | 开关(1/0) | |
| 清洗泵3开关 | 0x19 | 开关(1/0) | |
| 废液泵开关 | 0x20 | 开关(1/0) | |
| 样品柱塞泵归零 | 0x21 | — | |
| 样品柱塞泵走位 | 0x22 | 步数高/中/低位 | 3字节步数 |
| 取样针归零 | 0x23 | — | |
| 取样针走位 | 0x24 | — | |
| 鞘液注射泵吸鞘液(含阀) | 0x25 | — | 复合动作 |
| 鞘液注射泵注鞘液(含阀) | 0x26 | — | 复合动作 |
| 样品柱塞泵吸鞘液(含三通阀) | 0x27 | 体积高/中/低位 | 3字节体积 |
| 样品柱塞泵吸样品(含三通阀) | 0x28 | 体积高/中/低位 | 3字节体积 |
| 样品柱塞泵吸空气(含三通阀) | 0x29 | 体积高/中/低位 | 3字节体积 |
| 样品柱塞泵快速上样(含三通阀) | 0x30 | 体积高/中/低位 | 3字节体积 |
| 样品柱塞泵慢速上样(含三通阀) | 0x31 | 体积高/中/低位 | 3字节体积 |
| 上样复位 | 0x32 | — | |
上样机构控制:
| 命令 | 子命令 | 参数 | 说明 |
|---|
| 96孔上样机构X轴归零 | 0x33 | — | |
| 96孔上样机构X轴走位(绝对坐标) | 0x34 | 坐标高/中/低位 | 3字节坐标 |
| 96孔上样机构Y轴归零 | 0x35 | — | |
| 96孔上样机构Y轴走位(绝对坐标) | 0x36 | 坐标高/中/低位 | 3字节坐标 |
| 96孔上样机构走到孔位XY | 0x37 | X轴, Y轴 | 2字节孔位 |
| 转盘上样机构转盘归零 | 0x38 | — | |
| 转盘上样机构转盘走位(绝对坐标) | 0x39 | 坐标高/中/低位 | 3字节坐标 |
| 转盘上样机构走到孔位X | 0x40 | 孔位号 | 1字节 |
2.3 参数配置命令(命令号 0x04)
| 命令 | 子命令 | 参数 | 说明 |
|---|
| 设置鞘液注射泵吸鞘液速度 | 0x01 | 速度高/低位 | 2字节 |
| 设置鞘液注射泵注鞘液速度低档 | 0x02 | 速度高/低位 | 2字节 |
| 设置鞘液注射泵注鞘液速度高档 | 0x03 | 速度高/低位 | 2字节 |
| 设置柱塞泵吸样流速 | 0x04 | 速度高/低位 | 2字节 |
| 设置样品柱塞泵上样流速低档 | 0x05 | 速度高/低位 | 2字节 |
| 设置样品柱塞泵上样流速高档 | 0x06 | 速度高/低位 | 2字节 |
| 设置96孔上样机构X轴第1孔位绝对坐标 | 0x07 | 坐标高/中/低位 | 3字节 |
| 设置96孔上样机构X轴最末孔位绝对坐标 | 0x08 | 坐标高/中/低位 | 3字节 |
| 设置96孔上样机构Y轴第1孔位绝对坐标 | 0x09 | 坐标高/中/低位 | 3字节 |
| 设置96孔上样机构Y轴最末孔位绝对坐标 | 0x10 | 坐标高/中/低位 | 3字节 |
| 设置96孔上样机构X、Y方向孔位数 | 0x11 | X孔数, Y孔数 | 2字节 |
| 设置转盘第1孔位绝对坐标 | 0x12 | 坐标高/中/低位 | 3字节 |
| 设置转盘第末孔位绝对坐标 | 0x13 | 坐标高/中/低位 | 3字节 |
| 设置转盘孔位数 | 0x14 | 孔位数 | 1字节 |
2.4 参数查询命令(命令号 0x05)
所有查询命令返回数据帧(0x06),含查询值。
| 命令 | 子命令 | 返回数据(参数1-4) |
|---|
| 查询软件版本 | 0x01 | 版本号(3字节) |
| 查询鞘液注射泵吸鞘液速度 | 0x02 | 速度(3字节) |
| 查询鞘液注射泵注鞘液速度低档 | 0x03 | 速度(3字节) |
| 查询鞘液注射泵注鞘液速度高档 | 0x04 | 速度(3字节) |
| 查询柱塞泵吸样流速 | 0x05 | 速度(3字节) |
| 查询柱塞泵上样流速低档 | 0x06 | 速度(3字节) |
| 查询柱塞泵上样流速高档 | 0x07 | 速度(3字节) |
| 查询96孔X轴第1孔位绝对坐标 | 0x08 | 坐标(3字节) |
| 查询96孔X轴最末孔位绝对坐标 | 0x09 | 坐标(3字节) |
| 查询96孔Y轴第1孔位绝对坐标 | 0x10 | 坐标(3字节) |
| 查询96孔Y轴最末孔位绝对坐标 | 0x11 | 坐标(3字节) |
| 查询96孔X、Y方向孔位数 | 0x12 | X孔数, Y孔数(2字节) |
| 查询96孔X电机当前绝对坐标 | 0x13 | 坐标(3字节) |
| 查询96孔Y电机当前绝对坐标 | 0x14 | 坐标(3字节) |
| 查询转盘第1孔位绝对坐标 | 0x15 | 坐标(3字节) |
| 查询转盘第末孔位绝对坐标 | 0x16 | 坐标(3字节) |
| 查询转盘孔位数 | 0x17 | 孔位数(1字节) |
| 查询转盘当前绝对坐标 | 0x18 | 坐标(3字节) |
| 查询浮子状态 | 0x19 | 鞘液, 去污剂, 废液, 关机液(4字节液位状态) |
| 查询当前压力值 | 0x20 | 压力值(2字节) |
2.5 工作模式命令(命令号 0x06)
| 命令 | 子命令 | 参数 | 说明 |
|---|
| 强制停止工作模式 | 0x01 | — | 紧急停止 |
| 96孔板样品摇匀 | 0x02 | 次数 | 1字节 |
| 转盘样品摇匀 | 0x03 | 次数 | 1字节 |
| 96孔样品上样 | 0x04 | 样本位x, 样本位y | 2字节 |
| 转盘上样 | 0x05 | 样本位x | 1字节 |
| 样品吸样 | 0x06 | — | 复合动作 |
| 样品进样 | 0x07 | — | 进样过程中压力稳定时,自动上发 0x05 警告帧通知上位机开始测量 |
| 暂停样品进样 | 0x08 | — | |
| 恢复样品进样 | 0x09 | — | |
| 试验间清洗 | 0x10 | — | |
| 开机清洗 | 0x11 | — | |
| 关机清洗 | 0x12 | — | |
| 月清洗 | 0x13 | — | 深度维护 |
| 排气泡 | 0x14 | — | |
| 排堵 | 0x15 | — | |
| 滤芯冲灌 | 0x16 | — | |
2.6 液路单元警告信息帧(0x07)
主动上发,模块号 0x03,命令号 0x00:
| 参数1 | 参数2 | 含义 |
|---|
0x00 | 0x01 | 鞘液空 |
0x00 | 0x02 | 去污剂空 |
0x00 | 0x03 | 废液满 |
0x00 | 0x04 | 关机液空 |
0x00 | 0x05 | 压力稳定,可以测量 |
三、自动上样单元命令集(模块号 0x04)
Sheet2「液路单元与上样单元测试协议」中的上样单元部分。
与液路单元共用相同的帧格式和命令号体系。
3.1 基础命令
| 命令 | 命令号 | 数据帧返回 |
|---|
| 开机握手 | 0x00 | 无 |
| 复位 | 0x01 | 无 |
| 自检 | 0x02 | 无 |
3.2 调试/单步命令(命令号 0x03)
96孔上样机构:
| 命令 | 子命令 | 参数 |
|---|
| 96孔上样机构X轴归零 | 0x01 | — |
| 96孔上样机构X轴走位(绝对坐标) | 0x02 | 坐标(3字节) |
| 96孔上样机构Y轴归零 | 0x03 | — |
| 96孔上样机构Y轴走位(绝对坐标) | 0x04 | 坐标(3字节) |
| 96孔上样机构XY归零 | 0x05 | — |
| 96孔上样机构走到孔位XY | 0x06 | X孔位, Y孔位(2字节) |
| 96孔微孔板摇匀 | 0x07 | 次数(1字节) |
转盘上样机构:
| 命令 | 子命令 | 参数 |
|---|
| 转盘上样机构转盘归零 | 0x08 | — |
| 转盘上样机构转盘走位 | 0x09 | 坐标(3字节) |
| 转盘上样机构走到孔位X | 0x10 | 孔位号(1字节) |
| 转盘摇匀 | 0x11 | 次数(1字节) |
3.3 参数配置命令(命令号 0x04)
| 命令 | 子命令 | 参数 |
|---|
| 设置96孔X轴第1孔位绝对坐标 | 0x01 | 坐标(3字节) |
| 设置96孔X轴最末孔位绝对坐标 | 0x02 | 坐标(3字节) |
| 设置96孔Y轴第1孔位绝对坐标 | 0x03 | 坐标(3字节) |
| 设置96孔Y轴最末孔位绝对坐标 | 0x04 | 坐标(3字节) |
| 设置96孔X、Y方向孔位数 | 0x05 | X孔数, Y孔数(2字节) |
| 设置转盘第1孔位绝对坐标 | 0x06 | 坐标(3字节) |
| 设置转盘第末孔位绝对坐标 | 0x07 | 坐标(3字节) |
| 设置转盘孔位数 | 0x08 | 孔位数(1字节) |
3.4 参数查询命令(命令号 0x05)
| 命令 | 子命令 | 返回数据 |
|---|
| 查询软件版本 | 0x01 | 版本(3字节) |
| 查询96孔X轴第1孔位绝对坐标 | 0x04 | 坐标(3字节) |
| 查询96孔X轴最末孔位绝对坐标 | 0x05 | 坐标(3字节) |
| 查询96孔Y轴第1孔位绝对坐标 | 0x06 | 坐标(3字节) |
| 查询96孔Y轴最末孔位绝对坐标 | 0x07 | 坐标(3字节) |
| 查询96孔X、Y方向孔位数 | 0x08 | X孔数, Y孔数(2字节) |
| 查询96孔X电机当前绝对坐标 | 0x09 | 坐标(3字节) |
| 查询96孔Y电机当前绝对坐标 | 0x10 | 坐标(3字节) |
| 查询转盘第1孔绝对坐标 | 0x23 | 坐标(3字节) |
| 查询转盘最末孔绝对坐标 | 0x24 | 坐标(3字节) |
| 查询转盘孔位数 | 0x25 | 孔位数(1字节) |
| 查询转盘当前绝对坐标 | 0x26 | 坐标(3字节) |
四、与 DOC 版协议的对比
| 维度 | DOC 版(通讯协议说明书_V1.0) | XLSX 版(本文件) |
|---|
| 格式 | Word 文字描述 | Excel 表格化命令字典 |
| 覆盖模块 | 采集单元 + 液路/上样概述 | 液路单元 + 上样单元详细命令 |
| 帧类型 | 7种(相同) | 7种(相同) |
| 命令粒度 | 按大类描述 | 每条命令精确到字节 |
| 工作模式 | 6种模式描述 | 液路单元 16 种工作模式子命令 |
| 补充价值 | 协议整体框架、三重重传机制 | 完整命令-参数-返回值对照表 |
两文档互补:DOC 版建立协议框架,XLSX 版提供液路/上样单元的完整命令实现参考。
五、关键设计观察
- 双字节命令体系:命令号 + 子命令两级编码,单模块可容纳最多 256 × 256 = 65536 条命令,扩展性强
- 等长帧设计:所有指令等长,不足补零,简化解析逻辑,适合资源受限的下位机 MCU
- BCD 编码:帧号用 BCD 码(0x00-0x99),调试时数字直观可读
- 三重容错:命令帧 + 重发命令帧 + 重获结果帧,配合应答帧的错误码(校验和/超长/过短/不完整),构成完整的可靠性机制
- 复合动作指令:吸样/上样/清洗等命令封装了阀-泵联动的复合动作,降低上位机控制复杂度
- 压力同步机制:样品进样时,压力稳定后液路单元主动上发警告帧(0x05)通知上位机开始测量,实现硬件-软件流控协同