06、HSMS協議介紹

画个一样的我發表於2024-03-05

本章的內容主要參考了 SECS半導體裝置通訊-2 HSMS通訊標準 ,外加上自己看的一些其他的文件。也加上了一些自己的理解,特此記錄。若有侵權,請聯絡刪除,謝謝。

再次特別感謝 SECS半導體裝置通訊-2 HSMS通訊標準 的作者。

1、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的通常操作狀態:資料訊息可以在此狀態下進行交換。

狀態的轉換:

2、使用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。

TCP Port Numbers:HSMS的實現應該允許將TCP埠配置為所使用的TCP/IP 實現的全部範圍。一個典型的TCP埠號為5000。

上面這段話的意思是 HSMS 可以使用的埠號並沒有什麼特別的要求,TCP/IP 可以使用的都可以。

2.2 建立TCP/IP連線

HSMS將通訊實體分為兩種,Passive Mode(被動模式)和 Active Mode(主動模式)

  • PassiveMode:處於被動模式的本地實體偵聽並接受由處於主動模式的遠端實體發起的連線。
  • ActiveMode:由處於主動模式的本地實體發起連線

上面這兩句話是不是有點繞,簡單理解就是 Passive Mode 是服務端,Active Mode 是客戶端。服務端監聽埠並接受請求,客戶端主動傳送請i去。

被動模式建立連線過程:

  1. 獲取一個連線端點,並將其繫結到指定的的埠。
  2. 從埠監聽從遠端實體傳送的連線請求。
  3. 在收到連線請求後,確認它並表示接受該連線。

其實上面就是使用 TCP 協議,編寫服務端那一套,依次執行bind(), listen(), accept()方法,然後坐等客戶端的連線請求。

主動模式建立連線過程:

  1. 獲取一個連線端點。
  2. 向遠端實體(被動模式)所指定的埠發起連線。
  3. 等待遠端實體確認收到並接受連線請求。

2.3 終止TCP/IP連線

連線終止是連線建立的邏輯反轉。從本地實體的角度來看,TCP/IP連線可能隨時斷開。但是,HSMS只允許在連線處於連線狀態的未選擇子狀態時終止連線。

最後一句話怎麼理解?還記得上面說的HSMS連線狀態圖嗎,這句話的意思是隻有處於 NOT SELECTED 這個狀態時才可以終止連線。那處於 SLECTED 的狀態不可以終止連線嗎,我的意思是可以,但是需要先進入到 NOT SELECTED 狀態,再終止連線。

任何一個實體都可以啟動終止連線。實體進入Not Connected狀態,表示HSMS通訊結束。

3、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的發起過程:

1. Initiator將Select.req訊息傳送給Responding Entity;
2. 如果Initiator接收到一個Select Status為0的 Select.rsp,則Select Procedure過程成功完成,實體由 Not Selected 狀態轉化為 Selected 狀態;
3. 如果Initiator接收到Select Status不為0的Select.rsp,則Select Procedure失敗,實體沒有狀態轉換。

Responding Entity的響應過程:

1. 響應實體會收到Select.req;
2. 如果響應實體能夠轉換為Selected ,它將傳送一個Select Status為0的Select.rsp;
3. 如果響應實體不能夠轉換為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的發起過程:

1. Initiator將Deselect.req訊息傳送給Responding Entity;
2. 如果Initiator接收到一個Deselect Status為0的Delect.rsp,則Deselect Procedure過程成功完成,實體由 Selected 狀態轉化為 Not Selected 狀態;
3. 如果Initiator接收到Deselect Status不為0的Deselect.rsp,則Deselect Procedure失敗,實體沒有狀態轉換。
4. 如果在收到Deselect .rsp之前T6超時了,則認為發生了通訊故障。

Responding Entity的響應過程:

