流式细胞仪通信协议版本演进(2017.08-10 三版对比)

来源:流式细胞仪项目整理 / 03软件电子协议 / 各个版本电子协议 覆盖版本:2017-08-14、2017-08-18、2017-10-10 三个草案版 最终定稿版见 流式细胞仪泵阀与上样单元通信协议-20171124版 关联:流式细胞仪液流系统设计流程详细-V2.0、流式细胞仪应用软件问题点汇总-2017测试迭代

一、协议总体框架(三版一致)

通信帧格式:【7B】【帧类型】【模块号】【命令号】【参数1】…【参数N】【校验和】【校验和】【7D】

  • 帧头 0xFA(即十进制 250,FRAME 首字节),帧尾【7D】
  • 除帧头帧尾外全部由数字组成,不含字母;所有指令等长,不足补零
  • 帧号 0x00-0x99,BCD 编码

帧类型:

类型值说明
命令帧0x01
重发命令帧0x02三版均标注”暂不写”
重获结果帧0x03三版均标注”暂不写”
命令应答帧0x04
命令结果帧0x05
数据帧0x06
警告信息帧0x07

模块拓扑:上位机 0x01、采集单元 0x02、泵阀单元 0x03、自动上样单元 0x04。每个下位模块的应答链固定为:命令应答帧(校验类应答)→ 命令结果帧(执行类应答)→ 数据帧(查询类才有)/ 警告信息帧。

命令应答错误码(三版一致):0x01 正确 / 0x02 校验和错误 / 0x03 指令超长 / 0x04 指令太短 / 0x05 指令不完整(无帧尾)/ 0x06 其它。

泵阀单元警告码:0x01 初始化/自检失败、0x02 上位机指令异常、0x03 液路清洗电机出错、0x04 忙、0x10 下位机指令异常。上样单元警告帧参数三版均为”根据情况定义”。

每条命令遵循”应答两级确认”模式:先回应答帧(语法层),再回结果帧(执行层),执行类命令无数据帧,查询类命令附带数据帧返回参数。

二、命令分区(三版结构一致)

每模块命令分五区:

  1. 基础:开机握手(opcode 0x00)、复位(0x01)、自检(0x02)
  2. 调试/单步(0x03 起):电磁阀 1-7 开关(含 1A/1B 双路)、鞘液泵/样品泵/空气泵/清洗泵/废液泵各档速度(调试/低/中/高)、上样机构 XYZ 轴归零与绝对坐标走位、走到孔位 XY、微孔板摇匀、清洗机构归零/下压、样品泵方向调节(1:IN, 0:OUT)、“含阀联动”版泵启动(鞘液泵含阀2阀3、样品泵含阀3,0x44-0x52)、转盘/单管机构走位(0x53-0x61)
  3. 参数配置:鞘液流/样品流调试值与低中高档设定(0-4096 ADC 值)、X/Y 轴第 1/最末孔位绝对坐标、XY 方向孔位数、转盘孔位坐标与孔位数
  4. 参数查询:软件版本、模块信息/状态、各流量档值回读、流量传感器、温度 1/2、浮子状态、电机当前坐标、转盘坐标等——全部走数据帧返回 0xXX 参数
  5. 工作模式:强制停止(0x00)、样品摇匀(0x01, 带摇匀时间参数)、样品上样(0x02, 样本位 x/y)、样品下样、开启/停止吸样(速度 2高1中0低)、试验间清洗、开机清洗(0x07)、月清洗(0x08)、排气泡(0x09)、转盘上样/下样(0x10/0x11)、单管上样/下样(0x12/0x13)

三、三版差异(演进轨迹)

日期变化
2017-08-14基线版。工作模式区清洗命令为”开关机清洗”(0x07) 合并命令
2017-08-18(a) “开关机清洗”拆分:0x07 改名”开机清洗”,新增 关机清洗 0x14;(b) 单管转动/提升机构走位两条命令的”无数据帧”标注缺漏
2017-10-10(a) 工作模式区新增 排堵 0x15、滤芯冲灌 0x16 两条液路维护命令;(b) 握手注记明确:96 孔微孔板参数 1 = 0x00(短针),32 孔转盘和单管模块 = 0x01(长针)——即加样针两种物理形态握手时区分;(c) 修复 0818 版的无数据帧标注缺漏

要点解读:

  • 短针/长针是本项目上样单元的核心硬件分叉:微孔板模式用短针、条架/单管转盘模式用长针,握手参数决定下位机运动限位与孔位坐标系选择。这一区分延续到 20171124 定稿版。
  • 排堵与滤芯冲灌在 10 月新增,说明该阶段液路堵塞/滤芯污染是实测中暴露的主要可靠性问题(与 流式细胞仪应用软件问题点汇总-2017测试迭代 中记录的液路问题相互印证)。
  • 协议从 0814 到 1124 定稿约 3.5 个月共 4+ 个版本,命令编号在拆分/新增后保持稳定,兼容性设计良好(新增只用空号)。

四、可复用经验

  • 等长补零 + BCD 帧号 + 两级应答,是嵌入式仪器串口协议的典型稳妥设计,可作为同类项目的模板。
  • 协议文档以 xlsx 单 sheet 维护、按日期存档多版本共存,版本 diff 直接对比单元格即可——比 Word 文档 diff 友好。