一、概念

C#_半导体行业-SECS/GEM协议_数据

  SECS/GEMI 标准(制造设备通信和控制的通用模型)指的是一组用于半导体行业“设备与设备”之间或“设备与工厂主机系统”之间通信的国际标准协议,由国际半导体协议SEMI发起并维护。SECS基于其他较低级别的协议,如下:

1、SECS-II与SECS-I、HSMS的关系:

协议名称

用途

SECS-I

定义 RS-232 通信的标准(报文)

HSMS

定义 TCP/IP 通讯的标准(报文)

SECS-II

定义交换消息的标准

C#_半导体行业-SECS/GEM协议_事件报告_02

2、SECS/GEMHSMS协议报文分析

C#_半导体行业-SECS/GEM协议_事件报告_03

  注:req:请求;rsp:回应。

  报文详细解析见:;以下是博文备份。

(1)数据长度

  占4个字节,每个字节都是存储的16进制的数据。

(2)报文头信息

C#_半导体行业-SECS/GEM协议_数据集_04

C#_半导体行业-SECS/GEM协议_数据_05

(3)数据信息

C#_半导体行业-SECS/GEM协议_数据集_06

C#_半导体行业-SECS/GEM协议_事件报告_07

3、SECS指令(S:Stream编号,F:功能编号)

  SECS/GEM协议协议使用“SECS指令”进行通讯;发送者发送奇数,响应者响应偶数,如:“发送者发送S1F1,响应者响应S1F2”。

(1)Stream编号含义

Stream编号

代表的含义

Stream编号

代表的含义

1

设备状态

2

设备控制与诊断I

3

原料状态

4

原料控制

5

意外处理

6

数据采集

7

加工程序控制

8

控制程序传输

9

系统错误

10

终端服务

11

主机文件服务

12

晶元定位

13

数据集传输

14

对象服务

15

配方管理

16

加工管理

17

设备控制与诊断II

18

子系统控制与数据

(2)常用指令

① 原文

C#_半导体行业-SECS/GEM协议_数据_08

