引 言 在高度自動化的半導體製造廠中,CIM(Computer Integrated Manufacturing)統一管理各設備的生產流程,並隨時監控設備過程的狀態,以減少過程失誤進而降低成本及提升產品的質量。但隨著過程的不同,各設備有著不同特性的差異且各製造商所提供的設備也不盡相同,因此增加CIM自動化管理的困難與複雜程度。軟體集成自動化存在的主要問題是在不同的設備供應商之間沒有標準的通訊協定。設備供應商不向半導體生產商開放通訊協定及接口軟體,這使得半導體生產商不得不建立他們自己的軟體“連線”,導致了項目費用的巨大增加。
SEMI(Semiconductor Equipment and Materials Institute)制定了半導體設備通訊標準接口SECS(Semiconductor Equipment Communication Standard),讓CIM與設備間有通用的通訊標準接口,設備製造商只要提供符合通訊標準規範的設備,便可快速地整合在CIM的管理系統,不但可縮短設備開發的時間及成本,並可增加設備裝機的效率達到快速量產,進而提升產能輸出。
SECS標準簡介 SECS標準用來統一各個生產設備之間以及生產設備和控制設備之間的通訊,是半導體生產流程中最基本的標準。SECS協定為
點對點協定 ,它包括2個部分SECS-Ⅰ和SECS-Ⅱ。SECS-Ⅰ為基於RS232的傳輸層,定義了設備和主機之間的MESSAGE互動的
通信接口 ,大致相當於ISO/OSI模型的下面5層。主要包括有塊
傳輸協定 ,MESSAGE接收算法和節點傳輸算法;SECS-Ⅱ則把SECS-Ⅰ傳輸的二進制串翻譯成形象直觀的格式表示出來,SECS-Ⅱ規範傳輸資料的標準結構和顯示內容,方便使用者查看數據內容。圖1簡單表示了SECS標準的典型套用,圖中節點C代表主機,節點A和B表示設備,這些節點僅僅是組成整個網路的一部分。按照SECS標準的定義,每一個節點都能夠根據訊息頭中的設備號位決定向哪一個節點傳遞訊息,根據回答位決定控制訊息的傳遞方向是沿著樹向下還是向上。在圖1中,
節點 A控制著1A、2A、3A 3個子節點,可以根據它們的不同要求向節點C傳送請求或者從節點C接收指令。SECSLine則表示了在2個節點之間按照SECS標準的電氣接口。
本文結合某半導體廠的全自動化後段生產線描述了基於SECS標準的
串口通訊 的實現。
系統的硬體組成 整個控制系統由生產線上的生產設備和車間的控制系統組成,其硬體組成如圖2所示。包括3個部分,設備和單元控制器之間通過SECS-Ⅰ連線,其他通過區域網路相連。處於最下方的是生產流水線,單元控制器與線上每道工序相應的控制軟體負責控制流水線的生產,並將生產數據通過單元控制器上報給車間的MES系統,接收車間管理人員的生產指令。中間是MES系統,主要負責監控和控制流水線的生產情況、存儲重要的生產數據、報表等,同時給操作管理人員提供一套管理系統來協調整個車間的生產。最上層是工廠生產計畫管理系統,用來給更高層的管理人員提供管理上的方便。
圖2 系統結構組成框圖 基於SECS標準串口通訊的實現
3.1 軟體的實現 系統實現了基於SECS標準的串口通訊。整個通訊軟體分為4個相對獨立的模組:等待、傳送、接收和競爭,具體描述如下:
1.等待模組。在此狀態下,程式處於後台運行,直到接收到以下兩種請求之一:①如果
主機 收到來自設備的一個ENQ信號(信號的意義見圖3,以下同),則回送一個EOT信號給設備,同時自己轉入接收狀態;②如果設備收到傳送命令,作如下處理:
a.向
主機 傳送一個ENQ信號,然後不斷偵聽是否有來自主機的EOT信號。在此期間,如果超過T2時間仍然未收到EOT,則重發ENQ,最多重發RTY次。如果重發RTY次後仍然沒收到EOT,則傳送失敗,轉入等待狀態。
圖3 握手建立的時序圖 b.如果同時收到一個ENQ信號,則發生競爭,根據是
主機 還是設備進行不同處理。
c.如果收到一個EOT信號,則表示通訊握手已經成功,轉入傳送狀"VH如果不是以上兩種信號,繼續處於等待狀態。在這其中最主要的是握手的建立,圖3說明了軟體中主機和設備之間的握手規則。
2.傳送模組。在傳送中,要完成以下任務:
①傳送長度位元組N,N個數據和兩個校驗和(整個數據稱為1個塊的數據);②傳送完成後轉入偵聽狀態。在此期間,如果在T2時間內如果收到了應答信號,判斷該信號是不是ACK,如果不是則傳送失敗,重發ENQ建立握手,重發數據(最多RTY次、如果在T2時間內收到了ACK信號則傳送成功,轉入等待狀態。
①不斷偵聽連線埠,直到收到長度位元組N,如果在T2時間仍然沒收到長度位元組N,則給對方傳送NAK信號,表示這一次傳送失敗;
②如果在T2時間內收到長度位元組N後,則:判斷其值是否在IO-254之間。如果其值不在10-254之間,繼續偵聽,直到對方發完所有的數據,最後傳送NAK信號給對方,表示這一次傳送失敗;如果其值在10-254之間,繼續偵聽連線埠,開始接收數據,同時啟動定時器T1。如果兩個字元間的接收間隔時間超過了T1,則傳送NAK信號給對方,表示傳送失敗。如果以上兩步均正確,則在所有的數據都收到後,開始計算縱
校驗和 。
a.加果計算值和收到的校驗和相等,說明接收正確。傳送ACK信號給對方,一次接收完成。
b.如果計算值和收到的校驗和不等,則繼續偵聽連線埠,直到對方傳送完所有的位元組後,傳送NAK信號給對方,傳送失敗。
4.競爭模組。當主機和設備恰巧在同一個時刻傳送訊息,則需要進行競爭處理。處理的過程如圖4所示。
圖4 競爭處理的時序圖 3.2 串口的編程 使用API函式開發
串口通信 應用程式的總體思路是:首先,使用CreateFileQ函式打開特定串口。其次,完成
串列連線埠 的設定,包括
波特率 ,校驗方式,停止位和
數據位 等。然後,調用
SetupComm ()設定串口接收傳送數據的緩衝區大小,串口的設定就基本完成,之後就可以啟動讀寫執行緒了。
3.2.1 串口設定的方式
串列通訊 設計中的重要方面就是對連線埠進行設定。DCB(device control block)結構中定義了串口通信設備的控制設定。串口連線埠設定就是對DCB結構成員進行設定。使用API函式GetCommState(),該函式返回DCB結構的當前設定。其使用方法如下:
DCB dcb={0};
If(!::GetcommState(hComm,&dcb)) return FALSE;//
函式調用 發生錯誤
else //已經取回DCB結構當前設定
3.2.2 串口的讀寫操作
串口的讀寫操作使用API函式ReadFile()和WriteFile()。當使用異步方式調用這2個函式時,若函式的返回值為TRUE,表示I/O操作立即完成可以進行數據的處理;如果函式的返回值為FALSE,表示I/O操作沒有立即完成。舉例如下:
BOOL bReadStatus;
bReadStatus=ReadFile(m_hIDComDev,buffer,dwBytesRead,&dwBytesRead,&m_OverlappedRead);
if(! bReadStatus)
{
If(GetLastErrorQ==ERROR_IO_PENDING)
{
WaitForSingleObject(m_OverlappedRead.hEvent,1000);
Return((int)dwBytesRead);
}
Return(0);
}
Return((int)dwHytesRead);
結 論 SECS標準是半導體工業中得到廣泛套用的標準,目前在我國的外資晶片生產企業都採用了這個標準。本文著重描述了基於SECS標準的半導體設備
串口通訊 的實現,進一步的工作是將整個底層協定的實現封裝為一個類,提供給企業二次開發的接口,為我國晶片製造廠商開發自己的控制程式提供了可借鑑的例子。