设备软件所说的实时,不是单纯“平均很快”,而是在规定截止时间内给出可预测响应。毫秒级运动触发、秒级模块动作和分钟级 Recipe 任务的时间尺度不同,必须采用不同控制策略。
1. 先给实时性分级
安全急停和高速伺服通常由专用硬件、驱动器或实时控制器负责;上位机适合流程协调、界面和数据处理。把所有控制都塞进通用操作系统进程,容易受垃圾回收、调度和 I/O 抖动影响。
需求应写成最大延迟、抖动和超时后的安全行为,而不是“尽快”。只有定义截止时间,才能决定功能应放在哪一层。
2. 并发围绕资源组织
线程多不等于吞吐高。相机、机械手、腔体和数据库都有容量与互斥约束。推荐用消息、任务队列或 Actor 式所有权,让一个状态由一个明确主体修改,减少共享可变状态。
无法避免锁时,要固定加锁顺序、缩短临界区,并把外部 I/O 移出锁。超时不能直接释放仍在被硬件使用的资源。
3. 超时只是“我不再等了”
网络请求超时后,对方可能已经执行;运动等待超时后,轴也可能仍在移动。调用方必须通过查询、幂等键或事务状态消除不确定性,不能立刻重发物理动作。
重试适合短暂通信故障,不适合所有失败。限位、校验不通过和安全联锁属于确定性错误,盲目重试只会延迟诊断。
4. 恢复从检查点开始
任务应在晶圆交接、工艺开始和结果提交等关键点持久化状态。崩溃后先盘点硬件与晶圆,再将持久状态和现场事实对账。无法确认是否加工过的晶圆要进入隔离流程。
恢复策略通常分为自动重试、受控回退、人工确认和报废/隔离。选择依据是动作可逆性、重复执行风险与产品价值。
5. 用故障注入验证
拔网线、延迟响应、丢帧、重启进程和模拟传感器异常,比只跑正常用例更能发现竞态。测试要检查最终物理状态、数据唯一性和恢复时间,而不只看程序有没有抛异常。
总结
实时性保证截止时间,并发提升资源利用率,恢复处理不可避免的不确定性。三者需要统一的状态、资源和幂等语义,否则“异步化”只会让错误更难复现。