1. 響應實體會收到Deselect.req;
2. 如果響應實體處於Selected狀態且允許Deselect ,它將傳送一個Deselect Status為0的Deselect.rsp,Delesect Procedure成功,發生狀態更改;
3. 如果響應實體不允許Deselect,或者因為它沒有處於Selected狀態,或者因為本地條件不允許Deselect,它將傳送一個Deselect Status不為0的Deselect.rsp進行響應。Delesect Procedure失敗,不發生狀態更改。

同時進行的Deselect Procedure:

如果附加標準不限制選擇使用的 Deselect,則有可能兩個實體同時使用相同的控制Id啟動 Deselect Procedures。在這種情況下,每個實體將透過使用despelect.rsp響應來接受另一個實體的取消選擇請求。

3.6 Linktest Procedure

Linktest Procedure 用於確定TCP/IP和HSMS通訊的操作完整性。它的使用在CONNECTED狀態下隨時有效。

Linktest.req/Linktest.rsp:

用於通訊狀態的確認, 如果沒有應答則轉換為Not Connected 狀態;

Initiator的發起過程:

1. Initiator將Linktest.req訊息傳送給Responding Entity;
2. 如果Initiator在T6超時時間內接收到一個Linktest.rsp,Linktest Procedure成功完成;
3. 如果在T6超時時間內未收到Linktest.rsp,則視為通訊故障。

Responding Entity的響應過程:

1. 響應實體接收到Linktest.req;
2. 響應實體傳送Linktest.rsp。

3.7 Separate Procedure

Separate Producure 用於在斷開TCP/IP連線之前突然終止實體的HSMS通訊。

HSMS要求在使用分離時連線處於SELECTED狀態。響應實體不傳送響應,無論其本地狀態如何,都需要終止通訊。該過程如下:

Initiator Procedure:

發起者處於 selected 狀態才可以發起 Separate.req 訊息請求 響應實體。當發起者傳送了 Separate.req 後,就意味著發起者的 Separate Procedure 已經完成,發起者進入 NOT SELECTED 狀態。

Responding Entity Procedure:

1.響應實體接收到 Separate.req。
2.如果響應實體處於 SELECTED 狀態,則 Separate Procedure 可以成功的處理。
3.如果響應實體不處於 SELECTED 狀態,則  Separate.req 請求被忽略。

3.8 Reject Procedure

Reject Procedure 用於響應在不適當的上下文中收到的其他有效的HSMS訊息。當使用 HSMS 通行時,支援 Reject Procedure 提供了有用的診斷資訊在分散式應用程式的生產環境中

Initiator (Sender of Inappropriate Message) Procedure:

發起者傳送了一個不恰當的訊息給到響應實體,響應實體會 回覆一個 Reject.req,當發起者收到 Reject.req 後,需要採取恰當的措施

Responding Entity Procedure:

響應實體收到了一個不恰當的訊息,會回覆一個  Reject.req訊息給 發起者。

HSMS 要求,當響應實體處於 NOT SELECTED狀態或者接收到未為該實體定義的 SType or PType 型別的訊息時,需要當作 reject procedure 處理。附加標準可定義需要當作 reject procedure 的其他條件。一般來說,接收拒絕訊息是配置不當的系統或軟體程式設計錯誤的指示。

4、 HSMS訊息格式

4.1 General Message Format 一般訊息格式

4.1.1 Byte Structrue:

在HSMS中一個位元組包含8位。位元組中的位從第7位(MSB)編號到第0位(LSB)。

4.1.2 Message Format:

HSMS訊息以單個連續位元組流傳輸。

HSMS Message Format

Number of Bytes Description
4 Bytes Message Length. MSB First. Specifies the number of bytes in the Message Header plus the Message Text.
10 Bytes Message Header.
0–n Bytes Message Text. Format is further specified by PType field of message header.
大端模式和小端模式是指在多位元組資料儲存時,位元組的順序不同。在大端模式中,高位位元組儲存在低地址,低位位元組儲存在高地址;而在小端模式中,低位位元組儲存在低地址,高位位元組儲存在高地址。

