本博客最初发布于cimetrix.com。
为设备添加SECS/GEM接口是实现自动化的第一步。若缺乏合适的工具集,这项工作可能令人望而生畏。CIMConnect™工具包赋予开发者和集成商快速创建SECS/GEM接口的能力,并提供完善该接口的强大功能。
最近我接触了Cimetrix公司的CIMConnect工具包,并有幸参加了实践性客户培训活动。尽管我对SECS/GEM的了解有限,但在短短三天内,我掌握了使用CIMConnect实现SECS/GEM接口的基础知识,并希望分享这次极具价值的培训经历中的若干亮点。
CIMConnect
CIMConnect提供强大的软件开发工具包,帮助开发人员在其设备控制应用程序中实现并管理SECS/GEM接口。该工具包始终与最新的SEMI标准保持同步,从而简化了创建符合GEM规范接口的流程。安装CIMConnect后,随附的多款工具可使开发与测试过程变得简单高效。
CIMConnect 示例项目
CIMConnect示例程序提供了SECS/GEM应用程序的可运行范例。示例项目支持C#、VB.NET和C++三种语言。本文将以C#示例为参考,因其为培训期间所使用的开发语言。
该示例提供了一个“已知良好”的环境,通过处理基础要素来加速开发进程。这使我能够专注于调试应用程序中正在处理的范围,而非纠结于SECS/GEM连接性问题。
C# 示例功能
- 处理仿真:该示例提供了一个模拟设备运行的循环程序。其中包含触发事件和更新变量值的功能。
- EMService 初始化:当 Sample 编译并运行时,CIMConnect 将被初始化,并启动 GEM 通信。
- GEM操作控制:通过GEM状态机实时显示GEM通信状态。用户可通过样品的用户界面控制通信。
- 多线程示例:数据在独立线程中处理。这是良好的编程实践,既能确保用户界面保持响应,又能高效地异步处理数据。
- 延迟GEM通信初始化:此功能演示了在初始化过程中等待设备就绪的概念。
- 触发事件:事件由过程仿真循环触发。当事件被触发时,相关变量随之更新。
- 获取和设置变量值:本示例提供了多种通过编程方式获取和设置不同数据类型变量值的示例。
- 设置和清除警报:通过在用户界面中切换复选框,可以设置和清除示例警报。
- 终端服务:终端服务通过在设备用户界面显示实时消息,为有效日志记录提供了范例。
- 远程命令:该示例允许用户通过从主机发送SECS-II消息来启动和停止处理模拟。
培训流程
培训流程培训过程高度互动:讲师演示新主题后,会给予学员实践操作的时间。当需要尝试新功能时,我发现先创建按钮或复选框来验证功能是否正常运行非常有效。随后再将该功能嵌入应用程序。将每个流程拆分为这两个步骤,既能消除模糊性,又能避免不必要的调试工作。
培训进度由客户主导。讲师随时提供必要协助。虽然培训遵循既定课程体系,但每次课程都根据提出培训需求的客户的具体需求量身定制。
我的申请
在培训前,我已开发了一个C#应用程序。该程序通过读取XML配方文件来模拟晶圆加工流程。在培训期间能够基于这个可运行的应用程序进行修改,具有显著优势——它完美复现了实际生产环境中的操作场景。
添加SECS/GEM接口
第一步是初始化CIMConnect。通过从示例项目中提取初始化函数,这一步骤得以简化。在确认CIMConnect初始化完成后,我便能够继续添加SECS/GEM功能模块。
API调用
我的应用程序向CIMConnect发送API调用并接收回调。由于每个调用都允许进行定制,这些API调用在最初阶段有些难以理解。
包装函数
示例项目提供了若干有用的封装函数,用于实现API调用。API调用的开销由封装函数内部处理。使用封装函数的优势在于,开发者可以专注于结果是否符合预期,而非纠结于API调用是否正确。
在成功使用封装函数调用API后,我开始修改并创建自己的封装函数。最终,我能够自如地直接调用API了。
设备配置
CIMConnect允许您在配置文件中静态定义事件、告警、变量及其他属性。在我的文件中,我创建了多个与应用相关的变量。后来我了解到,我的应用其实可以动态定义这些项目。此外,我的应用还能通过编程方式覆盖已配置的属性。我认为这些功能将惠及生产多种设备类型且存在细微差异的企业。
添加事件和警报
我创建的第一个事件是通知主机当FOUP(晶圆盒)降落在装载端口时。我使用SendCollectionEventWithData()封装函数触发该事件,并递增一个事先在配置文件中定义的变量。该变量为我提供了降落在输入端口的FOUP数量统计。
通过使用AlarmSET()和AlarmClear()函数,我创建了3个警报。由于没有EMO按钮等硬件设备,我使用复选框来切换每个警报的行为。
我的应用程序带有SECS/GEM接口。
使用CIMConnect控制面板进行开发
CIMConnect 控制面板是一款图形用户界面工具,可用于观察 CIMConnect 的内部运作机制。
在开发过程中,我频繁使用控制面板。当我在应用程序中切换每个复选框时,能够实时观察告警状态的变化。事件历史记录和告警历史记录提供了实时更新。我能够通过控制面板修改变量值并触发事件,同时在主机上验证结果,而无需不断修改应用程序。
当我使用应用程序的GEM控件时,我观察到控制面板上的GEM通信状态发生变化。我同样可以在控制面板上更改状态,并实时观察应用程序中的变化。

CIMConnect 控制面板 1.15.0
使用GEM Host Messenger进行主机测试
CIMConnect 随附 GEM Host Messenger 主机应用程序,该程序允许用户与设备之间发送和接收 SECS-II 消息。
使用GEM Host Messenger,我能够轻松连接到我的应用程序。GEM Host Messenger将消息显示并解码为易于阅读的格式。
我能够发送S2F21协议的“START”和“STOP”指令来控制应用程序的运行。看到曾经独立运行的应用程序被远程操控,这种体验令人非常满足。

宝石主机信使 1.0.0
帮助文档、工具与支持
CIMConnect 提供详尽的帮助文件和开发者指南。我发现自己经常查阅这些资料,以获取关于 CIMConnect 庞大库中各种可用功能的详细信息。
结论
CIMConnect使我能够快速开发SECS/GEM接口,并将其集成到现有程序中。通过CIMConnect培训,即使不熟悉SECS/GEM的开发人员也能在短短3个工作日内掌握基础知识。虽然这只是一个简单示例,但CIMConnect具备强大的功能,能够支持任何规模的项目开发。