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 計時器超時則認為這次傳輸失敗。