目录
此部分主要来自于网络内容的收集整理及自己的一点体会,都是一些SECS/GEM开发的相关知识点,可以帮助博友们有针对性的去学习。
1. FA(Factory Automation)的目的
生产费用减少
通过自动化减少人力
提高生产力
通过中央控制增加产量
减少操作人员的失误
通过对设备状态的把握预测和预防错误
设备管理的最大化
通过检测设备状态计划性的分配设备保养和工作的时
2. 半导体设备通信标准
通信协议属于 SEMI 标准中的设备自动化/软件标准,包括 SECS-I、HSMS、SECS-II 和 GEM 四个标准。其实还有一个最新国际标准EDA(Interface A) ,但不在本系列文章的探讨范围内。
2.1 标准描述
- SECS-I
属于传输协议标准,描述数据是如何通过物理层在设备与主机之间进行传输的,通过 RS-232C 通信来传送SECS-II 数据的规范。
SEMI E4 : SEMI Equipment Communications Standard 1 Message Transfer
- SECS-II
- 属于消息格式标准,定义了在设备与主机之间进行双向会话时所使用的消息格式。
- SEMI E5 : SEMI Equipment Communications Standard 2 Message Content
- HSMS
- 属于传输协议标准,描述数据是如何通过物理层在设备与主机之间进行传输的,使用的传输媒质是以太网。通过以太网来传送SECS-II 数据的规范。
- SEMI E37 : High-speed SECS Message Services Generic Services
- GEM
- 属于设备功能标准,定义了通过通信链路所能看到的设备接口,指定了根据特定的消息设备所应该采取的对应的行为。
定义设备驱动的标准,对设备工作的scenario和当时所使用的SECS-II 消息们的捆绑。 - SEMI E30 : Generic Model for Communications and Control of Manufacturing Equipment (制造设备通信和控制的通用模型)
- 属于设备功能标准,定义了通过通信链路所能看到的设备接口,指定了根据特定的消息设备所应该采取的对应的行为。
2.2 总体结构
2.3 通信标准的历史
2.4 通信协议分层结构
其中,SECS-I 和 HSMS 属于传输协议标准,描述了数据是如何通过物理媒介在设备与主机之前传输的。SECS-II 属于消息格式标准,定义了在设备与主机之前进行双向会话时所使用的消息格式。GEM 属于特殊功能标准,定义了通过通信链路所能看到的设备接口,指定了根据特定消息设备所应该采取的对应行为。
3. SECS-I通信标准
SECS-I (SEMI Equipment Communications Standard 1 Message Transfer)[7]定义了使用 RS-232 作为传输媒质时点到点的数据通信。通信使用的是一个串行发送的 8 比特字符串,以及一个起始位和一个终止位。通信是双向和异步的,但是同一时间媒质上只能有一个方向的数据进行传输。数据被分块进行传输,每个数据块最大为 254 字节,一个消息最多能包括 32767 个数据块。
SECS-I标准是用于串口通讯的设备,这种设备基本都是20年前的老旧设备,近些年的新设备已经不再使用此标准了。因此对于此标准的开发需求已经很少了。
3.1 硬件通讯
以RS232串口通信协议为通讯标准,8-N-1的传输方式,并且采用半双工方式通讯,波特率一般采用9600。
3.2 数据块传输协议
数据块传输协议 (Block Transfer Protocol) 用于建立通信并为数据块的传输提供环境。第一消息 (primary message) 或第二消息 (secondary message) 可能需要分块传输。协议使用单个字节进行握手,标准定义了四个握手编码,用于控制数据流,四个标准编码如下表所示:
Name | Code (b8 b7 …… b1) | Function |
---|---|---|
ENQ | 00000101 | Request to Send |
EOT | 00000100 | Ready to Receive |
ACK | 00000110 | Correct Reception |
NAK | 00010101 | Incorrect Reception |
标准还定义了两个超时参数,用于检测通信故障。下图显示了该协议的握手过程以及 T1 和 T2 两个超时参数。
- T1 (Inter-Character Timeout):表示在接收数据块时每个字符之间的时间间隔
- T2 (Protocol Timeout):表示发送 ENQ 之后到接收 EOT 的时间间隔
3.3 消息格式
块数据(block data)是单块消息或多块消息中的数据部分,包括一个长度字节、N 个字节的数据和两个字节的校验和,其结构如下图所示。
其中各项说明如下:
- Length Byte:表示随后有多少个字节的数据(即 N bytes),不包括最后 2个字节的校验和
- Checksum:只计算 N Data Bytes 的校验和
- N Data Bytes:表示消息块中的数据部分,长度范围是 10 至 254 字节,它由十个字节的头和消息数据组成,如下图所示:
Data Bytes 中各项说明如下:
- Message Data:表示消息的数据部分,由编码后的 SECS-II 消息构成
- 10 Byte Header:用于描述块数据中的数据内容,包括 Device ID、Message ID、Block Number 和 System Bytes,如下图所示:
10 Byte Data 结构中各项说明如下:
- Device ID:头中的第一和第二字节,其第一个比特为 R-bit,其作用是指出消息传输的方向。
- Message ID:头中的第三和第四字节,其第一个比特为 Wait-bit,用于指示消息的发送者是否需要回复。
- Block Number:头中的第五和第六字节,其第一个比特为 End-bit,用于指示这个是否是消息的最后一个块。
- System Bytes:头的最后四个字节,第七和第八字节表示 source ID,用于表示消息的发送者,第九和第十字节表示 transaction ID,用于唯一标示每个发送的消息。
此通信标准建议每次可传输的字节最多为254,如果-个消息的大小<245个字节,则以一个块的形式进行传输。
如果-个消息的大小> 245个字节,则以分块的形式进行传输。
3.4 握手信号
3.5 超时
-
T1:在一个块中各个字符间传输的最大时间间隔。
-
T2:对于发送者:
发送ENQ后,等待EOT的时间
发送一个Message后,等待ACK or NACK对于接收者:
发送EOT后,等待第一个块的第一个字符的时间 -
T3:
-
T4:多个块传输中,各个块间的时间间隔。
4. HSMS通信标准
HSMS (High-Speed SECS Message Services)[8]定义了使用 TCP/IP 作为物理传输媒质时的通信接口。HSMS 可以作为 SECS-I 以及其他一些高级通信环境的替代。HSMS 又包括了两个子标准,分别是 HSMS-SS (High-Speed SECS Message Service Single Selected Mode)和 HSMS-GS (High-Speed SECS Message Service General Session)。HSMS-SS 对母标准中的操作进行了简化,以便于实际应用。HSMS-GS 定义了使用 HSMS 访问多个子实体的操作。
4.1 TCP/IP 的使用
HSMS可以使用任何标准 TCP/IP API 进行开发,比如 BSD socket、TLI等。使用标准的 TCP/IP 寻址,默认的端口号为 5000。建立连接的过程如下图所示:
HSMS 把通信实体分为被动模式和主动模式两种:
- 被动模式:处于被动模式的实体侦听线路,接收主动模式的实体的连接请求
- 主动模式:处于主动模式的实体发起连接请求
被动模式下建立连接的步骤包括:
(1) 获得一个连接端点,在指定的端口进行侦听
(2) 侦听到远程端点发送的连接请求
(3) 接收连接请求,发送确认
主动模式下建立连接的步骤包括:
(1) 获得一个连接端点
(2) 向指定端口号的远程端点发起连接
(3) 等待远程端点接收连接并返回确认
4.2 HSMS的控制消息
- Select.req/Select.rsp
- Not Selected 状态转化为 Selected 状态所使用的消息 (Active Entity 发送Select.req)
- Deselect.req/Deselect.rsp
- 在双方协议终止通信时使用. 由想要通信终止的一端发送Deselect.req.
- Linktest.req/Linktest.rsp
- 连接状态的确认和维护确认, 如果没有应答则转换为Not Connected 状态.
- Separate.req
- 单方面通知通信终止时使用.
- Reject.req
- 收到无效消息时发送
4.3 HSMS的状态转换
4.3.1 状态图
图中各状态说明如下:
- Not Connected 状态:实体开始侦听,但是未建立任何 TCP/IP 连接或者之前建立的 TCP/IP 连接已经断开;
- Connected 状态:已经建立一个 TCP/IP 连接,包括 Not Selected 和 Selected两个子状态;
- Not Selected 状态:Connected 的子状态,表示没有创建 HSMS 会话或之前的会话已经结束;
- Selected 状态:Connected 的子状态,表示至少创建了一个 HSMS 会话。
4.3.2 被动模式连接的状态转换
4.3.3 主动模式连接的状态转换
4.4 HSMS的消息格式
4.4.1 一般消息格式
HSMS 消息以字节的方式作为单个的流进行传输,其格式如图所示:
- Message Length:一个 4 字节无符号整数,表示其后 Message Header 加上 Message Text 总的字节数,其最小值为十字节。
- Message Header:消息头长度为十字节,格式如下图所示:
其中各项说明如下:
-
Session ID:十六比特无符号整数,最高位必须为零,剩下十五比特用于唯一标识一台设备。
-
Header Byte 2:对于不同类型的消息取值不同。
-
Header Byte 3:对于不同类型的消息取值不同。
-
PType:表示类型(Presentation Type)为八比特无符号整数,用于枚举表示层消息类型,即消息头和消息内容是以何种方式编码的,PType 取值如下表所示:
-
SType:会话类型(Session Type)为八比特无符号整数,其取值类型如下表所示:
- System Bytes:四字节无符号整数,用于唯一标识一次消息交互。
4.4.2 控制消息格式
HSMS 中的控制消息包括:
Select.req:SType=1,PType=0
Select.rsp:SType=2,PType=0,Header Byte 3 为 SelectStatus 项
Linktest.req:SType=5,Ptype=0,Session ID=0xFFFF
Linktest.rsp:SType=6,Ptype=0,Session ID=0xFFFF
Separate.req:SType=9,PType=0
4.5 计时器
4.5.1 回复超时 T3
回复超时 T3 (T3 reply timeout)表示一个实体等待回复消息的最长时间,如果T3 计时器超时则取消这次会话但不断开 TCP/IP 连接,如果这个实体是设备,则向主机发送 SECS-II S9F9 消息。
4.5.2 连接间隔时间 T5
连接间隔时间 T5 (T5 connect separate timeout)表示两个连接请求之间的时间间隔。过于频繁的向一个未准备好连接的实体发起连接请求,会加重 TCP/IP 的负荷。因此,当一个主动模式实体发起的连接操作终止后(不论是成功结束还是被远端实体拒绝),该实体必须等待 T5 计时器超时后发起下一次连接请求。
4.5.3 控制会话超时 T6
控制会话超时 T6 (T6 control transaction timeout)表示一个控制会话所能开启的最长时间,超过该时间就认为这次通信失败。当发送.req 控制消失时 T6计时器开启,若在 T6 超时之前收到相应的.rsp 消息则计时器关闭,否则控制消息的发起者将关闭这次会话,并认为出现一个通信故障。
4.5.4 Not Select 状态超时 T7
Not Select 状态超时 T7 (T7 NOT SELECT timeout)表示当建立了 TCP/IP 连接之后通信处于 Not Select 状态的最长时间,通信必须在该时间完成 select 操作,否则将会断开 TCP/IP 连接。
4.5.5 网络字符超时 T8
网络字符超时 T8 (T8 network intercharacter timeout)表示成功接收到单个HSMS 消息的字符之间的最大时间间隔。鉴于 TCP/IP 是面向流的通信协议,因此一个 HSMS 通信消息可能被分为若干个 TCP/IP 消息进行传输,若 T8 计时器超时则认为这次传输失败。
5. SECS-II通信标准
SECS-II 标准定义了设备和主机之前发送的消息所表达的含义。所有的消息按照其行为分类,称为Stream,每个Stream又包括具体的消息,称为Function。标准还定义了消息的结构,消息由数据项和数据项序列构成。SECS-II还规定了事务协议,用于管理消息的交换、分块等。
5.1 消息分类
标准把所有的消息按照行为分为各种Stream,然后在每种Stream中再按照其功能分为Function,即每个具体的消息。Stream和Function 都按照数字进行编号,所有的第一消息的Function编号为奇数,对应第二消息的Function编号为偶数且为第一消息Function编号加一。如果第一消息不需要回复消息,则第一消息Function编号加一的第二消息保留。所有Function编号为0的消息保留。所有Stream编码及其功能描述如下表所示:
一些Stream和Function 编号组合被标准保留,其他的可以由用户自定义。保留的 Stream和Function编号为:
- Stream 1,Function 0-255
- Stream 1-63,Function 0-63
- Stream 64-127,Function 0
上述编号分配情况如下图所示:
5.2 消息结构
SECS-II 消息由两种数据结构组合而成:数据项(item)和列表(list)。采取这样的结构的目的是从逻辑上划分消息内容,使消息可以自描述内部结构。
-
数据项(item):数据项即一个带长度和格式的信息包。前 2、3 或 4 个字节作为数据项头(item header),描述该数据项的格式和长度信息。如图 2-22 所示。头由格式字节和长度字段组成。第一个字节是格式字节,其高六位表示这个数据项的格式,低二位表示紧随其后有多少个字节表示该数据项的长度,取值只能为1、2 和 3,如果为 0 则该数据项格式错误。高六位的取值及对应格式见表 2-8。根据格式字节的低二位确定长度字段为几个字节,若为 1 则该数据项最长为255字节;若为 2 则该数据项最长为 64K 字节;若为 3 则该数据项最长为 7.99M 字节。长度字段的第一个字节为最高位字节。
-
列表(list):列表是一组有序的元素集合,集合中的元素既可以是数据项也可以是列表本身。列表头和格式编码为 0 的数据项头有着相同的格式。长度字段表示该列表中有多少个元素。列表的作用是将若干个有着不同格式的相关数据项组合到一个表示一个有自身含义的结构。
下面列举 4 个数据项和列表编码示例:
(1) 一个包含二进制数据 10101010 的数据项:
(bit 87654321)
00100001 (数据项,二进制数据,一个字节表示长度)
00000001 (长度为 1 字节)
10101010 (数据)
(2) 一个包含 3 个 ASCII 字符 ABC 的数据项:
(bit 87654321)
01000001 (数据项,ASCII 数据,一个字节表示长度)
00000011 (长度为 3 字节)
01000001 (ASCII 字符 A)
01000010 (ASCII 字符 B)
01000011 (ASCII 字符 C)
(3) 一个包含三个 2 字节有符号整数的数据项:
(bit 87654321)
01101001 (数据项,2 字节有符号整数,一个字节表示长度)
00000110 (长度为 6 字节)
xxxxxxxx (整数 x 的高位)
xxxxxxxx (整数 x 的低位)
yyyyyyyy (整数 y 的高位)
yyyyyyyy (整数 y 的低位)
zzzzzzzz (整数 z 的高位)
zzzzzzzz (整数 z 的低位)
(4) 一个包含 4 字节浮点数的数据项
(bit 87654321)
10010001 (数据项,4 字节浮点数,一个字节表示长度)
00000100 (长度为 4 字节)
f f f f f f f f (4 字节浮点数)
f f f f f f f f
f f f f f f f f
f f f f f f f f
5.3 SECS 消息语言
SECS 消息语言(SECS Message Language, SML)是一种用于描述 SECS-II 消息内容的符号语言。它同 SECS-II 标准中的相关定义十分相识,但描述更加准确和通用。主要用于半导体设备手册说明所使用的 SECS-II 消息内容。
SML 对数据项的定义如下:
<type [count] value>
其中 type 表示数据类型,count 表示个数,value 表示该数据的值。每个数据项都由一个尖括号封装。Type 的取值如下表所示:
SML 对一个完整消息定义如下:
SnFm W item .
其中 SnFm 表示 stream 编号为 n 且 function 编号为 m 的 SECS-II 消息。W 表示W 比特位,如果设置为 0 则忽略,如果回复可选则用方括号括起来。Item 即上述数据项。最后消息以一个句号“.”结束。
例如 S5F1 消息,其结构在 SEMI 标准中描述如下图所示:
然而使用 SML 可以更准确的描述该结构,如下图所示:
6. GEM通信标准
GEM (Generic Model for Communications and Control of Manufacturing Equipment)定义了通过通信链路所能看到的半导体设备的行为。SECS-II 标准定义了在主机和设备之前交换的消息格式以及相关数据项。GEM标准在此基础上定了在何种情况下使用哪些SECS-II消息以及会发生哪些行为。主机电脑在任何时间都可能发起任何GEM消息场景,设备必须按照 GEM标准中的描述做出响应。
GEM标准为所有半导体制造设备定义了实现SECS-II的标准方法。标准定义了设备行为和通信功能的通用集合,这样为支持半导体设备的自动化加工程序提供了功能性和弹性。设备提供商可以提供GEM中没有的额外功能,但是不能与GEM中已定义的行为和功能相冲突。
E5、E37标准规定了主机如何同设备建立起通信,以及传输数据的格式。
在实际上,设备可能只需要采用SECS-II的某部分信息便可使工厂主控电脑达到控制设备的功能,并不需要完全使用SECS-II的所有信息。
于是E30 GEM (通用设备模型通讯与控制标准)标准被制定了出来。
6.1 状态模型
状态模型从主机角度以简洁易懂的方式描述设备行为。不同设备的状态模型在有些方面相同(比如通信)但是在其他方面不同(比如加工)。因而需要把一个设备分为并行的几个部分,这些部分既可以单独的建模又可以合并起来,如下图所示:
6.1.1 通信状态图
通信状态模型定义了关于设备与主机之间的通讯行为,描述的是主机与设备之间交换消息的功能,GEM 中的通信状态如下图所示:
6.1.2 控制状态图
控制状态模型定义了主机与设备之间的操作等级,此外还说明了操作员应该如何控制主机的不同层次。通信状态模型描述的是主机与设备之间交换消息的功能,控制状态模型则描述设备应该如何响应它所收到的消息。
控制状态模型为主机提供了三个基本层次的控制。在最高层次(REMOTE),主机可以最大程度的控制设备。在中间层次(LOCAL)主机可以访问设备的所有信息,但对设备的操作有所限制。在最低层次(OFF-LINE)设备不允许主机控制且只能提供很有限的信息。控制状态图如下图所示:
6.1.3 设备加工状态图
设备加工状态模型主要取决于设备加工、所采用的技术和类型。然而仍然可以用一个模型表示其中共同的部分。下图表示了一个实现模型,该模型示范了设备加工模型所需要的特性。
6.2 设备功能
设备功能即半导体制造设备提供的操作,这些操作通过使用 SECS-II 消息由通信接口发起。通信场景即为了实现某个功能按顺序排列的一组 SECS-II 消息。
6.2.1 建立通信
建立通信功能提供了一系列在系统初始化或通信节点丢失了通讯之后正式建立通信的方法,以及通知远程通信节点通信发生了中断。通信在主机和设备分别发送 S1F13 和 S1F14 消息之后正式建立,通信场景如下图所示:
6.2.2 数据收集
数据收集功能使主机可以通过事件报告、跟踪数据报告、阀值检测和查询选定状态等来监测设备的活动,并通过收集到的数据完成优化控制。
-
事件数据收集
事件数据收集为用户提供了一种灵活的方法来实现设备相关的数据表示以及如何向主机报告。基于事件的数据收集方法可以自动向主机提供设备的活动信息,并且可以检测设备状态以及同设备保持同步。其通信场景如下图:
-
变量数据收集
这个功能使主机可以查询设备的数据变量,以便于初始化和同步。通信场景如下图所示:
-
跟踪数据收集
跟踪数据收集提供了一种定期对数据采样的方法。这种基于时间的数据收集方法便于跟踪数据趋势、在某个时间间隔内重复应用和检测某个连续变量。通信场景如下图所示:
-
阀值监测
阀值监测功能为主机提供了一种异步监测设备状态的方法,使主机不用持续的向设备查询状态值。通信场景如下图:
- 状态数据收集
状态数据收集功能使主机可以向设备查询选中的状态信息,便于同设备状态保持同步。通信场景如下图:
- 在线确认
在线确认用于设备响应主机发送的 S1F1 消息。通信场景如下图:
6.2.3 报警管理
报警管理功能使主机可以管理设备上发生的警报状态并获得相应通知。主机可以打开或关闭某个报警,要求设备上传警报信息等。通信场景如下图:
6.2.4 远程控制
远程控制功能使主机按不同层次对设备进行操作。设备向主机提供的操作包括:开始加工、选择某个加工程序或配方、停止加工、暂时挂起加工程序、恢复加工和取消加工。通信场景如下图所示:
6.2.5 设备常量
设备常量功能使主机可以读取并改变选中的设备常量。通信场景如下图:
6.2.6 加工程序管理
加工程序管理功能使主机能够通过同设备的接口来管理加工程序和配方。加工程序使工程师按不同目的配置设备的加工和加工所需要的相关参数。不同的产品可能需要不同的加工程序,因此工程师必须能够在设备的存储器中创建、修改和删除这些程序。为了使主机能够确保相应的程序存储在设备中正确的位置,该功能提供了从设备到主机和从主机到设备的传送程序的方法。主机还可以删除设备存储器中的某些程序,以便为下载新程序腾出空间。此外,主机还应该知道设备上的加工程序在内容和状态上发生了哪些改变。配方的管理同程序的管理类似,稍有不同的是配方在传输过程中参数连同配方一起传输。通信场景如下图:
6.2.7 原料运输
原料运输功能包括原料在设备、缓冲区和存储工具之间的物理传输。该功能可以通知主机原料是否已从设备的某个端口接收或传输。通信场景如下图:
6.2.8 设备终端服务
设备终端服务功能使主机能够在设备的显示装置上显示信息,并且使设备的操作员能够向主机发送消息。通信场景如下图:
6.2.9 错误消息
错误消息功能用于向主机提供设备检测到的消息或通信错误的相关信息。通信场景如下图:
6.2.10 时钟
时钟功能使主机能够管理设备上与时间相关的行为和事件。时钟的主要目的是为收集事件和警报报告提供时间戳。时间戳的使用利于分清事件或警报的发生顺序,并使主机能够调度设备行为。该功能使主机能把设备的内部时钟设定为某个特定值,同时设备也可以向主机询问当前日期和时间。通信场景如下图:
6.2.11 数据缓存
数据缓存功能使设备可以在发生通信错误时存储消息并随后在通信修复之后继续向主机发送这些消息。数据缓存的目的在于当发生通信错误时保存消息以免信息丢失。数据缓存状态图如下图所示:
6.2.12 控制
控制功能用于配置并操作控制状态图,使用户或主机可以修改设备的控制相关行为。通信场景如下图:
6. 最后
以上就是在开发SECS/GEM时将会涉及到的主要知识点,但是本文介绍的都还比较粗浅,想要真正的深入了解还需要仔细的研究SEMI的相关文档。下面列出的是主要的相关文档,有需要的可自行查阅:
- SEMI E4-0699:SEMI设备通信标准1消息传送(SECS-I)
- SEMI E5-0304:SEMI设备通信标准2消息内容(SECS-II)
- SEMI E30-1103:通信的一般模式和SEMI设备的控制(GEM)
- SEMI E39-0703:目标服务标准:概念、性能和服务
- SEMI E40-0304:加工过程管理标准
- SEMI E87-0304:运载管理暂行规范
- SEMI E90-0304:衬底跟踪规范
- SEMI E116-0703:设备运行跟踪暂行规范
- SEMI E94-0702:控制工作管理暂行规范
- SEMI E95-1101:设备人机界面规范
现在FAB厂使用的GEM标准主要有2套,分别是GEM200(8寸)、GEM300(12寸),对标准的要求如下:
其实简单一点来说GEM就是:
从工厂主机的角度来看,设备应该具有什么功能。
在什么情况下,使用哪些SECS-II 消息。
那么设备一般应该具有哪些功能?如下:
现在应该知道自己的设备需要支持哪些标准、哪些功能了?