4. 生产状态建模基础

在半导体MES中,设备派工与生产状态联动的核心前提是:系统必须对“谁在什么位置、处于什么状态、能不能被派工”有一致、可计算、可追溯的表达。设备、批次、工序、物料、载具这五类对象并不是孤立存在的,它们通过工单、工艺流程、派工规则和状态机相互约束。如果状态定义不统一,派工引擎就会出现“设备空闲但不可用”“批次可跑但物料未齐套”“载具被占用却仍被分配”等冲突。因此,本节先建立五类对象的状态模型,再说明它们在MES中的表达方式。

一、五类对象的状态语义

设备状态描述机台当前是否具备加工能力。半导体MES中常见的设备状态包括:Idle(空闲可派工)、Run(运行中)、Setup(换型/换配方)、PM(预防性维护)、Down(故障停机)、Engineering(工程占用)、Offline(离线)。其中只有Idle通常可直接参与自动派工;Setup、PM、Engineering需要按规则判断是否可抢占或排队;Down和Offline必须从可派工集合中排除。设备状态一般由设备联机信号、操作员报工、EAP事件或MES手动状态变更共同驱动。

批次状态描述一批晶圆在生命周期中的位置。典型状态包括:Created(已创建未释放)、Released(已释放可派工)、InProcess(加工中)、Hold(暂停)、Waiting(等待下一站)、Completed(完工)、Scrapped(报废)。批次状态决定它是否进入派工候选池:Released和Waiting可派工,InProcess不可重复派工,Hold必须经解Hold后才能继续。

工序状态描述批次在某一具体工序步骤上的执行状态。常见表达为:Pending(待加工)、Dispatched(已派工未开工)、Started(已开工)、Completed(已完成)、Skipped(跳过)。工序状态与批次状态是“局部与整体”的关系:一个批次可能整体为InProcess,但其当前工序为Started,下一工序仍为Pending。

物料状态描述子物料、化学品、靶材、光刻胶等是否满足该工序的消耗要求。关键状态包括:Available(可用)、Reserved(已预留)、Consumed(已消耗)、Expired(过期)、Quarantine(隔离)。物料状态直接影响派工可行性:若某工序需要特定物料且物料为Expired或Quarantine,则即使设备Idle、批次Released,也不能派工。

载具状态描述FOUP、Cassette、Reticle Pod等载具的占用与可用情况。常见状态为:Empty(空载)、Loaded(已装载批次)、Reserved(已预留)、InUse(使用中)、Maintenance(维护中)。载具状态与批次状态强耦合:Loaded载具不能同时分配给另一批次,Reserved载具在派工时需要校验其绑定关系。

状态建模的核心原则:每个对象的状态集合必须互斥且完备;状态迁移必须有明确触发事件和守卫条件;跨对象状态必须通过外键或关联表建立可校验的约束,而不是仅靠界面提示。

二、MES中的表达方式

在MES数据模型中,五类状态通常不以单一字段表达,而是采用“主状态字段 + 状态历史表 + 关联关系表”的组合方式。以设备为例,EQP_STATUS表保存当前状态码、状态开始时间、状态来源;EQP_STATUS_HIST保存每次迁移的时间戳、旧状态、新状态、操作人或事件源。批次状态则通过LOT主表保存当前状态,通过LOT_STATUS_HIST记录迁移轨迹。工序状态通常落在LOT_STEP或WIP_STEP表中,按“批次+工序序号”唯一标识。

物料和载具的状态表达更强调关联约束。物料通过MATERIAL_INSTANCE表记录批次号、物料编码、有效期、状态;载具通过CARRIER表记录载具ID、当前绑定批次、状态、位置。派工引擎在计算候选设备时,需要同时查询这五类状态,并执行联合过滤。下面用一个简化的状态联动关系图说明五类对象在派工判断中的连接方式。

