作者:工業(yè)平板電腦|手持終端解決方案提供商 來源:www.egnktdxk4.com 發(fā)布時(shí)間:2015-02-22 19:25 瀏覽量:
研華工控機(jī)作為工控領(lǐng)域的翹楚,其品質(zhì)的穩(wěn)定性為其帶來了龐大的用戶群體,下面南京研維信息技術(shù)有限公司將向大家介紹一下研華工控機(jī)與PLC通訊集成技術(shù)解決方案,并結(jié)合該技術(shù)在軸瓦選配系統(tǒng)中的應(yīng)用案例進(jìn)行詳盡分析。
軸瓦選配是發(fā)動(dòng)機(jī)分組選配技術(shù)中的關(guān)鍵環(huán)節(jié),重點(diǎn)解決的是曲軸與缸體、曲軸與連桿的配合問題。為了達(dá)到配合的要求,廠方主要依賴人工來選擇配裝,效率低下。本文介紹了一種通過工控機(jī)與PLC通信控制的軸瓦選配系統(tǒng),它根據(jù)車型、缸體和曲軸的編號自動(dòng)完成選配,并將結(jié)果直接顯示出來。該系統(tǒng)綜合了工控機(jī)軟硬件資源豐富及PLC性能可靠的特點(diǎn),大地提高了選配的效率和精確度。
在裝配現(xiàn)場,傳輸帶用于傳送待裝配的缸體、曲軸和連桿,鍵盤或掃描槍用于車型代號輸入?刂泼姘逯饕瓿筛左w與曲軸頸、曲軸與連桿編碼的輸入,并通過切換攝像頭1、2,比對掃描槍或鍵盤輸入的代號是否正確并進(jìn)行調(diào)整。工控機(jī)實(shí)時(shí)顯示接受的信息,并且與PLC進(jìn)行通信,調(diào)用資源處理數(shù)據(jù)。eView兩塊液晶觸摸屏上則艇示后的絡(luò)果,裝配人員根據(jù)提示完成對應(yīng)軸瓦的選配。本系統(tǒng)的控制部分采用了典型的兩級控制方案。上位楓果用研華工控機(jī),下位機(jī)選用的歐姆龍公司的CP1H囊PLC。為了便于上彼視和下位祝的通信,上位枧采用Visual C++編制的接口界面程序,而下位機(jī)則采用歐姆龍公司PLC的自帶軟件(cx-programmer)。
由于采取多重方案保證信息輸入的準(zhǔn)確往,確保整個(gè)系統(tǒng)能夠做到真正實(shí)時(shí)、快速、有效地處理。
系統(tǒng)在工作過程中,首先,工控機(jī)接受來自掃描槍或鍵盤的車型代號,PLC則通過自身的I/O口接收缸體和曲軸頸,曲軸和連桿一共18位代碼的輸入,并將這些代碼送到上位機(jī)。上位機(jī)將綜合車型、缸體和軸頸、曲軸和連扦數(shù)據(jù),并參照配色表(見表1)得出缸體與軸頸配合、曲軸與連桿配合的對應(yīng)9組軸瓦,之后將這些配瓦結(jié)果保存的同時(shí)發(fā)送到PLC,PLC和觸摸屏通過組態(tài)方式,使結(jié)果在觸目屏上得以顯示。
在工控機(jī)與PLC的集成控制系統(tǒng)中,如何實(shí)現(xiàn)工控機(jī)與PLC的數(shù)據(jù)交換非常重要。一般有兩種方法:利用串口通信或通過I/0卡實(shí)現(xiàn)。考慮到數(shù)據(jù)的實(shí)時(shí)性和可靠性,本系統(tǒng)采用的是串口通信方式。
根據(jù)控制系統(tǒng)工作流程及輸入輸出信號編制PLC梯形圖程序,并與工控機(jī)實(shí)時(shí)通信。圖3顯示的是通過I/O口輸入的缸體與軸頸、曲軸與連桿代碼按鈕所對應(yīng)的部分梯形圖。
上位機(jī)程序采用Visual C++來編制,調(diào)用Mscom控件來對串日進(jìn)行初始化,并隨時(shí)接收來之PLC發(fā)送的數(shù)據(jù)量,加以轉(zhuǎn)換;同時(shí)采集來自掃描槍的數(shù)據(jù)量加以顯示,并將配瓦信息儲存起來,以便日后查詢。
//串口設(shè)置
m_ctrlComm.SetCommPorl(1);
m_ctrlComm.SetInBufferSize(2048);
m_ctrlComm.SetOutBufferSize(2048);
if(m_ctrlComm,GetPortOpen())
{
AfxMessageBox(“串口已打開!”);
m_ctrlComm.SetPortOpen(false);
}
If(1m_ctrlComm.GetPortOpen())
{
m_ctrlComm.SetPortOpen(true);
}
else
AfxMessageBox(“串口不能被打開!”);
m_etrlComm.SetSettings(“115200,n,8,l”);
m_ctrlComm.SetlnputMode(1);
m_ctrlComm.SetRThreshold(1);
m_ctrlComm.SetInputLen(0);
m_etrlComm.GetInput()。
3.2.2 讀取數(shù)據(jù)
//數(shù)據(jù)識別
void CaxisLDlg::OnMscomm1()
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
CString str;
if(m_ctrlComm.GetCommEvent()==2)
{
variant_inp=m_ctrlComm.GetInput();
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize();
……
}
}
UpdateData(false)。
接受來自條碼掃描槍的條碼數(shù)據(jù),并進(jìn)行相應(yīng)的數(shù)據(jù)糾錯(cuò)處理。
//識別條碼
BOOL CaxisLDlg::PreTranslateMessage(MSG*pMsg)
{
if(pMsg→message==WM_KEYDOWN)
{
CString str;
char c;
m_nfocus.SetFoeus();
UpdateData(true);
str=m_focus;
if(m_focus.GetLength()==21)
{
if((stL.GetAt(12)<“0”)︱︱(str.GetAt(12)>>“9”))
{
str.Empty();
UpdateData(false);
SetTimer(2,90,NULL);
return Cdialog::PreTranslateMessage(pMsg);
}
……
}
else
m_taoma.SetWindowText(m_focus);
UpdateData(false)。
}。
將配瓦信息添加到數(shù)據(jù)庫中,并保存到工控機(jī)中以便日后查詢。
//向data中添加記錄
void CaxisLDlg::Addnew()
{
m_dateSet=new SjDate;
CTime time;
time=Ctime::GetCurrentTime();
CString TimeStr;
TimeStr=time.Format(“%y/%b/%d/%H/%M”);
if(!m_dateSet→IsOpen())
if(Bhao==1001)
CopyFile();
}。