唐霞,邢嘉路,劉歡連
(1. 無錫科技職業(yè)學(xué)院,江蘇 無錫 214028; 2. 東南大學(xué) 機(jī)械工程學(xué)院,江蘇 南京 210096)
傳統(tǒng)的制造企業(yè)結(jié)構(gòu)相對固定,產(chǎn)品類型單一,管理方式落后,這種管理模式已經(jīng)不能適應(yīng)目前個性化、小批量的市場要求[1]。數(shù)控機(jī)床作為離散型企業(yè)制造車間中最基礎(chǔ)也是最重要的制造單元[2],與現(xiàn)代制造企業(yè)的運(yùn)營有著極其密切的聯(lián)系,其性能對于整個企業(yè)的生產(chǎn)效率有著重要的影響?,F(xiàn)代數(shù)控機(jī)床是集成了機(jī)械制造、計算機(jī)、自動控制、傳感器、信息處理等多種技術(shù)的一種靈活的、通用的自動化制造設(shè)備[3],對車間中數(shù)控機(jī)床進(jìn)行數(shù)據(jù)采集與監(jiān)控管理,對于整個制造車間乃至整個企業(yè)的管理具有重要意義。
要實(shí)現(xiàn)數(shù)控機(jī)床數(shù)據(jù)采集,首先需要對機(jī)床設(shè)備信息模型進(jìn)行構(gòu)建。本文以目標(biāo)車間中三軸數(shù)控機(jī)床為例,基于MTConnect最新1.3.1標(biāo)準(zhǔn)構(gòu)建設(shè)備信息模型。設(shè)備信息模型是對設(shè)備各類特性的描述,也是對物理空間中的設(shè)備在信息空間中的一個映射,通過設(shè)備信息模型能夠?qū)ξ锢砜臻g中的設(shè)備在信息空間中進(jìn)行還原,具體的信息包括:
1) 設(shè)備基本信息:包括設(shè)備ID、設(shè)備名稱、設(shè)備類型等信息;
2) 設(shè)備固件信息:包括執(zhí)行器、控制器、傳感器等組成設(shè)備的固件信息;
3) 設(shè)備參數(shù):包括軸數(shù)、行程、最大速度等設(shè)備的特性參數(shù);
4) 實(shí)時數(shù)據(jù):包括位置、狀態(tài)、轉(zhuǎn)速、進(jìn)給、負(fù)載、報警信息等機(jī)床運(yùn)行過程中產(chǎn)生的實(shí)時數(shù)據(jù)。
本文根據(jù)MTConnect標(biāo)準(zhǔn),針對車間數(shù)控機(jī)床數(shù)據(jù)采集需求及機(jī)床的構(gòu)成組件,建立了目標(biāo)車間數(shù)控機(jī)床設(shè)備信息模型,如圖1所示。圖中矩形框表示的元素為DateItem元素。數(shù)控機(jī)床的設(shè)備信息模型主要包括軸、控制器和系統(tǒng)3個組件(component),軸的子組件(subcomponent)包括一個旋轉(zhuǎn)軸主軸和3個進(jìn)給軸X、Y、Z軸,控制器的子組件為加工路徑信息,系統(tǒng)的子組件為電氣系統(tǒng)信息。
圖1 數(shù)控機(jī)床MTConnect設(shè)備信息模型
a) 適配器與機(jī)床數(shù)據(jù)采集方法
根據(jù)MTConnect協(xié)議,適配器端負(fù)責(zé)與機(jī)床通信實(shí)現(xiàn)機(jī)床數(shù)據(jù)采集后發(fā)送給代理端。系統(tǒng)中使用FOCAS實(shí)現(xiàn)機(jī)床數(shù)據(jù)采集的流程,如圖2所示。
圖2 基于FOCAS機(jī)床數(shù)據(jù)采集流程
適配器端通過對FOCAS庫函數(shù)的調(diào)用實(shí)現(xiàn)與數(shù)控系統(tǒng)間的通信,其通信基于Socket進(jìn)行,需要設(shè)置數(shù)控系統(tǒng)的IP地址和端口號,使其與計算機(jī)處于同一網(wǎng)段內(nèi)。在軟件開發(fā)之前首先需要對機(jī)床端IP網(wǎng)址和子網(wǎng)掩碼進(jìn)行設(shè)置,在機(jī)床端SYSTEM中進(jìn)入以太網(wǎng)公共設(shè)置界面,填寫機(jī)床的IP地址,之后在FOCAS2設(shè)置界面將端口號設(shè)為8193,完成機(jī)床端TCP相關(guān)參數(shù)設(shè)置。設(shè)置完成后將FOCAS庫中Fwlib32.dll及相關(guān)的文件添加到工程中,與機(jī)床通信時系統(tǒng)首先調(diào)用FOCAS庫函數(shù)shortWINAPIcnc_allclibhndl3(constchar*ipaddr,unsignedshortport,longtimeout,unsignedshort*FlibHndl)獲取句柄,建立與機(jī)床的連接。其各項參數(shù)含義如下:Ipaddr為數(shù)控系統(tǒng)的IP地址,port為數(shù)控系統(tǒng)的端口號,timeout為連接時間,獲得的通信句柄存儲在FlibHndl中,當(dāng)其返回值為EW_OK時表示通信建立成功,之后所有數(shù)據(jù)采集函數(shù)均通過調(diào)用該句柄實(shí)現(xiàn),不同數(shù)控機(jī)床通過IP地址區(qū)分,可獲得不同的通信句柄。當(dāng)連接結(jié)束時需要調(diào)用cnc_freelibhndl函數(shù)進(jìn)行通信句柄的釋放,當(dāng)返回EW_OK時表示句柄釋放成功。當(dāng)FOCAS與機(jī)床建立連接后就能夠通過各類功能函數(shù)實(shí)現(xiàn)對機(jī)床的數(shù)據(jù)采集。以運(yùn)動軸相對坐標(biāo)位置數(shù)據(jù)采集函數(shù)為例對FOCAS機(jī)床數(shù)據(jù)采集方式進(jìn)行說明。函數(shù)聲明如下:
FWLIBAPIshortWINAPIcnc_relative(unsignedshortFlibHndl,shortaxis,shortlength,ODBAXIS*relative);
其中輸入?yún)?shù)為FlibHndl、axis、length,F(xiàn)libHndl為機(jī)床通信句柄,axis為需要讀取坐標(biāo)的軸數(shù),length為需要的數(shù)據(jù)塊長度,其計算方法為4+4×n,其中n為要采集的軸數(shù)目。其輸出參數(shù)為relative,該數(shù)據(jù)類型為一個ODBAXIS類型的結(jié)構(gòu)體,要獲得坐標(biāo)軸位置數(shù)據(jù)需要從該結(jié)構(gòu)體中獲得,其定義如下:
typedefstructodbaxis{
shortdummy;
shorttype;
longdata[MAX_AXIS] ;
}ODBAXIS;
各軸相對位置坐標(biāo)就存儲在data[MAX_AXIS]數(shù)組中,讀數(shù)組中各軸的值就能夠獲得各軸坐標(biāo)。FOCAS中各功能函數(shù)的輸入輸出參數(shù)均不同,在采集不同類型的機(jī)床數(shù)據(jù)時需要根據(jù)其對應(yīng)的數(shù)據(jù)采集功能函數(shù)定義,來進(jìn)行逐個功能的數(shù)據(jù)采集。
b) 適配器與代理通信方法總體流程
根據(jù)MTConnect協(xié)議的規(guī)定,系統(tǒng)適配器Adapter與代理Agent通信采用Socket通信,其數(shù)據(jù)流格式為簡單的報文形式。Socket又稱套接字,是網(wǎng)絡(luò)上的兩個程序通過一個雙向的通信連接實(shí)現(xiàn)數(shù)據(jù)的交換,這個連接的一端稱為一個socket[4],通過Socket能夠?qū)崿F(xiàn)基于TCP/IP協(xié)議的網(wǎng)絡(luò)通信。Adapter發(fā)送的報文格式根據(jù)其數(shù)據(jù)項種類的不同可分為以下3種:
1)Sample和Event類型:
2017-07-29T16:26:33.460470Z|Xabspos|168.423|Yabs|25.341|…。
2)Condition類型:|
3)Message類型: |
對于一個Adapter采集多臺機(jī)床的情況,則需要在key中將設(shè)備名和數(shù)據(jù)項名稱用“·”分隔。因此在由FOCAS函數(shù)采集得到設(shè)備數(shù)據(jù)后系統(tǒng)將其處理成報文形式再發(fā)送給代理端,系統(tǒng)適配器數(shù)據(jù)采集總體流程如圖3所示,具體流程如下:
圖3 適配器數(shù)據(jù)采集總體流程
STEP1:適配器數(shù)據(jù)采集開始,讀取適配器配置文件Adapter.cfg,內(nèi)容包括所有機(jī)床的名稱、IP地址、端口號,初始化適配器設(shè)備信息,建立設(shè)備列表;
STEP2:打開適配器服務(wù)器,綁定服務(wù)器地址,開始監(jiān)聽等待代理連接,當(dāng)代理發(fā)出連接請求后與代理建立socket連接;
STEP3:設(shè)備數(shù)據(jù)采集開始,設(shè)所有設(shè)備總數(shù)為n,建立與第i臺設(shè)備連接,連接成功后對該臺進(jìn)行數(shù)據(jù)采集,遍歷所有設(shè)備;
STEP4:將所有設(shè)備數(shù)據(jù)轉(zhuǎn)換為報文格式,發(fā)送給代理,若收到“采集結(jié)束”指令則關(guān)閉服務(wù)器結(jié)束數(shù)據(jù)采集,否則繼續(xù)進(jìn)行設(shè)備數(shù)據(jù)采集。
系統(tǒng)代理Agent采用MTConnect協(xié)會提供的標(biāo)準(zhǔn)Agent[5]。代理與客戶端的數(shù)據(jù)交互主要通過RESTful接口實(shí)現(xiàn),REST(representationalstatetransfer)定義了客戶端和代理如何對互相的通信狀態(tài)進(jìn)行處理,其底層協(xié)議為HTTP協(xié)議,返回的數(shù)據(jù)采用XML進(jìn)行傳輸。MTConnect代理支持probe、current、sample和asset4種類型的請求。
MTConnect客戶端可采用B/S或C/S架構(gòu),本文采用C/S架構(gòu)進(jìn)行客戶端開發(fā)。客戶端通過向代理發(fā)送請求獲得XML文件,解析XML節(jié)點(diǎn)內(nèi)容就能夠獲得設(shè)備各數(shù)據(jù)項的內(nèi)容。本系統(tǒng)客戶端工作流程如圖4所示,具體流程如下:
1) 連接數(shù)據(jù)庫,向代理發(fā)送probe請求來判斷設(shè)備的狀態(tài),如果設(shè)備狀態(tài)為“AVAILABLE”則說明設(shè)備連接正常,可進(jìn)行下一步數(shù)據(jù)請求,否則結(jié)束采集;
2) 向代理發(fā)送current請求,獲得設(shè)備的當(dāng)前狀態(tài)數(shù)據(jù),保存該xml文件為stream.xml;
3) 解析stream.xml,獲得各個元素對應(yīng)的數(shù)據(jù)項名稱和值,保存到數(shù)據(jù)庫對應(yīng)的表中;
4) 更新用戶界面控件顯示,若收到“采集結(jié)束”指令則結(jié)束采集,否則繼續(xù)發(fā)送current請求進(jìn)行數(shù)據(jù)采集。
圖4 客戶端工作流程
信息采集模塊界面主要包括機(jī)床列表對車間設(shè)備狀態(tài)進(jìn)行總覽,如圖5所示,可以實(shí)現(xiàn)對機(jī)床狀態(tài)監(jiān)控、數(shù)據(jù)庫連接管理、機(jī)床管理、各機(jī)床實(shí)時數(shù)據(jù)監(jiān)控等功能。機(jī)床列表界面對機(jī)床編號、IP地址、名稱、加工狀態(tài)、急停狀態(tài)、報警狀態(tài)進(jìn)行實(shí)時監(jiān)控顯示。
圖5 信息采集界面
對于單個機(jī)床監(jiān)控功能通過雙擊機(jī)床列表中對應(yīng)的機(jī)床進(jìn)入,單個機(jī)床監(jiān)控界面如圖6和圖7所示,包括加工狀態(tài)、主軸控制、NC程序、參數(shù)設(shè)置、報警信息和系統(tǒng)信息6個類型,能夠?qū)崿F(xiàn)對機(jī)床各類型信息的全面詳細(xì)監(jiān)控。
圖6 單個設(shè)備監(jiān)控
圖7 主軸控制監(jiān)控界面
系統(tǒng)的部分系統(tǒng)監(jiān)控界面與運(yùn)行實(shí)例對比,如圖8、圖9所示,其中圖9(a)為監(jiān)控系統(tǒng)界面顯示,圖9(b)為數(shù)控機(jī)床HMI顯示,可以看出系統(tǒng)能夠?qū)C(jī)床數(shù)據(jù)進(jìn)行準(zhǔn)確地實(shí)時采集。
圖8 報警信息監(jiān)控實(shí)例
介紹了機(jī)床數(shù)據(jù)采集的基礎(chǔ)技術(shù)MTConnect通信協(xié)議和FOCAS數(shù)據(jù)采集開發(fā)包,構(gòu)建了數(shù)控機(jī)床設(shè)備信息模型;基于FOCAS實(shí)現(xiàn)了數(shù)據(jù)采集適配器設(shè)計,并完成了數(shù)據(jù)采集客戶端設(shè)計。
圖9 參數(shù)設(shè)置監(jiān)控實(shí)例