同一个“空气”信号,两种完全不同的工程含义
当仪器从Modbus寄存器读到 air=true 时,很多人会顺手把这个位当成故障结论。这个捷径不安全。这个位只说明传感器适配器观察到了什么,并没有告诉你这次事件究竟是预充阶段本来就该出现的,还是源头空了、吸入侧漏了、旧帧重放,或者管路配置错误导致读数失效。
![]()
本文给出一个不依赖第三方库的小型Python模式,用来把“观察到的原始值”和“工程判断”明确分开。核心不是再解析一个位,而是让控制器拿到一份证据契约,而不是一个被解码出来的孤立布尔值。
两个事件,原始值一模一样
考虑两个包含相同原始值的事件:
- 第一个发生在试剂切换后120毫秒,泵正在执行经过验证的预充配方,界面持续80毫秒。
- 第二个发生在从试剂瓶正向吸液期间,持续900毫秒,阀路没有变化。
原始观察完全相同,但工程含义完全不同。因此控制器需要的是证据契约,而不只是一个解码位。契约至少应当携带:样本时间戳和单调序列号;通信、帧和传感器就绪状态;配置身份和管路设置验证;工艺阶段以及进入该阶段后的时间;泵状态、方向和阀路;观察到的流体状态和事件持续时间。
AI层可以帮助生成协议适配器、分析日志或解释结果,但最终的状态转移必须保持确定性和可测试性。
六种判定,故意不写“检测到空气就急停”
参考实现返回六种判定之一。值得注意的恰恰是它刻意缺失的部分:没有 air_detected == emergency_stop 这条规则。也就是说,系统不会因为一个空气位被置起就直接触发急停。
评估器首先拒绝过期、畸形或重放的观测,然后才进入物理上下文推理。具体顺序是:如果通信不正常、帧无效、传感器未就绪、样本年龄小于0或超过策略允许的最大样本年龄,或者序列号无效,就返回 COMMUNICATION_INVALID,并给出“通信、帧、就绪、时间戳或序列证据无效”的说明,动作建议为 SAFE_HOLD。
这个顺序防止了AI代理的一种常见失败模式:自信地解释一个本不该进入决策路径的数字。先卡数据有效性,再谈工艺解释,是整段逻辑的关键。
配置、管路和残留证据先于工艺阶段判断
第二道门检查配置身份、管路设置和残留证据。如果配置修订号与期望配置修订号不一致,或者管路设置未经验证,或者存在残留嫌疑,就返回 SENSOR_SETUP_SUSPECT,说明“配置、管路设置或残留证据使解释无效”,动作建议为 PAUSE_AND_INSPECT_SETUP。
只有通过验证的观测,才会进入工艺阶段规则。这意味着即使空气信号本身看起来真实,只要配置或管路证据不干净,系统也不会继续往下解释。
预期界面与可能的进气要分开处理
空气事件在预充、试剂切换或冲洗阶段可能是预期的,但前提是它落在经过验证的时间窗口内,并且事件持续时间低于经过验证的阈值。判断逻辑会先确认当前阶段是否属于 PRIMING、REAGENT_SWITCH 或相关预期阶段,再结合窗口和持续时间做结论。
这样,一个短暂且处于预期阶段的空气界面不会被误判为进气故障;而一个持续时间过长、或者出现在非预期阶段的空气事件,则会被单独标记出来。原始位相同,但证据链不同,最终判定也不同。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.