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