② 中文翻译(

  注:① send翻译的不好,有些感觉是“切换控制命令的意思”,有些是“请求的意思”,等我确认后再更新翻译;

    ② 该文档不是最新的文档,最新文档内容还多;我会把手里新版指令截图放在文章末尾。

发送者发送的指令

代表的含义

发送者发送的指令

代表的含义

S1F1

询问是否可连接(使用S1F2应答是否可连接)

S7F1

进程程序加载 查询

S1F3

请求设备状态

S7F3

发送 加工程序

S1F5

请求Formatted(格式化)状态

S7F5

请求 加工程序

S1F7

请求Fixed()状态 

S7F7

请求 加工程序ID

S1F9

请求 原料传输状态

S7F9

请求 原料或工艺路线

S1F11

请求 变量名称列表

S7F11

发送 原料或工艺路线

S1F13

请求建立通信

S7F13

发送 原料或工艺路线入口

S1F15

请求离线

S7F15

发送 工艺路线Mode

S1F17

请求在线

S7F17

删除 加工程序

S1F19

获取属性

S7F19

请求 当前设备的加工程序的资料

S1F23

查询 可用事件列表(新版本内容)


 

S2F1

查询 Service程序负载

S7F21

获取 设备加工程序能力

S2F3

请求 发送Service程序

S7F23

发送 格式化加工程序的命令

S2F5

请求 Service程序加载

 S7F25

请求 格式化加工程序

S2F7

请求 Service程序运行

 S7F27

发送 加工程序验证

S2F9

请求 Service程序运行结果

 S7F29

查询 加工程序验证结果

S2F11

获取 Service程序的资料

 S7F31

发送 加工程序验证请求

S2F13

请求设备常量Constant

 S7F33

请求 可用的加工程序

S2F15

发送新设备常量Constant

 S7F35

请求 Mid$的加工程序

S2F17

请求 数据和时间

 S8F1

请求 启动程序

S2F19

请求 重置或初始化

 S8F3

请求 执行程序

S2F21

请求 远程控制

 S9F1

无法识别的设备Id

S2F23

请求 初始化Trace(跟踪)

 S9F3

无法识别的Stream类型

S2F25

请求 回路诊断

 S9F5

无法识别的Function类型

S2F27

启动处理请求

 S9F7

非法数据

S2F29

请求 设备常量名称列表

 S9F9

事务计时器超时

S2F31

请求 日期和时间设置

 S9F11

数据太长

S2F33

定义报告

 S9F13

对话超时

S2F35

给 事件设定 事件组

 S10F1

请求 终端

S2F37

订阅/退订事件

 S10F3

终端单个显示

S2F39

多块(Multi-block)查询

 S10F5

终端Multi-block(多个)显示

S2F41

发送 Host主机命令

 S10F7

不允许Multi-block(多块)

S2F43

重置后台Streams和Functions

 S10F9

广播 Map设置的数据

S2F45

定义 可变的限制属性

 S12F1

发送 Map设置的数据

S2F47

请求 可变的限制属性

 S12F3

请求 Map设置的数据

S2F49

请求 创建数据报告

 S12F5

查询 Map传输

S2F51

请求 删除数据报告

 S12F7

Map数据发送类型1

S2F53

请求 创建Trace(跟踪)

 S12F9

Map数据发送类型2

S2F55

请求 删除Trace(跟踪)

 S12F11

Map数据发送类型3

S2F57

请求 收集 Link (连接)事件

 S12F13

Map数据请求类型1

S2F59

请求 收集 UnLink (断开连接)事件

 S12F15

Map数据请求类型2

S2F61

请求 重置 Trace(跟踪)

 S12F17

Map数据请求类型3

S2F63

请求 强制远程控制

 S12F19

Map错误报告

S3F1

请求 原料状态

 S13F1

发送 数据集发送

S3F3

请求 完成时间

 S13F3

请求 打开数据集

S3F5

发现原料 通知

 S13F5

请求 读取数据集

S3F7

原料丢失 通知

S13F7

关闭 数据集发送

S3F9

原料ID EquateSend

S13F9

重置 数据集发送

S3F11

请求 原料ID

S13F11

查询 数据集多块

S3F13

发送 原料ID

S13F13

发送 表格数据

S4F1

准备发送原料

S13F15

请求 表格数据

S4F3

发送原料

S14F1

请求 获取Attr

S4F5

握手完成

S14F3

请求 设置Attr

S4F7

未准备好发送

S14F5

请求 获取类型(GetType)

S4F9

卡在发送端 

S14F7

GetType 的数据

S4F11

卡在接收端

S14F9

请求 创建 Object

S4F13

发送超时

S14F11

请求 删除 Object

S4F15

接收到的原料

S14F13

请求 附加对象

S4F17

请求接收

S14F15

请求 附加的Object

S4F19

创建 Transfer Job(转移)

S14F17

请求 监督对象

S4F21

控制 Transfer Job(转移)

S15F1

查询 Multi-Block(多块)配方管理

S4F23

Transfer Job(转移)报警

S15F3

请求 操作 配方的命名空间

S4F25

多块(Multi-block)查询

S15F5

请求 重命名 配方的命名空间

S4F27

切换(Handoff )就绪

S15F7

请求 配方空间(RecipeSpace)

S4F29

切换(Handoff )命令

S15F9

请求 配方状态

S4F31

切换(Handoff )命令完成

S15F11

请求 重命名 配方的命名空间

S4F33

切换(Handoff )已验证

S15F13

请求 创建配方

S4F35

切换(Handoff )取消就绪

S15F15

请求 存储配方

S4F37

切换(Handoff )取消就绪确认

S15F17

请求 检索配方

S4F39

切换(Handoff )停止

S15F19

请求 重命名配方

S4F41

切换(Handoff )停止确认

S15F21

请求 操作配方

S5F1

发送 报警报告

S15F23

请求 配方描述符

S5F3

启用或禁用 报警

S15F25

更新 配方参数范围

S5F5

请求 报警列表

S15F27

请求 下载配方

S5F7

请求 已启用的报警列表

S15F29

请求 验证配方

S5F9

发送 异常报警

S15F31

请求 卸载配方

S5F11

清除 异常报警

S15F33

请求 选择配方

S5F13

请求 异常恢复

S15F35

请求 删除配方

S5F15

异常恢复 完成通知

S15F37

请求 批准 DRNS分割行为

S5F17

中止 异常恢复 请求

S15F39

请求 分割 DRNS记录器

S6F1

发送 Trace(跟踪)数据

S15F41

请求 修改 DRNS记录器

S6F3

发送 离散型变量数据

S15F43

请求 获取DRNS变更

S6F5

查询 “发送的多块(Multi-block)数据”

S15F45

请求 批准DRNS变更

S6F7

请求“数据传输”

S15F47

请求 重建DRNS管理器

S6F9

发送“Formatted(格式化)变量”

S16F1

查询 多块(Multi-block)加工程序数据

S6F11

发送 事件报告(设备上传数据)

S16F3

请求 创建加工程序

S6F13

发送 注释事件报告

S16F5

请求 控制加工程序

S6F15

请求 事件报告

S16F7

加工程序 警告通知

S6F17

请求 注释事件报告

S16F9

加工程序 事件通知

S6F19

请求 特定报告

S17F1

请求 创建数据报告

S6F21

请求 带注释的个人报告请求

S17F3

请求 删除数据报告

S6F23

请求 后台数据

S17F5

请求 创建Trace(跟踪)

S6F25

发送 通知报告

S17F7

请求 删除Trace(跟踪)

S6F27

发送 Trace(跟踪)报告

S17F9

请求 收集 Link(链接)事件

S6F29

请求 Trace(跟踪)报告

S17F11

请求 收集 UnLink(断开连接)事件

(3)TimeOut

 

T1

T2

T3

T4

RTY

SEMI标准(秒)

0.5

10

45

45

3(次)

含义

 

握手超时

Primary信息发送后等待回复超时

 

超时后可以重试的次数

范围(秒)

0.1~10

0.2~25

1~120

1~120

0~31(次)

4、SECS/GEM协议调试软件

  ① 仿真软件1(本实例演示):SEComSimulator(美国AIM Systems公司的基于C#开发的SECS标准协议模拟器;咸鱼搜索 执笔小白)

  ② 仿真软件2: SECS-Simulator(其他公司开的Java版;备份下载地址:PCtoLCD2002完美版.zip)

(1)软件中出现的关键字如下:
  • Host/Local:主机模式与本地模式
  • Remote:远程模式(RCMD)
  • Passive/Active:服务器与客户端
  • EQP:设备
  • Device ID:设备标识
  • VID:设备变量ID
  • SVID:设备状态ID(key-value,如:1000代表‘一号轮子的转速’)
// 1 举例:如定义1000代表轮子1的转速;1001代表轮子2的转速;
// 1.1 主机请求写法(给我变量1000(轮子1的转速)和1001的值(轮子2的转速)):
S1F3 W
L<2,
   <U4,1 1000>
   <U4,1 1001>
 >.
// 1.2 设备回复写法(轮子1为800转速;轮子2为600转速):
S1F4
L <2,
    <U4,1,800>
    <U4,1,600>
 >.
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • RPTID:报告编号
  • CEID:事件编号(事件为 设备主动给主机推送数据;一个事件中可以包含多个报告)
// 1 举例:如有一个事件(ID为3000)需要通知主机,这个事件(ID3000)中有一个报告(ID2000),报告2000中有一个变量(1000))
// 1.1 设备发送写法(解释如下):
S6F11 W
<L,3  // 长度3
    <U4,1,0>    // 是当事件需要多次发送时,需要的唯一标识
    <U4,1,3000>  // 事件(CEID)
    <L,1         // 事件中的报告List(RPTID )
        <L,2             // 报告List的长度
           <U4,1,2000>    // 报告ID
           <L,1            // 报告ID的长度
               <U4,1,120>  // 变量ID(SVID)的值
           >
        >
    >
 >.
// 1.2 主机回复写法(我收到了)
S6F12 
<B,1,0>
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • ECID:设备常量
  • PPID:配方编号(配方为一组变量,可以一次请求一组数据)
  • DATAID:数据ID
  • 设置或清除报警ALCD /报警编号ALID / 报警文本ALTX
  • Send Primary Message:发送主要消息
  • Send Reply Message:发送回复消息
  • Send Control Message:发送控制消息
  • MDLN:设备模型类型
  • SOFTRE:软件修订版本
  • 设备常数(EC)/状态变量(SV) /数据变量(DV)
(2)使用SEComSimulator作为服务器时的配置

C#_半导体行业-SECS/GEM协议_数据_09

C#_半导体行业-SECS/GEM协议_数据_10

(3)使用SEComSimulator作为客户端时的配置

C#_半导体行业-SECS/GEM协议_数据集_11

C#_半导体行业-SECS/GEM协议_事件报告_12

(4)开始连接

C#_半导体行业-SECS/GEM协议_数据_13

(5)连接后的效果

C#_半导体行业-SECS/GEM协议_数据_14

二、C# 示例

1、界面样式

C#_半导体行业-SECS/GEM协议_数据集_15

C#_半导体行业-SECS/GEM协议_数据_16

2、代码

  略

作者:꧁执笔小白꧂