標籤:

淺談MES的通用設計之二:工藝參數的下載

MES是計劃和執行層之間的橋樑,除了將工單下發到車間外,還有一個重要功能是將工藝參數下載到設備,從而起到指導現場作業的作用。

本文試以實例說明常見的兩種設計思路,以及一種更為通用的設計方法。

業務場景及設計實例1

某發動機工廠支持混線生產,有兩種發動機,排量分別為2L、3L。當發動機到達加油機工位時,PLC需要判斷發動機的排量,從而進行對應的加油作業,如2L發動機加20L油,3L發動機加30L油。

實現方法如下:

為此工位專門寫一個程序,邏輯步驟為:

1、發動機到達時,PLC讀取RFID存儲的發動機序列號。

2、PLC將發動機序列號上傳到MES伺服器,執行查詢請求。

3、MES根據發動機序列號查詢得到工單號。

4、MES根據工單號查詢得到製造BOM。

5、MES根據油缸料號的命名規則,查詢得到發動機對應的油缸類型。

6、MES將油缸類型數據下載到PLC。

7、PLC根據油缸類型決定加油量,進行加油作業。

業務場景及設計實例2

某整車廠焊裝車間支持混線生產,同一款車有兩種車門配置,分別為4門、5門。當車身到達某焊裝工位時,PLC需要判斷車門配置,從而決定焊接機器人的取料路徑。

實現方法如下:

擴展工單的屬性表,為每個工單建立一個長長的配置單,包括車型、門數、天窗、顏色、內飾等所有工藝需要的配置參數。邏輯步驟為:

1、車身到達時,PLC讀取RFID存儲的車輛識別碼。

2、PLC將車輛識別碼上傳到MES伺服器,執行查詢請求。

3、MES根據車輛識別碼查詢得到工單號。

4、MES根據工單號關聯查詢配置單,得到所有配置參數。

5、MES將所有配置參數下載到PLC。

6、PLC讀取指定的數據塊位置,得到門數參數。

7、PLC根據門數參數決定取料路徑。

方法1的缺點是幾乎每個工位都要做客戶化開發。

方法2的缺點是配置單的準備相當繁瑣,並且下載到PLC的數據量相當大。

下面介紹一種更為通用的、基於工藝配方的腳本化設計方法。

1、首先提供一個界面,允許用戶定義工藝配方。

決定工藝配方唯一性的條件有:產品料號、工位號、步驟號、工單執行時間等。

每個工藝配方允許用戶定義解釋性欄位,如名稱、說明、圖片等。

每個工藝配方的輸出值為不定長的字元串。

為每個工藝配方定義字元轉換條件,如長度、空值處理等。

每個工藝配方對應的邏輯是一個資料庫函數。

也就是說,每次查詢一次工藝配方,相當於運行一次資料庫函數,根據輸入值及函數邏輯(通常是一次查詢),得到輸出值也就是工藝配方的值。

2、然後編寫一段代碼,實現:

1) 運行工藝配方,得到每個步驟對應的初始工藝參數。

2) 根據字元轉換條件,得到更為規範的步驟工藝參數。

3) 將工位所有步驟號對應的步驟工藝參數,根據步驟順序進行拼合,得到工位完整的工藝參數。

3、然後將完整工藝參數下載到PLC。

工藝配方的示例:

表中,欄位itemtype表示工藝配方的類型,其中類型0表示常量,工藝參數值為欄位itemvalue的值;類型1表示變數,工藝參數值為欄位itemfunction的值對應的資料庫函數的執行結果。

欄位itemlength表示步驟工藝參數的長度。

欄位fillchar表示查詢返回空值時的填充字元。

Oracle中利用動態游標技術拼合步驟工藝參數的方法示例,下面為部分代碼:

DECLARE

tmp VARCHAR2(2000);

tmp2 VARCHAR2(2000);

tmpfun VARCHAR2(2000);

allstr VARCHAR2(2000);

type curtype is ref cursor;

mycur2 curtype;

CURSOR mycur IS

SELECT

t.itemno,

t.itemname,

t.itemtype,

t.itemvalue,

t.itemfunction,

t.itemlength,

t.fillchar

FROM t -- 此處t應為工藝配方表

WHERE t.station = I_STATION -- 此處可添加更多的篩選條件

ORDER BY t.itemno;

BEGIN

-- 1. get all item for station

tmp := ;

tmpfun := ;

allstr := ;

FOR rec IN mycur

LOOP

IF rec.itemtype = 0

THEN tmp2 := rec.itemvalue; --> get value

ELSE --> get function

tmpfun := rec.ITEMFUNCTION;

tmpfun := tmpfun || ( || TO_CHAR(I_SN) || );

tmpfun := SELECT || tmpfun || myvalue FROM dual;

OPEN mycur2 FOR tmpfun; --> get item function

FETCH mycur2 INTO tmp2;

close mycur2;

END IF;

tmp := LPAD(tmp2, rec.itemlength, rec.fillchar);

allstr := allstr || tmp;

END LOOP;

RETURN allstr;


推薦閱讀:

工業工程轉行做MES難度大嗎,接觸過幾個過程式控制制方面的MES項目。自學編程需要多久,還有無其他要注意?
製造執行系統(MES)的核心功能是什麼?
MES在汽車製造中的應用之工藝篇(2) -- 商用車製造工藝
MES在汽車製造中的應用之架構篇(5) -- Kepware OPC產品介紹

TAG:MES |