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:消息头长度为十字节,格式如下图所示:
其中各项说明如下:
1) Session ID:十六比特无符号整数,最高位必须为零,剩下十五比特用于唯一标识一台设备。
2) Header Byte 2:对于不同类型的消息取值不同。
3) Header Byte 3:对于不同类型的消息取值不同。
4) PType:表示类型(Presentation Type)为八比特无符号整数,用于枚举表示层消息类型,即消息头和消息内容是以何种方式编码的,PType 取值如下表所示:
5) SType:会话类型(Session Type)为八比特无符号整数,其取值类型如下表所示:
6) System Bytes:四字节无符号整数,用于唯一标识一次消息交互。
4.4.2 控制消息格式
HSMS 中的控制消息包括:
(1) Select.req:SType=1,PType=0
(2) Select.rsp:SType=2,PType=0,Header Byte 3 为 SelectStatus 项
(3) Linktest.req:SType=5,Ptype=0,Session ID=0xFFFF
(4) Linktest.rsp:SType=6,Ptype=0,Session ID=0xFFFF
(5) 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 计时器超时则认为这次传输失败。