Lunatic 自动化交付:验证、速查、示例与清单

系列指南 · 第 6 篇

Lunatic 自动化交付:验证、速查、示例与清单

Lunatic 脚本写完,离交付还差几步:进自动化产线之前,要先用真实样品分四轮做湿跑验证;现场出问题时,要能从一串负数状态码里快速看出原因;机柜布置、工作台开孔、机械臂路径规划,要按官方图纸的精确尺寸来。

先认识几个名词

交付前要过的五道关

自动化整合的验收按下面的顺序走。每一步验证的对象不同,前一步通过了再接下一步,问题就会在离源头最近的地方暴露,交付前就能处理掉。

湿跑验证:由简到繁跑四轮

这四轮覆盖了整条链路里最容易出问题的几个环节。前三轮各跑一块板,第四轮连续跑多块。建议按顺序跑,每轮验证通过之后再进入下一轮。这样一旦出现异常,问题范围比较容易锁定。

轮 / 用途 / 关注点

1:用途 空板自检;关注点 不加样品,让机械臂搬一块空 Lunatic Plate 进出几次。看机械臂能否每次精准入位、条码能否每次读到、托盘机械动作有无卡顿。

2:用途 已知浓度标定板;关注点 用 BSA、IgG 等标准品配 3 个浓度梯度,每浓度 4 复孔。再加 4 个 PBS 空白,共 16 孔。比对测出来的浓度和标定值的偏差,确认仪器、应用、字符串字段、E1% 都对得上。

3:用途 真实样品单板;关注点 实际项目要测的样品,先单独跑一板。人工对照 Lunatic & Stunner Client 直接测出来的结果,确认 API 和 Client 给的数据一致。两边数据应当对得上;不一致时优先查实验定义里的字段(application_name、blanking_information、列号映射)是否对得齐。

4:用途 连续多板;关注点 让机械臂连续搬 5–10 块加好样的 Lunatic Plate,中间不人工干预。看 DQ_Get_Status 轮询是否稳定、DQ_Get_Results 一次取走是否成功、.bin 文件是否每块都正确写到共享目录。

几条排查经验:第 2 轮浓度偏差,先查实验定义里的 application_name 和样品定义里的 E1% 列。第 3 轮和 Client 数据不一致,常见原因是 blanking_information 模式或 sample group 列号映射错。第 4 轮偶发失败,通常是轮询频率太快,或网络共享在多板连测时被反复读写,出现间歇性失败。

状态码速查表

湿跑过程中如果出问题,Lunatic 不会弹任何对话框,所有信息都通过命令的整数状态码反馈出来。脚本拿到状态码后自己判断怎么处理。约定:0 是成功,正数是状态信息(不是错),负数是错误。下表把全部状态码按数值排好,现场出问题时直接对照查。

代码:含义

正数:状态信息

999:Lunatic & Stunner Client 已接受退出

52:已连接,托盘正在移动

51:已连接,托盘已关闭

50:已连接,托盘已打开

33:已连接,测量已暂停

32:已连接,等待加载下一块 Lunatic Plate

31:已连接,测量进行中

30:已连接,测量正在初始化

25:已连接,测量成功

23:已连接,测量已启动

21:已连接,无测量任务

20:访问权空闲

4:托盘本来就是关着的

3:托盘本来就是开着的

1:已持有访问权

0:成功

0:命令执行成功

负数:错误(脚本必须处理)

−1:无访问权

−2:仪器状态不对(常因前一动作未完成)

−3:打不开托盘

−4:关不上托盘

−5:托盘位置不对

−9:解析实验定义出错

−10:解析样品定义出错

−11 / −12:找不到 pump profile

−13:未定义样品

−14:托盘开位超时

−15:条码无效

−16:没有条码扫描器

−17:条码扫描器超时

−22:测量初始化失败

−24:测量失败

−26:测量失败:chip ID 未知

−31:测量进行中,命令无法执行

−52:托盘移动中,命令无法执行

−61:存空白:空白实验来自其他仪器

−62:存空白:空白实验超过 100 天

−63:存空白:仪器在空白测量后做过校准

−64:存空白:找不到可复现的空白

−65:存空白:找不到文件

−66:存空白:按列指定的 sample group 名错误

−67:存空白:按名称指定的 sample group 错误

−68:存空白:存在多个 sample group,需明确指定

−99:超时

−100:访问被本地操作中断

−102:Lunatic Plate ID 无效

−103:Lunatic Plate ID 已经测过

−104:必须等所有 Lunatic Plate 测完才能取结果

−106:仪器里没有板

−111:仪器状态不对

−120:自动化 License 未激活

负数:DropQuant_Remote.dll / 通信内部错(可调 DQ_GetLastInternalError)

−200:TCP 连不上

−201:DLL 内部错:无法把返回字符串转成期望参数

−202:DLL 内部错:无法把状态码转成整数

负数:命令 / 参数 / 板型 / 应用层

−300:未知命令

−400:参数不全

−401:作为参数的文件找不到或读不到

−500:未明确错误

