半导体行业通信标准-SECS / GEM
第一章 介绍
第二章 GEM 收集事件
第三章 数据轮询
第四章 GEM 工厂应用支持
第五章 报警
第六章 配方管理
第七章 文档
第八章 设备终端服务
第九章 用户界面
第十章 GEM消息假脱机功能
第十一章 协议层
第十二章 消息日志
第十三章GEM 控制状态
第十四章 总结
第一章 介绍
SECS/GEM指的是一组用于管理制造设备和工厂主机系统之间通信的半导体行业标准。消息层标准SEMI E5 SECS-II定义了一个通用的消息结构和一个包含许多标准化消息的库。协议层标准SEMI E37高速消息服务(HSMS)定义了使用TCP/IP传输SECS-II消息的二进制结构。SEMI E30 GEM定义了一组最低要求、附加(可选)功能、用例和部分SECS-II消息的用户场景。
SECS/GEM是在设备上实现的,工厂使用它来实现命令和控制功能。由于它是一个行业标准,任何符合SECS/GEM的主机软件都可以与任何符合SECS/GEM设备进行通信。该标准在设备上全面实施后,工厂软件可通过其SECS/GEM接口对设备进行全面控制和监控。这些标准为设备制造商和工厂提供了许多好处。本文重点介绍了其中的几个好处。
SECS/GEM降低了设备集成成本
工厂通常由跨国企业拥有和经营,这些企业从各种设备制造商购买设备。尽管每种设备的控制软件都不一样,但要求工厂对设备进行整合,使设备协调运行。虽然可以独立地将每个设备与定制的软件集成在一起,但是这样做既不节约成本,也不节省时间。
设备制造商的情况也类似,他们的产品销往全球各地的不同工厂。每个工厂的数据收集和应用软件都是不同的。设备制造商需要帮助工厂整合采购的设备。虽然为每个工厂开发定制的集成解决方案是可能的,但这仍然不是成本有效的。每当工厂要求定制集成特性时,这些成本就会转嫁到工厂本身。
定制化软件,无论是由设备制造商还是工厂开发的,创建和维护起来都很昂贵,而且往往质量低于预期。相比之下,SECS/GEM标准定义了如何在任何制造设备上创建标准化接口。设备制造商受益于为所有客户开发一个接口。工厂通过为他们购买的所有设备重用相同的集成软件而获益。工厂和设备制造商对该软件和技术的重用提高了软件质量,降低了成本,并允许更多的功能。设备制造商和工厂不仅可以在所需的最低需求功能上投资,还可以实现在其他方面无法负担的高级功能。如果他们只需要支持SECS/GEM,那么设备制造商就可以发布更多的数据,支持更先进的控制。反过来,工厂可以利用这些额外的数据来提高产品质量和生产率。
SECS/GEM适用于所有制造设备
因为SECS/GEM被划分为基本需求和附加功能,它可以在任何制造设备上实现,而不考虑其大小和复杂性。额外的功能是可选的,因为它们并不总是被需要的。例如,一些设备没有配方,因此不需要实现配方管理这项附加功能。
SECS/GEM也可以很好地根据设备数据的大小进行规模的缩放。例如,一个非常简单的设备或设备可能会发布10个不同的采集事件,而一个复杂的设备可能会发布5000个不同的采集事件; 然而,两者都可以使用相同的SECS/GEM技术。
使用SECS/GEM接口可以支持无数的应用程序
SECS/GEM使得设备上发生的一切都可以被追踪到。支持任何远程控制功能和系统配置。设备发布的数据越多,工厂可以实现的软件应用程序就越多。SECS/GEM接口使统计工艺控制、故障排除、预测性维护、前馈/反馈工艺控制、设备利用率、材料跟踪、配方验证以及更多应用程序的实现成为可能。这些应用程序通常减少了对设备上人机操作界面的需要,从而减少了工厂中操作员的数量。配方管理允许工厂最小化报废材料。例如,使用SECS/GEM接口将黄金配方存储在工厂的中央存储器,并确保在材料上使用正确的配方。
SECS/GEM非常有效地使用网络带宽
有几个特性使SECS/GEM自然高效。首先,每个SECS/GEM接口都充当消息代理。由于代理在设备上运行,未订阅的数据不会在网络上发布。如果主机软件要接收警报、收集事件或跟踪数据消息,必须先订阅。由于每个对警报、收集事件和跟踪数据的订阅都是单独管理的,因此设备可以实现单个SECS/GEM接口,该接口发布所有工厂应用程序请求的所有警报、收集事件和跟踪数据,而不会因为不必要的数据浪费网络带宽。此外,当主机订阅跟踪数据时,它可以指定数据收集速率,这使得SECS/GEM比以硬编码速率发布数据的协议更有效和有用。
另外,所有SECS/GEM消息总是以高效率的二进制格式传输。这比ASCII格式的协议使用更少的带宽。尽管使用二进制格式,SECS/GEM消息也很容易和标准的XML符号进行互转。
SECS/GEM获得业界的大力支持
多年来,SECS/GEM一直是半导体行业工厂/设备通信和控制系统的支柱。这意味着今天所有的半导体制造完全依赖于SECS/GEM通信。自90年代末以来,300mm半导体工厂一直在以SECS/GEM通信为基础的全自动化运行——像台积电、三星、美光、英特尔、东芝等大公司在每个工厂7*24小时的使用SECS/GEM。平板显示器、高亮度LED和光伏等其他行业也正式开始使用SECS/GEM,因为它们认识到SECS/GEM特性可以应用于任何制造设备,以支持关键任务的应用。
SECS/GEM是自描述的
虽然该标准要求GEM文档随设备一起提供,但是SECS/GEM仍支持多种方法让主机软件自动适应设备的SECS/GEM接口。主机软件可以通过一些消息请求可用报警、状态变量以及设备常量的列表,对于较新的SECS/GEM实现,主机软件还可以请求可用采集事件和数据变量的列表。这些消息使得SECS/GEM接口即插即用。此外,设备制造商还可以提供一个标准化的提供SECS/GEM接口及其特性的完整描述的XML文件。
总结
对于工厂和设备制造商来说,使用SECS/GEM技术有许多好处,以上只是其中的一部分。SECS/GEM是当今可用的成熟技术。
第二章 GEM 收集事件
在开始我们的SECS/GEM系列之前,让我们先来解释GEM标准的一个关键特性,即Collection Events。我们将从解释它们如何工作开始,然后进一步说明为什么它们在从制造设备收集数据方面如此有效。
什么是收集事件?
“收集事件”名称中的两个单词是描述性的。
如“事件”一词所示,收集事件是通知。它的目的是在设备上发生感兴趣的事情时通知主机。“主机”是指连接到设备GEM接口的工厂客户端软件。例如,收集事件可以在物料到达时报告,耗材不足时报告,出现硬件问题时报告,摄像机对物料进行检查时报告,物料准备取出时报告,燃烧室达到目标真空压力时报告,加工完成时报告等等。设备可以使用收集事件特性来报告任何感兴趣的事件。创建GEM接口的人准确地定义了主机可以使用哪些收集事件;因此,不同设备类型的可用收集事件集是不同的。
收集事件功能也能够将数据与收集事件消息一起发布。这是一种非常有效的数据收集形式,在消息可用时异步提供信息。例如,当物料到达时报告的收集事件也可以报告到达物料的条码和位置。GEM接口中有三种类型的数据; 关于收集事件的数据(称为数据变量)、关于状态的信息(称为状态变量)和设备设置信息(称为设备常量)。无论谁创建GEM接口,都将准确地定义每个收集事件将提供哪些信息。因此,不同设备类型的收集事件的可用信息集是不同的。只有在主机设置报表时,设备才会将可用数据发送到主机。
综上所述,收集事件不仅可以告诉主机发生了什么事情,还可以提供关于发生了什么事情以及设备状态的更详细的信息。
一个小的类比
打个比方,把工厂想象成老板,把他们购买的设备想象成员工。有许多不同的管理风格,就像有不同类型的工厂和运行工厂的风格一样。你不想被迫按照别人的工厂的方式经营自己的工厂。你想按你自己的方式去做。
此外,每个员工都是独特的,需要独特的关注度。每个员工都在做独特的事情。一般来说,所有的管理者都想知道员工的基本情况以及他们的员工在做什么。他们想要知道员工什么时候开始一个项目,什么时候完成一个项目。有些员工即使在极少的监督和汇报下也非常高效。一些员工需要大量的监督和报告。GEM允许工厂以独特的方式处理每台设备。具体来说,GEM收集事件为设备提供了一种报告其正在做什么的方式。
主机必须为报告建立规则,并适当地调整规则。例如,有时经理并不关心员工什么时候去洗手间。对于某些员工,经理可能想知道。在GEM接口中,主机可以选择哪些通知会发生,哪些不会发生。
有时经理只需要知道员工什么时候来,什么时候走,什么时候休息,什么时候下班。有时经理需要更多的细节,比如你完成了什么项目,花了多长时间,项目的关键结果。类似同样的,GEM允许主机不仅仅跟踪事件发生的时间,还要提供关于活动的详细信息。GEM报告非常有效地满足了这一需求。
为什么需要这个功能?
简单地说,收集事件允许您实时跟踪设备在做什么。如果一家工厂想要进行某种程度的智能制造,或者只是想提高生产率,那么首先需要的是能够跟踪设备在做什么。收集事件提供了这一点。您可以跟踪设备利用率、材料移动、处理里程碑、活动周期计数,以便进行预测性维护、消耗品使用,以及与发布的收集事件相关的任何其他内容。这些信息的应用是无止境的。
有时,收集事件还用于实现以下场景:设备在继续或获得继续的许可之前需要来自主机的信息。当设备准备好接受主机指令或权限时,可以通过收集事件通知主机。
收集事件通知如何工作?
设备的GEM接口可以发布许多不同的收集事件。通常情况下,主机不希望一次得到所有这些信息的通知,也不需要这样做。收集事件以两种方式使用发布/订阅设计模式。
基本的发布/订阅通知
主机订阅特定的收集事件,以便在事件发生时接收通知。订阅允许主机启用或禁用GEM接口中可用的每个收集事件的报告。设备在会该收集事件发生时发布它们。
事件报告发布/订阅数据收集
默认情况下,收集事件消息不包含任何数据。订阅还允许主机决定在每个启用的收集事件的消息中包含哪些数据。主机定义报表并将报表链接到收集事件;从而订阅数据。每个收集事件可以有不同的报告。还可以多个收集事件共享一个报表。报表里可以包含与收集事件关联的任何数据变量、任何状态变量和任何设备常量。设备会在发布收集事件是将请求的数据一并带出。
识别
设备发布的每个收集事件都有一个惟一的ID号进行标识。主机软件在启用或禁用收集事件时使用ID号。设备在发送收集事件消息时使用ID号。每个可用的数据变量、状态变量和设备常量都有一个惟一的ID号。当主机定义报表时,它也需要为报表分配惟一的ID号。
代理
代理构建在设备的GEM接口中,负责处理所有收集事件发布/订阅。它是设备系统的一部分。主机(客户端)和GEM接口之间的通信使用SECS/GEM通信进行标准化。GEM接口与设备的其余硬件和软件(设备收集事件和数据的源)之间的通信可以是任何适当的技术,只要GEM接口功能正常并且性能足够好就可以了。
这意味着消息只会在主机订阅之后才从设备发送到主机。将代理作为设备和GEM接口的一部分可以使GEM接口变得非常有效,并且比使用外部代理的协议使用更少的带宽,因为在外部代理中,所有消息和数据都必须一直发送到代理。
持久性
收集事件订阅持久化在GEM接口中。因此,如果主机断开并重新连接,或者设备重新启动,GEM接口仍旧记得所有订阅的设置。
GEM使用哪些消息?
下面是与收集事件相关的每个主要消息的摘要。注意,“S”表示“流”,“F”表示“函数”。流和函数号一起惟一地标识一个消息。
消息编号 | 方向 | 描述 |
S2F37 | 主机->设备 | 启用或禁用一组收集事件的报告。 空列表将启用或禁用所有收集事件的报告。在描述GEM接口时,启用所有收集事件报告非常有用。在启用所需收集事件的报告之前,禁用所有收集事件是非常有用的。 |
S2F33 | 主机->设备 | 定义一个或多个报告。 空列表将删除所有报告以及指向收集事件的报告链接。当试图重置订阅或首次连接到GEM接口并覆盖默认订阅时,删除所有报告功能非常有用。 |
S2F35 | 主机->设备 | 将一个或多个报告链接到一组收集事件。 如果报表已链接到一个收集事件,则必须移除链接,然后在一条消息中链接所有收集事件。空列表将从收集事件中删除报表链接。 |
S1F23 | 主机->设备 | 请求获取可用收集事件列表以及每个收集事件的可用数据列表。 |
S6F11 | 设备->主机 | 收集事件消息。 如果没有链接任何报告,则消息将只包含收集事件的ID。如果一个或多个报告链接到集合事件,则消息中将包含每个链接报告的报告数据。 |
关乎收集事件的常见问题
收集事件需要多少带宽?
这取决于几个因素。
主机启用的收集事件的数量。
连接到收集事件的数据报告的大小。
设备触发启用的收集事件的频率。这取决于收集事件的含义。
收集事件触发的速度有多快?
GEM标准使用标准通信硬件,并不限制收集事件的频率。换句话说,通过改进硬件,可以加快收集事件的速度。
GEM支持两种协议:SECS-I和HSMS。SECS-I基于RS-232串行通信,因此目前很少使用。这样的实现无法非常快地触发收集事件。
HSMS基于网络通信。由于串行通信很慢,所以目前大多数GEM实现都使用HSMS。GEM可以非常有效地使用TCP/IP。收集事件的可能频率取决于网络硬件的速度、设备计算机性能和主机性能。与大多数协议一样,使用消息通常比生成消息需要更多的计算机资源。
生成收集事件的速度还取决于链接到收集事件的数据报告。例如,如果数据报告很大,比如10mb,这将影响性能。
为什么我无法收到收集事件消息?
主机无法收到收集事件消息的可能原因有几个。
主机和设备必须使用成功的S1F13/S1F14交换建立GEM通信。
GEM控制状态必须在线。它不能处于主机-脱机或设备-脱机状态。
GEM Spooling 必须是非活跃的。在Spooling已经活跃时时禁用该功能并不会使Spooling变为活跃。如果不需要Spooling消息,则需要使用消息S6F23清除Spooling内容。如果需要假脱机消息,那么使用S6F23逐个获取它们,直到Spooling机状态变为非活跃状态。
必须启用收集事件。使用S1F3检查“EventsEnabled”状态变量以确认收集事件已启用。使用消息S2F37启用收集事件。
需要发生收集事件活动。例如,如果材料没有实际到达,那么当材料到达时将永远不会发生收集事件报告。如果活动发生且满足上述条件,则设备GEM接口存在缺陷。
如果设备的GEM接口没有发布我需要的收集事件,该怎么办?
请设备供应商添加所需的收集事件。设备供应商很难准确预测工厂需要的所有收集事件。设备供应商需要升级其在工厂中的GEM接口软件。
当链接到收集事件时,数据报告的大小是多少?
GEM允许单个数据变量值或状态变量的值为任意数据类型的数组或结构体,包括浮点数、字符串或整数。单个数组的大小限制为16.777215 MB,消息的总大小限制为4.294967295 GB。
第三章 数据轮询
GEM是一种工业标准,它定义了工艺设备和工厂主机软件之间, 为了达到监视和控制目的所建立通信的标准方法。通过连接GEM设备,工厂可以立即体验到运营效益。工厂主机可以通过多种方式收集数据。之前的一篇博客文章讨论了使用收集事件报告收集数据,其中数据基于设备状态的变化被推送到主机。除了事件报告之外,工厂主机通常还需要轮询设备的当前数据值。数据值可以由主机直接请求,也可以在跟踪报告中定期采样。这就是所谓的数据轮询,也是今天讨论的主题。
数据的类型
GEM接口中有三种类型的数据:
数据变量(DV) —— 设备事件发生时可以收集的数据项。此数据只保证在事件上下文中有效。例如,GEM接口可能提供一个名为PPChanged的事件(当配方发生更改时触发)。该接口还可以提供一个名为changed recipe的数据变量。此数据变量(DV)的值仅在PPChanged事件的上下文中有效。在其他的时间轮询该值可能会有无效或意外的数据。
状态变量(SV) —— 包含设备信息的数据项。该数据保证在任何时候都是有效的。例如,该设备可能在流程模块中有一个温度传感器。GEM接口可以提供模块温度状态变量。主机可以在任何时候请求这个状态变量(SV)的值,并期望这个值是准确的。
设备常数(EC) —— 包含设备设置的数据项。设备常数决定设备的行为。例如,GEM接口可能有一个名为MaxSimultaneousTraces的设备常量(EC),该常量指定可以同时从主机请求的最大跟踪数。设备常数的值总是保证是有效的和最新的。
数据属性
上面列出的三种数据类型都有一些类似的有助于定义数据的属性。设备供应商需要在GEM手册中提供这些属性,以便工厂主机能够与数据进行交互。一些重要的数据属性有:
ID —— 在该GEM接口中唯一的数字ID。这些ID可以按数据类型分为SVID(状态变量ID), DVID(数据变量ID)和ECID(设备常量ID)。
名称 —— 数据项的可读名称。
格式 —— 数据项的数据类型。
数据格式可以是简单类型(数字、ASCII、布尔值),也可以是复杂类型(数组、列表、结构)。例如,数字类型可以是I1、I2、I4、I8(不同字节长度的带符号整数类型)、U1、U2、U4、U8(无符号整数类型)和F4或F8(浮点类型)。列表和数组类型会在数据项中包含多个值。例如,图像数据通常采用字节数组作为数据格式。
结构类型包含特定类型的数据。例如,一个变量可以表示一个Slot map,其中包含Carrier信息,Slot列表和晶圆的存放信息。
值 —— 数据项的实际值。数据值采用精确、高效、自描述的二进制格式,从而主机知道如何解释数据。数据格式允许更有效地收集更多的数据。
收集事件(CE)和警报也有ID和名称。这些内容将在其他博客文章中讨论,但是了解本文的提到的这些属性非常重要,因为这些属性也可以被Host所查询。
数据轮询
如前所述,工厂主机经常通过它所定义的跟踪报告和事件报告定期获得数据。GEM还为工厂主机提供了一种可以根据他的需要去轮询设备数据的方法。
状态变量
主机可以在任何时候通过发送一条包含状态变量ID(SVID)列表的消息来查询这些状态变量(SV)的当前值。如果该列表的长度为1,则只返回单个状态变量(SV)的值。如果列表的长度为零,则返回GEM接口中定义的所有状态变量(SV)的值。这些值会包含在在设备回复的S1F4消息中。
主机还可以通过向设备发送S1F11消息向设备请求状态变量(SV)名称列表。上面提到的列表规则也适用于此消息。返回消息将包含每个状态变量(SV)的条目,包括状态变量ID(SVID)、名称和单位。
设备常量
状态变量(SV)的工作方式类似,主机还可以通过发送一条S2F13消息来查询GEM接口中定义的设备常量的值。这些值会包含在在设备回复的S2F14消息中。
与状态变量(SV)类似,可以使用S2F29消息查询设备常量的名称列表。
数据变量
由于数据变量只在集合事件的上下文中有效,因此没有轮询数据变量值的方法。数据变量的值只能在收集事件报告中上报给主机。
其他
除了上面讨论的数据轮询方法外,还可以通过轮询从设备获取以下信息:
收集事件(CE) —— 主机可以查询GEM接口上可用的收集事件,以及与每个CE关联的DVs。这些是使用S1F23消息请求的。
警报 —— 主机可以通过发送一个列有所期望的警报ID列表的S5F5消息来查询设备上有哪些警报是可用的。返回的消息将列出与ALID关联的警报ID和警报文本。每个GEM接口都需要有两个状态变量。AlarmEnabled包含设备上所有启用警报的ID列表。AlarmsSet包含设备商所有当前处于设置状态的警报ID。由于这些值是状态变量,所以主机可以在任何时候查询它们的值。
MDLN和SOFTREV —— 对S1F1(你在吗?)消息的回复将包含设备模型类型(MDLN)和软件修订版本(SOFTREV)。
DateTime ——主机可以使用S2F17消息请求设备的日期和时间,也可以使用S2F31消息同步设备的时间。GEM要求设备维护一个包含当前时间的时钟状态变量。允许主机查询和同步时间使得可以对系统上几乎同时发生的事件进行排序。
跟踪数据收集
跟踪数据收集提供了一种定期采样数据的方法。这种基于时间的数据收集方法对于跟踪一段时间内的数据变化趋势或重复的应用,或者监视连续的数据非常有用。在创建跟踪的定义时,主机需要提供以下内容:
采样周期 —— 样本之间的时间。以百分之一秒为最小单位,因此可以使用跟踪非常快速地收集数据。能够支持10赫兹的采样间隔数据的设备很常见。
数据组大小 —— 跟踪报告中包含的样本数量。
状态变量 —— 跟踪报告中包含的状态变量列表。
总样本数 —— 在跟踪的整个生命周期内要采集的样本数量。
跟踪请求ID —— 跟踪请求的标识符(GEM只允许整数类型的跟踪ID)。
主机使用S2F23消息定义跟踪请求。跟踪报告使用S6F1消息从设备发送到主机。
跟踪报告样本
假设一个设备正在处理一个晶圆片,这个过程需要5分钟。重要的是要保持卡盘温度在一定的可接受范围内,并确保腔室压力保持在指定的水平以下。每隔15秒采样一次这些状态变量值就足够了,但是我们可以创建数据组,实现每分钟只接收一次报告。主机可以发送一条包含如下跟踪配置的S2F23消息:
跟踪ID : 100 (ID必须是整数)
采样周期 : 00001500(每15秒采样一次)
总样本:75个(每15秒采样5英寸)
数据组大小: 4
SVID列表 :
300(包含卡盘温度信息的状态变量的ID)
301(包含室压信息的状态变量ID)
一分钟后,第一个跟踪报告将来自设备发出的的S6F1消息。这条消息将包含以下信息:
100(跟踪ID)
4(最后一个样本号)
2018-01-22T14:20:34.8(日期格式取决于时间格式设备常数)
状态变量列表:(长度为8 : 2 个状态变量,数据组大小为4)
219.96(第一次采样卡盘温度)
0.0112(第一次采样压力)
219.97(第二次采样卡盘温度)
0.0122(第二次采样压力)
219.97(第三次采样卡盘温度)
0.0120(第三次采样压力)
219.96(第四次采样卡盘温度)
0.0119(第四次采样压力)
再过一分钟,跟踪报告可能如下所示:
100(跟踪ID)
8(最后一个样本号)
2018-01-22T14:21:34.8(日期时间显示比第一个跟踪晚一分钟)
状态变量列表 : (长度为8: 2 个状态,数据组大小为4)
219.96(第五次采样卡盘温度)
0.0112(第五次采样压力)
219.97(第六次采样卡盘温度)
0.0122(第六次采样压力)
220.01(第七次采样卡盘温度)
0.0120(第七次采样压力)
220.00(第八次采样卡盘温度)
0.0119(第八次采样压力)
以一分钟为间隔,后续还将收到三份报告。主机可以检查报告中返回的值,并在值超出预期范围时做出相应的处理。
结论
如果主机想在特定的时间点检查一个值,它可以使用S1F3轮询状态数据。如果希望在给定的时间内连续收集数据,则可以设置跟踪报告。
使用本博客中概述的数据采样方法,将允许主机应用程序在需要时轮询所需的数据。GEM提供了从设备请求数据的灵活性,允许主机在给定的时间点查询值,或者使用跟踪定期采样样。
第四章 GEM 工厂应用支持
工厂如何处理这些数据?
与本系列中其他涉及SEMI E30 GEM(通用设备模型)标准的特定特性和功能的文章不同,本篇博客阐述了许多使用设备上收集到的数据的工厂应用程序。
此外,由于我们经常听到这样的问题:“工厂实际如何使用哪些希望我们提供的各种类型的设备信息?”这篇文章将总结出支持这些应用程序所需的具体数据。这个列表并没有涵盖所有的内容,但是应该可以让您了解由GEM数据收集支持其目标的工厂受益者。下图说明了关键性能指标(kpi)、负责优化它们的受益者、用于实现此目的的应用程序以及这些应用程序所需的数据之间的关系。
分享这类信息最有效的方式是表格形式。在一组相关的应用程序中(例如,调度、预防性维护),应用程序通常按照复杂性递增的顺序列出,这也是工厂应用程序开发人员实现的可能顺序。
工厂应用 | 需要的设备数据 |
OEE(设备总体效率) | 足够对所有时间段设备状态进行分类的转换事件和状态代码。 |
Intra-equipment material flow设备内部物料流 | 物料跟踪时间,物料位置状态指示和状态变化时间。 |
Process execution tracking工艺执行跟踪 | 所有工艺模块的开始/结束事件;所有支持多步骤配方的工艺模块里每个步骤的指示和步骤变化时间 |
WTW (wait time waste) analysis等待时间损耗分析 | 设备内部物料流和工艺执行跟踪应用程序所需要的事件以及划分所有时间段物料状态所需要的上下文数据的组合。参见SEMI E168产品时间管理标准作进一步解释) |
Time-based PM (PreventiveMaintenance)基于时间的预防性保养 | 现场可替换部件级别的使用次数。 |
Usage-based PM基于用法的预防性保养 | 每个可替换部件使用参数及累计值,比如状态内市场,执行次数,流体流量,耗材流量,功耗等等。 |
Condition-based PM基于条件的预防性保养 | 每个可替换部件的有意义的健康指标 |
FDC (错误检测分类) | 特定错误模块所要求的设备/工艺参数及上下文信息(这里想要做到完整比较困难,因为多数FDC系统都有) |
Automated equipment interdiction自动设备停止 | 远程停止命令(例如当FDC应用感知到以及存在或者将要发生的错误时) |
Equipment configurationMonitoring设备配置监控 | 重要设备常量的矢量,包括期望值和可接受范围。如果值是依赖于设置的期望值和可接受范围会有多套。这套系统是为了能够捕获因为操作人员手工修改参数导致的人为错误。 |
Component fingerprinting组件识别 | 设备关键机制的性能参数,包括传感器/驱动器级别的命令/响应信号。 |
Static job scheduling静态作业调度 | 每个产品/配方组合的计划和执行时间,以及当前计划的信息。 |
Real-time job dispatching实时作业分配 | 预估当前作业完成时间;预估设备上所有排队等待的物料的完成时间。 |
Factory cycle time optimization工厂周期优化 | 物料缓存内容,作业队列信息 |
Operator notification操作员通知 | 非自动化/半自动化环境下一些操作员频繁操作的通知代码,比如加载/卸载物料, 选择/确定配方,一旦设备卡住提供的一些手动协助等等。 |
Real-time dashboard实时仪表盘 | 设备/部件生产状态指标 |
Equipment failure analysis设备失败分析 | 有意义的报警/错误代码,或者最近的历史记录/数据 |
Run-to-run process control批次工艺控制 | 配方可调整参数识别以及远程更新这些参数的命令。 |
在某种程度上,在上面的表中描述的应用程序数据可以跨设备类型进行标准化,这样的话就有可能创建通用的工厂的应用程序, 只需要一个从供方定义的GEM ID (收集事件id、状态/数据变量,常量,设备等)到通用应用方的对应列表。但是这是另一个关于GEM上下文中“即插即用”概念的主题。
我们希望这个解释能够帮助您理解设备信息对于使用它的工厂是多么有价值,从而明白在您将来设计的GEM接口中提供一组丰富的事件、变量和其他详细信息是多么重要。
第五章 报警
以前的文章已经讨论了允许通过GEM接口收集数据的功能,以便在最近的文章中描述的工厂应用程序能够分析这些数据。在这篇文章中,我们将回到对SEMI E30 GEM(通用设备模型)标准的特定特性和功能的讨论,特别是对设备错误情况的管理。
在一个完美的世界里,一切都按计划进行,但在现实中,事情总是会出错。成功的秘诀是能够知道什么时候出了问题,然后做出适当的反应。
就像家庭报警系统一样,半导体晶圆厂也想知道什么时候发生了不好的事情。他们想防止正在加工的材料被报废。报警管理使设备能够在出错时通知主机,并提供出错信息。GEM标准将报警管理定义为设备能够通知主机对设备上发生的报警情况和对报警情况进行管理的能力。
在GEM中,一个报警可以是指设备上的任何可能危及正在加工的人员、设备或材料的异常情况。例如,如果技术人员打开一个盖板来替换组件,设备应该发出报警,通知主机在当前状态下操作设备是不安全的。另一个例子可能是,如果一个设备需要高温进行加工,但是传感器检测到低温条件,它应该触发报警,因为在这些条件下运行过程可能会损坏正在加工的材料。当出现报警情况时,设备制造商也有责任制止设备上的不安全活动。设备制造商最清楚设备上需要什么样的特殊报警,以确保人员、设备和材料的安全。
通常,在报警条件发生时,能得到更多的设备中的状况信息是有用的。向传达额外的信息是非常有价值的,但是没法通过正常的报警报告发送/确认消息。为了提供一种途径获取额外信息,GEM要求为设备上每种可能的报警条件定义两个收集事件——一个事件用于设置报警,另一个事件用于清除报警。这些收集事件使得GEM事件数据收集机制可以被用于在报警更改状态时向主机发送额外的相关信息。
除了提供报警状态更改的时间外,设备上的报警管理必须允许主机获取所有报警id和相关报警文本的列表。主机还必须能够启用/禁用设备上的单个报警的报告,并查询设备以获得当前启用报告的报警列表。
报警的状态图不是很令人兴奋,但是它满足了一个至关重要的需求。下图为报警状态图:
GEM报警只有两种状态: 每个报警要么处于设置状态,要么处于清除状态。它简单但是有效。
报警管理不是复杂的事情,但通过有效地使用报警管理,晶圆厂可以仔细的监控其工艺设备的健康状况,并将其对生产良率的负面影响降到最低。
第六章 配方管理
在几篇SECS/GEM系列博客文章(包括收集事件、数据轮询和警报)之后,我们现在讨论GEM特性的特性和优点,称为配方管理。我们将介绍配方的定义, 配方管理是什么意思,,以及为什么需要这个功能!
什么是配方?
配方是一组描述设备应如何处理其材料的指令。配方内容由设备供应商定义。
什么是配方管理?
配方管理允许工厂主机在设备之间传输配方。它还要求设备在设备上的配方发生变化时通知工厂主机。
为什么需要这个特性?
几乎所有的半导体工厂都需要这个特性来确保配方的完整性并支持可追溯性。主机将设备上已批准的配方上传并保存下来供以后使用,以确保菜谱不会被更改。为了可跟踪性,配方通常与工艺数据一起保存。
配方管理是如何工作的?
配方通过SECS消息在主机和设备之间传递。有几组SECS消息被用于这个功能。E30 GEM列举了格式化、非格式化和大型配方的消息集。这里将不讨论大型配方的消息集。
当操作人员在设备上修改配方时,设备还需要通知主机。生成的PPChange收集事件还需要伴有两个数据变量:载有被更改的配方ID的变量PPChangeName以及载有包含更改类型(创建、删除和编辑)的变量PPChangeStatus。当配方被传到设备上时,设备应对内容进行验证。如果配方无效,则应该生成一个PPVerificationFailed的收集事件,伴有包含验证失败信息的PPError数据变量,以将问题通知主机。如果验证失败,该配方将不被使用。
识别
每个配方都由一个名为process program ID或PPID的ASCII名称标识。工厂主机和设备GEM接口在配方操作中使用该名称。
持续性
在GEM 接口中, 配方是持续性的。如果主机断开并重新连接,或者设备重新启动,GEM接口仍将记得配方。此外,大多数工厂主机会将配方保存在工厂端。
使用哪些消息?
下面是与集合事件相关的每个主要消息的总结。注意,“S”表示“流”,“F”表示“函数”。S和F一起唯一地标识消息。
所有配方
消息编号 | 方向 | 描述 |
S7F17 | 主机 -> 设备 | 从设备上删除一个配方。空列表将删除设备上的所有配方。 |
S7F19 | 主机 -> 设备 | 请求设备上所有可用的配方列表 |
非格式化配方
消息编号 | 方向 | 描述 |
S7F1 | 主机 <- 设备 | 设备要求上传一个配方 |
S7F3 | 主机 <- 设备 | 设备上传一个配方到主机 |
S7F5 | 主机 <- 设备 | 设备请求从主机获取一个配方 |
S7F1 | 主机 -> 设备 | 主机要求下传一个配方到设备 |
S7F3 | 主机 -> 设备 | 主机下传一个配方到设备 |
S7F5 | 主机 -> 设备 | 主机请求从设备获取一个配方 |
格式化配方
消息编号 | 方向 | 描述 |
S7F1 | 主机 <- 设备 | 设备要求上传一个配方 |
S7F23 | 主机 <- 设备 | 设备上传一个配方到主机 |
S7F25 | 主机 <- 设备 | 设备请求从主机获取一个配方 |
S7F1 | 主机 -> 设备 | 主机要求下传一个配方到设备 |
S7F3 | 主机 -> 设备 | 主机下传一个配方到设备 |
S7F5 | 主机 -> 设备 | 主机请求从设备获取一个配方 |
S7F29 | 主机 <- 设备 | 设备请求发送配方验证结果 |
S7F27 | 主机 <- 设备 | 设备发送配方验证结果 |
有关配方管理的常见问题
可以传送一个多大的配方?
对于未格式化的菜谱消息,菜谱要么是单个ASCII字符串,要么是二进制数组值。单个数组值被限制为16.777215 MB。
格式化的配方消息,将配方分解为一个项目列表。单个数组值被限制为16.777215 MB。消息的总大小被限制为4.294967295 GB。
第七章 文档
正如SECS/GEM系列的特性和优点的第一篇文章所指出的,SECS/GEM标准定义了一个可以在任何设备上使用的标准化接口。GEM接口通过状态变量、数据变量、收集事件、警报、数据格式、错误代码、SECS-II消息和其他可选的GEM功能公开设备的功能。GEM标准要求每台设备都附带文档; 确保工厂拥有使用设备GEM接口所需的信息。该文档通常称为GEM手册。
GEM手册可以以多种形式分发。目前,大多数GEM手册都是以Word、Excel或PDF文档的形式提供的。GEM手册中的大量信息被用于做出购买决策、开发主机软件和测试设备。对于一个功能完整的GEM接口,GEM手册必须包含以下主题: 状态模型、场景、数据收集、警报管理、远程控制、设备常量、流程配方管理、物料移动、终端服务、错误消息、时钟、假脱机、控制、支持的SECS-II消息、GEM遵从性声明和数据项格式。为了使这篇文章保持一个合理的长度,我们将只讨论一些必要的主题。
GEM遵从性声明
遵从性声明是要审阅的第一个主题之一。它是一种快速、简单地了解设备接口特性的方法。制造商需要标记在设备上实现了哪些GEM功能,以及这些功能是否以符合GEM标准的方式实现。
状态模型
状态模型是GEM的基本功能,因此可以在每个设备上实现。该功能定义了设备的通信、控制和假脱机行为。设备必须提供处理状态模型。但是,定义出一个适用于所有设备的工艺状态的状态机是不可能的。本标准规定了所有设备应具有相同的加工行为。每个状态模型都必须用状态模型图、转换表和每个状态的文本描述来记录归档。关于每个状态模型的一致和详细信息使工厂能够在得到GEM手册之后立即开始编写主机应用程序。
警报、收集事件、设备常数、数据变量和状态变量
设备收集数据的一大部分都是警报、收集事件和变量。所以需要将他们包含在GEM手册中并不意外。设备上的每个警报都应该在GEM手册中有其ID、名称、描述和相关的Set/Clear事件。每个集合事件的文档应该包括ID、名称、描述和关联变量列表。所有变量的文档将包括ID、名称、描述和数据类型。还应该在适当的时候提供变量默认值或值范围的信息。虽然不是必需的,但通常将所有这些信息显示在五个容易找到的表中。对于以下每一类都有一个表: 警报、收集事件、设备常量、数据变量和状态变量。参见下面的示例。
远程控制
一旦工厂能够从设备中收集数据,他们就开始研究如何控制设备。远程控制是GEM功能,它允许主机应用程序请求设备执行一个操作。所有远程命令都应该包含在手册中,包括它的名称、描述以及可能随命令一起发送的每个命令参数的详细信息。命令参数的详细信息应该包括名称、格式和描述。下面显示了一个示例。
SMN 和SEDD
GEM手册很少采用易于在软件中解析的格式。这通常会导致重复代码,并进行一些小的更改,以便与其他设备通信。SEMI E172 SECS设备数据字典(SEDD)和E173 SECS消息表示法(SMN)是两个标准,它们可以极大地提高主机应用程序的灵活性和可重用性。SEDD是一个易于在软件中分布和解析的xml文件。SEDD可以被认为是一个现代化的GEM手册,因为它包含了与GEM手册中相同的信息。例如,SEDD文件包含关于每个变量、收集事件、警报和受支持的SECS-II消息的详细信息。SEDD文件使用SMN表示数据项、变量和SECS-II消息。SMN也是XML格式,它是第一个定义表达数据项和SECS-II消息的表示法的标准。这意味着单个应用程序可以读取SEDD文件,进行一个简短的配置过程,然后立即开始使用设备的GEM接口。这些特性允许单个应用程序用于多个设备,而不是为每个设备创建略有不同的变体。
总结
GEM手册是GEM标准所要求的与每个设备一起提供的重要文档。当遇到关于设备的GEM接口的问题时,GEM手册应该是寻找答案的首选。SEMI也在通过更新现有标准和创建新标准,继续改进GEM手册的内容和灵活性。
第八章 设备终端服务
在本系列的几篇文章讨论了数据收集、事件、警报、配方管理和文档之后,本文重点讨论GEM标准的Twitter - 设备终端服务(Terminal Services)。我们将研究什么是终端服务(Terminal Services),为什么需要它们,以及它们的工作机制。
什么是终端服务(Terminal Services)?
设备终端服务允许工厂操作员从设备工作站与主机交换信息。主机可以在设备的显示设备上显示信息。它还允许设备的操作员向主机发送信息。设备必须能够显示主机传递给它的信息,供操作员注意。
为什么需要这个特性?
使用终端服务的例子如下:
FDC软件通知主机进程模块有偏移需要处理。
主机打开信号灯塔上的操作员通知灯。通知灯亮起时需要说明灯亮起的原因。
主机发送一条终端消息说FDC软件检测到偏移,操作员应该解决这个问题。
与信号塔灯一起,终端服务通知在工具上处于活动状态。
操作员看到并确认消息。
可选:有不同的恢复方法,但是操作员可以在问题解决后向主机发送终端消息。
终端服务功能如何工作?
当主机向设备发送终端消息时,需要设备向操作员显示该消息。该显示器必须能够显示最多160个字符(甚至比使用Twitter在一条tweet中发送的字符还要多),但也有可能会显示更多字符。设备的显示设备必须具有一种机制,用于通知操作员一条消息已被接收,但尚未被操作员确认。该消息将继续显示,直到操作员确认该消息为止。设备必须提供一个方法,例如一个按钮,让操作员确认消息。操作员的消息识别将导致一个收集事件,该事件会通知主机操作员已接收到信息。设备应用程序不需要翻译从主机发送的数据。它只是为操作员提供信息显示。
如果主机发送的新消息是在操作员确认前一条消息之前发送的,则新消息将覆盖前一条消息。主机可以通过发送零长度的消息清除未确认消息(包括指示符)。零长度的消息不会被认为是待确定的消息。设备还必须允许操作员将输入的信息从操作员的设备控制台发送到主机。
使用哪些消息?
消息ID | 方向 | 描述 |
S10F3 | H->E | 主机向设备发送文本信息,以供显示。 |
S10F1 | H<-E | 操作员向主机发送文本信息。 |
S10F5 | H->E | (可选)主机发送多块显示的消息。如果不支持多区块,设备将回复S10F7表示不允许多区块消息。 |
S6F11 | H<-E | 设备向主机发送收集事件通知终端服务消息已被确认。 |
第九章 用户界面
我记得作为一个新的童子军,我们计划去我家附近的一个原始山区远足。我们从地图上学到的第一件事就是在哪里可以找到图例。地图图例包含了阅读地图所需的重要信息,比如指出哪个方向是北。既然我们知道在哪里可以找到图例,我们就可以确定地图的方向,这样在我们计划徒步旅行时就能找到它了。
在典型的半导体或电子装配工厂中,大多数设备都有一个用户界面,其中包含许多关于设备的信息。大多数设备还包含许多用于控制或操作设备的屏幕。利用GEM,一个工厂主机系统可以对设备进行控制,以及采集工艺过程中生成的重要数据。
就像地图一样,在一个设备的用户界面上有很多可用的信息。有时很难找到那些主机系统需要的,用来控制和与设备通信的重要信息。GEM标准提供了关于如何将这些关键项目在用户界面上呈现和控制的指南。例如,如果主机向设备操作员发送关于他们需要执行的任务的信息,GEM终端消息指南规定,这些信息必须保留在设备的用户界面上,直到操作员确认他们已经阅读了它。
SEMI E30标准定义了制造设备通信和控制通用模型(GEM)的规范。除了提供制造自动化所需的通用设备行为和通信功能集的定义外,该标准还提供了关于哪些项必须出现在设备用户界面上以及如何表示这些项的要求。用户界面要求由标准定义的通信状态、终端服务新消息指示、终端服务消息确认按钮、通信状态默认值和通信状态选择说明。
这似乎是一件小事,但就像知道地图上找到图例就能理解地图上的线条和符号的一样,GEM为如何理解设备界面上所展示的那些对与工厂主机之间通信尤为重要的信息提供了帮助。
第十章 GEM消息假脱机功能
假脱机消息的目的
即使是最健壮的计算机网络也会经历通信失败。不管原因是什么,一个小故障都可能导致大量的关键任务数据丢失。GEM通过提供消息假脱机功能来调停数据的丢失
假脱机的定义
假脱机是这样一种功能,设备可以在通信失败时对发送给主机的消息进行排队缓存,然后在通信恢复时发送这些消息。
假脱机的好处
自动化工厂是数据驱动的。对数据进行提取和分析,以做出影响工程和管理团队如何应对的决策,以确保产品产量高而废品率低。
这些数据的缺失可能导致错误的判断甚至猜测。假脱机是一种备份系统,它可以确保存储和恢复这些数据,从而降低丢失有价值数据的风险。
GEM功能需求
然而,假脱机并不是GEM的要求,如果要实现这个附加的功能,就必须正确地实现。下面是实现兼容假脱机接口的一些要求。
设备必须通过设备常量“EnableSpooling”给主机提供启用和禁用假脱机的能力。该EC由设备发布,主机可以选择所需的状态。
在实现假脱机时,它必须对所有相关的主要消息都有效,并且能够使用S2、F43/F44交互进行访问。Stream 1消息要被排除在外。主机试图为Stream 1 “设置spool”的指令将被拒绝。
非易失性存储(NVS)
设备负责分配足够的非易失性存储器,可以存储该设备的至少一个工艺周期需要假脱机的所有消息。NVS还将包含所有与假脱机相关的状态变量。NVS用于此数据,因此,如果发生断电,数据将被持久化。
假脱机实现中主机端的责任
消息假脱机功能也需要主机的参与,以在通信中断后成功恢复。在主机程序能够正确的处理整个状态机中可能发生的所有情况之前,最好将假脱机设置为禁用状态。禁用假脱机比管理不当的假脱机要好。
一旦重新建立了通信,主机必须管理对假脱机消息的请求。主机还可以在必要时从设备中清除假脱机消息文件。
结论
虽然假脱机不是GEM的基本需求,但是如果实现了它,就必须正确地执行。当启用假脱机时,主机和设备软件都有责任确保遵守GEM。GEM假脱机避免了潜在的有价值数据丢失,并为设备和主机软件提供了一个易于遵守的标准。
第十一章 协议层
协议层的用途
协议层封装数据,并在工厂主机和设备GEM接口之间可靠地传输数据。
协议层定义
协议层实现了通过工厂主机和设备GEM接口之间的连线发送消息所用到的传输技术和数据打包算法,。
SEMI E5标准,半导体设备通信标准II 消息内容(SECSII), 定义了用作数据的SECS消息,以及如何将它们打包到二进制缓冲区中进行传输。
SEMI E37和E37.1标准高速SECS消息服务(HSMS)定义了一种协议,用于在TCP/IP连接上交换SECS消息。这是SECS/GEM中使用最多的传输技术。
HSMS协议栈
SEMI E4标准,即半导体设备通信协议标准I 消息传输 (SECS- I),定义了在RS-232上交换SECS消息的机制。这通常用于较旧的设备或设备内部的某些硬件,例如EFEM控制器。
本文的其余部分将重点讨论通过HSMS传递的SECS消息。
协议层的好处
GEM中的协议层维护连接并检测连接丢失,因此任何一方都可以采取适当的操作,比如激活假脱机。
协议层定义握手机制,以确保在需要时传递消息。
协议层连接是工厂主机和设备之间的点对点连接。它是一个没有广播功能的专用连接。这使得预测网络负载变得更加容易。
数据密度
SECS/GEM传输数据开销小、密度高。这意味着给定数据集的网络带宽使用更少。
为了便于说明,我们来看一个典型的事件报告示例,并将SECS/GEM消息传递与某种程度上等价的XML和JSON消息进行比较。
以一个典型的GEM接口为例,该接口为id使用无符号的4字节整数,以及一个包含8字节浮点数和4字节整数的事件报告。下表以SECS/GEM E5格式以及等效的JSON和XML格式显示了此消息的一个示例。
和XML数字可以根据键/元素名称进行一些更改,上面的只是许多可能的表示之一。
下图显示了示例消息的数据密度比较。实际数据大小为2个4字节整数+ 2个8字节浮点数+ 1个4字节事件id + 1个4字节报告id = 32字节的实际数据。开销是通过从消息的总字节数中减去实际数据大小来计算的。
对于示例消息SECS的数据密度,数据密度百分比如下图所示。数据密度百分比由(实际数据)/开销*100计算。
现在,如果我们将示例消息更改为包含100个8字节浮点数,则数据密度百分比图将改变为如下图。注意JSON和XML相对相同,但是SECS/GEM数据密度增加到78%。数据密度百分比由(实际数据)/开销*100计算。
SECS/GEM编码的开销非常小。消息的开销是描述消息的头部的10个字节,加上消息体大小的1到4个字节。对于SECS消息中的任何4字节整数或浮点数,都将通过网络发送6个字节,4个字节表示整数值+ 1个字节表示类型+ 1个字节表示数据的长度(以字节为单位)。同样,对于任何8字节的整数或浮点数,都将发送10字节。对于字符串值,长度将是字符数加上2到4字节。在SECS消息中出现列表(上面可读示例中的L)时,将向消息添加2到4个字节。
在SECS/GEM数据中,数字数组尤为高效。数组的开销是类型为1字节,数组长度为1到4字节,加上数据的本身大小。例如:一个由10个4字节整数组成的数组将占用42字节,即数据密度为95%!
在JSON示例中,一个4字节的整数需要16个字节加上表示该整数所需的字符数,因此需要17到28个字节。浮点数的开销相同,但可能需要更多字符来表示值。
在XML中,开销基于XML元素名称的大小。使用上面示例中的元素名,对于任何4字节整数,跨连接的字节数将是9 +表示该整数所需的字符数,所以是10到21字节。浮点数取决于用来表示值的字符串格式。
总而言之,通过查看每项数据所需字节大小,SECS/GEM非常密集。以4字节整数为例,其中SECS/GEM是6个字节,JSON示例是17到28个字节,XML示例是10到21个字节,随着参数数量的增加,您会发现开销确实很重要。300mm半导体设备预计每秒每个工艺模块向主机传输1000个参数。对于2个模块的设备,这将导致仅用于数据的字节数如下: SECS/GEM 12K字节, JSON 34K-56K, 如实例的XML 需要20K-42K。这些数字不考虑消息其余部分的大小,只考虑与参数值相关的实际部分。如果数据在大量消息中传输,而每个消息的值很少,那么网络负载就更糟了。在所有情况下,更少、更大的消息总是更好。
根据使用的传输协议,XML和JSON也可能增加开销。例如,XML通常使用SOAP通过HTTP传输,这就为每个消息增加了额外的两层开销和更多的字节。SECS/GEM所显示的字节数是实际通过TCP/IP上的网络传输的。
无数据翻译
在SECS/GEM中传输数值数据时不需要转换。数字以其原始格式传输。例如:8字节浮点数以其8字节表示形式传输,没有经过任何转换、截断或舍入。
任何协议,如JSON或XML,都必须将这些8字节浮点数转换为文本表示形式。这需要计算用于编码和解码的资源,并且需要更多的字节。IEEE754要求17位十进制数字将8字节浮点数精确地表示为字符串。将符号、小数点、指数和指数符号的字符相加,得到21个字符。这是SECS/GEM通过网络发送的两倍多。
环路保证
HSMS定义了一种称为Link Test的环路保证机制。如果没有活动的消息交换,协议层将启动一个计时器。每次计时器过期时,都会交换一条协议消息以确保连接仍然是打开的。
安全
HSMS没有定义安全性。没有连接方的验证,连接不需要凭证或证书。数据未使用任何普通加密算法加密; 然而,数据在数据打包过程中是模糊的,通常是人类无法读懂的。由于工厂网络与外部世界隔离,安全通常不会被视为一个问题。
结论
使用HSMS的SECS/GEM协议层提供了在工厂主机和设备之间交换准确数据的非常有效的方法。
第十二章 消息日志
1977年,经典电影《第三类接触》上映。在电影的最后,有一段外星人和人类之间的戏剧性的 “对话”。其中一位科学家说:“我希望有人把这一切都记下来。”
他们真正想要的是消息日志!
就像软件日志对于应用程序的故障诊断很重要一样,记录工厂主机和生产设备之间的详细消息交互对于故障诊断也很重要。
例如,主机发送一个命令,设备根据消息进行操作,但是有些事情并没有如预期的那样工作。将发送给设备的消息和设备的回复的消息与来自设备的其他日志一起查看,非常有助于确定问题位于在哪儿。
用于显示/表示已记录消息的格式也非常重要。SECS消息格式的最新行业标准是SEMI - E173,即XML SECS- ii消息符号规范(SMN)。
举个例子:
<?xml version="1.0" encoding="utf-8"?>
<SECSMessageScenario xmlns="urn:semi-org:xsd.SMN">
<Comment time="2018-02-05T18:19:20.365Z">State Change NotConnected</Comment>
<Comment time="2018-02-05T18:19:20.400Z">State Change NotSelected</Comment>
<HSMSMessage time="2018-02-05T18:19:20.394Z" sType="Select.req" direction="H to E" txid="1">
<Header>FFFF0000000100000001</Header>
</HSMSMessage>
<HSMSMessage time="2018-02-05T18:19:20.417Z" sType="Select.rsp" direction="E to H" txid="1">
<Header>FFFF0000000200000001</Header>
<Description>Communication Established</Description>
</HSMSMessage>
这是一个S5,F5的例子:
<SECSMessage s="5" f="5" direction="H to E" replyBit="true" txid="7" time="2018-02-05T18:19:20.507Z">
<SECSData>
<UI4 />
</SECSData>
</SECSMessage>
<SECSMessage s="5" f="6" direction="E to H" replyBit="false" txid="7" time="2018-02-05T18:19:20.507Z">
<SECSData>
<LST>
<LST>
<BIN>0</BIN>
<UI4>1</UI4>
<ASC>Alarm 1 Text</ASC>
</LST>
</LST>
</SECSData>
</SECSMessage>
SMN格式非常适合:
以清晰的方式捕获HSMS头信息
以精确的二进制格式记录消息
使用软件读取日志
创建主机或设备模拟器,因为很容易从软件应用程序读取日志并回放
从SMN日志中提取数据
日志可以被设备、主机甚至像Cimetrix的CIMSniffer实用程序这样的“网络嗅探器”捕获。
Cimetrix的Logviewer实用程序也支持SMN日志:
有了这些标准和工具,就没有理由像《亲密接触》中的科学家那样,希望这些信息被记录下来。去打开日志!
Cimetrix的CIMConnect、HostConnect和SECSConnect都提供SMN格式的消息日志记录。
第十三章GEM 控制状态
什么是GEM 控制状态?
GEM板的控制状态是E30 GEM的基本要求之一。它定义了主机和设备之间的协作级别,并指定了操作员如何在不同级别的主机控制状态下进行交互。
在半导体工厂中,主机或操作员可以控制设备的加工。双方同时控制设备会带来问题。所以当一方控制设备时,另一方所能进行的操作将受到限制。例如,如果操作员暂停了工艺处理,则不应允许主机发送恢复处理或启动新作业的命令。GEM控制状态就是为了防止此类问题的发生而被建立的。
控制状态如何工作?
控制状态提供三个基本级别的控制。每个级别都描述了主机和设备端可以执行哪些操作。
远程
主机可以最大限度地控制设备。
设备可能会限制当地操作员控制设备的能力,但这不是标准的要求。主机必须能够处理操作员在设备上调用的意外命令。
主机使用GEM远程命令来调用设备上的命令。
本地
本地
操作者可以尽可能地控制设备。
主机可以完全访问信息。主机可以使用其他GEM特性(如收集事件、跟踪和状态数据收集)收集数据。
限制主机如何影响设备操作:
禁止启动处理(例如START)或导致物理移动的远程命令。在处理期间,还禁止影响处理的远程命令(停止、中止、暂停、恢复)。
允许使用其他不启动处理、不会导致物理移动或影响处理的远程命令。
在处理期间,禁止主机修改任何影响该进程的设备常数。
不影响当前运行进程的设备常数可以更改。
当不处理时,所有的设备常数都是可变的。
离线
操作者对设备有完全的控制。
主机对设备操作没有控制,信息收集能力非常有限。
设备将从主机接收的唯一消息是:
用于建立GEM通信的消息(S1F13/F14)。
请求激活联机控制状态(S1F17),但仅限于当前活动状态为主机脱机时(控件状态模型上的转换#11)。
在尝试在线时收到的S1F2“Are You There Response”
设备可能发送给主机的唯一主要消息是:
用于建立通信的消息(S1F13)。
S9Fx消息,但仅响应设备离线时通常响应的消息(即S1F13和S1F17)。
当进入“Attempt ON-LINE”子状态时,S1F1 “Are You There Request” 会被发送到主机。此消息用于从主机获得进入在线状态的权限(转换#5)。
离线时没有不会对消息做假脱机处理。
控制状态模型的设计使设备操作员对状态机的控制多于对主机的控制。这将保护操作员不被主机发起的意料之外的状态更改影响。
设备操作员可以通过操作界面选择哪个在线子状态处于活动状态。主机端不能选择哪个在线子状态是活动的。
设备端可以将控制状态模型放入设备离线状态(转换#6)。当处于这种状态时,主机无法请求设备进入在线状态。
主机端可以将控制状态放入主机离线状态(转换#10),但是设备端可以拒绝此请求。当处于主机离线状态时,设备端总是可以通过先切换到设备离线状态(转换#12),然后尝试在线(转换#3),来进入在线状态。
操作界面需求
设备必须提供一种显示当前控制状态的方法,以便操作者知道谁控制着设备。
设备必须提供一个瞬时开关来启动到设备离线状态的转换,另一个开关来尝试从设备离线状态切换到在线状态。这可以是前面板上的一个硬件开关,但通常在软件中使用按钮控件实现。
设备必须提供一个离散的双位置开关,操作员可以使用该开关指示所需的在线子状态(本地或远程)。这可以是前面板上的一个硬件开关,但通常在软件中使用按钮控件实现。如果在软件中实现,该设置必须保存在非易失性存储中。
有条件的状态转换
在控件状态模型中,转换#1、#2、#4和#7是有条件状态转换。设备应用程序必须提供一种方法来配置要转换到哪种状态。设备常量可以用于该配置。
条件转换#1和#2决定了启动期间控制状态模型的初始状态。控制这些转换的配置可以设置为以下状态之一:
在线
设备离线
尝试在线
主机离线
条件转换#4用于决定设备尝试在线失败后要转换到哪个状态。该配置可以设置为以下状态之一:
设备离线
主机离线
条件转换#7用于确定当控件状态变为在线时,应该进入哪个在线子状态(本地或远程)。该配置可以设置为以下在线子状态之一:
当地的
远程
控制状态功能用会用到的消息
消息编号 | 方向 | 描述 |
S1F1 | 主机 <- 设备 | 当设备尝试在线时(处于“尝试在现在”状态),此消息被发送到主机。主机通过发送S1F2应答消息授予权限。主机可以通过发送S1F0或允许消息事务超时来拒绝权限。 |
S1F15 | 主机 -> 设备 | 主机发送此消息请求从“主机离线”到在线的转换(转换#11)。 |
S1F17 | 主机 -> 设备 | 主机发送此消息请求从在线到“主机离线”的转换(转换#10)。 |
第十四章 总结
我们希望您能喜欢这一系列与GEM标准相关的主题。
显然,GEM标准是最适合工厂自动化各个方面的行业标准,具有广泛的特性,支持智能制造和工业4.0。GEM标准可以在最简单和最复杂的设备上实现。GEM将继续在未来许多行业的制造业中发挥关键作用。