張弛,吳明亮,陸軍強,許正軍,吳明永
(1. 蘭州理工大學 機電工程學院,甘肅 蘭州 730050; 2. 青海華鼎重型機床有限責任公司,青海 西寧 810000; 3. 蘭州城市學院 培黎石油工程學院,甘肅 蘭州 730070)
“中國制造2025”中指出我國制造業(yè)的主攻方向為“智能化、服務(wù)化、環(huán)境化”,但是我國制造業(yè)在實際生產(chǎn)過程中,仍然存在著生產(chǎn)過程與企業(yè)的管理系統(tǒng)相脫節(jié)的問題。對此,不少科研單位都給出了相關(guān)的解決方案,但是在實際的生產(chǎn)過程中,尤其是軌道機車的輪軸加工過程中采用數(shù)控機床卻沒有具體的解決方案。
OPCUA技術(shù)是基于OPC基金會提供的新一代技術(shù),安全、可靠,獨立于廠商,實現(xiàn)原始數(shù)據(jù)和預處理的信息從制造層級到生產(chǎn)計劃或ERP層級的傳輸。通過OPCUA,所有需要的信息在任何時間、任何地點對每個授權(quán)的應用,每個授權(quán)的人員都可用。這種功能獨立于制造廠商的原始應用,編程語言和操作系統(tǒng)[1-2]。OPCUA是目前已經(jīng)使用的OPC工業(yè)標準的補充,提供重要的一些特性,包括如平臺獨立性、擴展性、高可靠性和連接互聯(lián)網(wǎng)的能力[3-4]。而C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運行于.NETFramework之上的高級程序設(shè)計語言;相較于VB、Java等其他面向?qū)ο笳Z言,尤其是基于微軟的操作系統(tǒng),C#提供了豐富的類庫?;谝陨蟽牲c,文章中提出了一種基于OPCUA的數(shù)控機床群遠程監(jiān)控系統(tǒng)解決方案,在這個方案中綜合利用了C#、數(shù)據(jù)庫技術(shù)、數(shù)據(jù)同步技術(shù)和相關(guān)的通信等技術(shù),實現(xiàn)了加工過程的實時監(jiān)控、機床狀態(tài)的實時診斷以及客戶端之間的數(shù)據(jù)同步。與其他的機床監(jiān)控解決方案相比[5-7],本文提出的方案具有以下3個優(yōu)點:一是采用了基于C#的監(jiān)控界面設(shè)計方法;這種方法具有移植性強和易于實現(xiàn)具體功能的優(yōu)點;二是采用了基于OPCUA的數(shù)據(jù)通信協(xié)議,在這種通信框架下,數(shù)據(jù)的通信速度不僅得到了提升,并可同時監(jiān)控的變量數(shù)量得到了大大的提升;三是采用了基于數(shù)據(jù)庫技術(shù)的數(shù)據(jù)同步技術(shù),這樣可以在配置一個服務(wù)器的情況下,不同的客戶端之間的數(shù)據(jù)同步得到可靠保證。因此,系統(tǒng)的開發(fā)和研究均具有很強的探索價值和實際意義。
研究對象為5臺雙西門子SINUMERIK828D系統(tǒng)的數(shù)控機床,因此總的監(jiān)視容量為10套SINUMERIK828D系統(tǒng)。同時機床監(jiān)控系統(tǒng)要求系統(tǒng)的實時性強,因此選擇了如下方案:整個系統(tǒng)采用C/S架構(gòu),采用面向?qū)ο蟮腃#軟件作為上位界面的開發(fā)軟件,采用OPCUA通信協(xié)議作為系統(tǒng)數(shù)據(jù)采集以及數(shù)控系統(tǒng)與上位機之間的通信協(xié)議,選擇SQLServer2008作為服務(wù)器上的數(shù)據(jù)庫軟件,其他的客戶端通過實時訪問服務(wù)器的數(shù)據(jù)庫實現(xiàn)客戶端與服務(wù)器之間的數(shù)據(jù)同步。其主要的功能模塊可分為數(shù)據(jù)采集單元配置、數(shù)據(jù)采集、數(shù)據(jù)同步通信、故障報警以及數(shù)據(jù)分析等,具體如圖1所示。

圖1 系統(tǒng)主要功能模塊組成
圖2為系統(tǒng)網(wǎng)絡(luò)構(gòu)架圖,整個監(jiān)控系統(tǒng)可以分為三級:現(xiàn)場設(shè)備級、服務(wù)器級和遠程客戶端級[8-9]。現(xiàn)場設(shè)備級主要包括SINUMERIK828D數(shù)控系統(tǒng)以及自身伴隨