MSB(Most Significant Bit)是指最高位的位元位,它與大、小端模式的關係是:在大端模式中,MSB位於第一個位元組的最高位;而在小端模式中,MSB位於最後一個位元組的最高位。

所以 HSMS 採用的是大端模式
4.1.3 Message Length:

Message Length是一個四位元組的無符號整數值,它指定Message Header加上Message Text的位元組長度。訊息長度首先傳輸最高有效位(MSB),最後傳輸最低有效位(LSB)。

最小可能的訊息長度為10(當只有Header時)。最大可能的訊息長度跟具體實現有關。

4.1.4 Message Header:

MessageHeader是一個10位元組的欄位。頭中的位元組從第0位元組(傳輸的第一個位元組)編號到第9位元組(傳輸的最後一個位元組)。

HSMS Message Header

Bytes Description
0-1 Session ID (Device ID)
2 Header Byte 2
3 Header Byte 3
4 PType
5 SType
6-9 System Bytes

其中:

  • Session ID16位無符號整數,它佔據了位元組0和位元組1(位元組0是MSB,1是LSB)。用於標識通訊實體的連線;

  • Header Byte 2:對於不同的HSMS訊息,有不同的取值;

  • Header Byte 3:對於不同的HSMS訊息,有不同的取值;

  • PType8位無符號整型,PType旨在作為一種列舉型別,定義表示層訊息型別:MessageHeader和MessageText是如何編碼的。只有 PType = 0,被HSMS定義為表示SECS-II訊息編碼。

PType:

Value Description
0 SECS-II Encoding
1-127 Reserved for subsidiary standards
128-255 Reserved, not used
  • SType8位無符號整數,是一種列舉型別,標識此訊息是HSMS資料訊息(值=0)還是HSMS控制訊息。

SType:

Value Description
0 Data Message
1 Select.req
2 Select.rsp
3 Deselect.req
4 Deselect.rsp
5 Linktest.req
6 Linktest.rsp
7 Reject.req
8 (not used)
9 Separate.req
10 (not used)
11–127 Reserved for subsidiary standards
  • SystemBytes:四位元組無符號整數,用於在一組開放的事務中唯一地標識一個事務,即唯一地標識一次訊息互動。

4.2 HSMS Message Formats by Type 按型別劃分的HSMS訊息格式

這是一個HSMS訊息的格式。每條訊息都以一個 Message Length, 開始,然後是一個 Message Header,後面是 Message Text

Message Length : 是一個四位元組的值,它定義了整個HSMS訊息的長度 (Message Header + Message Text).

Message Header: 描述HSMS訊息或過程。

Message Text: 是HSMS訊息的資料部分。它只與資料程式相關。訊息文字中的資料是在SECS-II訊息協議部分中描述的已編碼的SECS-II。

HSMS訊息中的Header的解釋取決於由SType欄位的值定義的特定HSMS訊息型別。

下表總結了定義的完整訊息集,PType = 0(SECS-II訊息格式)。

4.2.1 SType=0 DataMessage

使用SType=0來標識HSMS訊息以傳送DataMessage。

HSMS Message Length 最少為10(Message Header的長度)。

其 Byte 2 的組成如下圖,它標識訊息是否需要應答。

  • Byte 2W-Bit 指示Primary Message是否需要Reply Message,期望應答則設定為1,不期望應答則設定為0Reply Message應該始終將W位設定為0。Header Byte 2的低階7位(第6-0位)包含該訊息的SECS流。流是一個7位無符號整數值,它標識訊息的一個主要話題,它的使用在SEMI E5(SECS-II)中定義。

  • Byte 3: 包含該訊息的SECS功能。功能是一個8位的無符號整數值,用於標識訊息的一個次要話題(在流中),它的使用在SEMI E5(SECS-II)中定義。Byte3 的 bit 0 定義資料訊息是“Primary”還是“Reply”;值1表示“Primary”,值0表示“Reply”。

  • PType: 為0 表示 SECS-II編碼格式。

  • System Bytes:唯一地標識此訊息事務,ReplyMessage 的 SystemBytes 應與其對應回覆的Prymary Message的 SystemBytes 相同

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,表示拒絕的原因。

