方式1:定期抓取數(shù)據(jù)
某些設(shè)備的關(guān)鍵工藝參數(shù)(如變速器軸齒熱處理爐的溫度)非常重要,,需要定期抓取以生成實(shí)時(shí)曲線(xiàn),,及用于長(zhǎng)期追溯分析,。
這些工藝參數(shù)通常都是模擬量,,數(shù)值始終不停地變化,。
通常我們可以通過(guò)OPC軟件讀取這些數(shù)據(jù),,經(jīng)過(guò)精度處理,,然后定期寫(xiě)入實(shí)時(shí)數(shù)據(jù)庫(kù)中,。
這些數(shù)據(jù)的特點(diǎn)是:讀取頻率高,,數(shù)據(jù)變化小,,因此存入數(shù)據(jù)庫(kù)時(shí)會(huì)存在大量重復(fù)的記錄,而實(shí)時(shí)數(shù)據(jù)庫(kù)提供數(shù)據(jù)壓縮的功能,,特別適合此類(lèi)數(shù)據(jù)的存儲(chǔ),。
方式2:基于條件觸發(fā)
有許多工藝參數(shù)(如螺栓的擰緊值)的收集,主要是用于事后的質(zhì)量追溯分析的,,通常我們會(huì)定義一個(gè)觸發(fā)信號(hào)通知MES讀取,。
比如發(fā)動(dòng)機(jī)在某工位完成物理裝配作業(yè)后,,PLC會(huì)把關(guān)鍵的工藝參數(shù)寫(xiě)入數(shù)據(jù)交換區(qū),然后給DATA_READY信號(hào)置位,。
而MES會(huì)每隔1秒掃描監(jiān)聽(tīng)DATA_READY信號(hào),,當(dāng)此信號(hào)處于高位時(shí),則讀取數(shù)據(jù)交換區(qū)的質(zhì)量追溯數(shù)據(jù),。
可參考下圖:

圖1 定義一個(gè)觸發(fā)信號(hào)通知MES讀取
具體握手過(guò)程為:
1.發(fā)動(dòng)機(jī)完成某個(gè)裝配步驟,,PLC寫(xiě)入?yún)?shù)1。
2.發(fā)動(dòng)機(jī)完成某個(gè)裝配步驟,,PLC寫(xiě)入?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)備離開(kāi)當(dāng)前工位,,PLC將所有數(shù)據(jù)復(fù)位,。
方式3:請(qǐng)求-響應(yīng)機(jī)制,1次握手
這種方式和IT系統(tǒng)的MQ/WEB SERVICE等消息處理機(jī)制非常類(lèi)似,。
如發(fā)動(dòng)機(jī)上線(xiàn)工位,,MES給PLC下發(fā)工單,過(guò)程可參考下圖:

圖2 MES給PLC下發(fā)工單
具體握手過(guò)程為:
1.PLC在PLC_MSG寫(xiě)入請(qǐng)求數(shù)據(jù),,如工位,,同時(shí)將REQUEST_SENT置位。
2.MES掃描到REQUEST_SENT,,讀取PLC_MSG,,然后生成工單數(shù)據(jù),并寫(xiě)入MES_MSG,,同時(shí)將RESPONSE_SENT置位,。
3.PLC掃描RESPONSE_SENT,讀取MES_MSG并寫(xiě)入本地?cái)?shù)據(jù)塊,,然后將REQUEST_SENT和PLC_MSG復(fù)位,。
4.MES將所有數(shù)據(jù)和控制位復(fù)位。
我們可以看出,,整個(gè)數(shù)據(jù)交換的過(guò)程只發(fā)生了1個(gè)來(lái)回,,即1-2步,而3-4步是將消息銷(xiāo)毀的動(dòng)作,。
這種方式還有一個(gè)特點(diǎn),就是封裝性好,,同樣一個(gè)接口,,既可以下發(fā)工單,,也可以上傳過(guò)站數(shù)據(jù),區(qū)別在于PLC_MSG/MES_MSG里存儲(chǔ)的數(shù)據(jù)內(nèi)容不一樣,。
方式4:請(qǐng)求-響應(yīng)機(jī)制,,2次握手
同樣是發(fā)動(dòng)機(jī)上線(xiàn)的例子,過(guò)程可參考下圖:

