本文提出利用 UML 模型語言,以物件導向的方式來分析與設計獨立介面通訊模組 控制器軟體,並利用具有跨平台特性之 Java 語言來完成整個控制器程式的實作,使得 i-SECS 控制器具有:
遵循 SEMI E5 SECS-II 標準的規範,可以讓控制器間傳遞符合 SEMI Standard 共通的 SECS-II 格式的訊息;
遵循 SEMI E37 HSMS 標準的規範,可以讓控制器以 TCP/IP(Ethernet)的方式來 傳遞 SECS-II 格式的訊息;
遵循 SEMI E30 GEM 標準的規範,可以讓 i-SECS 與設備控制器及上層主機間 根據上層主機通訊介面劇本來傳遞訊息;允許上層主機可以參與設備的操作,以 有效的整合製程設備到整廠自動化的系統中。
實作 SML 的編碼格式,可在使用者介面上呈現出訊息的 SML 語法,使控制器間 所傳遞的訊息內容更易於理解與追蹤。
建立資料庫連結,可以透過上層主機通訊介面的劇本將製程中的資訊週期性的儲 存到資料庫中,達到資料追蹤與分析的目的。
整個控制器軟體的設計是將各個功能模組化,以達到整合容易、擴充方便的軟體架 構。而由於機台的限制,目前是以集束型製程設備控制器(CTC)跟上層主機通訊介面 (GEM)來驗證 i-SECS 控制器的通訊功能,並整合 i-SECS 控制器到集束型半導體製程 設備上,與 CTC、TMC、FEMC、PMC 等控制器模組做全系統自動化模式的測試工作。
8.2 未來展望
本文的最終目的是希望能將i-SECS控制器廣泛普及的應用在半導體及光電製程設 備上,經由乙太網路(Ethernet)連線的方式擷取通訊訊息,達到設備控制與製程監控的 目的。目前,我們已完成的測試是以實驗室內的集束型半導體製程設備來驗證i-SECS 的功能;未來,希望能夠將i-SECS控制器整合到光電領域的製程設備上,透過兩種領域 中共通的訊息傳遞特性,經由擷取到的製程資訊作分析,進而發展先進製程控制 (Advanced Process Control, APC) , 期 能 提 高 整 體 的 設 備 有 效 利 用 率 (Overall Equipment Effectiveness, OEE)。
參考文獻
[1] Ernest J. Wood, An Object-Oriented SECS Programming Environment, IEEE TRANSACTIONS ON SEMICONDUCTOR MANUFACTURING , Vol. 6. NO. 2, MAY 1993), pp.119-127.
[2] SEMI E4-0301, “SEMI Equipment Communications Standard 2 Message Transfer (SECS-I)”, 2002.
[3] 李安謙教授,“集束型製程設備物件導向控制軟體製作測試驗證”,中山科學研究院 期末報告,2002。
[4] 李妍慧,“集束型製程設備傳輸模組控制器及通訊模組設計與測試”,國立交通大學 機械工程研究所碩士論文, 民 92 年。
[5] SEMI E5-0301, “SEMI Equipment Communications Standard 2 Message Content (SECS-II)”, 2002.
[6] SEMI E37, “High-Speed SECS Message Services (HSMS) Generic Services”, 2002.
[7] SEMI E30, “Generic Model for Communications and Control of Manufacturing Equipment (GEM) ”, 2002.
[8] Jing Dong, UML Extension for Design Patterns Compositions, Journal of Object Technology Vol.1, No.5, November-December 2002.
[9] David A. Taylor, “Object Oriented Information System”, Wiley, 1992
[10] Grady Booch, James Rumbaugh, Ivar Jacobson, “The Unified Modeling Language User Guide”, ADDISON-WESLEY, 1999.
[11] Mary Campione, Kathy Walrath, Alison Huml, “The Java™ Tutorial Third Edition”, ADDISON-WESLEY, 2001.
[12] Wendy Boggs, Michael Boogs, “Mastering UML with Rational Rose 2002”, Sybex, January 2002.
[13] Borland,“JBuilder® 9 實用技術手冊",碁峰, 2003.
[14] Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, “Design Patterns- Elements of Reusable Object-Oriented Software”, ADDISON-WESLEY, 2001.
[15] 顧鴻壽,“光電液晶平面顯示器-技術基礎及應用”,新文京,2004。
[16] 結城 浩著,李于青譯, “Design Pattern 於 Java 語言上的實例應用”, 博碩文化,
2002。
[17] “GW Associates Product Manual”, GW Associates.
[18] 曹洪泰,“集束型製程設備與上層主機通訊介面之軟體設計與應用”,國立交通大學 工學院精密與自動化專班碩士論文,民 93 年。
[19] 戶 松 豊 和 著 , 李 于 青 譯 , “Java2 物 件 導 向 技 術 專 題 —Design Patterns 、 Framework、Multithread、Concurrent”,博碩文化,2002。
[20] Darren Govoni, “Java Application Frameworks”, WILEY, 1999 [21] 工研院機械所, SECS Emulator v1.5 , http://secs.itri.org.tw/
[22] 李安謙教授,“具物件導向功能之集束型設備控制器整合測試驗證研究”,中山科學 研究院期末報告,2003。
附錄一 SECS-II 訊息明細
Stream 1 : 設備狀態
Item FormatCode Type
S1F1 Header Only
MDLN 20 String(20)
S1F2
SOFTREV 20 String(20)
S1F3 SVID 20,3(),5() String(20) S1F4 SV 0,10,11,20,21,3(),4(),5() String(20) S1F11 SVID 20,3(),5() String(20)
S1F15 Header Only
S1F16 OFLACK 10 binary(10)
S1F17 Header Only
S1F18 ONFLACK 10 binary(10)
Stream 2 : 設備控制與診斷
Item FormatCode Type
S2F13 ECID 20,3(),5() String(20) S2F14 ECV 10,11,20,3(),4(),5() String(20) ECID 20,3(),5() String(20) S2F15
ECV 10,11,20,3(),4(),5() String(20)
S2F16 EAC 10 binary(10)
S2F17 Header Only
S2F18 TIME 20 String(20)
TRID 20,3(),5() String(20)
DSPER 20 String(20)
S2F23
TOTSMP 20,3(),5() String(20)
REPGSZ 20,3(),5() String(20)
ECMIN 10,11,20,21,3(),4(),5() String(20) ECMAX 10,11,20,21,3(),4(),5() String(20) ECDEF 10,11,20,21,3(),4(),5() String(20) S2F30
UNITS 20 String(20)
S2F31 TIME 20 String(20)
S2F32 TIACK 10 binary(10)
DATAID 20,3(),5() String(20) RPTID 20,3(),5() String(20) S2F33
VID 20,3(),5() String(20)
S2F34 DRACK 10 binary(10)
DATAID 20,3(),5() String(20) CEID 20,3(),5() String(20)
DATAID 20,3(),5() String(20) S2F39
DATALENGTH 3(),5() int(34)
S2F40 GRANT 10 binary(10)
RCMD 20,31,51 String(20) CPNAME 20,3(),5() String(20) S2F41
CPVAL 10,11,20,21,3(),5() String(20)
HCACK 10 binary(10)
CPNAME 20,3(),5() String(20) S2F42
Stream 4 : 材料控制
Item FormatCode Type
DATAID 20,3(),5() String(20)
TRJOBNAME 20 String(20)
TRLINK 5() unsign int(54) TRPORT 5() unsignbyte(51)
TROBJNAME 20 String(20)
TROBJTYPE 5() unsignbyte(51)
TRROLE 51 unsignbyte(51)
TRRCP 20 String(20)
TRPTNR 20 String(20)
TRPTPORT 5() unsignbyte(51)
TRDIR 51 unsignbyte(51)
TRTYPE 51 unsignbyte(51)
TRLOCATION 5() unsignbyte(51) S4F19
TRAUTOSTART 11 boolean(11)
TRJOBID 10 binary(10)
TRATOMICID 5() unsign int(54)
TRACK 11 boolean(11)
ERRCODE 5() unsignbyte(51) S4F20
ERRTEXT 20 String(20)
TRJOBID 10 binary(10)
TRCMDNAME 20 String(20)
CPNAME 20,3(),5() String(20) S4F21
CPVAL 10,11,20,21,3(),5() String(20)
TRACK 11 boolean(11)
ERRCODE 5() unsignbyte(51) S4F22
ERRTEXT 20 String(20)
TRJOBID 10 binary(10)
TRJOBNAME 20 String(20)
TRJOBMS 51 unsignbyte(51)
TRACK 11 boolean(11)
ERRCODE 5() unsignbyte(51) S4F23
ERRTEXT 20 String(20)
S4F24 Header Only
S4F27 TRLINK 5() unsign int(54)
TRPORT 5() unsignbyte(51)
TROBJNAME 20 String(20)
TROBJTYPE 5() unsignbyte(51)
TRROLE 51 unsignbyte(51)
TRRCP 20 String(20)
TRPTNR 20 String(20)
TRPTPORT 5() unsignbyte(51)
TRDIR 51 unsignbyte(51)
TRTYPE 51 unsignbyte(51)
TRLOCATION 5() unsignbyte(51) TRLINK 5() unsign int(54) MCINDEX 5() unsign int(54)
HOCMDNAME 20 String(20)
CPNAME 20,3(),5() String(20) S4F29
CPVAL 10,11,20,21,3(),5() String(20) TRLINK 5() unsign int(54) MCINDEX 5() unsign int(54)
HOACK 11 boolean(11)
ERRCODE 5() unsignbyte(51) S4F31
ERRTEXT 20 String(20)
TRLINK 5() unsign int(54)
HOACK 11 boolean(11)
ERRCODE 5() unsignbyte(51) S4F33
ERRTEXT 20 String(20)
Stream 5 : 例外處理
Item FormatCode Type
ALCD 10 binary(10)
S5F5 ALID 3(),5() int (34)
TIMESTAMP 20 String(20)
EXID 20 String(20)
EXTYPE 20 String(20)
EXMESSAGE 20 String(20)
S5F9
EXRECVRA 20 String(20)
S5F10 Header Only
TIMESTAMP 20 String(20)
EXID 20 String(20)
EXTYPE 20 String(20)
S5F11
EXMESSAGE 20 String(20)
S5F12 Header Only
EXID 20 String(20)
S5F13
EXRECVRA 20 String(20)
EXID 20 String(20)
ACKA 11 boolean(11)
ERRCODE 5() unsignbyte(51) S5F14
ERRTEXT 20 String(20)
TIMESTAMP 20 String(20)
EXID 20 String(20)
ACKA 11 boolean(11)
ERRCODE 5() unsignbyte(51) S5F15
ERRTEXT 20 String(20)
S5F16 Header Only
S5F17 EXID 20 String(20)
EXID 20 String(20)
ACKA 11 boolean(11)
ERRCODE 5() unsignbyte(51) S5F18
ERRTEXT 20 String(20)
Stream 6 : 資料收集
Item FormatCode Type
TRID 20,3(),5() String(20)
SMPLN 3(),5() int(34)
STIME 20 String(20)
S6F1
SV 0,10,11,20,21,3(),4(),5() String(20)
S6F2 ACKC6 10 binary(10)
DATAID 20,3(),5() String(20) S6F5
DATALENGTH 3(),5() int(34)
S6F6 GRANT6 10 binary(10)
DATAID 20,3(),5() String(20) CEID 20,3(),5() String(20) RPTID 20,3(),5() String(20) S6F11
V 0,10,11,20,21,3(),4(),5() String(20)
S6F12 ACKC6 10 binary(10)
S6F15 CEID 20,3(),5() String(20) DATAID 20,3(),5() String(20) CEID 20,3(),5() String(20) RPTID 20,3(),5() String(20) S6F16
V 0,10,11,20,21,3(),4(),5() String(20) S6F19 RPTID 20,3(),5() String(20) S6F20 V 0,10,11,20,21,3(),4(),5() String(20)
S6F23 RSDC 51 unsignbyte(51)
S6F24 RSDA 10 binary(10)
DATAID 20,3(),5() String(20) TRID 20,3(),5() String(20) RPTID 20,3(),5() String(20) S6F27
V 0,10,11,20,21,3(),4(),5() String(20) S6F28 TRID 20,3(),5() String(20) S6F29 TRID 20,3(),5() String(20) TRID 20,3(),5() String(20) RPTID 20,3(),5() String(20) V 0,10,11,20,21,3(),4(),5() String(20) S6F30
ERRCODE 5() unsignbyte(51) S6F65 DATAID 20,3(),5() String(20) S6F66 DATAID 20,3(),5() String(20)
EVNTSRCID 20 String(20) CEID 20,3(),5() String(20) S6F67 DATAID 20,3(),5() String(20) DATAID 20,3(),5() String(20)
DATASRCID 20 String(20)
S6F68
V 0,10,11,20,21,3(),4(),5() String(20)
Stream 7 : 材料控制
Item FormatCode Type
PPID 10,20 String(20)
PPBODY 10,20,3(),5() String(20)
S7F4 ACKC7 10 binary(10)
S7F5 PPID 10,20 String(20)
PPID 10,20 String(20)
S7F6
PPBODY 10,20,3(),5() String(20)
S7F17 PPID 10,20 String(20)
S7F18 ACKC7 10 binary(10)
S7F19 Header Only
S7F20 PPID 10,20 String(20)
PPARM 11,20,3(),4(),5() String(20)
S7F24 ACKC7 10 binary(10)
PPARM 11,20,3(),4(),5() String(20)
S7F27 PPID 10,20 String(20)
ACKC7A 31,51 unsignedbyte(51) SEQNUM 3(),5() unsignedbyte(51)
ERRW7 20 String(20)
S7F28 Header Only
S7F29 LENGTH 3(),5() signedint(34)
S7F30 PPGNT 10 binary(10)
Stream 9 : 系統錯誤
Item FormatCode Type
S9F1 MHEAD 10 binary(10)
EDID 10,20,3(),5() String(20)
Stream 10 : 終端機服務
Item FormatCode Type
TID 10 binary(10)
S10F1
TEXT 10,20,22,3(),5() String(20)
S10F2 ACKC10 10 binary(10)
TID 10 binary(10)
S10F3
TEXT 10,20,22,3(),5() String(20)
S10F4 ACKC10 10 binary(10)
Stream 16 : 製程管理
Item FormatCode Type
DATAID 20,3(),5() String(20)
MF 10,20 binary(10)
MID 10,20 String(20)
PRRECIPEMETHOD 51 unsignbyte(51)
RCPSPEC 20 String(20)
RCPPARNM 20 String(20)
RCPPARVAL 10,11,20,3(),4(),5() String(20) S16F3
PRPROCESSSTART 11 boolean(11)
PRJOBID 20 String(20)
ACKA 11 boolean(11)
ERRCODE 5() unsignbyte(51) S16F4
ERRTEXT 20 String(20)
DATAID 20,3(),5() String(20)
PRJOBID 20 String(20)
PRCMDNAME 20 String(20)
CPNAME 20,3(),5() String(20) S16F5
CPVAL 10,11,20,21,3(),5() String(20)
PRJOBID 20 String(20)
ACKA 11 boolean(11)
ERRCODE 5() unsignbyte(51) S16F6
ERRTEXT 20 String(20)
TIMESTAMP 20 String(20)
PRJOBID 20 String(20)
PRJOBMILESTONE 5() unsignbyte(51)
ACKA 11 boolean(11)
ERRCODE 5() unsignbyte(51) S16F7
ERRTEXT 20 String(20)
S16F8 Header Only
PREVENTID 5() unsignbyte(51)
TIMESTAMP 20 String(20)
PRJOBID 20 String(20)
VID 20,3(),5() String(20) S16F9
V 0,10,11,20,21,3(),4(),5() String(20)
S16F10 Header Only
PRJOBID 20 String(20)
S16F25
PRPROCESSSTART 11 boolean(11)
Stream 17 : 設備控制與診斷
Item FormatCode Type
S17F0 Header Only
DATAID 20,3(),5() String(20) RPTID 20,3(),5() String(20)
ERRCODE 5() unsignbyte(51) S17F3 RPTID 20,3(),5() String(20)
ACKA 11 boolean(11)
RPTID 20,3(),5() String(20) ERRCODE 5() unsignbyte(51) S17F4
ERRTEXT 20 String(20)
DATAID 20,3(),5() String(20) TRID 20,3(),5() String(20)
TRAUTOD 11 boolean(11)
S17F5
RPTOC 11 boolean(11)
TRID 20,3(),5() String(20) S17F6
ERRCODE 5() unsignbyte(51) S17F7 TRID 20,3(),5() String(20)
ACKA 11 boolean(11)
TRID 20,3(),5() String(20) ERRCODE 5() unsignbyte(51) S17F8
ERRTEXT 20 String(20)
DATAID 20,3(),5() String(20)
EVNTSRC 20 String(20)
CEID 20,3(),5() String(20) S17F9
RPTID 20,3(),5() String(20)
EVNTSRC 20 String(20) CEID 20,3(),5() String(20) S17F10
ERRCODE 5() unsignbyte(51)
EVNTSRC 20 String(20)
CEID 20,3(),5() String(20) S17F11
RPTID 20,3(),5() String(20)
EVNTSRC 20 String(20)
CEID 20,3(),5() String(20) RPTID 20,3(),5() String(20) S17F12
ERRCODE 5() unsignbyte(51) S17F13 TRID 20,3(),5() String(20)
ACKA 11 boolean(11)
TRID 20,3(),5() String(20) ERRCODE 5() unsignbyte(51) S17F14
ERRTEXT 20 String(20)