ReasonCode

Value Description
1 SType Not Supported. A message was received whose SType value not defined in the HSMS standard or the particular subsidiary standard(s) supported by the entity.
(不支援SType。收到一條訊息,其SType值未在該實體支援的HSMS標準或特定附屬標準中定義)。
2 PType Not Supported. As above, but for PType.
(不支援PType。原因同上)
3 Transaction Not Open. A Response control message was received when there was no outstanding request message which corresponded to it.
(事務未開啟。當沒有與之對應的未完成的請求訊息時,就會收到一條響應控制訊息。)
4 Entity Not Selected. A data message was received when not in the SELECTED state.
(實體 處於 Not Selected。當未處於 SELECTED state 時,接收到一條資料訊息。)
5-127 Reserved for subsidiary standard-specific reasons for reject.
(保留為附屬標準特定的拒絕原因。)
128-255 Reserved for local entity-specific reasons for reject.
4.2.8 SType=9 Separate.req

使用SType為9的HSMS訊息用於立即終止HSMS通訊。除了SType值外,它與Deselect.req訊息相同。其目的是立即終止HSMS通訊。

5、 特別說明

如果檢測到通訊故障,實體應終止TCP/IP連線。在連線終止時,可以嘗試重新建立通訊。

5.1 回覆超時 T3

Reply Timeout:定義一個實體等待回覆訊息的最長時間,如果T3超時則取消這次會話事務但不斷開 TCP/IP 連線。

5.2 連線間隔時間 T5

Connect Separation Time:定義兩個連線請求之間的時間間隔。

頻繁的向一個未準備好連線的實體發起連線請求,會加重 TCP/IP 的操作負荷。

因此,當一個主動模式實體發起的連線操作終止後(不論是成功結束還是被遠端實體拒絕),該實體必須等待 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 超時則認為這次傳輸失敗。

6、 HSMS的實現要求

HSMS的實現必須提供以下引數設定。

所有引數的範圍和解析度必須至少如表中所示。所有引數必須儲存方式為斷電保留,如果電源故障或重新載入系統軟體,應保留設定。

Parameter Name Value Range Resolution Typical Value Description
T3 Reply Timeou 1-120 seconds 1 second 45 seconds Reply timeout. Specifies maximum amount of time an entity expecting a reply message will wait for that reply.
T5 Connect Separation Timeout 1-120 seconds 1 second 10 seconds Connection Separation Timeout. Specifies the amount of time which must elapse between successive attempts to connect to a given remote entity.
T6 Control Transaction Timeout 1-120 seconds 1 second 5 seconds Control Transaction Timeout. Specifies the time which a control transaction may remain open before it is considered a communications failure.
T7 NOT SELECTED Timeout 1-120 seconds 1 second 10 seconds Time which a TCP/IP connection can remain in NOT SELECTED state (i.e., no HSMS activity) before it is considered a communications failure.
T8 Network Intercharacter Timeout 1-120 seconds 1 second 5 seconds Maximum time between successive bytes of a single HSMS message which may expire before it is considered a communications failure.
Connect Mode PASSIVE, ACTIVE ----- ----- Connect Mode. Specifies the logic this local entity will use during HSMS connection establishment.
Local Entity IP Address and Port number determined by TCP/IP conventions ----- ----- Required for any entity operating in PASSIVE mode. Determines the address on which the local entity will listen for incoming connection requests.
Remote Entity IP Address and Port Number determined by TCP/IP conventions ----- ----- Required for any entity operating in ACTIVE mode. Determines the address of the remote entity to which the local entity will attempt to connect.

注意:上面顯示的引數預設值為小型網路(10個或更少節點)。可能需要針對較大的網路配置來調整設定。

相關文章