此部分主要来自于网络内容的收集整理及自己的一点体会,都是一些SECS/GEM开发的相关知识点,可以帮助博友们有针对性的去学习。
通信协议属于 SEMI 标准中的设备自动化/软件标准,包括 SECS-I、HSMS、SECS-II 和 GEM 四个标准。其实还有一个最新国际标准EDA(Interface A) ,但不在本系列文章的探讨范围内。
其中,SECS-I 和 HSMS 属于传输协议标准,描述了数据是如何通过物理媒介在设备与主机之前传输的。SECS-II 属于消息格式标准,定义了在设备与主机之前进行双向会话时所使用的消息格式。GEM 属于特殊功能标准,定义了通过通信链路所能看到的设备接口,指定了根据特定消息设备所应该采取的对应行为。
SECS-I (SEMI Equipment Communications Standard 1 Message Transfer)[7]定义了使用 RS-232 作为传输媒质时点到点的数据通信。通信使用的是一个串行发送的 8 比特字符串,以及一个起始位和一个终止位。通信是双向和异步的,但是同一时间媒质上只能有一个方向的数据进行传输。数据被分块进行传输,每个数据块最大为 254 字节,一个消息最多能包括 32767 个数据块。
SECS-I标准是用于串口通讯的设备,这种设备基本都是20年前的老旧设备,近些年的新设备已经不再使用此标准了。因此对于此标准的开发需求已经很少了。
以RS232串口通信协议为通讯标准,8-N-1的传输方式,并且采用半双工方式通讯,波特率一般采用9600。
数据块传输协议 (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 两个超时参数。
块数据(block data)是单块消息或多块消息中的数据部分,包括一个长度字节、N 个字节的数据和两个字节的校验和,其结构如下图所示。
其中各项说明如下:
Data Bytes 中各项说明如下:
10 Byte Data 结构中各项说明如下:
此通信标准建议每次可传输的字节最多为254,如果-个消息的大小<245个字节,则以一个块的形式进行传输。
如果-个消息的大小> 245个字节,则以分块的形式进行传输。
发送ENQ后,等待EOT的时间
发送一个Message后,等待ACK or NACK
对于接收者:
发送EOT后,等待第一个块的第一个字符的时间
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 访问多个子实体的操作。
HSMS可以使用任何标准 TCP/IP API 进行开发,比如 BSD socket、TLI等。使用标准的 TCP/IP 寻址,默认的端口号为 5000。建立连接的过程如下图所示:
HSMS 把通信实体分为被动模式和主动模式两种:
被动模式下建立连接的步骤包括:
(1) 获得一个连接端点,在指定的端口进行侦听
(2) 侦听到远程端点发送的连接请求
(3) 接收连接请求,发送确认
主动模式下建立连接的步骤包括:
(1) 获得一个连接端点
(2) 向指定端口号的远程端点发起连接
(3) 等待远程端点接收连接并返回确认
图中各状态说明如下:
HSMS 消息以字节的方式作为单个的流进行传输,其格式如图所示:
其中各项说明如下:
1) Session ID:十六比特无符号整数,最高位必须为零,剩下十五比特用于唯一标识一台设备。
2) Header Byte 2:对于不同类型的消息取值不同。
3) Header Byte 3:对于不同类型的消息取值不同。
4) PType:表示类型(Presentation Type)为八比特无符号整数,用于枚举表示层消息类型,即消息头和消息内容是以何种方式编码的,PType 取值如下表所示:
5) SType:会话类型(Session Type)为八比特无符号整数,其取值类型如下表所示:
6) System Bytes:四字节无符号整数,用于唯一标识一次消息交互。
HSMS 中的控制消息包括:
回复超时 T3 (T3 reply timeout)表示一个实体等待回复消息的最长时间,如果T3 计时器超时则取消这次会话但不断开 TCP/IP 连接,如果这个实体是设备,则向主机发送 SECS-II S9F9 消息。
连接间隔时间 T5 (T5 connect separate timeout)表示两个连接请求之间的时间间隔。过于频繁的向一个未准备好连接的实体发起连接请求,会加重 TCP/IP 的负荷。因此,当一个主动模式实体发起的连接操作终止后(不论是成功结束还是被远端实体拒绝),该实体必须等待 T5 计时器超时后发起下一次连接请求。
控制会话超时 T6 (T6 control transaction timeout)表示一个控制会话所能开启的最长时间,超过该时间就认为这次通信失败。当发送
Not Select 状态超时 T7 (T7 NOT SELECT timeout)表示当建立了 TCP/IP 连接之后通信处于 Not Select 状态的最长时间,通信必须在该时间完成 select 操作,否则将会断开 TCP/IP 连接。
网络字符超时 T8 (T8 network intercharacter timeout)表示成功接收到单个HSMS 消息的字符之间的最大时间间隔。鉴于 TCP/IP 是面向流的通信协议,因此一个 HSMS 通信消息可能被分为若干个 TCP/IP 消息进行传输,若 T8 计时器超时则认为这次传输失败。
未完待续......