一 HSMS通信標准概述
HSMS定義了使用 TCP/IP 作為物理傳輸媒質時的通信接口。
HSMS使用TCP/IP流支持,提供了可靠的雙向同步傳輸,可以用來作為SECS-I通信以及其他更高級的通信環境的替代。
1.1 HSMS連接狀態圖
HSMS狀態機如下圖所示,此圖中描述的行為定義了HSMS的基本要求。
狀態圖說明:
-
NOT CONNECTED:該實體已准備好偵聽或啟動TCP/IP連接,但尚未建立任何連接,或所有以前建立的TCP/IP連接都已終止;
-
CONNECTED:已建立了一個TCP/IP連接。此狀態有兩個子狀態,NOT SELECTED 和 SELECTED;
-
NOT SELECTED:未建立HSMS會話或任何先前建立的HSMS會話已結束;
- SELECTED:至少建立了一個HSMS會話,這是HSMS的通常操作狀態:數據消息可以在此狀態下進行交換。
狀態的轉換:
二 使用TCP/IP
TCP應用程序接口(API)的規范不在HSMS的范圍之內。
HSMS可以使用任何標准 TCP/IP API 進行開發,比如 BSD Socket、TLI 等。使用標准的 TCP/IP 尋址,默認的端口號為 5000。
2.1 TCP/IP網絡尋址約定
IP Address:連接到局域網(LAN)的每個物理TCP/IP連接都必須具有唯一的IP地址。IP地址必須在安裝時進行可分配,並且HSMS的實現不能選擇一個固定的IP地址。一個典型的IP地址是192.9.200.1。
2.2 建立TCP/IP連接
HSMS將通信實體分為兩種,Passive Mode(被動模式)和 Active Mode(主動模式)。
- PassiveMode:處於被動模式的本地實體偵聽並接受由處於主動模式的遠程實體發起的連接。
- ActiveMode:由處於主動模式的本地實體發起連接。
被動模式建立連接過程:
- 獲取一個連接端點,並將其綁定到指定的的端口。
- 從端口偵聽從遠程實體發送的連接請求。
- 在收到連接請求后,確認它並表示接受該連接。
主動模式建立連接過程:
- 獲取一個連接端點。
- 向遠程實體(被動模式)所指定的端口發起連接。
- 等待遠程實體確認收到並接受連接請求。
2.3 終止TCP\IP連接
連接終止是連接建立的邏輯反轉。從本地實體的角度來看,TCP/IP連接可能隨時斷開。但是,HSMS只允許在連接處於連接狀態的未選擇子狀態時終止連接。
任何一個實體都可以啟動終止連接。實體進入Not Connected狀態,表示HSMS通信結束。
三 HSMS消息交換過程
HSMS定義了跨TCP/IP連接的實體之間的所有消息交換過程。
一旦連接建立,這兩個實體間就建立起HSMS通信。然后,數據消息可以在任何時候以任意一個方向進行交換。
當實體希望結束HSMS通信時,將使用 Deselcet 或 Separate procedure 來結束HSMS通信。
3.1 發送和接收HSMS消息
所有的HSMS過程都涉及到HSMS消息的交換。這些消息以 TCP/IP 流的形式使用先前建立的TCP/IP連接進行發送和接收。
3.2 消息交換過程
消息交換過程分為:Select Procedure,Data Procedure,Deselect Procedure,Linktest Procedure ,Separate Procedure,Reject Procedure。
3.3 建立Select Procedure
Select Procedure用於使用Select.req和Select.rsp消息在TCP/IP連接上建立HSMS通信。
Select.req和Select.rsp消息:實體由 Not Selected 狀態轉換為 Selected 狀態所使用的消息 (Active Entity 發送Select.req);
Initiator的發起過程:
- Initiator將Select.req消息發送給Responding Entity;
- 如果Initiator接收到一個Select Status為0的Select.rsp,則Select Procedure過程成功完成,實體由 Not Selected 狀態轉化為 Selected 狀態;
- 如果Initiator接收到Select Status不為0的Select.rsp,則Select Procedure失敗,實體沒有狀態轉換。
Responding Entity的響應過程:
- 響應實體會收到Select.req;
- 如果響應實體能夠轉換為Selected ,它將發送一個Select Status為0的Select.rsp;
- 如果響應實體不能夠轉換為Selected,它將發送一個Select Status不為0的Select.rsp;
同時進行的Select Procedure:如果附加標准沒有限制,則有可能兩個實體同時啟動具有相同控制標識的Select Procedure。在這種情況下,每個實體將通過使用Select.rsp響應來接受其他實體的選擇請求。
3.4 Data Procedure
只要連接處於Selected狀態,任何一個實體都可以發起HSMS數據消息。當不處於Selected狀態時,接收數據消息將導致拒絕Reject Procedure。
數據消息可以進一步定義為消息事務的一部分,即Primary Message 或 Reply Message。
在消息事務中,事務的發起者向響應實體發送一條Primary Message。如果Primary Message指示需要響應,則響應實體將發送 Reply Message 響應。
下圖為兩種類型的消息事務:
事務的具體程序由應用層確定,並服從其他標准(例如,使用SECS-II編碼消息的GEM設備的E5和E30)。
適用的上層標准由消息類型來標識。該類型由HSMS定義的特定格式確定。HSMS消息的正常類型是SECS-II文本。
3.5 Deselect Procedure
Delesect Procedure用於在斷開TCP/IP連接之前,為一個實體提供一個優雅的HSMS通信終止。
HSMS要求使用該Procedure時連接處於Selected狀態。
Deselect.req/Deselect.rsp:在雙方協議終止通信時使用,發起通信終止的一端發送Deselect.req;
Initiator的發起過程:
- Initiator將Deselect.req消息發送給Responding Entity;
- 如果Initiator接收到一個Deselect Status為0的Delect.rsp,則Deselect Procedure過程成功完成,實體由 Selected 狀態轉化為 Not Selected 狀態;
- 如果Initiator接收到Deselect Status不為0的Deselect.rsp,則Deselect Procedure失敗,實體沒有狀態轉換。
- 如果在收到Deselect .rsp之前T6超時了,則認為發生了通信故障。
Responding Entity的響應過程:
- 響應實體會收到Deselect.req;
- 如果響應實體處於Selected狀態且允許Deselect ,它將發送一個Deselect Status為0的Deselect.rsp,Delesect Procedure成功,發生狀態更改;
- 如果響應實體不允許Deselect,或者因為它沒有處於Selected狀態,或者因為本地條件不允許Deselect,它將發送一個Deselect Status不為0的Deselect.rsp進行響應。Delesect Procedure失敗,不發生狀態更改。
同時進行的Deselect Procedure:
3.6 Linktest Procedure
Linktest Procedure 用於用於確定TCP/IP和HSMS通信的操作完整性。它的使用在連接狀態下隨時有效。
Linktest.req/Linktest.rsp:用於通信狀態的確認, 如果沒有應答則轉換為Not Connected 狀態;
Initiator的發起過程:
- Initiator將Linktest.req消息發送給Responding Entity;
- 如果Initiator在T6超時時間內接收到一個Linktest.rsp,Linktest Procedure成功完成;
- 如果在T6超時時間內未收到Linktest.rsp,則視為通信故障。
Responding Entity的響應過程:
- 響應實體接收到Linktest.req;
- 響應實體發送Linktest.rsp。
3.7 Separate Procedure
Separate Producure用於在斷開TCP/IP連接之前突然終止實體的HSMS通信。
HSMS要求使用該Procedure時連接處於Selected狀態。
Separate.req:單方面通知通信終止時發送;
3.8 Reject Procedure
Reject Procedure用於響應在不適當的上下文中收到的其他有效的HSMS消息,即接收到消息的接收方不支持該消息或認為無效的消息。
四 HSMS消息格式
4.1 General Message Format 一般消息格式
4.1.1 Byte Structrue:
在HSMS中一個字節包含8位。字節中的位從第7位(MSB)編號到第0位(LSB)。
4.1.2 Message Format:
HSMS消息以單個連續字節流傳輸。
4.1.3 Message Length:
Message Length是一個四字節的無符號整數值,它指定Message Header加上Message Text的字節長度。消息長度首先傳輸最高有效位(MSB),最后傳輸最低有效位(LSB)。
4.1.4 Message Header:
MessageHeader是一個10字節的字段。頭中的字節從第0字節(傳輸的第一個字節)編號到第9字節(傳輸的最后一個字節)。
其中:
Session ID:16位無符號整數,它占據了字節0和字節1(字節0是MSB,1是LSB)。用於標識通信實體的連接;
Header Byte 2:對於不同的HSMS消息,有不同的取值;
Header Byte3:對於不同的HSMS消息,有不同的取值;
PType:8位無符號整型,PType旨在作為一種枚舉類型,定義表示層消息類型:MessageHeader和MessageText是如何編碼的。
PType = 0,被HSMS定義為表示SECS-II消息編碼。
SType:8位無符號整數,是一種枚舉類型,標識此消息是HSMS數據消息(值=0)還是HSMS控制消息。
SystemBytes:四字節無符號整數,用於在一組開放的事務中唯一地標識一個事務,即唯一地標識一次消息交互。
4.2 HSMS Message Formats by Type 按類型划分的HSMS消息格式
HSMS消息中的Header的解釋取決於由SType字段的值定義的特定HSMS消息類型。
下表總結了定義的完整消息集,PType = 0(SECS-II消息格式)。
4.2.1 SType=0 DataMessage

