词条 | SECS |
释义 | 0 引 言在高度自动化的半导体制造厂中,CIM(Computer Integrated Manufacturing)统一管理各设备的生产流程,并随时监控设备过程的状态,以减少过程失误进而降低成本及提升产品的质量。但随着过程的不同,各设备有着不同特性的差异且各制造商所提供的设备也不尽相同,因此增加CIM自动化管理的困难与复杂程度。软件集成自动化存在的主要问题是在不同的设备供应商之间没有标准的通讯协议。设备供应商不向半导体生产商开放通讯协议及接口软件,这使得半导体生产商不得不建立他们自己的软件“连接”,导致了项目费用的巨大增加。 SEMI(Semiconductor Equipment and Materials Institute)制定了半导体设备通讯标准接口SECS(Semiconductor Equipment Communication Standard),让CIM与设备间有通用的通讯标准接口,设备制造商只要提供符合通讯标准规范的设备,便可快速地整合在CIM的管理系统,不但可缩短设备开发的时间及成本,并可增加设备装机的效率达到快速量产,进而提升产能输出。 1 SECS标准简介SECS标准用来统一各个生产设备之间以及生产设备和控制设备之间的通讯,是半导体生产流程中最基本的标准。SECS协议为点对点协议,它包括2个部分SECS-Ⅰ和SECS-Ⅱ。SECS-Ⅰ为基于RS232的传输层,定义了设备和主机之间的MESSAGE交互的通信接口,大致相当于ISO/OSI模型的下面5层。主要包括有块传输协议,MESSAGE接收算法和节点传输算法;SECS-Ⅱ则把SECS-Ⅰ传输的二进制串翻译成形象直观的格式表示出来,SECS-Ⅱ规范传输资料的标准结构和显示内容,方便使用者查看数据内容。图1简单表示了SECS标准的典型应用,图中节点C代表主机,节点A和B表示设备,这些节点仅仅是组成整个网络的一部分。按照SECS标准的定义,每一个节点都能够根据消息头中的设备号位决定向哪一个节点传递消息,根据回答位决定控制消息的传递方向是沿着树向下还是向上。在图1中,节点A控制着1A、2A、3A 3个子节点,可以根据它们的不同要求向节点C发送请求或者从节点C接收指令。SECSLine则表示了在2个节点之间按照SECS标准的电气接口。 本文结合某半导体厂的全自动化后段生产线描述了基于SECS标准的串口通讯的实现。 2 系统的硬件组成整个控制系统由生产线上的生产设备和车间的控制系统组成,其硬件组成如图2所示。包括3个部分,设备和单元控制器之间通过SECS-Ⅰ连接,其他通过局域网相连。处于最下方的是生产流水线,单元控制器与线上每道工序相应的控制软件负责控制流水线的生产,并将生产数据通过单元控制器上报给车间的MES系统,接收车间管理人员的生产指令。中间是MES系统,主要负责监控和控制流水线的生产情况、存储重要的生产数据、报表等,同时给操作管理人员提供一套管理系统来协调整个车间的生产。最上层是工厂生产计划管理系统,用来给更高层的管理人员提供管理上的方便。 3 基于SECS标准串口通讯的实现3.1 软件的实现系统实现了基于SECS标准的串口通讯。整个通讯软件分为4个相对独立的模块:等待、发送、接收和竞争,具体描述如下: 1.等待模块。在此状态下,程序处于后台运行,直到接收到以下两种请求之一:①如果主机收到来自设备的一个ENQ信号(信号的意义见图3,以下同),则回送一个EOT信号给设备,同时自己转入接收状态;②如果设备收到发送命令,作如下处理: a.向主机发送一个ENQ信号,然后不断侦听是否有来自主机的EOT信号。在此期间,如果超过T2时间仍然未收到EOT,则重发ENQ,最多重发RTY次。如果重发RTY次后仍然没收到EOT,则发送失败,转入等待状态。 b.如果同时收到一个ENQ信号,则发生竞争,根据是主机还是设备进行不同处理。 c.如果收到一个EOT信号,则表示通讯握手已经成功,转入发送状"VH如果不是以上两种信号,继续处于等待状态。在这其中最主要的是握手的建立,图3说明了软件中主机和设备之间的握手规则。 2.发送模块。在发送中,要完成以下任务: ①发送长度字节N,N个数据和两个校验和(整个数据称为1个块的数据);②发送完成后转入侦听状态。在此期间,如果在T2时间内如果收到了应答信号,判断该信号是不是ACK,如果不是则发送失败,重发ENQ建立握手,重发数据(最多RTY次、如果在T2时间内收到了ACK信号则发送成功,转入等待状态。 3.接收模块。在接收中,要完成以下任务: ①不断侦听端口,直到收到长度字节N,如果在T2时间仍然没收到长度字节N,则给对方发送NAK信号,表示这一次发送失败; ②如果在T2时间内收到长度字节N后,则:判断其值是否在IO-254之间。如果其值不在10-254之间,继续侦听,直到对方发完所有的数据,最后发送NAK信号给对方,表示这一次发送失败;如果其值在10-254之间,继续侦听端口,开始接收数据,同时启动定时器T1。如果两个字符间的接收间隔时间超过了T1,则发送NAK信号给对方,表示发送失败。如果以上两步均正确,则在所有的数据都收到后,开始计算纵校验和。 a.加果计算值和收到的校验和相等,说明接收正确。发送ACK信号给对方,一次接收完成。 b.如果计算值和收到的校验和不等,则继续侦听端口,直到对方发送完所有的字节后,发送NAK信号给对方,发送失败。 4.竞争模块。当主机和设备恰巧在同一个时刻发送消息,则需要进行竞争处理。处理的过程如图4所示。 3.2 串口的编程使用API函数开发串口通信应用程序的总体思路是:首先,使用CreateFileQ函数打开特定串口。其次,完成串行端口的设置,包括波特率,校验方式,停止位和数据位等。然后,调用SetupComm()设置串口接收发送数据的缓冲区大小,串口的设置就基本完成,之后就可以启动读写线程了。 3.2.1 串口设置的方式 串行通讯设计中的重要方面就是对端口进行设置。DCB(device control block)结构中定义了串口通信设备的控制设置。串口端口设置就是对DCB结构成员进行设置。使用API函数GetCommState(),该函数返回DCB结构的当前设置。其使用方法如下: DCB dcb={0}; If(!::GetcommState(hComm,&dcb)) return FALSE;//函数调用发生错误 else //已经取回DCB结构当前设置 3.2.2 串口的读写操作 串口的读写操作使用API函数ReadFile()和WriteFile()。当使用异步方式调用这2个函数时,若函数的返回值为TRUE,表示I/O操作立即完成可以进行数据的处理;如果函数的返回值为FALSE,表示I/O操作没有立即完成。举例如下: BOOL bReadStatus; bReadStatus=ReadFile(m_hIDComDev,buffer,dwBytesRead,&dwBytesRead,&m_OverlappedRead); if(! bReadStatus) { If(GetLastErrorQ==ERROR_IO_PENDING) { WaitForSingleObject(m_OverlappedRead.hEvent,1000); Return((int)dwBytesRead); } Return(0); } Return((int)dwHytesRead); 4 结 论SECS标准是半导体工业中得到广泛应用的标准,目前在我国的外资芯片生产企业都采用了这个标准。本文着重描述了基于SECS标准的半导体设备串口通讯的实现,进一步的工作是将整个底层协议的实现封装为一个类,提供给企业二次开发的接口,为我国芯片制造厂商开发自己的控制程序提供了可借鉴的例子。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。