方式1:定期抓取數(shù)據(jù)
某些設(shè)備的關(guān)鍵工藝參數(shù)(如變速器軸齒熱處理爐的溫度)非常重要,需要定期抓取以生成實時曲線,及用于長期追溯分析。
這些工藝參數(shù)通常都是模擬量,數(shù)值始終不停地變化。
通常我們可以通過OPC軟件讀取這些數(shù)據(jù),經(jīng)過精度處理,然后定期寫入實時數(shù)據(jù)庫中。
這些數(shù)據(jù)的特點是:讀取頻率高,數(shù)據(jù)變化小,因此存入數(shù)據(jù)庫時會存在大量重復(fù)的記錄,而實時數(shù)據(jù)庫提供數(shù)據(jù)壓縮的功能,特別適合此類數(shù)據(jù)的存儲。
方式2:基于條件觸發(fā)
有許多工藝參數(shù)(如螺栓的擰緊值)的收集,主要是用于事后的質(zhì)量追溯分析的,通常我們會定義一個觸發(fā)信號通知MES讀取。
比如發(fā)動機(jī)在某工位完成物理裝配作業(yè)后,PLC會把關(guān)鍵的工藝參數(shù)寫入數(shù)據(jù)交換區(qū),然后給DATA_READY信號置位。
而MES會每隔1秒掃描監(jiān)聽DATA_READY信號,當(dāng)此信號處于高位時,則讀取數(shù)據(jù)交換區(qū)的質(zhì)量追溯數(shù)據(jù)。
可參考下圖:
圖1 定義一個觸發(fā)信號通知MES讀取
具體握手過程為:
1.發(fā)動機(jī)完成某個裝配步驟,PLC寫入?yún)?shù)1。
2.發(fā)動機(jī)完成某個裝配步驟,PLC寫入?yún)?shù)2。
3.發(fā)動機(jī)完成所有物理裝配作業(yè),PLC將DATA_READY置位。MES讀取參數(shù)1、參數(shù)2。
4.發(fā)動機(jī)準(zhǔn)備離開當(dāng)前工位,PLC將所有數(shù)據(jù)復(fù)位。
方式3:請求-響應(yīng)機(jī)制,1次握手
這種方式和IT系統(tǒng)的MQ/WEB SERVICE等消息處理機(jī)制非常類似。
如發(fā)動機(jī)上線工位,MES給PLC下發(fā)工單,過程可參考下圖:
圖2 MES給PLC下發(fā)工單
具體握手過程為:
1.PLC在PLC_MSG寫入請求數(shù)據(jù),如工位,同時將REQUEST_SENT置位。
2.MES掃描到REQUEST_SENT,讀取PLC_MSG,然后生成工單數(shù)據(jù),并寫入MES_MSG,同時將RESPONSE_SENT置位。
3.PLC掃描RESPONSE_SENT,讀取MES_MSG并寫入本地數(shù)據(jù)塊,然后將REQUEST_SENT和PLC_MSG復(fù)位。
4.MES將所有數(shù)據(jù)和控制位復(fù)位。
我們可以看出,整個數(shù)據(jù)交換的過程只發(fā)生了1個來回,即1-2步,而3-4步是將消息銷毀的動作。
這種方式還有一個特點,就是封裝性好,同樣一個接口,既可以下發(fā)工單,也可以上傳過站數(shù)據(jù),區(qū)別在于PLC_MSG/MES_MSG里存儲的數(shù)據(jù)內(nèi)容不一樣。
方式4:請求-響應(yīng)機(jī)制,2次握手
同樣是發(fā)動機(jī)上線的例子,過程可參考下圖:
圖3 發(fā)動機(jī)上線
具體握手過程為:
1.PLC在PLC_MSG寫入請求數(shù)據(jù),如工位。
2.PLC將REQUEST_SENT置位。
3.MES掃描到REQUEST_SENT,讀取PLC_MSG,然后發(fā)送REQUEST_RECEIVED。
4.MES生成工單數(shù)據(jù),并寫入MES_MSG。
5.MES將RESPONSE_SENT置位。
6.PLC掃描RESPONSE_SENT,讀取MES_MSG并寫入本地數(shù)據(jù)塊,然后將RESPONSE_RECEIVED置位。
7.MES掃描RESPONSE_RECEIVED,將所有數(shù)據(jù)和控制位復(fù)位。
8.PLC將本地數(shù)據(jù)和控制位復(fù)位。
我們可以看出,整個過程相當(dāng)于進(jìn)行了2次握手,其中1-3步是第1次握手,用于接收請求;4-8步是第2次握手,用于下發(fā)數(shù)據(jù)。
我們可以看出,方式4比方式3繁瑣很多,但是這種方式在實際項目中用得還非常多。這是因為完整響應(yīng)時間可能多達(dá)數(shù)秒,而PLC的掃描周期只有幾十毫秒,中間多出的狀態(tài)位可以作為狀態(tài)指示緩解工人等待的焦慮,也可以作為斷點方便通信調(diào)試。
方式5:基于工位生產(chǎn)周期
在一些工位,會有多個關(guān)鍵的業(yè)務(wù)過程,比如發(fā)動機(jī)上線工位先上線,然后裝配,最后發(fā)送過站記錄。
那么在一個完整的工位生產(chǎn)周期中,PLC需要和MES做2次數(shù)據(jù)交換,第1次下載工單,第2次上傳過站記錄,如下圖所示:
圖4 多個關(guān)鍵的業(yè)務(wù)過程
具體握手過程為:
1.發(fā)動機(jī)到達(dá),PLC給ENGINE_ARRIVAL置位。
2.PLC檢查托盤、設(shè)備、物料,條件具備后將STATION_READY置位。
3.MES將STATION_READY_RECEIVED置位。
4.MES將工單數(shù)據(jù)寫入MES_DATA。
5.MES將MES_DATA_SENT置位。
6.PLC將MES_DATA寫入本地數(shù)據(jù)塊,并將MES_DATA_RECEIVED置位。
7.MES復(fù)位IT側(cè)所有數(shù)據(jù)和狀態(tài)位。
8.PLC開始本工位的裝配作業(yè),并將發(fā)動機(jī)序列號寫入ENGINE_SN。
9.PLC裝配完成后,PLC將PLC_COMPLETE置位。
10.MES將PLC_COMPLETE_RECEIVED置位。
11.MES執(zhí)行過站邏輯,完成后將MES_COMPLETE置位。
12.PLC將MES_COMPLETE_RECEIVED置位。
13.MES復(fù)位IT側(cè)所有數(shù)據(jù)和狀態(tài)位。
14.發(fā)動機(jī)準(zhǔn)備離開,PLC將ENGINE_LEAVE置位。
15.PLC復(fù)位所有數(shù)據(jù)和狀態(tài)位。
我們可以看到,此方式非常繁瑣,但是優(yōu)點是:
●生產(chǎn)周期中的關(guān)鍵狀態(tài)都有體現(xiàn),可以很方便地通過HMI進(jìn)行監(jiān)控。
●PLC狀態(tài)對應(yīng)于實際的生產(chǎn)執(zhí)行情況,發(fā)生問題時容易追蹤。
●程序出錯時,可以很直觀地看到通信執(zhí)行到哪一步。
另外,我們還應(yīng)理解,下載工單和上傳過站記錄都只是完整生產(chǎn)周期的一部分,并且有內(nèi)在的邏輯聯(lián)系,比如:在裝配的過程上發(fā)現(xiàn)缸體有問題,需要換一個缸體上線,此時由于MES還沒有接收到過站記錄,因此即使在第2次接收到STATION_READY信號時,MES下發(fā)的仍舊是同一個工單,這樣就可以有效避免工單和發(fā)動機(jī)序列號的損失。