半导体EAP系统从0到1搭建实战(附Python代码)
前言
EAP(Equipment Automation Program,设备自动化程序)是半导体晶圆厂CIM系统的核心模块,负责MES与设备之间的通信与控制。很多工程师想学EAP,却不知道从何入手。本文从零开始,手把手教你搭建一个可用的EAP系统。
一、EAP在CIM架构中的位置
CIM(Computer Integrated Manufacturing)系统分为4层:
- Level 4:企业层(ERP/CRM/SCM)
- Level 3:制造执行层(MES/MCS/EAP)
- Level 2:过程控制层(APC/SPC/FDC)
- Level 1:设备层(Equipment/Tool)
EAP位于Level 3,是MES与设备的"翻译官"。设备说的是SECS/GEM语言,MES说的是业务语言,EAP负责翻译。
二、EAP核心功能
2.1 设备通信(SECS/GEM)
- S1F1/S1F2:心跳检测(Are You There)
- S2F41/S2F42:远程命令(Host Command)
- S5F1/S5F2:报警上报(Alarm Report)
- S6F11/S6F12:事件上报(Event Report)
2.2 状态机管理
- OFF-LINE → ON-LINE → LOCAL → REMOTE
- 状态转换必须符合SEMI E58标准
- 只有REMOTE状态才能接收Host命令
2.3 Recipe管理
- Recipe上传/下载
- Recipe参数校验
- Recipe版本管理
三、从0到1搭建EAP系统(Python实现)
3.1 项目结构
EAP_System/
├── secs_handler.py # SECS/GEM消息处理
├── equipment.py # 设备对象模型
├── state_machine.py # 状态机
├── recipe_manager.py # Recipe管理
├── mes_interface.py # MES接口
└── main.py # 主程序
3.2 核心代码实现(关键片段)
(完整代码已包含在下载包中,这里展示核心片段)
# ===== secs_handler.py =====
import socket
import struct
from enum import Enum
class SECSMessage:
"""SECS消息封装类"""
def __init__(self, stream, function, data=None):
self.stream = stream
self.function = function
self.data = data
def pack(self):
"""打包为字节流"""
# SECS-II 消息格式
header = struct.pack(">HB", self.stream, self.function)
if self.data:
return header + self.data
return header
class SECSHandler:
"""SECS/GEM处理器"""
def __init__(self, equipment_id):
self.equipment_id = equipment_id
self.state = "OFF-LINE"
self.socket = None
def connect(self, host, port=5000):
"""连接Host(MES)"""
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.connect((host, port))
self.state = "ON-LINE"
print(f"EAP连接到MES:{host}:{port}")
def send_s1f1(self):
"""发送S1F1:Are You There"""
msg = SECSMessage(1, 1)
self.socket.send(msg.pack())
print("发送S1F1心跳检测")
3.3 设备状态机实现
(完整状态机代码见下载包)
四、EAP与MES接口设计
4.1 REST API设计
MES通过REST API与EAP通信:
- POST /api/equipment/start # 开始加工
- POST /api/equipment/stop # 停止加工
- GET /api/equipment/status # 查询状态
- POST /api/recipe/upload # 上传Recipe
4.2 数据上报格式
EAP → MES 数据上报(JSON格式):
{
"equipment_id": "ETCH-001",
"timestamp": "2026-06-06T21:00:00",
"event": "PROCESS_START",
"params": {
"lot_id": "ABC123",
"recipe": "ETCH_P50"
}
}
五、实施建议
- 先用SECS/GEM模拟器测试(推荐CIMControlFramework)
- 连接真实设备前,务必在Offline模式下测试
- Recipe管理先实现基础的上传/下载,再迭代高级功能
- 状态机必须严格遵守SEMI E58标准
- 日志!日志!日志!重要的事情说三遍
---
�� 关注我,每天分享半导体智能制造干货!
�� 有问题?评论区留言,必回!
�� 我的CSDN资源(积分兑换,持续更新):
1. 《晶圆检查可视化工具》Python完整源码
2. 《简单标签管理系统》小工厂数据管理神器
3. 《SPC控制图分析工具》质量管理必备
4. 《MES系统设计文档模板》企业级模板
5. 更多CIM工具:SPC/OEE/SECS-GEM/FDC/MES/EAP/APC...
�� 访问主页下载:https://blog.csdn.net/yeflashzhihui
更多推荐


所有评论(0)