4.2.2 SType=1 Select.req
Message Length為10,因為該消息僅有Header。
4.2.2 SType=2 Select.rsp
Message Length為10,因為該消息僅有Header。
其SessionID:必須等於相應的Select.req中的SessionID。
其Byte3:表示SelectStatus。為0表示操作成功,非0表示失敗。
4.2.3 SType=3 Deselect.req
Message Length為10,因為該消息僅有Header。
4.2.4 SType=4 Deselect.rsp
Message Length為10,因為該消息僅有Header。
其Byte3:表示DeselectStatus。為0表示操作成功,非0表示失敗。
4.2.5 SType=5 Linktest.req
Message Length為10,因為該消息僅有Header。
其SessionID:為0xFFFF。
4.2.6 SType=6 Linktest.rsp
Message Length為10,因為該消息僅有Header。
其SessionID:為0xFFFF。
其System Bytes:與其對應回復的Linktest.req相同。
4.2.7 SType=7 Reject.req
用於響應接收到消息的接收方不支持或當時無效的任何有效的HSMS消息。
其SessionID:等於被拒絕的消息中的SessionID的值。
其Byte2:如果PType不受支持,它等於被拒絕的消息中的PType。否則,它將等於被拒絕的消息中的SType的值。
其Bytes3:其值為reason code,表示拒絕的原因。
4.2.8 SType=9 Separate.req
使用SType為9的HSMS消息用於立即終止HSMS通信。除了SType值外,它與Deselect.req消息相同。其目的是立即終止HSMS通信。
五 特別說明
如果檢測到通信故障,實體應終止TCP/IP連接。在連接終止時,可以嘗試重新建立通信。
5.1 回復超時 T3
Reply Timeout:定義一個實體等待回復消息的最長時間,如果T3超時則取消這次會話事務但不斷開 TCP/IP 連接。
5.2 連接間隔時間 T5
5.3 控制事務超時 T6
Control Transactions Control Timeout:定義了一個控制事務所能保持開啟的最長時間,超過該時間就認為這次通信失敗。
許多控制消息是消息交換或事務過程的一部分:發送者發送<xx>.req,接收方接收<xx>.req並以<xx>.rsp作為響應。
從發送所需的請求消息到收到響應消息,事務一直被認為是打開的。
控制事務可能保持打開的時間取決於T6。
在發起控制事務時,本地實體應啟動一個持續時間等於T6的計時器。如果事務在計時器到時之前被正確關閉,則應該取消計時器。
如果定時器在事務未結束之前就到時了,則該事務應被發起者視為已結束,並被視為HSMS通信失敗。
5.4 未選擇狀態超時 T7
Not Selected Timeout :定義當建立了 TCP/IP 連接之后通信處於 Not Selected 狀態的最長時間,通信必須在該時間完成 Selected Procedure,否則將會斷開 TCP/IP 連接。
5.5 網絡字符超時 T8
Network Intercharacter Timeout:定義成功接收到單個HSMS 消息的字符之間的最大時間間隔。
因為TCP/IP是面向流的通信,所以所有作為單個HSMS消息的一部分的字節可能在單獨的TCP/IP消息中傳輸,一個 HSMS 通信消息可能被分為若干個 TCP/IP 消息進行傳輸。
若 T8 超時則認為這次傳輸失敗。
六 HSMS的實現要求
HSMS的實現必須提供以下參數設置。
所有參數的范圍和分辨率必須至少如表中所示。所有參數必須存儲方式為斷電保留,如果電源故障或重新加載系統軟件,應保留設置。
七 附錄
7.1 SelectStatus
7.2 DeselectStatus
7.3 Reject Reason Code
說明:
以上為SECS通信基礎知識的整理-2。