圖2 系統(tǒng)網(wǎng)絡(luò)構(gòu)架
的一個西門子S7-200系列CPU;服務(wù)器級主要指的是通過OPCUA協(xié)議將采集到的機床信息存入到服務(wù)器的數(shù)據(jù)庫中。在此過程中,數(shù)控系統(tǒng)作為OPCUA協(xié)議的服務(wù)器,而上位機作為客戶機,通過配置數(shù)控系統(tǒng)的MiniWebserver,設(shè)定管理員賬號、密碼和IP地址,打開4840端口,激活OPCUA服務(wù)器,即可完成數(shù)控系統(tǒng)OPCUA服務(wù)器的配置;遠程客戶端級的主要用戶有機床的生產(chǎn)廠家以及機床擁有企業(yè)的監(jiān)控管理員,可以通過使用“IP+端口”的方式實時地訪問指定的數(shù)據(jù)庫表,獲得機床的實時信息。
OPCUA讀取數(shù)據(jù)的方式有3種,分別為:同步、異步和訂閱。其中,同步通訊適用于客戶程序比較小,并且數(shù)據(jù)量也小的操作;異步通訊相比于同步通訊的效率更高;而訂閱的方式當Group組內(nèi)的數(shù)據(jù)有改變的時候,會對相應的OPC客戶端定期更新數(shù)據(jù)。因此本系統(tǒng)采用了訂閱的方式以實現(xiàn)OPCUA數(shù)據(jù)訪問[10-12]。
OPCUA的接口主要有兩種:一種是自定義接口,即CUSTOM標準接口,是服務(wù)商必須提供的,主要用于C++編寫的客戶程序;而另一種是OLE自動化標準接口,主要用于C#、VB等語言所開發(fā)的應用程序。而SINUMERIK828D數(shù)控系統(tǒng)提供了OLE自動化標準接口,同時采用C#在HMI設(shè)計中較MFC更具有優(yōu)勢,因此本項目采用了OLE自動化標準接口。
系統(tǒng)針對SINUMERIK828D數(shù)控系統(tǒng)OPCUA數(shù)據(jù)訪問過程中,需要添加如下的命名空間:usingOpc.Ua和usingSiemens.OpcUA;其他的主要程序如下:
m_Server=newServer();//定義OPCUA服務(wù)器
m_Server.CertificateEvent+=newcertificateValidation(m_Server_CertificateEvent);//定義服務(wù)證書
m_Server.Connect("opc.tcp://192.168.1.20:4840","APC","123456");//連接OPCUA服務(wù)器
m_Server.Disconnect();//斷開OPCUA服務(wù)器的連接
m_Subscipition=m_Server.AddSubscription(100);//采用訂閱的方式進行數(shù)據(jù)讀取,最大的數(shù)據(jù)監(jiān)控數(shù)量為100個
m_Subscipition.AddDataMonitoredItem(newNodeId("/Channel/MachineAxis/actToolBasePos[u1,1] ", 2),Mnt_Lb1,ClientApi_ValueChanged, 100,outmonitoredItemServerHandle);//讀取刀具位置的X坐標
NodeIdCollectionnodesToWrite=newNodeIdCollection();
DataValueCollectionvalues=newDataValueCollection();
StatusCodeCollectionresults;
Variantvalue=newVariant();
value.Value=textBoxR1.Text;
nodesToWrite.Add(newNodeId("/Channel/Parameter/rpa[u1,1] ", 2));
values.Add(newDataValue(value));
m_Server.WriteValues(nodesToWrite,values,outresults);//寫R1到數(shù)控系統(tǒng)
以上程序完成了對SINUMERIK828D數(shù)控系統(tǒng)OPCUA數(shù)據(jù)訪問,在這個過程中由于SINUMERIK828D數(shù)控系統(tǒng)版本的問題,需要注意如下的不同,一是SW4.7版本支持的最大監(jiān)控變量個數(shù)為100個,而SW4.5版本支持的最大監(jiān)控變量個數(shù)為20個;二是SW4.7版本中的連接字符串中新增加了賬戶名和密碼,這些需要在數(shù)控系統(tǒng)中進行設(shè)置。
機床監(jiān)控系統(tǒng)的另一個主要作用就是在獲取的機床工作數(shù)據(jù)的基礎(chǔ)上,對機床的工作效率進行分析,能夠給車間及工廠的效率管理提供可靠而簡潔的數(shù)據(jù)。因此在這個功能模塊的設(shè)計中,首先從服務(wù)器的數(shù)據(jù)庫中獲取機床的工作信息,例如已加工零件個數(shù)、故障時間、故障頻率以及機床工作時間等,而后對這些數(shù)據(jù)進行分析,評估機床的狀態(tài),對于機床的檢修等具有現(xiàn)實的指導意義。
如上所述,第一步是獲取服務(wù)器端通過OPCUA讀取的SINUMERIK828D數(shù)控系統(tǒng)數(shù)據(jù),下面以機床的運行時間為例,通過執(zhí)行SQL查詢的方式,將已定義的各個不同的數(shù)控系統(tǒng)的運行時間存入數(shù)組中。
第二步是將讀取過來的數(shù)據(jù)以圖表的方式直觀地呈現(xiàn)給管理員或者用戶,需要添加usingSystem.Drawing命名空間,在上位畫面上添加用于輸入統(tǒng)計時間的文本框。通過執(zhí)行SQL指令,從數(shù)據(jù)庫中查找相應的數(shù)據(jù),而后通過畫筆完成較為直觀的條形圖或者餅圖等實現(xiàn)機床數(shù)據(jù)的分析。 統(tǒng)計效果如圖3所示。

