HSMS Communication
SEMI E37 的 TCP/IP 連線層,Active / Passive 模式、Select 與 Linktest 交握、T3–T8 逾時控制皆由元件處理,斷線自動重連。
從底層連線到 GEM 模型,一套元件涵蓋設備端通訊所需的四個層次。
SEMI E37 的 TCP/IP 連線層,Active / Passive 模式、Select 與 Linktest 交握、T3–T8 逾時控制皆由元件處理,斷線自動重連。
SEMI E5 訊息編解碼。以 SecsItem 組裝巢狀 List、ASCII、整數與浮點資料,收送 Primary / Secondary 訊息不必自己拼位元組。
SEMI E30 模型管理。VID、EC、Report、CEID 與 Alarm 以 XML 定義,也能在執行期用程式碼新增修改,含控制狀態機。
附 Host 端模擬工具,沒有真實機台也能驗證訊息流程;技術文件涵蓋設定檔參數、API 與 GEM 標準指令庫。
載入設定、啟動連線、送出 SECS-II 訊息,不需要自己處理 socket 與位元組編碼。
// 1. 建立元件並載入設定
FluxSECS.SECS secs = new FluxSECS.SECS();
secs.InitializeConfig(
ConnectionPath: "Config/Connection.xml",
GemDataPath: "Config/GemConfig.xml",
StandardDataPath: "Config/Standard.xml",
LicensePath: "Config/License.license",
debugmode: true,
monitor: (msg) => Console.WriteLine($"[MON] {msg}"),
trace: (msg) => Console.WriteLine($"[TRC] {msg}")
);
// 2. 依 Connection.xml 啟動 HSMS 連線
secs.Start();
// 3. 送出 S1F13(建立通訊請求)
var s1f13 = new SecsMessage(1, 13, true);
var root = new SecsItem(SecsFormat.List);
root.Add_ASCII("MDLN-01"); // Model Name
root.Add_ASCII("1.0.0"); // Software Rev
s1f13.Add(root);
secs.SendPrimary(s1f13);
// 4. 接收訊息並回覆
secs.OnDataMessage += (type, msg) =>
{
if (type == TransactionType.PrimaryIn
&& msg.Stream == 1 && msg.Function == 1)
secs.Standard_S1F2(msg, "MY_MODEL", "1.0");
};