Skip to main content

🔰 SECS-II 訊息結構

SECS-II 訊息是 Host 和 Equipment 之間溝通的最小單位。每個訊息都像一個結構嚴謹的「數據包」,由「標頭 (Header)」和「內文 (Body)」組成。

  • 標頭 (Header):描述這則訊息的「目的」,像是訊息的分類、指令和是否需要回覆。
  • 內文 (Body):訊息的「內容」,包含了要傳遞的具體數據。

訊息標頭:SxFy 的世界

標頭中最核心的概念就是 SxFy,它定義了訊息的獨特身份和用途。

Stream (S):訊息的分類

Stream 是訊息的「主要類別」,用來區分不同領域的訊息。你可以把它想像成圖書館的「藏書區」。

例如:

  • S1:設備狀態 (Equipment Status),如查詢設備是否在線上。
  • S2:設備控制 (Equipment Control),如命令設備開始或停止。
  • S6:數據收集 (Data Collection),如回報生產數據。
  • S7:配方管理 (Recipe Management),如上傳或下載生產配方。

Function (F):訊息的指令

Function 是在特定 Stream 下的「具體指令」。你可以把它想像成藏書區裡的「某一本書」。

  • 奇數 Function 通常代表「請求」或「發送」。
  • 偶數 Function 通常代表「回覆」。

例如,S1F1S1F2 是一對常見的訊息:

  • S1F1 (由 Host 發送):"Are you there?" (請求確認設備是否在線)
  • S1F2 (由 Equipment 回覆):"I am here." (回覆確認在線)

W-Bit (Wait Bit):是否需要回覆?

W-Bit 是一個標記,用來指示這則訊息是否「需要回覆」。

  • W = 1:需要回覆。發送方會等待接收方的回覆訊息。
  • W = 0:不需要回覆。

例如,當 Host 發送 S1F1 (W=1) 時,它期望 Equipment 必須回覆 S1F2


訊息內文:由「資料項目」組成

如果標頭是信封,那訊息內文就是信紙,上面寫著要傳遞的具體內容。內文是由一或多個「資料項目 (Data Item)」所組成。

SECS-II 定義了豐富的資料項目類型,讓你可以傳遞任何複雜的數據。

主要資料項目 (Data Item) 類型

類型名稱描述範例
LList列表,可以包含其他資料項目,形成複雜的樹狀結構L 2 <item1> <item2>
AASCIIASCII 字串A 5 "HELLO"
JJIS-8日文字元集-
BBinary二進位數據B 4 <data>
BOOLEAN布林0 (False) 或 1 (True)BOOLEAN 1 1
I1, I2, I4, I8Signed Integer帶正負號的整數 (1, 2, 4, 8位元組)I2 2 -100
U1, U2, U4, U8Unsigned Integer無正負號的整數 (1, 2, 4, 8位元組)U4 4 4294967295
F4, F8Floating Point浮點數 (4, 8位元組)F4 4 3.14

範例:一則真實的 S2F41 命令

假設 Host 要對 Equipment 下達一個指令 START_PROCESS,並附帶兩個參數:Recipe.rcp150

這通常會使用 S2F41 (Host Command Send) 來發送。訊息的結構可能會像這樣 (以 YAML 格式示意):

# 標頭 (Header)
S2F41 W (Stream=2, Function=41, Expect Reply)

# 內文 (Body)
L 2 # 一個包含 2 個項目的列表
A 13 "START_PROCESS" # 項目1: ASCII 字串,指令名稱
L 2 # 項目2: 一個包含 2 個參數的子列表
A 9 "Recipe.rcp" # 參數1: ASCII 字串,配方檔案名稱
I2 2 150 # 參數2: 2-byte 整數,數值

透過這種結構,SECS-II 能夠以一種極度標準化且可擴充的方式,在 Host 和 Equipment 之間傳遞各式各樣的複雜指令和數據。