五类对象状态在MES派工判断中的联动关系 设备状态 EQP_STATUS Idle / Run / Setup / PM Down / Engineering / Offline 可派工集合:Idle 需校验:Recipe、Chamber、PM Due 批次状态 LOT_STATUS Created / Released / InProcess Hold / Waiting / Completed 可派工集合:Released、Waiting 需校验:Hold、Priority、Q-Time 工序状态 STEP_STATUS Pending / Dispatched Started / Completed / Skipped 可派工集合:Pending 需校验:前序工序完成、工艺版本 物料状态 MATERIAL_STATUS Available / Reserved / Consumed Expired / Quarantine 可派工集合:Available、Reserved 需校验:有效期、批次绑定、MSD 载具状态 CARRIER_STATUS Empty / Loaded / Reserved InUse / Maintenance 可派工集合:Empty、Reserved 需校验:绑定批次、载具类型、位置 派工引擎联合过滤 五类状态同时满足才生成派工候选 设备-批次 批次-工序 物料齐套校验 载具绑定 状态迁移触发源: EAP事件 / 操作员报工 / 规则定时器 状态历史表: EQP_STATUS_HIST / LOT_STATUS_HIST

三、状态迁移与派工约束的落地方式

状态建模不能只停留在字典定义,必须落到迁移规则和派工约束上。以设备状态为例,一条可执行的迁移规则可以表达为:当EAP上报EQP_DOWN事件时,若当前状态为Run,则迁移到Down,并记录停机原因码;若当前状态为Idle,则直接迁移到Down。迁移完成后,派工引擎在下一轮计算中自动将该设备从候选集合移除。批次状态迁移同理:当操作员执行Hold时,批次从InProcess或Waiting迁移到Hold,同时释放其占用的载具预留;解Hold时需校验Hold原因是否已关闭,再迁移回Waiting。

在派工约束层面,建议将五类状态联合判断写成可配置的规则表达式,而不是硬编码在派工逻辑中。例如:

DISPATCH_CANDIDATE =
  EQP.STATUS == 'Idle'
  AND LOT.STATUS IN ('Released','Waiting')
  AND STEP.STATUS == 'Pending'
  AND MATERIAL.STATUS IN ('Available','Reserved')
  AND CARRIER.STATUS IN ('Empty','Reserved')
  AND EQP.RECIPE == STEP.RECIPE
  AND LOT.QTIME_REMAIN > 0

这条表达式的意义在于:它把五类对象的状态约束显式化,便于排障时逐项检查。例如某批次迟迟不派工,可以按顺序检查设备是否Idle、批次是否Hold、工序是否Pending、物料是否过期、载具是否被占用。每一类状态在MES中都有对应的查询表和界面,排障路径清晰。

建模建议:状态码使用短字符串或整型枚举,避免中文描述直接入库;状态迁移必须记录时间戳、来源系统和操作人;跨对象约束优先通过数据库外键或校验服务实现,而不是仅靠前端提示。对于Q-Time、PM Due、物料有效期等时间敏感状态,建议在MES中设置定时扫描任务,提前触发预警或自动Hold。

四、一个简化的状态联动示例

假设某炉管设备当前为Idle,批次LOT-A为Released,当前工序为氧化工序且状态Pending,所需物料为Available,载具FOUP-01为Empty。此时派工引擎生成候选并下发派工指令。派工后,设备状态迁移为Setup,批次状态迁移为InProcess,工序状态迁移为Dispatched,载具状态迁移为Loaded并绑定LOT-A,物料状态迁移为Reserved。若此时EAP上报设备故障,设备迁移为Down,MES应自动将批次迁移为Hold,工序回退为Pending,载具释放为Empty,物料释放为Available。这一组联动迁移是否完整,直接决定MES能否在异常后快速恢复派工秩序。

因此,五类状态建模的最终检验标准不是状态字典有多全,而是:当任一对象状态发生变化时,其他对象能否按预定义规则同步迁移,派工引擎能否在下一轮计算中得到正确候选集。只有做到这一点,设备派工与生产状态联动才具备可落地的数据基础。