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