張弛,吳明亮,陸軍強(qiáng),許正軍,吳明永
(1. 蘭州理工大學(xué) 機(jī)電工程學(xué)院,甘肅 蘭州 730050; 2. 青海華鼎重型機(jī)床有限責(zé)任公司,青海 西寧 810000; 3. 蘭州城市學(xué)院 培黎石油工程學(xué)院,甘肅 蘭州 730070)
“中國制造2025”中指出我國制造業(yè)的主攻方向?yàn)椤爸悄芑?、服?wù)化、環(huán)境化”,但是我國制造業(yè)在實(shí)際生產(chǎn)過程中,仍然存在著生產(chǎn)過程與企業(yè)的管理系統(tǒng)相脫節(jié)的問題。對(duì)此,不少科研單位都給出了相關(guān)的解決方案,但是在實(shí)際的生產(chǎn)過程中,尤其是軌道機(jī)車的輪軸加工過程中采用數(shù)控機(jī)床卻沒有具體的解決方案。
OPCUA技術(shù)是基于OPC基金會(huì)提供的新一代技術(shù),安全、可靠,獨(dú)立于廠商,實(shí)現(xiàn)原始數(shù)據(jù)和預(yù)處理的信息從制造層級(jí)到生產(chǎn)計(jì)劃或ERP層級(jí)的傳輸。通過OPCUA,所有需要的信息在任何時(shí)間、任何地點(diǎn)對(duì)每個(gè)授權(quán)的應(yīng)用,每個(gè)授權(quán)的人員都可用。這種功能獨(dú)立于制造廠商的原始應(yīng)用,編程語言和操作系統(tǒng)[1-2]。OPCUA是目前已經(jīng)使用的OPC工業(yè)標(biāo)準(zhǔn)的補(bǔ)充,提供重要的一些特性,包括如平臺(tái)獨(dú)立性、擴(kuò)展性、高可靠性和連接互聯(lián)網(wǎng)的能力[3-4]。而C#是微軟公司發(fā)布的一種面向?qū)ο蟮?、運(yùn)行于.NETFramework之上的高級(jí)程序設(shè)計(jì)語言;相較于VB、Java等其他面向?qū)ο笳Z言,尤其是基于微軟的操作系統(tǒng),C#提供了豐富的類庫。基于以上兩點(diǎn),文章中提出了一種基于OPCUA的數(shù)控機(jī)床群遠(yuǎn)程監(jiān)控系統(tǒng)解決方案,在這個(gè)方案中綜合利用了C#、數(shù)據(jù)庫技術(shù)、數(shù)據(jù)同步技術(shù)和相關(guān)的通信等技術(shù),實(shí)現(xiàn)了加工過程的實(shí)時(shí)監(jiān)控、機(jī)床狀態(tài)的實(shí)時(shí)診斷以及客戶端之間的數(shù)據(jù)同步。與其他的機(jī)床監(jiān)控解決方案相比[5-7],本文提出的方案具有以下3個(gè)優(yōu)點(diǎn):一是采用了基于C#的監(jiān)控界面設(shè)計(jì)方法;這種方法具有移植性強(qiáng)和易于實(shí)現(xiàn)具體功能的優(yōu)點(diǎn);二是采用了基于OPCUA的數(shù)據(jù)通信協(xié)議,在這種通信框架下,數(shù)據(jù)的通信速度不僅得到了提升,并可同時(shí)監(jiān)控的變量數(shù)量得到了大大的提升;三是采用了基于數(shù)據(jù)庫技術(shù)的數(shù)據(jù)同步技術(shù),這樣可以在配置一個(gè)服務(wù)器的情況下,不同的客戶端之間的數(shù)據(jù)同步得到可靠保證。因此,系統(tǒng)的開發(fā)和研究均具有很強(qiáng)的探索價(jià)值和實(shí)際意義。
研究對(duì)象為5臺(tái)雙西門子SINUMERIK828D系統(tǒng)的數(shù)控機(jī)床,因此總的監(jiān)視容量為10套SINUMERIK828D系統(tǒng)。同時(shí)機(jī)床監(jiān)控系統(tǒng)要求系統(tǒng)的實(shí)時(shí)性強(qiáng),因此選擇了如下方案:整個(gè)系統(tǒng)采用C/S架構(gòu),采用面向?qū)ο蟮腃#軟件作為上位界面的開發(fā)軟件,采用OPCUA通信協(xié)議作為系統(tǒng)數(shù)據(jù)采集以及數(shù)控系統(tǒng)與上位機(jī)之間的通信協(xié)議,選擇SQLServer2008作為服務(wù)器上的數(shù)據(jù)庫軟件,其他的客戶端通過實(shí)時(shí)訪問服務(wù)器的數(shù)據(jù)庫實(shí)現(xiàn)客戶端與服務(wù)器之間的數(shù)據(jù)同步。其主要的功能模塊可分為數(shù)據(jù)采集單元配置、數(shù)據(jù)采集、數(shù)據(jù)同步通信、故障報(bào)警以及數(shù)據(jù)分析等,具體如圖1所示。
圖1 系統(tǒng)主要功能模塊組成
圖2為系統(tǒng)網(wǎng)絡(luò)構(gòu)架圖,整個(gè)監(jiān)控系統(tǒng)可以分為三級(jí):現(xiàn)場設(shè)備級(jí)、服務(wù)器級(jí)和遠(yuǎn)程客戶端級(jí)[8-9]?,F(xiàn)場設(shè)備級(jí)主要包括SINUMERIK828D數(shù)控系統(tǒng)以及自身伴隨
圖2 系統(tǒng)網(wǎng)絡(luò)構(gòu)架
的一個(gè)西門子S7-200系列CPU;服務(wù)器級(jí)主要指的是通過OPCUA協(xié)議將采集到的機(jī)床信息存入到服務(wù)器的數(shù)據(jù)庫中。在此過程中,數(shù)控系統(tǒng)作為OPCUA協(xié)議的服務(wù)器,而上位機(jī)作為客戶機(jī),通過配置數(shù)控系統(tǒng)的MiniWebserver,設(shè)定管理員賬號(hào)、密碼和IP地址,打開4840端口,激活OPCUA服務(wù)器,即可完成數(shù)控系統(tǒng)OPCUA服務(wù)器的配置;遠(yuǎn)程客戶端級(jí)的主要用戶有機(jī)床的生產(chǎn)廠家以及機(jī)床擁有企業(yè)的監(jiān)控管理員,可以通過使用“IP+端口”的方式實(shí)時(shí)地訪問指定的數(shù)據(jù)庫表,獲得機(jī)床的實(shí)時(shí)信息。
OPCUA讀取數(shù)據(jù)的方式有3種,分別為:同步、異步和訂閱。其中,同步通訊適用于客戶程序比較小,并且數(shù)據(jù)量也小的操作;異步通訊相比于同步通訊的效率更高;而訂閱的方式當(dāng)Group組內(nèi)的數(shù)據(jù)有改變的時(shí)候,會(huì)對(duì)相應(yīng)的OPC客戶端定期更新數(shù)據(jù)。因此本系統(tǒng)采用了訂閱的方式以實(shí)現(xiàn)OPCUA數(shù)據(jù)訪問[10-12]。
OPCUA的接口主要有兩種:一種是自定義接口,即CUSTOM標(biāo)準(zhǔn)接口,是服務(wù)商必須提供的,主要用于C++編寫的客戶程序;而另一種是OLE自動(dòng)化標(biāo)準(zhǔn)接口,主要用于C#、VB等語言所開發(fā)的應(yīng)用程序。而SINUMERIK828D數(shù)控系統(tǒng)提供了OLE自動(dòng)化標(biāo)準(zhǔn)接口,同時(shí)采用C#在HMI設(shè)計(jì)中較MFC更具有優(yōu)勢,因此本項(xiàng)目采用了OLE自動(dòng)化標(biāo)準(zhǔn)接口。
系統(tǒng)針對(duì)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);//采用訂閱的方式進(jìn)行數(shù)據(jù)讀取,最大的數(shù)據(jù)監(jiān)控?cái)?shù)量為100個(gè)
m_Subscipition.AddDataMonitoredItem(newNodeId("/Channel/MachineAxis/actToolBasePos[u1,1] ", 2),Mnt_Lb1,ClientApi_ValueChanged, 100,outmonitoredItemServerHandle);//讀取刀具位置的X坐標(biāo)
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)
以上程序完成了對(duì)SINUMERIK828D數(shù)控系統(tǒng)OPCUA數(shù)據(jù)訪問,在這個(gè)過程中由于SINUMERIK828D數(shù)控系統(tǒng)版本的問題,需要注意如下的不同,一是SW4.7版本支持的最大監(jiān)控變量個(gè)數(shù)為100個(gè),而SW4.5版本支持的最大監(jiān)控變量個(gè)數(shù)為20個(gè);二是SW4.7版本中的連接字符串中新增加了賬戶名和密碼,這些需要在數(shù)控系統(tǒng)中進(jìn)行設(shè)置。
機(jī)床監(jiān)控系統(tǒng)的另一個(gè)主要作用就是在獲取的機(jī)床工作數(shù)據(jù)的基礎(chǔ)上,對(duì)機(jī)床的工作效率進(jìn)行分析,能夠給車間及工廠的效率管理提供可靠而簡潔的數(shù)據(jù)。因此在這個(gè)功能模塊的設(shè)計(jì)中,首先從服務(wù)器的數(shù)據(jù)庫中獲取機(jī)床的工作信息,例如已加工零件個(gè)數(shù)、故障時(shí)間、故障頻率以及機(jī)床工作時(shí)間等,而后對(duì)這些數(shù)據(jù)進(jìn)行分析,評(píng)估機(jī)床的狀態(tài),對(duì)于機(jī)床的檢修等具有現(xiàn)實(shí)的指導(dǎo)意義。
如上所述,第一步是獲取服務(wù)器端通過OPCUA讀取的SINUMERIK828D數(shù)控系統(tǒng)數(shù)據(jù),下面以機(jī)床的運(yùn)行時(shí)間為例,通過執(zhí)行SQL查詢的方式,將已定義的各個(gè)不同的數(shù)控系統(tǒng)的運(yùn)行時(shí)間存入數(shù)組中。
第二步是將讀取過來的數(shù)據(jù)以圖表的方式直觀地呈現(xiàn)給管理員或者用戶,需要添加usingSystem.Drawing命名空間,在上位畫面上添加用于輸入統(tǒng)計(jì)時(shí)間的文本框。通過執(zhí)行SQL指令,從數(shù)據(jù)庫中查找相應(yīng)的數(shù)據(jù),而后通過畫筆完成較為直觀的條形圖或者餅圖等實(shí)現(xiàn)機(jī)床數(shù)據(jù)的分析。 統(tǒng)計(jì)效果如圖3所示。
圖3 運(yùn)行時(shí)間條形圖統(tǒng)計(jì)
在任何一個(gè)系統(tǒng)中,明確而有效的故障或者消息系統(tǒng)對(duì)于系統(tǒng)的使用者和維護(hù)者都具有極強(qiáng)的實(shí)際意義,使得其在該系統(tǒng)的使用過程中,能夠明確地了解到該系統(tǒng)的實(shí)時(shí)信息,因此在系統(tǒng)中開發(fā)故障、消息系統(tǒng)非常必要[13-14]。在系統(tǒng)中,首先將存入服務(wù)器數(shù)據(jù)庫中的報(bào)警消息數(shù)據(jù)表數(shù)據(jù)進(jìn)行查詢,而后采取服務(wù)器主動(dòng)更新的方式,最后采用了C#的datagrid表格控件,將機(jī)床的報(bào)警信息、機(jī)床工作消息、系統(tǒng)工作消息等顯示出來;在此處應(yīng)注意需要將該控件的焦點(diǎn)設(shè)置為最后一行數(shù)據(jù)處,以方便使用者查看消息。
在監(jiān)控過程中,為了方便企業(yè)其他部門監(jiān)控機(jī)床和機(jī)床生產(chǎn)廠家進(jìn)行遠(yuǎn)程故障診斷,此處進(jìn)行了服務(wù)器和各個(gè)客戶端之間的數(shù)據(jù)同步,主要思路如下:在服務(wù)器的數(shù)據(jù)庫SQLserver2008 內(nèi)的數(shù)據(jù)庫中設(shè)置事務(wù)發(fā)布,即可實(shí)現(xiàn)當(dāng)服務(wù)器的數(shù)據(jù)發(fā)生更新時(shí),服務(wù)器上的SQLserver2008主動(dòng)將數(shù)據(jù)對(duì)各個(gè)客戶機(jī)上的數(shù)據(jù)庫進(jìn)行更新,而后客戶機(jī)進(jìn)行顯示。
其主要流程如圖4所示。
圖4 數(shù)據(jù)同步流程
在完成了系統(tǒng)的設(shè)計(jì)和初步調(diào)試之后,對(duì)系統(tǒng)進(jìn)行了運(yùn)行調(diào)試。在調(diào)試過程中,運(yùn)行了6套數(shù)控系統(tǒng)(由于每臺(tái)機(jī)床均有2套數(shù)控系統(tǒng),故實(shí)際運(yùn)行了3臺(tái)機(jī)床),在完成各個(gè)數(shù)控系統(tǒng)MiniWeb的配置后,連接服務(wù)器,機(jī)床運(yùn)行,實(shí)際運(yùn)行效果如圖5所示(以3#數(shù)控系統(tǒng)為例)。
圖5 3#數(shù)控系統(tǒng)監(jiān)控界面
設(shè)計(jì)的數(shù)控機(jī)床群監(jiān)控系統(tǒng)實(shí)質(zhì)上構(gòu)建了機(jī)械加工企業(yè)中車間機(jī)床的物聯(lián)網(wǎng)監(jiān)控管理系統(tǒng),包括SINUMERIK828D數(shù)控系統(tǒng)群、交換機(jī)、企業(yè)服務(wù)器、用戶瀏覽客戶端等,開發(fā)了客戶端監(jiān)控界面、配置了數(shù)據(jù)庫,實(shí)現(xiàn)了如下功能:1) 基于OPCUA技術(shù),實(shí)現(xiàn)了對(duì)數(shù)控系統(tǒng)的遠(yuǎn)程操作和數(shù)據(jù)的采集,能夠?qū)⑿枰男畔?shí)時(shí)地存儲(chǔ)于服務(wù)器的數(shù)據(jù)庫中;2) 利用數(shù)據(jù)庫的事務(wù)發(fā)布功能和C#對(duì)數(shù)據(jù)庫的訪問,實(shí)現(xiàn)了服務(wù)器與各個(gè)客戶端之間的數(shù)據(jù)同步。3) 利用C#的System.Drawing命名空間,對(duì)采集到的數(shù)據(jù)進(jìn)行了分析。綜上,各個(gè)功能模塊的實(shí)現(xiàn)以及系統(tǒng)的穩(wěn)定運(yùn)行,為SINUMERIK828D數(shù)控系統(tǒng)用戶提供了有效的監(jiān)控解決方案。