圖3 發(fā)動(dòng)機(jī)上線(xiàn)
具體握手過(guò)程為:
1.PLC在PLC_MSG寫(xiě)入請(qǐng)求數(shù)據(jù),,如工位,。
2.PLC將REQUEST_SENT置位。
3.MES掃描到REQUEST_SENT,,讀取PLC_MSG,,然后發(fā)送REQUEST_RECEIVED。
4.MES生成工單數(shù)據(jù),,并寫(xiě)入MES_MSG,。
5.MES將RESPONSE_SENT置位。
6.PLC掃描RESPONSE_SENT,,讀取MES_MSG并寫(xiě)入本地?cái)?shù)據(jù)塊,,然后將RESPONSE_RECEIVED置位。
7.MES掃描RESPONSE_RECEIVED,,將所有數(shù)據(jù)和控制位復(fù)位,。
8.PLC將本地?cái)?shù)據(jù)和控制位復(fù)位。
我們可以看出,,整個(gè)過(guò)程相當(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ù)過(guò)程,,比如發(fā)動(dòng)機(jī)上線(xiàn)工位先上線(xiàn),然后裝配,,最后發(fā)送過(guò)站記錄,。
那么在一個(gè)完整的工位生產(chǎn)周期中,PLC需要和MES做2次數(shù)據(jù)交換,第1次下載工單,,第2次上傳過(guò)站記錄,,如下圖所示:

圖4 多個(gè)關(guān)鍵的業(yè)務(wù)過(guò)程
具體握手過(guò)程為:
1.發(fā)動(dòng)機(jī)到達(dá),PLC給ENGINE_ARRIVAL置位,。
2.PLC檢查托盤(pán),、設(shè)備、物料,,條件具備后將STATION_READY置位,。
3.MES將STATION_READY_RECEIVED置位。
4.MES將工單數(shù)據(jù)寫(xiě)入MES_DATA,。
5.MES將MES_DATA_SENT置位,。
6.PLC將MES_DATA寫(xiě)入本地?cái)?shù)據(jù)塊,并將MES_DATA_RECEIVED置位,。
7.MES復(fù)位IT側(cè)所有數(shù)據(jù)和狀態(tài)位,。
8.PLC開(kāi)始本工位的裝配作業(yè),并將發(fā)動(dòng)機(jī)序列號(hào)寫(xiě)入ENGINE_SN,。
9.PLC裝配完成后,,PLC將PLC_COMPLETE置位。
10.MES將PLC_COMPLETE_RECEIVED置位,。
11.MES執(zhí)行過(guò)站邏輯,,完成后將MES_COMPLETE置位。
12.PLC將MES_COMPLETE_RECEIVED置位,。
13.MES復(fù)位IT側(cè)所有數(shù)據(jù)和狀態(tài)位,。
14.發(fā)動(dòng)機(jī)準(zhǔn)備離開(kāi),PLC將ENGINE_LEAVE置位,。
15.PLC復(fù)位所有數(shù)據(jù)和狀態(tài)位,。
我們可以看到,此方式非常繁瑣,,但是優(yōu)點(diǎn)是:
●生產(chǎn)周期中的關(guān)鍵狀態(tài)都有體現(xiàn),,可以很方便地通過(guò)HMI進(jìn)行監(jiān)控。
●PLC狀態(tài)對(duì)應(yīng)于實(shí)際的生產(chǎn)執(zhí)行情況,,發(fā)生問(wèn)題時(shí)容易追蹤,。
●程序出錯(cuò)時(shí),可以很直觀(guān)地看到通信執(zhí)行到哪一步,。
另外,,我們還應(yīng)理解,下載工單和上傳過(guò)站記錄都只是完整生產(chǎn)周期的一部分,,并且有內(nèi)在的邏輯聯(lián)系,,比如:在裝配的過(guò)程上發(fā)現(xiàn)缸體有問(wèn)題,,需要換一個(gè)缸體上線(xiàn),此時(shí)由于MES還沒(méi)有接收到過(guò)站記錄,,因此即使在第2次接收到STATION_READY信號(hào)時(shí),,MES下發(fā)的仍舊是同一個(gè)工單,,這樣就可以有效避免工單和發(fā)動(dòng)機(jī)序列號(hào)的損失,。