這篇部落格文章最初發表於 cimetrix.com
在 SECS/GEM 通訊會話中,數值至關重要,因為設備會利用這些數值,以製程變數值或檢測資料的形式將結果回報給工廠主機系統;而工廠主機則會利用這些數值,來更新設備上的配置資料、製程配方參數及其他變數。
這篇部落格文章說明了 SEMI E5(SECS-II)中的項目格式如何對應至設備申請中使用的具體數值。
SEMI E5 中數值的項目格式
SEMI E5(SEMI 設備通訊標準 2 訊息內容規範(SECS-II))標準文件定義了以下適用於數值的項目格式代碼。請注意,該表格亦針對每個格式代碼列出了 SEMI E173(XML SECS-II 訊息標記規範(SMN))的 XML 元素類型。
| SEMI E5 項目格式代碼 | E173 | 值型資料型別 | 數值範圍 | ||
| 八進制 | 意思 | SMN | C# | C++ | 最小值 ~ 最大值 |
| 10 | 二進位 | BIN | 位元組 | unsigned char | 0 ~ 255 |
| 30 | 8 位元組有符號整數 | SI8 | 長 | 很長很長 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
| 31 | 1 位元組有符號整數 | SI1 | sbyte | char | -128 ~ 127 |
| 32 | 2 位元組有符號整數 | SI2 | 簡短 | 簡短 | -32,768 ~ 32,767 |
| 34 | 4 位元組有符號整數 | SI4 | int | int, long | -2,147,483,648 ~ 2,147,483,647 |
| 40 | 8 位元組浮點數 | FP8 | double | double | -1.79769313486232e+308 ≈ 1.79769313486232e+308 |
| 44 | 4 位元組浮點數 | FP4 | float | float | -3.402823e+38 ≈ 3.402823e+38 |
| 50 | 8 位元組無符號整數 | UI8 | ulong | unsigned long long | 0 ~ 18,446,744,073,709,551,615 |
| 51 | 1 位元組 無符號整數 | UI1 | 位元組 | unsigned char | 0 ~ 255 |
| 52 | 2 位元組無符號整數 | UI2 | ushort | unsigned short | 0 ~ 65,535 |
| 54 | 4 位元組無符號整數 | UI4 | uint | unsigned int、unsigned long | 0 ~ 4,294,967,295 |
數值項目的格式,通常應選擇與設備應用程式在內部定義變數時所使用的數值類型相同的格式。
SEMI E5 標準中還定義了其他項目格式代碼;如需進一步詳情,請參閱 SEMI E5 標準文件。
大端序與小端序
電腦記憶體主要採用小端序(little-endian)系統,在此系統中,數值的最低有效位元組儲存於最小的記憶體位址,而最高有效位元組則儲存於最大的記憶體位址。
相較之下,SEMI E5 採用大端序(big-endian)系統,在此系統中,數值的最高有效位元組首先傳輸,而最低有效位元組則最後傳輸。
例如,十進位數 123,456,789 在十六進位系統中以 0x075BCD15 表示。
在電腦的小端序系統中,最低有效位元組 0x15 儲存於記憶體位址 X,而最高有效位元組 0x07 則儲存於 X + 3。
在 SEMI E5 大端制系統中,最高位元組 (0x07) 會最先傳輸,而最低位元組 (0x15) 則最後傳輸。
| 123,456,789 (= 0x075BCD15 | ||||
|
記憶體位址 |
X |
X + 1 |
X + 2 |
X + 3 |
|
電腦記憶體 |
0x15 |
0xCD |
0x5B |
0x07 |
|
時間歷程 |
T |
T + 1 |
T + 2 |
T + 3 |
|
SEMI E5 (SECS-II) |
0x07 |
0x5B |
0xCD |
0x15 |
此端序轉換應由符合 SEMI E5 標準的 SECS 驅動程式自動處理——設備應用程式無需自行處理此事。
單一項目的最小與最大位元組數
在 SEMI E5 中,單一項目的位元組數稱為「長度位元組」,其有效範圍為最小 0 位元組至最大 16,777,215 位元組(十六進位制為 0xFFFFFF)。 長度為零(0 位元組)的項目表示該項目為空(NULL)。一般而言,長度為一(1 位元組)的項目用於表示具有單一值的單一項目。 長度超過 1 位元組的項目通常包含陣列值,其中 1 位元組項目的陣列最多可包含 16,777,215 個元素(總計 16,777,215 位元組),2 位元組項目的陣列最多可包含 8,388,607 個元素(總計 16,777,214 位元組), 4 位元組項目可包含 4,194,303 個元素(總計 16,777,212 位元組),而 8 位元組項目則可包含 2,097,151 個元素(總計 16,777,208 位元組)。
有符號整數與無符號整數的區別
無符號整數通常用於識別碼,例如 ID 值。具體而言,在更高階的標準文件 SEMI E30(《製造設備通訊與控制通用模型(GEM)規範》)中,識別碼項目應依照 SEMI E5 的規定,定義為無符號整數格式。例如:ALID、CEID、DATAID、ECID、PRTID、SVID、TRID、VID。
二進位格式與 1 位元組無符號整數之間的差異
有兩種項目格式代碼——二進位格式(八進位 10)和 1 位元組無符號整數(八進位 51)——其值範圍為 0 至 255。
長度為 1 位元組的二進位格式專門用於確認代碼。例如,0 表示「接受」,1 表示「錯誤」(未接受),以此類推。
超過 1 位元的二進位格式通常用於傳輸二進位陣列,例如二進位檔案資料。
如何在 4 位元組浮點數與 8 位元組浮點數之間做出選擇
浮點數的精確度在 float 型別與 double 型別之間有所不同。
浮點數的精度約為 7 位小數,這對應於 SEMI E5 標準中的單精度浮點數,即 4 位元組浮點數(八進位 44)。
double 型別的精度約為 16 位十進位數位,對應於 SEMI E5 標準中的 double 浮點數、8 位元組浮點數(八進位 40)。
如需進一步資訊,請參閱《IEEE 754 浮點運算標準》。
結論
這篇部落格文章概述了 SEMI E5(SECS-II)中數值項目的格式定義方式。若想進一步了解 SEMI 標準,歡迎隨時聯絡我們的專家!