數(shù)控機(jī)床遠(yuǎn)程監(jiān)控平臺開發(fā)和實現(xiàn)
時間:2015-01-13 1 引言
數(shù)控系統(tǒng)的網(wǎng)絡(luò)監(jiān)控,通常以網(wǎng)絡(luò)為媒介,實現(xiàn)數(shù)控系統(tǒng)與系統(tǒng)外的其它控制系統(tǒng)或計算機(jī)的通訊。計算機(jī)等上位機(jī)通過網(wǎng)絡(luò)來實現(xiàn)對數(shù)控設(shè)備的遠(yuǎn)程控制和無人化操作、遠(yuǎn)程加工程序的傳輸、遠(yuǎn)程診斷和遠(yuǎn)程維修服務(wù)、技術(shù)服務(wù)。
網(wǎng)絡(luò)化數(shù)控裝備是近年來的一個新亮點。國外的一些著名數(shù)控機(jī)床和數(shù)控系統(tǒng)制造公司推出了相關(guān)的概念和樣機(jī),例如德國西門子(Siemens)公司展出的Open Manufacturing Environment(開放制造環(huán)境,簡稱OME),日本山崎馬扎克(Mazak)公司展出的“Cyber Production Center”(智能生產(chǎn)控制中心,簡稱CPC)等,反映了數(shù)控機(jī)床加工向網(wǎng)絡(luò)化方向發(fā)展的動向。國內(nèi)在網(wǎng)絡(luò)化數(shù)控裝備方面的研究也取得了一定的進(jìn)展。武漢華中數(shù)控股份有限公司研制開發(fā)的華中世紀(jì)星(HNC-21M)銑削數(shù)控裝置就是具有網(wǎng)絡(luò)功能的數(shù)控產(chǎn)品,可以利用以太網(wǎng)實現(xiàn)網(wǎng)絡(luò)通信。
本文主要設(shè)計了一款遠(yuǎn)程監(jiān)控平臺,實現(xiàn)PC 機(jī)與DNC-11數(shù)控系統(tǒng)間的網(wǎng)絡(luò)通訊,實現(xiàn)機(jī)床加工狀態(tài)、機(jī)床參數(shù)及故障診斷等多信息交互和融合,使操作人員能通過PC機(jī)上的人機(jī)界面監(jiān)控數(shù)控機(jī)床的運行狀態(tài),查閱其加工歷史信息或進(jìn)行相關(guān)故障診斷,為未來數(shù)控機(jī)床網(wǎng)絡(luò)化管理、物聯(lián)網(wǎng)建設(shè)等提供良好的平臺服務(wù)。
2 監(jiān)控平臺總體結(jié)構(gòu)設(shè)計
遠(yuǎn)程監(jiān)控平臺是由一臺PC機(jī)、一個集線器、若干個DNC-11數(shù)控系統(tǒng)連接機(jī)床而成,形成一個星形的拓?fù)浣Y(jié)構(gòu)。遠(yuǎn)程監(jiān)控平臺的總體結(jié)構(gòu)如圖1所示。
本平臺是客戶機(jī)/服務(wù)器模式,即C/S模式。特殊之處在于客戶端與服務(wù)器之間是一對多的關(guān)系,即一個客戶端可與多個服務(wù)器之間進(jìn)行通訊。
PC 機(jī)作為客戶端,用戶通過操作HMI(即人機(jī)界面)向服務(wù)器端發(fā)起通訊請求和服務(wù)請求,并通過自定義的數(shù)據(jù)包格式完成機(jī)床狀態(tài)信息和控制信息的交互,最終圖形化、數(shù)字化地顯示在HMI上。DNC-11為服務(wù)器端,在接到客戶端請求后提供相應(yīng)的服務(wù)。DNC-11是帶有網(wǎng)絡(luò)功能的數(shù)控系統(tǒng),能夠提供基于TCP/IP協(xié)議的網(wǎng)絡(luò)通訊服務(wù),可以將數(shù)控系統(tǒng)的運行狀態(tài)數(shù)據(jù)采集后周期上傳,也可以接收控制指令進(jìn)行相關(guān)的控制動作。
本平臺采用上下位機(jī)的結(jié)構(gòu),將實時性要求高的任務(wù)分配給下位機(jī),將實時性要求不高的任務(wù)分配給上位機(jī)PC。PC端運行監(jiān)控平臺應(yīng)用程序,通過通訊服務(wù)接口與DNC-11等進(jìn)行網(wǎng)絡(luò)通訊,實現(xiàn)顯示監(jiān)測結(jié)果、圖形及機(jī)床加工軌跡,遠(yuǎn)程發(fā)送控制指令,修改設(shè)置機(jī)床參數(shù)等功能。
3 監(jiān)控平臺應(yīng)用軟件的設(shè)計
遠(yuǎn)程監(jiān)控平臺應(yīng)用程序的總體結(jié)構(gòu)包括設(shè)備層、數(shù)據(jù)通訊服務(wù)層、核心功能層和應(yīng)用訪問層。軟件分層結(jié)構(gòu)如圖2所示。軟件的開發(fā)實現(xiàn)主要集中在數(shù)據(jù)通訊服務(wù)層和核心功能層。
數(shù)據(jù)通訊服務(wù)層主要提供參數(shù)服務(wù)、命令服務(wù)和文件服務(wù)等。參數(shù)服務(wù)是為上層提供讀取/修改DNC-11 的參數(shù)數(shù)據(jù)的服務(wù)。命令服務(wù)是為上層提供遠(yuǎn)程控制的服務(wù),將命令組裝成相應(yīng)命令報文,通過以太網(wǎng)向DNC-11傳輸,DNC-11會根據(jù)解析報文后得到的操作命令來執(zhí)行用戶需要的控制操作。文件服務(wù)是向上層提供加工程序的傳輸,加工程序目錄的選擇,系統(tǒng)文件的卸載及加載,加工程序的選擇等服務(wù)。
核心功能層將具體實現(xiàn)的功能劃分為三類:設(shè)備管理、實時監(jiān)測和在線測試。設(shè)備管理具體包括數(shù)控機(jī)床的參數(shù)管理,數(shù)控機(jī)床的遠(yuǎn)程控制,數(shù)控機(jī)床的加工程序管理,數(shù)控機(jī)床設(shè)備信息管理等。實時監(jiān)測主要指數(shù)控機(jī)床運行狀態(tài)監(jiān)測,各軸狀態(tài)監(jiān)測,PLC狀態(tài)監(jiān)測,以及數(shù)控機(jī)床關(guān)鍵部位監(jiān)測等。在線測試包括數(shù)控機(jī)床故障模擬測試等。
4 網(wǎng)絡(luò)通訊接口的設(shè)計
在本文設(shè)計的監(jiān)控平臺中,網(wǎng)絡(luò)通信作為數(shù)據(jù)傳輸唯一通道,是整個監(jiān)控平臺的信息支撐。監(jiān)控平臺對通訊接口設(shè)計的功能需求主要有:通訊資源的初始化和釋放;網(wǎng)絡(luò)連接的處理;網(wǎng)絡(luò)狀態(tài)的判斷;數(shù)據(jù)的接收和發(fā)送。
遠(yuǎn)程監(jiān)控平臺是基于TCP/IP網(wǎng)絡(luò)協(xié)議開發(fā)的。在TCP/IP的四層模型中,傳輸層定義了兩個端到端協(xié)議:傳輸控制協(xié)議TCP和用戶數(shù)據(jù)報協(xié)議UDP。在數(shù)據(jù)完整性和準(zhǔn)確性要求較高的場合,采用TCP協(xié)議;在實時性要求較高且數(shù)據(jù)完整性要求較低的場合,采用UDP協(xié)議。UDP通信不需要建立連接,并且沒有數(shù)據(jù)確認(rèn)和重傳機(jī)制,因此實時性較高。但在數(shù)控機(jī)床遠(yuǎn)程監(jiān)控平臺的通訊中,各功能模塊對數(shù)據(jù)完整性的要求較高,因而采用TCP傳輸協(xié)議開發(fā)。
Windows Sockets是從Berkeley Sockets擴(kuò)展而來的,定義了TCP/IP網(wǎng)絡(luò)最為通用的API,以動態(tài)鏈接庫的形式提供給用戶使用。Socket的出現(xiàn),使用戶可以很方便的訪問TCP /IP,從而開發(fā)各種網(wǎng)絡(luò)應(yīng)用程序。Windows Sockets與協(xié)議無關(guān)并向下兼容,可以使用任何底層傳輸協(xié)議提供的通信能力,來為上層應(yīng)用程序完成網(wǎng)絡(luò)數(shù)據(jù)通信,而不必關(guān)心底層網(wǎng)絡(luò)鏈路的通信情況,能真正實現(xiàn)底層網(wǎng)絡(luò)通信對應(yīng)用程序的透明。
Windows Sockets主要支持三種套接字類型,分別為:流式套接字(SOCK_STREAM)、數(shù)據(jù)報式套接字(SOCK_DGRAM)、原始式套接字(SOCK_RAM)。
根據(jù)采用的通訊協(xié)議,并考慮到對通信可靠性和正確性的要求較高,本監(jiān)控平臺選用流式套接字來實現(xiàn)網(wǎng)絡(luò)通訊。基于Client /Server模式的流式套接字通訊過程如圖3 所示。
InitializeEngine是通訊資源初始化接口,Uninitialize Engine是通訊資源釋放接口。通訊資源的初始化和釋放主要是通訊端口分配釋放、IP地址和遠(yuǎn)端IP 地址的賦值、變量的初始化、套接字的加載和緩沖區(qū)的分配等。
StateLoop是網(wǎng)絡(luò)連接處理接口。網(wǎng)絡(luò)的連接狀態(tài)有三種:未連接、等待連接和正在連接。網(wǎng)絡(luò)連接處理是根據(jù)不同的連接狀態(tài),客戶端和服務(wù)器端執(zhí)行相應(yīng)的操作。
IsConnected是網(wǎng)絡(luò)連接狀態(tài)判斷接口。連接狀態(tài)的判斷就是通過變量的當(dāng)前值返回網(wǎng)絡(luò)連接的狀態(tài)。
Send 和Receive是發(fā)送/接收數(shù)據(jù)接口。數(shù)據(jù)的收發(fā)就是調(diào)用socket API來接收和發(fā)送數(shù)據(jù)??蛻舳耸且粚Χ嗟?,要將接收的數(shù)據(jù)根據(jù)不同的設(shè)備號存入不同的緩沖區(qū);服務(wù)器端超過設(shè)定的時間未發(fā)送成功則進(jìn)行重發(fā)。
平臺中作為客戶端的PC機(jī)能夠同時與多臺在線服務(wù)器端進(jìn)行網(wǎng)絡(luò)連接,因而采用多線程技術(shù),對每臺設(shè)備開一條獨立的通信線程。通信線程中調(diào)用相應(yīng)的通訊接口,通過檢測標(biāo)識位,滿足條件時發(fā)送緩存中已寫入的數(shù)據(jù),并當(dāng)接收到的數(shù)據(jù)包長度大于零時,調(diào)用數(shù)據(jù)包的解析函數(shù),將解析出來的有效數(shù)據(jù)傳遞給HMI 或者存儲到相應(yīng)數(shù)據(jù)緩存區(qū)。在成功完成通訊的基礎(chǔ)上,實現(xiàn)參數(shù)的發(fā)送和接收需要考慮的是參數(shù)信息的存取、維護(hù),以及數(shù)據(jù)包的組包和解析。
5 HMI功能實現(xiàn)
根據(jù)對數(shù)據(jù)通訊服務(wù)層和核心功能層的分析,遠(yuǎn)程監(jiān)控平臺人機(jī)界面要實現(xiàn)的功能有參數(shù)服務(wù)功能、命令服務(wù)功能、文件服務(wù)功能等。各功能實現(xiàn)的流程類似,采用的具體方法存在差異,本文主要介紹參數(shù)服務(wù)功能的實現(xiàn)。
運行應(yīng)用程序,進(jìn)入監(jiān)控平臺,添加數(shù)控設(shè)備后初始化的界面如圖4所示。
一對多的客戶端,能同時顯示和操作多個數(shù)控設(shè)備的監(jiān)控界面,雙擊需要監(jiān)控的數(shù)控設(shè)備,即能彈出對應(yīng)數(shù)控設(shè)備的監(jiān)控界面,如圖5所示。
每臺數(shù)控設(shè)備的參數(shù)管理界面主要顯示的是參數(shù)號、參數(shù)名和參數(shù)值等,其中參數(shù)號與參數(shù)名不支持用戶修改,參數(shù)值為用戶的編輯項,因而參數(shù)的顯示可使用兩個靜態(tài)文本控件和一個編輯框控件。但由于上述顯示方式中存在問題及不足,在人機(jī)界面的開發(fā)中,使用繼承自CListCtrl類的CReportCtrl類,在列表控件已有的功能基礎(chǔ)上封裝數(shù)據(jù)項的編輯功能,并提供一些操作的函數(shù)接口。使用列表控件顯示參數(shù)的界面如圖6所示。
從圖中可以看出,使用列表形式顯示的參數(shù)可以方便的添加、刪除等,并且能盡可能多的顯示參數(shù)信息,界面的美觀性也得到提高。
CReportCtrl 類中的SetEditable 函數(shù),可以改變進(jìn)行修改操作的布爾型標(biāo)志變量的值,能方便的實現(xiàn)編輯操作只對參數(shù)值對應(yīng)列有效。CReportCtrl類中在編輯功能完成時,會向列表控件所在的父窗口發(fā)送一條消息,代碼如下:
GetParent()- > SendMessage(WM_EDIT_COMMITTED,
(WPARAM)m_ptEdittingx,(LPARAM)m_ptEdittingy);
在父窗口中捕獲WM_EDIT_COMMITTED消息,在對應(yīng)的響應(yīng)函數(shù)中編寫代碼,將編輯的參數(shù)值寫到緩存中,等待發(fā)送。在響應(yīng)函數(shù)中可以編寫任意參數(shù)值的寫緩存操作,因此在代碼量上有縮減,代碼重復(fù)率下降。
6 結(jié)束語
本文介紹的機(jī)床遠(yuǎn)程監(jiān)控平臺采用windows環(huán)境PC上位機(jī),通過socket流式套接字與linux環(huán)境的下位機(jī)進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)交互,圖形化、數(shù)字化地處理和顯示數(shù)控系統(tǒng)的參數(shù)及狀態(tài)等信息,實現(xiàn)了遠(yuǎn)程控制和遠(yuǎn)程監(jiān)測等功能,解決了數(shù)控機(jī)床狀態(tài)以及故障等信息的遠(yuǎn)程傳輸問題,為實現(xiàn)數(shù)控機(jī)床的無人化操作與監(jiān)控提供了基礎(chǔ)。