這裡我們先學習 SECS-II 協定,給我的感受是先學完 SECS-II 協定,再去學習 SECS-I 和 HSMS 協定更加容易理解,所以這裡我先介紹 SECS-II 協定。
文章的內容基本上來自參考資料和自己看的檔案,若有侵權,請聯絡刪除,謝謝。
訊息協定用於在主機和裝置( Host and Equipment)
之間傳送 SECS-II 訊息。每個SECS-II訊息都包含一條主訊息( primary message )
和一個可選的次回覆訊息( optional secondary reply message)
。這也被稱為一個事務(transaction)。
SECS-II 標準定義了使用如SECS-I、HSMS等傳輸協定在裝置和主機之間交換的訊息的形式和含義。
定義了以訊息的形式在裝置和主機之間傳遞資訊,訊息按其流分類,稱為Stream。有很多不同流的Stream,每個Stream又包括具體的訊息,稱為Function。
標準還定義了訊息的結構,訊息由資料項和資料項列表 ( items and lists of items ) 構成
。該結構允許自描述資料格式,以保證對訊息的正確解釋。
SECS-II還規定了事務協定,用於管理訊息的交換、分塊等,對SECS-II實現提出了一些最低要求。
SECS-II訊息被稱為行為和函數(Streams and Functions)
。每條訊息都有一個流值(Sx)和一個函數值(Fy)。比如:Stream 1 Function 1,寫作:S1F1,並被稱為「S1F1」。流是訊息的類別,而函數是該類別中的特定訊息。
注意:
Stream和Function按照數位進行編號。所有的Primary Message的Function編號為奇數,其對應的Secondary Message(即 Reply Message)的Function編號為偶數且為其Primary Message的Function編號加1。
如果Primary Message不需要應答,則其對應的偶數編號(Primary Message Function 編號加1)的Function不使用,保留。
我們來看一個例子:
接下來我們一起看看哪些 Streams and Functions 是保留的,那些是我們可以自定義的。
Stream | **Function ** | Availability |
---|---|---|
0 | 0 to 255 | 系統保留的 |
1 to 63 | 0 to 63 | 系統保留的 |
64 to 127 | 0 | 系統保留的 |
1 to 63 | 64 to 255 | 使用者可自定義使用的 |
64 to 127 | 1 to 255 | 使用者可自定義使用的 |
注意:
All function 0’s have a special meaning. They are sent as a reply to an aborted primary message.
上面這句話的意思是:所有Stream中Function編號為0的Message保留,用於中止事務。
上面我們瞭解了 Streams and Functions 的基礎介紹,接下來一起學習下 Stream 的分類。
Stream | Catagory | 含義 |
---|---|---|
1 | Equipment Status | 裝置狀態 |
2 | Equipment Control and Diagnostics | 裝置控制和診斷 |
3 | Material Status | 原料狀態 |
4 | Material Control | 原料控制 |
5 | Alarm Handling | 例外處理 |
6 | Data Collection | 資料採集 |
7 | Recipe Management | 工藝程式管理 |
8 | Control Program Transfer | 控制程式傳輸 |
9 | System Errors | 系統錯誤 |
10 | Terminal Services | 終端服務 |
11 | Host File Services (Deleted) | 主機檔案服務(已刪除) |
12 | Wafer Mapping | 晶片圖形佈置 |
13 | Data Set Transfers | 資料集傳輸 |
14 | Object Services:物件服務; | 物件服務 |
15 | Recipe Management | 配方管理 |
16 | Processing Management | 工藝程序管理 |
17 | Equipment Control and Diagnostics | 裝置控制和診斷 |
18 | Subsystem Control and Data | 子系統控制和資料 |
事務:是資訊交換的基礎
。一個事務由不需要Reply的Primary Message或需要Reply的Primary Message及其Reply Message組成。這裡我理解的事務指的是:一次完整的請求或者一次完整的請求響應。
下列是SECS-II在事務層面所規定的要求:
對談:是用於完成特定任務的一系列的一個或多個相關事務
。對談應包括完成任務所需的所有事務,對談結束時,對談雙方應釋放相關資源。
對談超時:表示對談在規定時間內未完成
。對談超時時間和檢測由使用者應用程式自定義。
對談超時將終止對談的進一步操作,並將允許清除任何已提交的資源。在裝置上檢測到對談超時後,應傳送S9F13給主機。
SECS-II中定義了7種型別的對談:
1、一個無需回覆的Primary Message是最簡單的對談。此訊息必須是一個單塊的SECS-II訊息。
2、如果響應端有發起端想要的資料,則會使用Primary Message請求這些資料,響應端將這些資料作為Reply Message回覆給發起端。這是一個 request / data conversation(請求/資料對話)。
3、如果發起端將單塊訊息中的資料傳送給響應端,並期望從響應端回覆確認。這是一個 send / acknowledge conversation(傳送/確認對談)。
4、如果發起端有一個要為特定的互動傳送的多塊訊息,則發起端必須在傳送資料之前獲得響應端的許可。
對談中的第1個事務請求傳送許可權,響應端授予或拒絕傳送許可權。如果授予許可權,發起端傳送資料,響應端進行相應地回覆。
這是一個 inquire / grant / send / acknowledge conversation(詢問/授予/傳送/確認對話)。
5、一個關於在裝置和主機之間傳輸未格式化的資料集的對話,這個對談在 Stream 13 中有詳細描述。
6、 一個關於裝置之間原料處理的對談。這個對談在 Stream 4中詳細描述。
7、發起端可以向響應端請求需要一段時間才能獲取的資訊(例如,操作員的輸入)。
對談中的第一個事務請求資訊,並且響應端以三種方式之一響應:(1)返回資訊,(2)響應端表示不能或不會獲得資訊,(3)響應端表示將在隨後的事務中獲得並返回資訊。
對於方式(3),響應端將在資訊可用時啟動後續事務返回資訊。方式(3)是一個 request / acknowledge / send / acknowledge conversation(請求/確認/傳送/確認對話)。
所有根據SECS-II標準的訊息使用兩種資料結構,即 Item (專案) 和 List(列表)。訊息資料結構定義了訊息的邏輯劃分,與訊息傳輸協定的物理劃分不同。
訊息的資料結構旨在為在裝置和主機之間傳遞的訊息提供一個自描述的內部結構。
一個Item是一個具有長度和格式的資訊包。由Item Header 和 Item Body
組成。
Item的前2個、前3個或前4個位元組稱為 Item Header,用以描述Item的長度和格式。Item Header後的位元組稱為 Item Body,Item Body是Item的實際資料。
下圖是 Item Header 的結構圖
:
這個圖看著是不是挺複雜的,不用急,我們一步一步的捋清楚後,就會發現並不難。
LSB和MSB的含義:
MSB(Most Significant Bit):最高有效位,二進位制中代表最高值的位元位,這一位對數值的影響最大。
LSB(Least Significant Bit):最低有效位,二進位制中代表最低值的位元位
例如,在二進位制的1001(十進位制的9)中,最左邊的「1」即是MSB對數值影響最大,從1到9的變化幅度。而最右邊的1是LSB因為僅會讓數值產生8到9的變化。
總結:MSB指二進位制中表示的最高有效位,LSB指資料的最低有效位,1(
MSB
)001(LSB
)
從上圖中我們知道,Header的第1個位元組為Format byte,其後的位元組為Length byte。
注意這裡的其後的位元組為 Length byte,這裡的 位元組數不是固定的。
Format byte 被各位了兩部分,前面兩位表示:Item Body的長度,後面的表示:資料的格式,即ItemBody中的位元組資料型別
。
Format byte的第1位和第2位:
定義Format byte後面有幾個位元組來表述Item Body的長度。取值只能1、2、3。如果值為2,則表示有2個位元組表述Item Body的長度,即第2個和第3個位元組。值為0是非法的,會產生錯誤。
這裡就解釋了上面為什麼說:其後的位元組為 Length byte,這裡的 位元組數不是固定的。因為Format byte的第1位和第2位一共有意義的值有1、2、3,即 Item Header 的 位元組可能為 :前2個、前3個或前4個位元組。
這裡有一個需要特別注意的點,圖中的 No. of length bytes 為 0 時,說的是錯誤的資料格式。但是我看其他的檔案,說的是 0 代表 無Item 。這裡暫不清楚誰對誰錯,也可能是不同的裝置廠商有不同的定義。這裡大家一定要注意!!!
Format byte的第3位至第8位元:
定義資料的格式,即ItemBody中的位元組資料型別。下圖為資料型別定義表:
List是一組有序的元素,其中元素可以是Item或List
。
List 的Header與資料型別為0的Item的Header形式相同。不過List的Header中的長度表示List中元素的個數,Item的Header中的長度表示資料位元組的個數。
這裡我頁不太明白,清楚的朋友,請不吝賜教。
在地化字串項是一個用於表示由多位元組字元組成的字串的Item。其Header中的Format Code為22(Octal)。它由string header和string組成。
因為字元有許多不同的編碼方案,所以有一個附加的string header來表述字元集。
string header 是一個2位元組16位元的數位,它在 Item Header 之後,在string之前。
string header 是 Item 的 實際資料的一部分,所以它的長度計算包含在Item Header 的 Length byte 中。
下圖為string header的編碼集對應。
上面看了這麼多理論,接下來一起看看幾個 Item 的資料範例,來幫助我們進行理解。
1、包含一個二進位制資料 10101010
的 Item。
00100001 Item, binary, 1 length byte
00000001 1 byte length
10101010 data byte
理解了上面這張圖代表的含義,上面說的內容基本上就理解了。
2、 包含三個ASCII字元ABC的Item。
01000001 Item ASCII, 1 length byte
00000011 Three bytes long
01000001 ASCII A
01000010 ASCII B
01000011 ASCII C
3、包含三個2位元組有符號整型數位的Item。
01101001 Item, 2-byte integers
00000110 6 bytes total (6/2=3 integers)
xxxxxxxx MSByte number x
xxxxxxxx LSByte number x
yyyyyyyy MSByte number y
yyyyyyyy LSByte number y
zzzzzzzz MSByte number z
zzzzzzzz LSByte number z
4、 包含一個4位元組浮點數的Item。
10010001 Item, 4-byte floating point
00000100 4 bytes (4/4=1 number)
ffffffff
ffffffff Floating point number
ffffffff
ffffffff
SECS-II 訊息包含一個 structure or layout (結構或佈局)
。該佈局定義了SECS-II訊息的所有資料項。佈局是訊息中遵循Stream and Function notation (流和函數符號)
的一部分。
上面中 L、A
這種是什麼意思呢,還記得我們在 4.1 Item
中介紹的 Format byte 中 第3位到第8位元
的作用嗎?這裡就是的 L、A
就是表示 Item Body 中的資料型別。我們稱之為Data Item
。接下來一起看看有哪些 Data Item吧。
資料項由 format codes(格式程式碼)
定義。下表中列出了所有可能的資料項及其格式程式碼。格式程式碼僅由6位來定義。
需要注意的是,List 型別的資料項可以包含 其他資料項,當然了,也可以包含 List 資料項。
Type 縮寫 | Type | 含義 | Format Code |
---|---|---|---|
L | List | 列表 | 000000 |
A | ASCII | ASCII字元 | 010000 |
B | Binary | 二進位制數 | 001000 |
Boolean | Boolean | 布林值 | 001001 |
I1 | 1-byte Singed Integer | 1位元組有符號整數 | 011001 |
I2 | 2-byte Singed Integer | 2位元組有符號整數 | 011010 |
I4 | 4-byte Singed Integer | 4位元組有符號整數 | 011100 |
I8 | 8-byte Singed Integer | 8位元組有符號整數 | 011000 |
U1 | 1-byte UnSinged Integer | 1位元組無符號整數 | 101001 |
U2 | 2-byte UnSinged Integer | 2位元組無符號整數 | 101010 |
U4 | 4-byte UnSinged Integer | 4位元組無符號整數 | 101100 |
U8 | 8-byte UnSinged Integer | 8位元組無符號整數 | 101000 |
F4 | 4-byte Floating-Point | 4 位元組浮點數 | 100100 |
F8 | 8-byte Floating-Point | 8位元組浮點數 | 100000 |
JIS-8 | 網上的資料說是:JIS-8是一種 半導體器件的防水等級標準, 表示該器件能夠在水深超過1米 的水下保持正常工作。 不知道對不對哈 |
010001 |
SECS-II訊息可以使用幾個約定進行註釋。下面顯示了兩個更常見的慣例:
按照我的理解,這裡的A[6] 是不對的,第一個 A[6]應該是A[4]。第二個 A[6]應該是A[7]。
這裡我放出來我看的檔案的英文原版,大家自行理解。
Before a SECS-II message can be sent, the layout must be encoded. Each data item in the message layout is encoded and becomes part of the Data Structure. This is repeated until all the data items in the layout are encoded. The Data Structure is subsequently sent via the SECS-I protocol.
說說我的理解:
在傳送SECS-II訊息之前,我們要對資料進行編碼,這裡的資料指的是 5、Message Layout 中的完整資料。訊息佈局中的每個資料項都被編碼,併成為資料結構的一部分。將重複此操作,直到佈局中的所有資料項都被編碼為止。資料結構隨後通過
SECS-I 協定
傳送。(這裡其實還可以通過HSMS協定
傳送)
接下來我們要重點理解了,我們將一起來看看如何將 Data Item 編碼:
這裡我們先對 Item 有一個整體的認知,方便後面的敘述:
Encoded Data Item
的第一個位元組包含資料項的 format code(格式程式碼)
,並定義了接下來的將用幾個位元組
來表示資料項的長度。format code
用第2位到第7位表示, the number of length bytes
用第0位和第1位表示,那可以知道,資料項的長度的取值範圍是:0位元組、1位元組、2位元組、3位元組。
接下來的0、1、2或3個位元組定義了資料的長度。例如,如果資料的大小為1000位元組,那麼將需要2個長度的位元組來表示1000(03 E8十六進位制 或 00000011 11100100二進位制)
下表顯示了可以用長度位元組數表示的最巨量資料位元組數。
Number of length bytes | Max data size |
---|---|
0 | Empty item |
1 | 256 bytes |
2 | 64 Kbytes |
3 | 7.99 Mbytes |
接下來的n個位元組包含了該資料項的資料。
下面顯示瞭如何對ASCII資料項進行編碼。根據它所包含的資料位元組數,它可能需要0、1、2或3個長度的位元組來表示資料位元組的總數。
010000 -> 表示 ASCII 。
下面顯示了一個範例SECS-II訊息佈局是如何編碼的。請注意,在本例中,只有訊息佈局被編碼,流和函數沒有被編碼。所有數值均以十六進位製為單位,(例如: 52 = 01010010)
這裡的 01、02 共同組成了 Item Header。
其中 01 中的 Format code 是:000000,表示 List 型別。長度是: 01,表示接下的一個位元組表示資料的長度。
02 則表示 有2個元素。
由於SECS-I協定中的資料大小限制,編碼的SECS-II訊息(資料結構)可能不適合於一個SECS-I事務。因此,編碼的SECS-II訊息被劃分為更小的塊,一次傳送一個塊。這被稱為多塊訊息傳遞。
每個SECS-I訊息塊被限制為244個已編碼的SECS-II訊息位元組。訊息塊的最大數量為32,767,因此SECS-II編碼的最大訊息大小為 244 x 32,767
位元組長。
SECS-II Parameters : 用於在實現訊息協定時定義一些邊界。下表顯示了SECS-II控制系統中的引數:
SECS-II Parameters | 描述 |
---|---|
T3 | Reply Timeout |
T4 | Inter-Block Timeout |
T3: 從傳送端傳送 Primary Message 到接收到響應端回覆的 Secondary Message之間的時間間隔。
T4: 多塊傳輸中,接收到相鄰塊之間的時間間隔。
這是指一次要處理不止一個事務。事務是傳送主訊息和可選的接收輔助應答。一個事務在等待回覆時被「開啟」。交錯是指有多個「開啟」事務的能力。這允許傳送多個主訊息,而無需首先等待輔助回覆。支援此特性並不是SECS-II的要求。
這裡我們列出了更常用的SECS-II訊息。
1、第一組訊息通常在初始化時使用。
SECS-II | Description |
---|---|
S1F1 | Say hello to the equipment |
S1F13 | Establish communications with the equipment |
S2F15 | Set equipment constants |
S2F43 | Turn off spooling |
S2F33 | Create / Delete reports |
S2F35 | Link reports to events |
S2F37 | Enable / Disable events |
S5F3 | Enable / Disable alarms |
2、這些資訊可用於配方選擇、遠端啟動、晶圓片選擇等
SECS-II | Description |
---|---|
S2F41 | Remote equipment control |
3、這些訊息可用於資料收集。 |
SECS-II | Description |
---|---|
S6F3 | Older version of Event Reports |
S6F9 | Older version of Event Reports |
S6F11 | Event Reports |
4、S5F1用於處理裝置報警
5、S9 這一類用於當裝置檢測到之前的訊息錯誤時,由裝置傳送。
特別感謝 SECS半導體裝置通訊-3 SECS-II通訊標準 這邊文章,讓我對 SECS協定有一個入門的瞭解。
參考資料: