4、物料搬运系统(AMHS):OHT与AGV、Stocker管理、物料追踪与调度算法

大家好,我是老张。在晶圆厂干了十几年,今天咱们聊聊AMHS——物料搬运系统。

很多人觉得AMHS不就是个搬东西的系统吗?其实不然。你想想看,一座12英寸晶圆厂,每天有几万片晶圆在设备间流转。光靠人工搬运?那效率低不说,还容易出岔子。AMHS就是晶圆厂的“物流大动脉”。

我个人习惯把AMHS分成三块:搬运设备(OHT和AGV)、仓储系统(Stocker)、调度算法。咱们一个一个说。

4.1 OHT与AGV:空中与地面的配合

OHT(Overhead Hoist Transport),说白了就是空中走行式搬运车。它挂在厂房屋顶的轨道上跑,一次能吊一个FOUP(晶圆盒)。

OHT的优势很明显:不占地面空间,路径固定,速度快。我在项目中遇到过一个问题——OHT的轨道布局如果设计不好,很容易造成拥堵。尤其是交叉路口,车一多就堵死了。

我的经验:OHT轨道尽量设计成环形,减少交叉点。如果必须交叉,用“立体交叉”的方式,让一条轨道从另一条上面跨过去。

AGV(Automated Guided Vehicle)是地面跑的自动导引车。它灵活,路径可以随时改。但缺点也明显——速度慢,还容易跟人抢道。

我建议这样搭配:

  • 长距离、高频率的搬运:用OHT。比如从光刻区到刻蚀区,距离远,车次多。
  • 短距离、灵活调度:用AGV。比如同一区域内,设备间的短驳。
  • 特殊场景:有些工厂用AGV搬运光罩盒(RSP),因为光罩盒小,OHT反而不方便。

嗯,这里要注意:OHT和AGV的调度系统最好统一。我见过有的厂OHT用一套系统,AGV用另一套,结果两套系统互相打架,物料在交接点等半天。

4.2 Stocker:晶圆厂的“临时仓库”

Stocker就是仓储系统。晶圆在设备间流转时,不可能到了就立刻加工,总得有个地方暂存。Stocker就是干这个的。

Stocker分两种:

类型 位置 容量 用途
Bay Stocker 每个生产区域(Bay)内 几百个FOUP 暂存本区域的晶圆
Interbay Stocker 区域之间 上千个FOUP 跨区域转运的中转站

Stocker的管理,说白了就是“先进先出”和“就近存放”。但实际没那么简单。

我曾经踩过一个坑:Stocker的货位分配算法没写好,结果热门产品都堆在同一个货架上,OHT取货时全堵在那一个口。后来我改了算法,把热门产品分散到不同货架,拥堵问题才解决。

避坑指南:Stocker的货位分配要考虑“热区”和“冷区”。经常被取用的晶圆放在靠近出入口的位置,不常用的放远一点。别一股脑全塞进去。

4.3 物料追踪:每一片晶圆的“身份证”

物料追踪,就是知道每一片晶圆在哪儿、在干什么。晶圆厂里每片晶圆都有一个唯一的ID,从进厂到出厂,全程记录。

追踪系统一般用RFID标签条形码。我个人更推荐RFID,因为可以批量读取,不用一片一片扫。

物料追踪的核心数据包括:

  • 位置信息:在哪个Stocker、哪台设备、哪个工位。
  • 状态信息:等待加工、正在加工、已完成、待检验。
  • 历史记录:去过哪些设备、停留了多久、有没有异常。

这里有个细节:物料追踪系统要和MES(制造执行系统)实时同步。我见过一个案例,MES显示晶圆在A设备,但实际已经被OHT搬走了。结果操作员找了半天,发现晶圆早就在B设备上加工完了。这种“数据滞后”很要命。

4.4 调度算法:让系统“聪明”起来

调度算法是AMHS的大脑。没有好的算法,OHT和AGV就是一群无头苍蝇。

常用的调度算法有几种:

  • 最短路径优先:谁离得近谁先搬。简单,但容易造成局部拥堵。
  • 最早截止时间优先:哪个任务最急先搬哪个。适合有交期要求的产品。
  • 动态优先级调度:根据设备负载、物料紧急程度动态调整优先级。这个最实用。

我给大家看一段伪代码,是我以前项目里用过的调度逻辑:

// 动态优先级调度算法(简化版)
function scheduleTask(taskList) {
    // 1. 计算每个任务的紧急度
    for (task in taskList) {
        task.urgency = task.deadline - currentTime;
        task.priority = task.urgency * 0.6 + task.waitTime * 0.4;
    }
    
    // 2. 按优先级排序
    taskList.sort(byPriority);
    
    // 3. 分配车辆
    for (task in taskList) {
        vehicle = findNearestIdleVehicle(task.startPoint);
        if (vehicle != null) {
            assignTask(vehicle, task);
        } else {
            // 没有空闲车辆,加入等待队列
            waitQueue.add(task);
        }
    }
}

这段代码看着简单,实际跑起来要考虑很多因素。比如车辆电量、路径拥堵情况、设备是否空闲等等。

核心要点:调度算法不是越复杂越好。我见过有人用神经网络做调度,结果训练时间比运行时间还长。实用为主,别炫技。

4.5 我的总结

AMHS这东西,说白了就是三个字:搬、存、管

  • :OHT和AGV配合好,别打架。
  • :Stocker的货位分配要合理,别堵死。
  • :物料追踪要实时,调度算法要实用。

最后说一句:AMHS的瓶颈往往不在设备本身,而在软件。硬件坏了可以换,软件逻辑错了,整个系统都得瘫痪。所以,写代码的时候多想想边界情况,别光顾着跑通。

AMHS物料搬运系统架构 调度算法(大脑) OHT(空中走行式) AGV(地面自动导引) Bay Stocker(区域仓储) Interbay Stocker(跨区仓储) 物料追踪(RFID/条码) 设备接口层(MES/设备通信) 图:AMHS系统分层架构,从上到下依次为调度层、搬运层、仓储层、追踪层、执行层 软件层 → 硬件层 → 数据层

好了,这一章就到这儿。AMHS是个大话题,后面讲到具体设备时咱们再细聊。

专注资料整理