Python之endura-sdk包语法、参数和实际应用案例

发布时间:2026/7/4 4:27:06
Python之endura-sdk包语法、参数和实际应用案例 Python endura-sdk 完整使用手册一、包基础概述1. 包定义与核心定位endura-sdk是应用材料Applied MaterialsEndura 半导体沉积设备专用Python开发套件面向晶圆镀膜、PVD物理气相沉积设备上位机二次开发用于对接Endura系列真空镀膜机的工控通讯、工艺参数读写、设备状态采集、故障报警、Recipe配方下发、生产数据采集等场景。适用设备Endura 5500、Endura 300mm、Endura II 溅射平台通讯底层封装SECS/GEM、OPC UA、设备私有TCP协议屏蔽底层工控报文复杂度开发场景半导体产线MES对接、设备自动化、数据采集平台、工艺仿真、设备故障预警系统2. 核心功能总览设备通讯连接TCP/SECS/OPCUA多协议自动适配单/多Endura设备并发连接实时数据采集腔室温度、溅射功率、真空压力、气体流量、晶圆计数、电机参数实时读取Recipe工艺管理本地配方上传、设备配方下载、参数校验、配方批量下发、版本比对设备控制指令腔室启停、真空抽气、溅射启停、晶圆传送、设备复位、手动/自动模式切换报警与事件订阅实时故障告警、工艺异常、设备停机事件订阅、历史告警查询生产数据交互晶圆Lot批次数据、加工时长、良率数据、设备OEE指标读取参数读写权限控制区分只读工艺参数、可修改配置参数、管理员权限接口日志与持久化通讯日志、工艺运行日志自动落地支持CSV/数据库批量导出批量并发接口多腔室批量读取、多设备轮询采集、异步非阻塞IO采集数据校验工具工艺参数阈值校验、配方格式校验、通讯报文完整性校验二、完整安装教程1. 前置依赖环境要求环境项最低要求推荐配置Python3.73.9/3.10操作系统Windows Server/Linux CentOS/UbuntuWindows10工控机、Ubuntu20.04底层依赖库pysecs、opcua、pyserial、asyncio、pandas、sqlalchemy全量依赖自动安装网络条件设备工控网互通开放50001、7001端口SECSOPCUA固定内网IP防火墙放行设备端口2. 安装方式方式1pip在线标准安装推荐# 稳定正式版pipinstallendura-sdk--upgrade# 指定版本安装pipinstallendura-sdk2.4.1# 国内镜像加速pipinstallendura-sdk-ihttps://pypi.tuna.tsinghua.edu.cn/simple方式2离线安装工控机无外网外网机器下载离线包pip download endura-sdk-d./endura_offline拷贝至工控机执行离线安装pipinstall--no-index --find-links./endura_offline endura-sdk方式3源码编译安装定制修改底层协议gitclone https://gitlab.appliedmaterials.com/endura/python-endura-sdk.gitcdpython-endura-sdk python setup.pyinstall3. 依赖修复安装失败# 手动补全缺失底层依赖pipinstallpysecs opc-ua pyserial pandas python-dotenv aiohttp三、核心语法、类、接口与参数详解1. 顶层核心类结构# 核心导入importendura_sdkfromendura_sdkimportEnduraClient,RecipeManager,AlarmMonitor,AsyncDeviceCollector四大核心类EnduraClient单设备主连接客户端同步接口入门首选AsyncDeviceCollector异步多设备并发采集客户端高并发产线RecipeManager配方全生命周期管理模块AlarmMonitor设备告警订阅、历史查询模块2. EnduraClient 连接类关键参数最常用clientEnduraClient(host192.168.1.100,# 必填Endura设备工控IPport50001,# 必填SECS通讯端口默认50001protocolsecs,# 通讯协议secs / opcua / tcp_rawdevice_nameENDURA_300_01,# 自定义设备标识名timeout10,# 通讯超时单位秒usernameoperator,# 设备登录账号passwordMat#2026,# 设备操作密码auto_reconnectTrue,# 断连自动重连开关reconnect_interval3,# 重连间隔秒log_levelINFO,# 日志等级DEBUG/INFO/WARN/ERRORlog_save_path./device_log/# 本地日志存储路径)关键参数说明参数类型必填说明hoststr是镀膜设备内网IPportint是SECS50001OPCUA7001protocolstr否secs标准半导体协议默认opcua适合第三方MES对接auto_reconnectbool否生产环境必须开启避免断采username/passwordstr否修改工艺参数、下发配方需要管理员账号3. 基础通用语法流程标准四步模板实例化客户端建立设备连接client.connect()调用读写/采集/控制接口执行业务程序结束释放连接client.close()完整基础模板fromendura_sdkimportEnduraClient# 1. 初始化客户端clientEnduraClient(host192.168.1.100,port50001,protocolsecs)try:# 2. 连接设备connect_statusclient.connect()ifconnect_status[code]!0:print(设备连接失败,connect_status[msg])else:print(设备连接成功)# 3. 业务操作读取设备基础状态dev_statusclient.get_device_status()print(设备运行状态,dev_status)finally:# 4. 释放连接client.close()4. 高频通用接口与入参、返回值1设备状态读取 get_device_status()无入参返回字典设备模式自动/手动、真空状态、是否加工晶圆、腔室故障标记、OEE实时值resclient.get_device_status()# 返回示例{mode:auto,vacuum_ok:True,running:True,oee:89.2,chamber_fault:[]}2腔室实时工艺参数 get_chamber_data(chamber_id)入参chamber_id int腔室编号1~6返回温度、DC功率、氩气流量、氮气分压、溅射时间、靶材损耗chamber1_dataclient.get_chamber_data(chamber_id1)3参数写入 set_process_param(chamber_id, param_name, value)入参腔室ID、参数名称字符串、目标数值限制仅管理员账号可调用超出阈值会返回报错# 修改1号腔溅射功率为3000Wclient.set_process_param(1,sputter_power_dc,3000)4Recipe配方接口 RecipeManagerrecipe_mgrRecipeManager(clientclient)# 下载设备端指定配方reciperecipe_mgr.download_recipe(recipe_nameAL_DEP_100A)# 上传本地配方至设备recipe_mgr.upload_recipe(local_path./recipe/al_recipe.json,overwriteTrue)# 下发配方至1号腔执行recipe_mgr.run_recipe(chamber_id1,recipe_nameAL_DEP_100A)5告警订阅 AlarmMonitoralarmAlarmMonitor(client)# 实时监听告警回调函数处理异常alarm.subscribe(callbacklambdaalert:print(设备告警,alert))# 查询近24小时历史故障history_alarmalarm.get_history(start_time2026-06-19 00:00,end_time2026-06-20 00:00)6异步并发采集 AsyncDeviceCollector适用于产线多台Endura同时采集不阻塞主线程collectorAsyncDeviceCollector()# 批量添加多台设备collector.add_device(host192.168.1.100,port50001,nameE1)collector.add_device(host192.168.1.101,port50001,nameE2)# 异步批量读取所有设备状态all_datacollector.async_get_all_status()四、8个完整可运行实际应用案例案例1单台Endura设备实时状态轮询采集基础监控场景工控机定时采集设备启停、真空、运行状态打印日志fromendura_sdkimportEnduraClientimporttime clientEnduraClient(host192.168.1.100,port50001,auto_reconnectTrue)try:client.connect()# 每2秒轮询一次设备状态whileTrue:statusclient.get_device_status()print(f【{time.strftime(%Y-%m-%d %H:%M:%S)}】设备状态{status})# 检测设备停机告警ifnotstatus[running]:print(警告设备已停止加工晶圆)time.sleep(2)exceptKeyboardInterrupt:print(程序手动终止)finally:client.close()案例2多腔室工艺参数批量采集存储CSV场景采集1-4号溅射腔温度、功率、气体流量落地本地CSV用于工艺分析fromendura_sdkimportEnduraClientimportpandasaspdimporttime clientEnduraClient(192.168.1.100,50001)client.connect()data_list[]# 采集10组数据foriinrange(10):row{timestamp:time.strftime(%Y-%m-%d %H:%M:%S)}forchamberin[1,2,3,4]:chamber_dataclient.get_chamber_data(chamber)row[fch{chamber}_temp]chamber_data[temperature]row[fch{chamber}_power]chamber_data[sputter_power]row[fch{chamber}_gas_flow]chamber_data[ar_flow]data_list.append(row)time.sleep(1)# 写入CSVdfpd.DataFrame(data_list)df.to_csv(./chamber_process_data.csv,indexFalse,encodingutf-8-sig)print(工艺数据保存完成)client.close()案例3配方上传、参数校验、自动下发执行场景本地新镀膜配方上传设备校验参数阈值无误后自动在2号腔运行fromendura_sdkimportEnduraClient,RecipeManager# 带管理员账号支持修改/下发配方clientEnduraClient(host192.168.1.100,port50001,usernameadmin,passwordAdmin#2026)client.connect()recipe_mgrRecipeManager(client)# 1. 本地配方上传覆盖同名旧配方upload_resrecipe_mgr.upload_recipe(./recipe/cu_sputter.json,overwriteTrue)ifupload_res[code]!0:print(配方上传失败,upload_res[msg])else:# 2. 参数合法性校验功率、温度阈值检查checkrecipe_mgr.check_recipe_param(cu_sputter)ifcheck[pass]:# 3. 下发2号腔自动执行recipe_mgr.run_recipe(chamber_id2,recipe_namecu_sputter)print(配方下发执行成功)else:print(配方参数超标,check[error_params])client.close()案例4设备故障告警实时监听异常弹窗记录场景实时捕获真空泄漏、靶材耗尽、气体中断告警保存告警日志fromendura_sdkimportEnduraClient,AlarmMonitorimportjson clientEnduraClient(192.168.1.100,50001)client.connect()alarm_monitorAlarmMonitor(client)# 告警回调处理函数defalert_handler(alert_info):print(*50)print(触发设备告警,json.dumps(alert_info,ensure_asciiFalse,indent2))# 追加写入告警日志文件withopen(./alarm_log.txt,a,encodingutf-8)asf:f.write(json.dumps(alert_info)\n)# 订阅实时告警流alarm_monitor.subscribe(callbackalert_handler)print(告警监听已启动等待故障信号...)# 持续监听try:whileTrue:passexceptKeyboardInterrupt:alarm_monitor.unsubscribe()client.close()案例5异步并发多台Endura设备集群采集产线MES对接场景工厂5台镀膜设备同时异步采集无阻塞汇总全部设备实时数据fromendura_sdkimportAsyncDeviceCollectorimportasyncioasyncdefcollect_all_device():collectorAsyncDeviceCollector()# 批量添加产线5台设备device_ips[(192.168.1.100,E01),(192.168.1.101,E02),(192.168.1.102,E03),(192.168.1.103,E04),(192.168.1.104,E05)]forip,nameindevice_ips:collector.add_device(hostip,port50001,namename)# 异步批量读取所有设备腔室数据resultawaitcollector.async_get_all_chamber_data()print(集群设备采集汇总数据,result)# 执行异步采集asyncio.run(collect_all_device())案例6远程修改腔室工艺参数阈值保护校验场景远程调整溅射功率内置参数上下限校验防止超温超功率损坏靶材fromendura_sdkimportEnduraClient clientEnduraClient(192.168.1.100,50001,usernameadmin,passwordAdmin#2026)client.connect()chamber_id1target_power3500# 先读取参数阈值范围param_limitclient.get_param_limit(chamber_id,sputter_power_dc)min_p,max_pparam_limit[min],param_limit[max]# 阈值校验ifmin_ptarget_powermax_p:resclient.set_process_param(chamber_id,sputter_power_dc,target_power)ifres[code]0:print(f功率修改成功当前功率{target_power}W)else:print(参数写入失败,res[msg])else:print(f参数越界允许范围{min_p}~{max_p}W)client.close()案例7读取晶圆Lot批次生产数据写入MySQL数据库场景对接MES系统自动抓取每批次晶圆加工时长、良率、腔室号存入数据库fromendura_sdkimportEnduraClientfromsqlalchemyimportcreate_engineimportpandasaspd# 数据库连接enginecreate_engine(mysqlpymysql://user:pass127.0.0.1:3306/semiconductor_db)clientEnduraClient(192.168.1.100,50001)client.connect()# 获取最新加工批次数据lot_dataclient.get_lot_production_data()dfpd.DataFrame(lot_data)# 写入生产数据表df.to_sql(nameendura_lot_record,conengine,if_existsappend,indexFalse)print(f成功写入{len(df)}条批次生产记录至数据库)client.close()案例8设备自动运维脚本故障复位停机自检场景检测轻微告警后自动执行设备复位、真空自检减少人工介入fromendura_sdkimportEnduraClient,AlarmMonitor clientEnduraClient(192.168.1.100,50001,usernameadmin,passwordAdmin#2026)client.connect()alarmAlarmMonitor(client)defauto_repair_alert(alert):# 轻微气体波动告警自动复位ifalert[alarm_code]in[GAS_LOW,VACUUM_FLUCT]:print(检测到轻微故障执行自动复位)client.device_reset()# 执行真空自检check_resclient.vacuum_self_check()ifcheck_res[vacuum_normal]:print(自检通过设备恢复正常运行)else:print(真空自检异常需人工检修)alarm.subscribe(callbackauto_repair_alert)print(自动运维程序启动监控轻微故障自动复位)try:whileTrue:passexceptKeyboardInterrupt:client.close()五、常见错误、报错原因与解决方案1. 连接类报错报错1ConnectionRefusedError: [Errno 61] Connection refused原因①设备IP/端口错误②工控机防火墙拦截50001端口③设备SECS服务未启动④网线断开解决核对IP端口机房运维放行端口重启Endura设备SECS后台服务ping设备IP测试网络报错2auto_reconnect失效频繁断连原因reconnect_interval设置过大工控网网络波动设备最大连接数已满解决调整reconnect_interval2优化交换机网络设备后台释放闲置连接2. 权限与参数读写报错报错3Code 403 Permission Denied 无权修改参数原因客户端未传入admin管理员账号普通operator仅可读不可写解决实例化EnduraClient时传入username/password管理员凭证报错4ParamValueOutOfRange 参数超出阈值原因set_process_param写入数值超过设备预设上下限保护靶材/腔室解决调用get_param_limit查询合法区间修改数值至范围内3. Recipe配方相关报错报错5RecipeParseError 配方文件解析失败原因本地配方JSON格式错误配方参数字段与设备不兼容版本不匹配解决格式化JSON校验使用设备导出标准模板修改升级endura-sdk至匹配设备版本报错6RecipeRunFailed 配方下发执行失败原因腔室处于手动锁定模式真空未达标靶材损耗超限配方依赖气体未开启解决切换设备至auto自动模式等待真空达标更换靶材检查供气系统4. 异步采集并发报错报错7AsyncTaskTimeoutError 异步采集超时原因同时并发设备过多工控网络带宽不足timeout参数过小解决分批采集设备调高timeout至15s优化产线内网带宽5. 安装与依赖报错报错8ModuleNotFoundError: No module named ‘endura_sdk’原因未正确安装包多Python环境混淆离线安装缺失依赖解决重新执行pip安装确认使用当前环境pip离线包补全依赖库报错9ImportError: cannot import name ‘AsyncDeviceCollector’原因sdk版本过低异步采集类为2.2.0后新增解决pip install endura-sdk --upgrade升级最新稳定版6. 告警监听报错报错10AlarmSubscribeFailed 告警订阅通道占用原因已有上位机MES连接设备告警通道单设备仅支持1路告警订阅解决断开其他MES客户端使用OPCUA协议多路订阅模式六、使用注意事项与生产环境规范1. 网络与工控安全规范禁止公网直接访问Endura工控设备必须隔离产线内网增加网闸所有通讯账号密码禁止硬编码在代码使用.env环境文件加密存储生产环境必须开启auto_reconnectTrue防止断采丢失工艺数据2. 工艺操作风险规范远程修改溅射功率、温度、气体流量前必须调用get_param_limit做阈值校验避免烧毁靶材、损坏真空腔室配方下发仅允许非生产时段或空晶圆腔室测试量产中下发会中断镀膜流程造成晶圆报废设备复位、真空自检等高风险指令增加人工确认逻辑禁止无限制自动执行3. 性能与并发优化单线程同步客户端最多控制3台以内设备5台以上必须使用AsyncDeviceCollector异步采集轮询采集间隔最低设置1s禁止毫秒级高频轮询会占用设备工控CPU导致卡顿长期采集程序增加日志滚动分割避免日志文件无限膨胀占用硬盘4. 版本兼容规范Endura老款5500设备适配sdk 1.x版本300mm新款平台使用2.4版本升级sdk前必须在测试机验证配方、接口兼容性避免产线程序崩溃协议选择MES对接优先opcua单纯工艺采集使用secs协议速度更快5. 日志与数据存储规范生产程序强制配置log_save_path完整留存通讯日志用于故障追溯批量工艺数据建议分小时分片存储CSV/数据库单表避免千万级数据堆积告警日志永久留存满足半导体工厂生产追溯合规要求6. 程序健壮性规范所有设备操作必须使用try-finally包裹确保程序异常退出时执行client.close()释放连接增加心跳检测逻辑定时读取设备状态判断通讯存活增加异常捕获兜底单个设备故障不影响其他产线设备采集流程《动手学PyTorch建模与应用:从深度学习到大模型》是一本从零基础上手深度学习和大模型的PyTorch实战指南。全书共11章前6章涵盖深度学习基础包括张量运算、神经网络原理、数据预处理及卷积神经网络等后5章进阶探讨图像、文本、音频建模技术并结合Transformer架构解析大语言模型的开发实践。书中通过房价预测、图像分类等案例讲解模型构建方法每章附有动手练习题帮助读者巩固实战能力。内容兼顾数学原理与工程实现适配PyTorch框架最新技术发展趋势。