−901:仪器上未安装该应用

−902:实验定义里 plate type 不识别

−903:plate type 不能用于该应用

−904:plate type 不能用于该仪器

−905:应用加载失败

−906:该板需要更新光程文件

常见错误码怎么应对

日常生产里高频出现的状态码只有少数几个,下面是它们的常见原因和处理思路。

### 建议:状态码集中到一个函数里处理

生产脚本里推荐写一个统一的函数,处理所有返回的状态码。不必在每条命令调完之后各自写一份 if-else。0 和正数照常往下走;负数的应对动作分成四种:

- 能自动重试就重试。

- 不行就降级用备选方案(比如条码读不到就改用明确的 plate_ID)。

- 再不行就停产线。

- 最严重的报警让人介入。

函数的写法见命令篇「出错了怎么定位」一节。

仪器外形尺寸

工作台开孔、机柜布置、机械臂路径规划,要用到下面几组官方尺寸。第 2 篇讲过基本规格,这里集中列出,便于对照。

维度:数值

宽(Appendix 3):373.60 mm

深 · 托盘关闭(Appendix 3):461.70 mm

深 · 托盘开启板伸出(Appendix 3):623.46 mm

高(Appendix 3):328.60 mm

两销孔左右间距(Figure 7):200 mm

Lunatic Plate 底面到工作台参考面(Manual §2.4):145.60 mm

板托厚度(Figure 7 侧视):5 mm

机械臂路径要注意两件事。一是托盘打开后会从机身正面伸出约 162 mm(623.46 − 461.70 mm),这段空间要保持留空。机械臂从板的正上方垂直下放,不能沿托盘伸出方向斜插。二是 Lunatic 顶部有进气口,做堆叠或加防尘罩之前要参照仪器手册,留足散热空间。

Lunatic API Manual Appendix 3(正面)。仪器正面外形,宽 373.60 mm。

Lunatic API Manual Appendix 3(侧面)。仪器侧面外形:深度托盘关闭 461.70 mm、开启时板伸出后 623.46 mm,高 328.60 mm。

Lunatic API Manual Figure 7(底视)。Lunatic 底面两个 12 mm 销孔,配同径的 12m6 销作粗对位,两销左右间距 200 mm。托盘开启时 Lunatic Plate 中心:X 方向距销 1 为 60.41 mm、距销 2 为 139.59 mm;Y 方向距两销连线 428.08 mm。

Lunatic Plate 尺寸

Lunatic Plate 的外框尺寸和 96 个孔的位置都遵循 SBS 标准(A1–H12 命名、9 mm 间距)。机械臂的抓取参数和孔位坐标都能直接套用 SBS 96 板设置。物理结构上,96 个孔分布在 6 条可拆装的 strip 上,每条 16 个孔。孔的形状是 Lunatic 特有的漏斗 + meander 设计。但从脚本和机械臂的角度看,孔位与普通 SBS 96 板完全一致。

Lunatic 还有一个 High Lunatic Plate 版本,光程更短,适合高浓度样品。外形和 Lunatic Plate 完全互换,实验定义里 dropplate_type="High Lunatic Plate" 就能切换。

Lunatic API Manual Appendix 4(上半部分)。Lunatic Plate 完整工程图:俯视 85.48 × 127.76 mm + Section A-A 侧面截面 + 背面安装孔位。

Lunatic API Manual Appendix 4(下半部分)。Detail E 放大 A1 角附近的 strip + alignment mark 布局;Section B-B 板的总高 11.54 mm = Frame 10 mm + Strip 1.54 mm。

合规材料(IQ-OQ-PV)

受 GMP / NMPA / FDA 监管的客户做自动化验收时,除了上面的湿跑,还要做合规文档。合规文档分 IQ / OQ / PV 三个阶段。这部分跟 API 集成是两套独立的工作,但通常一起交付。

Lunatic IQ/OQ/PV 文档:Unchained Labs 官方提供 Lunatic IQ/OQ/PV 与 21 CFR Part 11 IQ/OQ 文档。文档涵盖三阶段验证协议,以及 21 CFR Part 11 电子签名/审计追踪合规材料。GMP 项目验收时一并交付即可。中国团队可以协助提供这份文档。

在自动化集成项目里,PV 通常作为独立的合规验证流程单独维护,不混在日常生产脚本里。一般由 QA 团队按周期手动触发,比如每月或每季度。也可以由调度系统在预留的合规时间段里自动触发。

端到端示例:一段完整的 C# 脚本

下面这段 C# 代码来自 Lunatic API Manual Appendix 1,做了少量注释和缩进调整。代码展示一次"两个 sample group、8 个孔的实验"从建立连接到取结果的完整流程。

这段代码值得留意的几个工程细节:

以这段代码为模板,替换 IP、端口和三段字符串,就可以开始写自己的第一个 Lunatic 自动化脚本。

交付清单

验收完成之后,系统通常由客户接手维护。建议在交付时把下面这份清单一并留给客户。半年甚至一年后再去排查问题,要查的资料应该都能在这一份里找到。