范晉偉,楊躍,潘日,李偉華
(1.北京工業(yè)大學材料與制造學部,北京100124;2.北京第二機床廠有限公司,北京100156)
數(shù)控機床是整個制造業(yè)的主要生產設備,要提高傳統(tǒng)制造的市場競爭力,必須提高機床的智能化程度,對機床的運行狀態(tài)進行實時監(jiān)控,升級傳統(tǒng)車間機床管理模式,實現(xiàn)數(shù)控設備網絡化和智能化。數(shù)控機床因其結構的復雜性,使其性能提高時,系統(tǒng)發(fā)生故障或失效的潛在可能性也越來越大。對數(shù)控機床加工過程進行狀態(tài)監(jiān)控的主要目的就是要保證加工系統(tǒng)的安全運行,避免設備故障,保證加工工件質量,減少額外的輔助工作時間,提高生產效率和設備利用率,也可以提高數(shù)控機床內部數(shù)據(jù)的可視化和網絡化,為數(shù)控機床的智能化打下基礎。同時,設備的狀態(tài)監(jiān)控也是對設備進行故障診斷的基礎。近年來,數(shù)控機床的遠程監(jiān)控使物聯(lián)技術應用到制造業(yè)成為一大熱點。
OPC UA由傳統(tǒng)的OPC發(fā)展而來,是對OPC的繼承與升級,解決了傳統(tǒng)OPC對Windows平臺的依賴以及對分布式系統(tǒng)信息交換不適用等主要問題。OPC UA相比傳統(tǒng)OPC具有平臺無關性、訪問靈活、更安全等優(yōu)勢。OPC UA是不同軟件產品和設備間進行數(shù)據(jù)交換的標準通信接口,將OPC UA技術運用到數(shù)據(jù)采集和機床監(jiān)控領域,可提高系統(tǒng)與其他相關設備的兼容性和通信的即時性。
OPC UA是工業(yè)4.0中一個重要的通信協(xié)議。隨著微軟停止對COM組件的開發(fā),依賴于微軟系統(tǒng)COM和DCOM組件的傳統(tǒng)OPC技術也遇到了瓶頸。傳統(tǒng)OPC 技術的擴展性、移植性、兼容性不好,數(shù)據(jù)傳輸?shù)陌踩缘?,復雜數(shù)據(jù)格式數(shù)據(jù)的傳輸存在著很大困難。 OPC UA協(xié)議具有更好的擴展性、可靠性,實現(xiàn)了多個服務器的統(tǒng)一。例如傳統(tǒng)的OPC技術有3種服務器:數(shù)據(jù)訪問服務器、報警服務器和歷史數(shù)據(jù)服務器,而當這3個對象統(tǒng)一時,可大大減少數(shù)據(jù)訪問所需要的時間。
OPC UA的通信可以穿越防火墻,這樣就提高了數(shù)據(jù)的傳輸效率。OPC UA消息的編碼格式可以是XML文本格式或者二進制格式,也可以使用多種傳輸協(xié)議如TCP和通過HTTP的網絡服務進行傳輸?;诨ヂ?lián)網的Web Service服務架構(SOA)和靈活的數(shù)據(jù)交換系統(tǒng)是OPC UA的主要發(fā)展優(yōu)勢。
數(shù)據(jù)傳輸機制和數(shù)據(jù)建模是OPC UA服務器的基本組成部分,服務器使用通用的服務接口對外提供服務。相比于傳統(tǒng)OPC,OPC UA采用平臺無關的傳輸技術使得OPC UA應用既能運行在底層智能設備或控制器中,也能運行在SCADA系統(tǒng)與MES、ERP系統(tǒng)里。
OPC UA服務器應用程序主要包含了地址空間、實際對象和發(fā)布/訂閱實體。OPC UA服務器應用程序通過通用的API接口同 OPC UA客戶端進行交互,而OPC UA通信棧提供數(shù)據(jù)包的封包解析功能??蛻舳嗽L問服務器的主要對象就是地址空間中的節(jié)點(如圖1所示)。有別于OPC DA中Group,OPC UA通過視域節(jié)點對數(shù)據(jù)進行瀏覽。
圖1 OPC UA地址空間
Win10系統(tǒng)穩(wěn)定可靠,兼容性強,能夠滿足該監(jiān)控系統(tǒng)的開發(fā)需求。C/S架構,即客戶端/服務器架構,主要應用于局域網內,客戶端與服務器通過點對點直接連接,使系統(tǒng)更加安全可靠。此系統(tǒng)在局域網內運行,C/S架構在該環(huán)境下更能充分發(fā)揮兩端硬件環(huán)境的優(yōu)勢,因此采用C/S架構進行開發(fā)。由于后面遠程監(jiān)控網站采用PHP語言開發(fā),MySQL數(shù)據(jù)庫與其兼容較好,在PHP數(shù)據(jù)庫開發(fā)中被廣泛地應用,所以選用MySQL數(shù)據(jù)庫進行開發(fā)。MySQL是一款安全、跨平臺、高效,并與PHP、Java等主流編程語言緊密結合的數(shù)據(jù)庫系統(tǒng)。MySQL數(shù)據(jù)庫具有體積小、速度快、完全免費、開放源碼、運行速度快、支持面向對象等優(yōu)點。具體的開發(fā)環(huán)境如表1所示。
表1 軟件開發(fā)環(huán)境
在確定開發(fā)環(huán)境之后,需要規(guī)劃本地監(jiān)控系統(tǒng)的功能。對整個監(jiān)控需求進行分析,本地監(jiān)控系統(tǒng)需要完成對用戶的管理、機床的實時監(jiān)控、機床監(jiān)控數(shù)據(jù)的管理。所以,本地監(jiān)控系統(tǒng)的功能規(guī)劃如圖2所示。
圖2 功能規(guī)劃圖
機床實時監(jiān)控關鍵是實現(xiàn)軟件與機床OPC UA服務器的通信。首先,根據(jù)機床服務器的Url地址來搜索、查找服務器節(jié)點,與服務器建立連接。
與OPC UA服務器成功建立連接后,可以通過視域節(jié)點實現(xiàn)用戶對服務器節(jié)點地址集的瀏覽,同時可以查看節(jié)點屬性。地址空間的基本組成單位是節(jié)點,屬性是用來描述節(jié)點的數(shù)據(jù)元素,服務器地址空間如圖3所示。
圖3 服務器地址空間
OPC UA規(guī)范共有8種類型節(jié)點,分別是:VariableType(變量類型)、Variable(變量)、DataType(數(shù)據(jù)類型)、Object(對象)、ObjectType(對象類型)、Method(方法)、View(視域)、ReferenceType(引用類型)。表2展示了基本節(jié)點類屬性。
表2 基本節(jié)點類屬性
通過以上對地址空間的瀏覽,可以知道節(jié)點的ID和節(jié)點存放的變量。用戶選擇自己想要進行操作的變量所在節(jié)點ID,監(jiān)控系統(tǒng)根據(jù)節(jié)點ID實現(xiàn)對節(jié)點數(shù)據(jù)的讀取、修改和訂閱,以訂閱的方式實現(xiàn)對機床運行狀況的實時監(jiān)控。首先系統(tǒng)要分配監(jiān)控項,監(jiān)控項可以生成通知,這些通知以訂閱的方式發(fā)送給客戶端。訂閱與監(jiān)控項服務集聯(lián)系緊密,共同提供了對客戶端需要監(jiān)控的數(shù)據(jù)更新的功能,其中監(jiān)控項服務集為客戶端提供了建立、更改、刪除功能,并生成提醒上報到訂閱。訂閱服務集允許客戶端建立、更改、刪除訂閱,并負責發(fā)送提醒到客戶端。
在此監(jiān)控系統(tǒng)中,訂閱有3類屬性,分別是Value、Quality、Timestamp(值,數(shù)據(jù)質量,時間戳)。完成數(shù)據(jù)的訂閱后,首先會判斷數(shù)據(jù)是否超出了正常范圍,處于正常范圍時,數(shù)據(jù)在文本框內以正常黑色字體顯示,否則數(shù)據(jù)會變紅來提醒用戶。接著將訂閱的節(jié)點數(shù)據(jù)實時顯示出來,繪制相應的折線圖,并將數(shù)據(jù)寫入數(shù)據(jù)庫。整個監(jiān)控流程如圖4所示。
圖4 監(jiān)控流程
在進行折線圖的繪制時,系統(tǒng)會以訂閱的時間戳數(shù)據(jù)為橫坐標,變量值為縱坐標(默認顯示最近20 s的數(shù)據(jù),用戶可通過勾選“所有數(shù)據(jù)”選項來顯示所有的數(shù)據(jù))。監(jiān)控界面右上角用來顯示是否成功把數(shù)據(jù)寫入數(shù)據(jù)庫中。監(jiān)控界面如圖5所示。
圖5 監(jiān)控界面
確定了系統(tǒng)功能之后,系統(tǒng)需要將用戶信息和機床在運行期間產生的大量狀態(tài)數(shù)據(jù)儲存在數(shù)據(jù)庫,以便用戶查詢、修改。
在開發(fā)數(shù)據(jù)庫之前,需要先對要存儲的信息進行分類分析。在此監(jiān)控系統(tǒng)中,需要存放3類數(shù)據(jù),分別是用戶信息、監(jiān)控數(shù)據(jù)歷史信息和監(jiān)控數(shù)據(jù)實時信息。其中,用戶登錄信息數(shù)據(jù)表包括登錄人員的ID、姓名、賬號、密碼等信息;根據(jù)訂閱數(shù)據(jù)的屬性,監(jiān)控數(shù)據(jù)表需要包括ID、數(shù)據(jù)質量、時間戳、具體值等信息。其中數(shù)據(jù)表中的ID作為數(shù)據(jù)表的主鍵,采用自增長方式來確定數(shù)據(jù)唯一性,作為數(shù)據(jù)索引,提高數(shù)據(jù)的查詢速度。采用phpMyAdmin作為MySQL數(shù)據(jù)庫的管理工具,圖6為監(jiān)控數(shù)據(jù)表結構,time(時間戳)設置為timestamp類型,monitor(值)設置成float類型,status(數(shù)據(jù)質量)設置成text類型,ID設置為int(10)自增長類型,并設置成主鍵索引。
圖6 phpMyAdmin的監(jiān)控數(shù)據(jù)表結構圖
采用SQL語言實現(xiàn)對數(shù)據(jù)庫中監(jiān)控數(shù)據(jù)的管理,首先需要連接數(shù)據(jù)庫,才能實現(xiàn)對數(shù)據(jù)的增刪改查等操作。每次對數(shù)據(jù)進行操作后,必須關閉數(shù)據(jù)庫連接,否則在頻繁操作后,數(shù)據(jù)庫的連接池會溢出造成程序運行出錯。選擇對節(jié)點進行監(jiān)控后,該節(jié)點的數(shù)據(jù)被寫入到監(jiān)控數(shù)據(jù)庫中。通過節(jié)點ID,用戶可以查詢到該節(jié)點的歷史監(jiān)控數(shù)據(jù),包括節(jié)點變量的時間戳、變量值和數(shù)據(jù)質量。數(shù)據(jù)管理界面如圖7所示。在查詢界面可實現(xiàn)對數(shù)據(jù)的刪除和數(shù)值修改。
圖7 數(shù)據(jù)查詢界面
PHP語言被譽為“世界上最好的語言”,具有開放性好、跨平臺性好、快捷性、面向過程和面向對象并用、運行高效性等優(yōu)點;ThinkPHP是一個輕量級的PHP中型框架,具有易于上手、有豐富的中文文檔、框架兼容性強、適用于中小項目開發(fā)的優(yōu)點。ThinkPHP框架采用MVC設計模式,這種設計模式利用Controller將Model與View分離,降低它們之間的耦合度,降低系統(tǒng)的復雜度,方便分工協(xié)作,提高開發(fā)效率,增強程序的可維護性和拓展性。整個遠程監(jiān)控網站開發(fā)環(huán)境如表3所示。
表3 網站開發(fā)環(huán)境
本地監(jiān)控系統(tǒng)將監(jiān)控數(shù)據(jù)實時存放在數(shù)據(jù)庫中。為了保證數(shù)據(jù)實時刷新和數(shù)據(jù)庫查詢效率,在數(shù)據(jù)庫中新建一個臨時數(shù)據(jù)表,表中始終保持最新一條監(jiān)控數(shù)據(jù),當寫入最新一條數(shù)據(jù)就將原來數(shù)據(jù)擦除。本地監(jiān)控軟件將機床監(jiān)控數(shù)據(jù)實時寫入數(shù)據(jù)庫,供遠程監(jiān)控網站實時調用,刷新機床數(shù)據(jù),如圖8所示。開發(fā)的網站后臺中Model負責數(shù)據(jù)庫操作,Controller負責數(shù)據(jù)傳輸,View則負責HTML模板渲染。
圖8 數(shù)據(jù)傳遞結構
遠程監(jiān)控系統(tǒng)同時監(jiān)控機床多個數(shù)據(jù),每隔1 s數(shù)據(jù)進行刷新,直接刷新數(shù)據(jù)會導致整個頁面進行刷新,這極大地浪費資源,所以需要使用Ajax網頁開發(fā)技術。Ajax 是一種用于創(chuàng)建快速動態(tài)網頁的技術,無需重新加載整個網頁的情況下,能夠更新部分網頁。通過在后臺與服務器進行少量數(shù)據(jù)交換,Ajax 可以使網頁實現(xiàn)異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。使用Ajax的最大優(yōu)點就是能在不更新整個頁面的前提下維護數(shù)據(jù)。這使得Web應用程序更為迅捷地回應用戶動作,并避免了在網絡上發(fā)送那些沒有改變的信息。圖9所示為網站首頁監(jiān)控界面,機床狀態(tài)數(shù)據(jù)以儀表盤的形式展示出來,其中儀表盤采用eChart前端框架里的組件。
圖9 網站首頁監(jiān)控界面
網站代碼編寫完成后,需要上線發(fā)布,才能供用戶通過網絡登錄,對機床進行監(jiān)控。利用終端模擬軟件Xshell7連接阿里云購買的遠程服務器,進行登錄并連接到主機,將小皮面板下載到阿里云服務器,阿里云服務器安裝面板完成后,可以通過Web端直接管理小皮面板,管理界面如圖10所示。使用Xftp7將本地開發(fā)好的網站文件上傳到阿里云服務器,在小皮面板內配置好網站域名等,網頁即可正常運行。
圖10 Web端小皮面板管理界面
通過對OPC UA協(xié)議和OPC UA服務器的研究,開發(fā)了基于OPC UA協(xié)議的機床監(jiān)控系統(tǒng)。該監(jiān)控系統(tǒng)可以實現(xiàn)對機床內部數(shù)據(jù)的實時監(jiān)控,當監(jiān)控數(shù)據(jù)出現(xiàn)異常時會進行預警;開發(fā)了相應的監(jiān)控數(shù)據(jù)庫,用來存儲監(jiān)控數(shù)據(jù),可以通過該監(jiān)控系統(tǒng)實現(xiàn)對數(shù)據(jù)庫的管理;同時,開發(fā)了相應的遠程監(jiān)控網站,可為相關人員提供遠程監(jiān)控機床的途徑。此研究對提高機床加工智能化、數(shù)據(jù)可視化和網絡化有實際應用意義,同時監(jiān)測到的數(shù)據(jù)可以為機床故障分析提供數(shù)據(jù)支撐。