圖3 運行時間條形圖統(tǒng)計
在任何一個系統(tǒng)中,明確而有效的故障或者消息系統(tǒng)對于系統(tǒng)的使用者和維護者都具有極強的實際意義,使得其在該系統(tǒng)的使用過程中,能夠明確地了解到該系統(tǒng)的實時信息,因此在系統(tǒng)中開發(fā)故障、消息系統(tǒng)非常必要[13-14]。在系統(tǒng)中,首先將存入服務(wù)器數(shù)據(jù)庫中的報警消息數(shù)據(jù)表數(shù)據(jù)進行查詢,而后采取服務(wù)器主動更新的方式,最后采用了C#的datagrid表格控件,將機床的報警信息、機床工作消息、系統(tǒng)工作消息等顯示出來;在此處應注意需要將該控件的焦點設(shè)置為最后一行數(shù)據(jù)處,以方便使用者查看消息。
在監(jiān)控過程中,為了方便企業(yè)其他部門監(jiān)控機床和機床生產(chǎn)廠家進行遠程故障診斷,此處進行了服務(wù)器和各個客戶端之間的數(shù)據(jù)同步,主要思路如下:在服務(wù)器的數(shù)據(jù)庫SQLserver2008 內(nèi)的數(shù)據(jù)庫中設(shè)置事務(wù)發(fā)布,即可實現(xiàn)當服務(wù)器的數(shù)據(jù)發(fā)生更新時,服務(wù)器上的SQLserver2008主動將數(shù)據(jù)對各個客戶機上的數(shù)據(jù)庫進行更新,而后客戶機進行顯示。
其主要流程如圖4所示。

圖4 數(shù)據(jù)同步流程
在完成了系統(tǒng)的設(shè)計和初步調(diào)試之后,對系統(tǒng)進行了運行調(diào)試。在調(diào)試過程中,運行了6套數(shù)控系統(tǒng)(由于每臺機床均有2套數(shù)控系統(tǒng),故實際運行了3臺機床),在完成各個數(shù)控系統(tǒng)MiniWeb的配置后,連接服務(wù)器,機床運行,實際運行效果如圖5所示(以3#數(shù)控系統(tǒng)為例)。

圖5 3#數(shù)控系統(tǒng)監(jiān)控界面
設(shè)計的數(shù)控機床群監(jiān)控系統(tǒng)實質(zhì)上構(gòu)建了機械加工企業(yè)中車間機床的物聯(lián)網(wǎng)監(jiān)控管理系統(tǒng),包括SINUMERIK828D數(shù)控系統(tǒng)群、交換機、企業(yè)服務(wù)器、用戶瀏覽客戶端等,開發(fā)了客戶端監(jiān)控界面、配置了數(shù)據(jù)庫,實現(xiàn)了如下功能:1) 基于OPCUA技術(shù),實現(xiàn)了對數(shù)控系統(tǒng)的遠程操作和數(shù)據(jù)的采集,能夠?qū)⑿枰男畔崟r地存儲于服務(wù)器的數(shù)據(jù)庫中;2) 利用數(shù)據(jù)庫的事務(wù)發(fā)布功能和C#對數(shù)據(jù)庫的訪問,實現(xiàn)了服務(wù)器與各個客戶端之間的數(shù)據(jù)同步。3) 利用C#的System.Drawing命名空間,對采集到的數(shù)據(jù)進行了分析。綜上,各個功能模塊的實現(xiàn)以及系統(tǒng)的穩(wěn)定運行,為SINUMERIK828D數(shù)控系統(tǒng)用戶提供了有效的監(jiān)控解決方案。