文章的内容基本上来自参考资料和自己看的文档,若有侵权,请联系删除,谢谢。
1、SECS-II 概述
主机和设备( Host and Equipment)之间发送 SECS-II 消息。每个SECS-II消息都包含一条主消息( primary message )
和一个可选的次回复消息( optional secondary reply message)
。这也被称为一个事务(transaction)。
-
Primary: 是由主机或设备发送的SECS-II消息。这里要注意,既可以是 HOST 发送,也可以是 EQUIPMENT 发送,谁先发送就认定为 Primary。
- Secondary: 是一个可选的SECS-II消息是作为对 Primary 的响应而发送的。也就是说,在SECS-II通信中,当接收到主要消息时,可以选择发送一个可选的响应消息。
定义了以消息的形式在设备和主机之间传递信息,消息按其流分类,称为Stream。有很多不同流的Stream,每个Stream又包括具体的消息,称为Function。
消息由数据项和数据项列表 ( items and lists of items ) 构成。该结构允许自描述数据格式,以保证对消息的正确解释。
2、Streams and Functions
2.1 Streams and Functions 基础介绍
SECS-II消息被称为行为和函数(Streams and Functions)
。每条消息都有一个流值(Sx)和一个函数值(Fy)。比如:Stream 1 Function 1,写作:S1F1,并被称为“S1F1”。流是消息的类别,而函数是该类别中的特定消息。
注意:
如果Primary Message不需要应答,则其对应的偶数编号(Primary Message Function 编号加1)的Function不使用,保留。
Stream | **Function ** | Availability |
---|---|---|
0 | 0 to 255 | 系统保留的 |
1 to 63 | 0 to 63 | 系统保留的 |
64 to 127 | 0 | 系统保留的 |
1 to 63 | 64 to 255 | 用户可自定义使用的 |
64 to 127 | 1 to 255 | 用户可自定义使用的 |
注意:
上面这句话的意思是:所有Stream中Function编号为0的Message保留,用于中止事务。
2.2 Stream 的分类
Stream | Catagory | 含义 |
---|---|---|
1 | Equipment Status | 设备状态 |
2 | Equipment Control and Diagnostics | 设备控制和诊断 |
3 | Material Status | 原料状态 |
4 | Material Control | 原料控制 |
5 | Alarm Handling | 异常处理 |
6 | Data Collection | 数据采集 |
7 | Recipe Management | 工艺程序管理 |
8 | Control Program Transfer | 控制程序传输 |
9 | System Errors | 系统错误 |
10 | Terminal Services | 终端服务 |
11 | Host File Services (Deleted) | 主机文件服务(已删除) |
12 | Wafer Mapping | 晶片图形布置 |
13 | Data Set Transfers | 数据集传输 |
14 | Object Services:对象服务; | 对象服务 |
15 | Recipe Management | 配方管理 |
16 | Processing Management | 工艺进程管理 |
17 | Equipment Control and Diagnostics | 设备控制和诊断 |
18 | Subsystem Control and Data | 子系统控制和数据 |
3、事务和会话协议
3.1 事务
事务:是信息交换的基础
。一个事务由不需要Reply的Primary Message或需要Reply的Primary Message及其Reply Message组成。这里我理解的事务指的是:一次完整的请求或者一次完整的请求响应。
- 使用S1F2来响应S1F1;
- 对于接收到的任何设备无法处理的消息,使用Stream 9发送相应的错误消息;
- 格式化任何其他受支持的消息;
- 在检测到设备上的事务超时后,向主机发送S9F9;
- 在收到Function 0的Message作为对Primary Message的回复后,终止相关事务。该设备不应向主机发送任何错误消息。
3.2 会话
会话:是用于完成特定任务的一系列的一个或多个相关事务
。会话应包括完成任务所需的所有事务,会话结束时,会话双方应释放相关资源。
会话超时:表示会话在规定时间内未完成
。会话超时时间和检测由用户应用程序自定义。
S9F13给主机。
SECS-II中定义了7种类型的会话:
2、如果响应端有发起端想要的数据,则会使用Primary Message请求这些数据,响应端将这些数据作为Reply Message回复给发起端。这是一个 request / data conversation(请求/数据对话)。
4、如果发起端有一个要为特定的交互发送的多块消息,则发起端必须在发送数据之前获得响应端的许可。
这是一个 inquire / grant / send / acknowledge conversation(询问/授予/发送/确认对话)。
6、 一个关于设备之间原料处理的会话。这个会话在 Stream 4中详细描述。
会话中的第一个事务请求信息,并且响应端以三种方式之一响应:(1)返回信息,(2)响应端表示不能或不会获得信息,(3)响应端表示将在随后的事务中获得并返回信息。
4、消息的数据结构
所有根据SECS-II标准的消息使用两种数据结构,即 Item (项目) 和 List(列表)。消息数据结构定义了消息的逻辑划分,与消息传输协议的物理划分不同。
4.1 Item
一个Item是一个具有长度和格式的信息包。由Item Header 和 Item Body
组成。
Item的前2个、前3个或前4个字节称为 Item Header,用以描述Item的长度和格式。Item Header后的字节称为 Item Body,Item Body是Item的实际数据。
Header 的结构图:
LSB和MSB的含义:
-
LSB(Least Significant Bit):最低有效位,二进制中代表最低值的比特位
MSB(Most Significant Bit):最高有效位,二进制中代表最高值的比特位,这一位对数值的影响最大。
例如,在二进制的1001(十进制的9)中,最左边的“1”即是MSB对数值影响最大,从1到9的变化幅度。而最右边的1是LSB因为仅会让数值产生8到9的变化。
总结:MSB指二进制中表示的最高有效位,LSB指数据的最低有效位,1(
MSB
)001(LSB
)
Format byte,其后的字节为Length byte。
Format byte 被各位了两部分,前面两位表示:Item Body的长度,后面的表示:数据的格式,即ItemBody中的字节数据类型
。
定义Format byte后面有几个字节来表述Item Body的长度。取值只能1、2、3。如果值为2,则表示有2个字节表述Item Body的长度,即第2个和第3个字节。值为0是非法的,会产生错误。
这里有一个需要特别注意的点,图中的 No. of length bytes 为 0 时,说的是错误的数据格式。但是我看其他的文档,说的是 0 代表 无Item 。这里暂不清楚谁对谁错,也可能是不同的设备厂商有不同的定义。这里大家一定要注意!
定义数据的格式,即ItemBody中的字节数据类型。下图为数据类型定义表:
4.2 List
List是一组有序的元素,其中元素可以是Item或List
。
这里我页不太明白,清楚的朋友,请不吝赐教。
4.3 Localized Character String Items
因为字符有许多不同的编码方案,所以有一个附加的string header来表述字符集。
string header 是 Item 的 实际数据的一部分,所以它的长度计算包含在Item Header 的 Length byte 中。
4.4 不同Item的数据实例
1、包含一个二进制数据 10101010
的 Item。
00100001 Item, binary, 1 length byte
00000001 1 byte length
10101010 data byte
2、 包含三个ASCII字符ABC的Item。
01000001 Item ASCII, 1 length byte
00000011 Three bytes long
01000001 ASCII A
01000010 ASCII B
01000011 ASCII C
3、包含三个2字节有符号整型数字的Item。
01101001 Item, 2-byte integers
00000110 6 bytes total (6/2=3 integers)
xxxxxxxx MSByte number x
xxxxxxxx LSByte number x
yyyyyyyy MSByte number y
yyyyyyyy LSByte number y
zzzzzzzz MSByte number z
zzzzzzzz LSByte number z
4、 包含一个4字节浮点数的Item。
10010001 Item, 4-byte floating point
00000100 4 bytes (4/4=1 number)
ffffffff
ffffffff Floating point number
ffffffff
ffffffff
5、Message Layout(消息布局)
SECS-II 消息包含一个 structure or layout (结构或布局)
。该布局定义了SECS-II消息的所有数据项。布局是消息中遵循Stream and Function notation (流和函数符号)
的一部分。
L、A 这种是什么意思呢,还记得我们在 4.1 Item
中介绍的 Format byte 中 第3位到第8位
的作用吗?这里就是的 L、A
就是表示 Item Body 中的数据类型。我们称之为Data Item
。接下来一起看看有哪些 Data Item吧。
format codes(格式代码)定义。下表中列出了所有可能的数据项及其格式代码。格式代码仅由6位来定义。
Type 缩写 | Type | 含义 | Format Code |
---|---|---|---|
L | List | 列表 | 000000 |
A | ASCII | ASCII字符 | 010000 |
B | Binary | 二进制数 | 001000 |
Boolean | Boolean | 布尔值 | 001001 |
I1 | 1-byte Singed Integer | 1字节有符号整数 | 011001 |
I2 | 2-byte Singed Integer | 2字节有符号整数 | 011010 |
I4 | 4-byte Singed Integer | 4字节有符号整数 | 011100 |
I8 | 8-byte Singed Integer | 8字节有符号整数 | 011000 |
U1 | 1-byte UnSinged Integer | 1字节无符号整数 | 101001 |
U2 | 2-byte UnSinged Integer | 2字节无符号整数 | 101010 |
U4 | 4-byte UnSinged Integer | 4字节无符号整数 | 101100 |
U8 | 8-byte UnSinged Integer | 8字节无符号整数 | 101000 |
F4 | 4-byte Floating-Point | 4 字节浮点数 | 100100 |
F8 | 8-byte Floating-Point | 8字节浮点数 | 100000 |
JIS-8 | 网上的资料说是:JIS-8是一种 半导体器件的防水等级标准, 表示该器件能够在水深超过1米 的水下保持正常工作。 不知道对不对哈 |
010001 |
SECS-II消息可以使用几个约定进行注释。下面显示了两个更常见的惯例:
-
SEMI Standard
-
SML(SECS Message Language) Format
6、Layout Encoding(布局编码)
这里我放出来我看的文档的英文原版,大家自行理解。
说说我的理解:
SECS-I 协议发送。(这里其实还可以通过
HSMS协议
发送)
6.1 Data Item 如何编码
这里我们先对 Item 有一个整体的认知,方便后面的叙述:
Encoded Data Item的第一个字节包含数据项的 format code(格式代码)
,并定义了接下来的将用几个字节
来表示数据项的长度。format code
用第2位到第7位表示, the number of length bytes
用第0位和第1位表示,那可以知道,数据项的长度的取值范围是:0字节、1字节、2字节、3字节。
下表显示了可以用长度字节数表示的最大数据字节数。
Number of length bytes | Max data size |
---|---|
0 | Empty item |
1 | 256 bytes |
2 | 64 Kbytes |
3 | 7.99 Mbytes |
下面显示了一个示例SECS-II消息布局是如何编码的。请注意,在本例中,只有消息布局被编码,流和函数没有被编码。所有数值均以十六进制为单位,(例如: 52 = 01010010)
其中 01 中的 Format code 是:000000,表示 List 类型。长度是: 01,表示接下的一个字节表示数据的长度。
6.2 Multi-Block Messages
由于SECS-I协议中的数据大小限制,编码的SECS-II消息(数据结构)可能不适合于一个SECS-I事务。因此,编码的SECS-II消息被划分为更小的块,一次发送一个块。这被称为多块消息传递。
244 x 32,767 字节长。
6.3 SECS-II Parameters
SECS-II Parameters : 用于在实现消息协议时定义一些边界。下表显示了SECS-II控制系统中的参数:
SECS-II Parameters | 描述 |
---|---|
T3 | Reply Timeout |
T4 | Inter-Block Timeout |
-
T4: 多块传输中,接收到相邻块之间的时间间隔。
T3: 从发送端发送 Primary Message 到接收到响应端回复的 Secondary Message之间的时间间隔。
6.4 Interleaving Messages
7、常见的 SECS-II Messages
这里我们列出了更常用的SECS-II消息。
SECS-II | Description |
---|---|
S1F1 | Say hello to the equipment |
S1F13 | Establish communications with the equipment |
S2F15 | Set equipment constants |
S2F43 | Turn off spooling |
S2F33 | Create / Delete reports |
S2F35 | Link reports to events |
S2F37 | Enable / Disable events |
S5F3 | Enable / Disable alarms |
2、这些信息可用于配方选择、远程启动、晶圆片选择等
SECS-II | Description |
---|---|
S2F41 | Remote equipment control |
3、这些消息可用于数据收集。 |
SECS-II | Description |
---|---|
S6F3 | Older version of Event Reports |
S6F9 | Older version of Event Reports |
S6F11 | Event Reports |
5、S9 这一类用于当设备检测到之前的消息错误时,由设备发送。
参考资料:
清晰讲解LSB、MSB和大小端模式及网络字节序