王景勝,李曉會(huì)
(北京機(jī)械工業(yè)自動(dòng)化研究所,北京 100120)
在自動(dòng)化生產(chǎn)線日益普及的今日,通用式組態(tài)軟件在自動(dòng)化生產(chǎn)線的監(jiān)控和管理應(yīng)用中已經(jīng)不可或缺,目前大部分組態(tài)軟件的主要功能是用于底層設(shè)備的實(shí)時(shí)監(jiān)控和遠(yuǎn)程控制。但本文中提到的組態(tài)軟件在自動(dòng)化生產(chǎn)線中除具備監(jiān)控和遠(yuǎn)程控制功能外,還具備與上級(jí)MES管理系統(tǒng)進(jìn)行信息對(duì)接和交互的功能,從而實(shí)現(xiàn)生產(chǎn)任務(wù)的自動(dòng)下達(dá)及生產(chǎn)物料通過(guò)立體倉(cāng)庫(kù)的自動(dòng)配送。
在某類型電子產(chǎn)品的自動(dòng)化裝配線中,要求實(shí)現(xiàn)對(duì)自動(dòng)化裝配線的遠(yuǎn)程監(jiān)控和生產(chǎn)任務(wù)的自動(dòng)接收與物料的自動(dòng)配送,基于系統(tǒng)功能要求的考慮最終采用國(guó)內(nèi)通用式組態(tài)軟件——“易控”實(shí)現(xiàn)以上功能,上位監(jiān)控系統(tǒng)的軟件基于.NET平臺(tái)開發(fā),采用C#語(yǔ)言進(jìn)行代碼編寫。
上位機(jī)監(jiān)控系統(tǒng)功能主要包括兩大部分,一為系統(tǒng)運(yùn)行監(jiān)控和底層設(shè)備遠(yuǎn)程控制;二為與MES系統(tǒng)對(duì)接實(shí)現(xiàn)信息交互和生產(chǎn)物料自動(dòng)配送。
系統(tǒng)運(yùn)行監(jiān)控界面如圖1所示,在監(jiān)控界面中可以實(shí)時(shí)查看自動(dòng)線和相應(yīng)專機(jī)的運(yùn)行情況,以及MES系統(tǒng)下達(dá)的生產(chǎn)信息和生產(chǎn)任務(wù)的實(shí)時(shí)狀態(tài)。
圖1 系統(tǒng)運(yùn)行監(jiān)控界面
圖2 MES任務(wù)信息查詢界面
圖3 生產(chǎn)任務(wù)信息獲取軟件流程圖
MES任務(wù)信息查詢畫面如圖2所示。
在上位管理系統(tǒng)啟動(dòng)后,監(jiān)控系統(tǒng)定時(shí)讀取MES系統(tǒng)生產(chǎn)任務(wù)信息,具體系統(tǒng)對(duì)接軟件流程圖如圖3所示,圖3主要描述了監(jiān)控系統(tǒng)如何獲取MES系統(tǒng)下達(dá)的生產(chǎn)任務(wù)信息的過(guò)程。
定時(shí)讀取MES任務(wù)代碼舉例
/*定時(shí)讀取開啟*/
if(PLC數(shù)據(jù)通訊變量.MES定時(shí)讀取啟動(dòng)開關(guān)==true)
{string linkword = "Server=172.16.3.1:15211;Data Source=mxb;User Id=jc_erp;Password=jc_erp";
using (OracleConnection connection = new OracleConnection(linkword))
{try
{ connection.Open();
OracleDataAdapter da=new OracleDataAdapt er(query,connection);
DataTable ds=new DataTable();
da.Fill(ds);
}
catch(Exception ee)
}
/*判斷MES中間表提交任務(wù)標(biāo)記位(SUBMITFLAG)的狀態(tài)為提交態(tài)*/
int a = MES主任務(wù).是否已提交給生產(chǎn)線設(shè)備;
switch(a)
{
case 1:
/*判斷MES中間表生產(chǎn)線執(zhí)行標(biāo)記位(ACCEPTFLAG)的狀態(tài)為未接收*/
if(MES主任務(wù).是否已被生產(chǎn)線設(shè)備接收==0)
{
/*將MES中間表生產(chǎn)線執(zhí)行標(biāo)記位(ACCEPTFLAG)置位為1*/
//string linkword1 = "Server=172.16.8.70;Data Source=orcl;User Id=jc_test;Password=jc_test";
string linkword1 = "Server=172.16.3.1:1521;Data Source=mxb;User Id=jc_erp;Password=jc_erp";
string query1 = string.Format(@"update v_mes_pdline_proctask_inuse set ACCEPTFLAG=1 where PDLINE_PROCTASKID={0}”,MES主任務(wù).生產(chǎn)線作業(yè)任務(wù)主鍵id);
using (OracleConnection connection = new OracleConnection(linkword1))
{try
{ connection.Open();
OracleDataAdapter da1=new OracleDataAda pter(query1,connection);
DataTable ds1=new DataTable();
da1.Fill(ds1);
GrpManager.MES主任務(wù).DataGridView1.DataSource = ds1;
}
catch(Exception ee)
{Trace.WriteLine(ee.Message);}
finally
{connection.Close();
}
}
break;
/*判斷M E S中間表提交任務(wù)標(biāo)記位(SUBMITFLAG)的狀態(tài)為取消態(tài)*/case 2:
/*將MES中間表生產(chǎn)線執(zhí)行標(biāo)記位(ACCEPTFLAG)置位為4*/
//string linkword2 = "Server=172.16.8.70;Data Source=orcl;User Id=jc_test;Password=jc_test";
string linkword2 = "Server=172.16.3.1:1521;Data Source=mxb;User Id=jc_erp;Password=jc_erp";
string query2 = string.Format(@”update v_mes_pdline_proctask_inuse set ACCEPTFLAG=4 where PDLINE_PROCTASKID={0}”,MES主任務(wù).生產(chǎn)線作業(yè)任務(wù)主鍵id);
using (OracleConnection connection = new OracleConnection(linkword2))
{try
{ connection.Open();
OracleDataAdapter da2=new OracleDataAda pter(query2,connection);
DataTable ds2=new DataTable();
da2.Fill(ds2);
GrpManager.MES主任務(wù).DataGridView1.DataSource = ds2;
圖4 生產(chǎn)物料信息獲取軟件流程圖
}
catch(Exception ee)
{
Trace.WriteLine(ee.Message);
}
finally
{
connection.Close();
}
}
}/*定時(shí)讀取開啟的if*/
由于生產(chǎn)物料的配送是通過(guò)立體倉(cāng)庫(kù)自動(dòng)配送的,MES系統(tǒng)按物料箱的到位情況自動(dòng)下達(dá)物料箱信息,當(dāng)物料使用完畢后,監(jiān)控系統(tǒng)再次將相應(yīng)物料信息反饋給MES系統(tǒng),實(shí)現(xiàn)物料箱的自動(dòng)回庫(kù)。軟件流程圖如圖4所示。
圖4為與自動(dòng)線對(duì)應(yīng)的3個(gè)物料配送口物料信息獲取的全部過(guò)程,通過(guò)與MES系統(tǒng)的信息對(duì)接實(shí)現(xiàn)生產(chǎn)物料的自動(dòng)配送。
上位監(jiān)控系統(tǒng)除具備后臺(tái)自動(dòng)運(yùn)行處理MES系統(tǒng)管理信息的功能外,還具備人工介入干預(yù)功能,當(dāng)MES系統(tǒng)信息提交不及時(shí)或異常情況時(shí),可采取手動(dòng)人工介入方式進(jìn)行相應(yīng)信息處理。
通過(guò)采用通用式組態(tài)軟件,實(shí)現(xiàn)了對(duì)自動(dòng)化裝配線體的遠(yuǎn)程監(jiān)控和與MES管理系統(tǒng)的信息對(duì)接,為自動(dòng)化生產(chǎn)從生產(chǎn)物料自動(dòng)化配送到最終產(chǎn)品的組裝完成提供了軟件實(shí)現(xiàn)基礎(chǔ),確保了自動(dòng)化裝配線體的穩(wěn)定運(yùn)行。
[1] 鄭阿奇. C#教程[M].北京:電子工業(yè)出版社,2010.
[2] 張貝克.組態(tài)軟件基礎(chǔ)與工程應(yīng)用(易控INSPEC)[M].北京: 機(jī)械工業(yè)出版社,2011.
[3] 秦靖,劉存勇,等.Oracle從入門到精通[M].北京:機(jī)械工業(yè)出版社,2011.