安 濤,胡 毅,張騰飛,王 帥,郭 安
(1.中國科學(xué)院大學(xué),北京 100049;2.中國科學(xué)院 沈陽計算技術(shù)研究所高檔數(shù)控國家工程研究中心,沈陽 110168;3.沈陽高精數(shù)控技術(shù)有限公司,沈陽 110168)
?
DNC車間管理系統(tǒng)的消息實時推送功能的設(shè)計與實現(xiàn)*
安濤1,2,胡毅2,3,張騰飛1,2,王帥1,2,郭安1,2
(1.中國科學(xué)院大學(xué),北京100049;2.中國科學(xué)院 沈陽計算技術(shù)研究所高檔數(shù)控國家工程研究中心,沈陽110168;3.沈陽高精數(shù)控技術(shù)有限公司,沈陽110168)
摘要:在工業(yè)控制過程中,各種數(shù)據(jù)消息的獲取的實時性要求越來越高,推送功能在手機(jī)應(yīng)用開發(fā)中顯得越來越重要。文章在分析了傳統(tǒng)推送功能不足的前提下,在實現(xiàn)了DNC車間管理系統(tǒng)的基礎(chǔ)上,設(shè)計并實現(xiàn)了車床狀態(tài)消息實時推送的功能,有效的解決了車間管理系統(tǒng)消息實時更新帶來的客戶端的負(fù)荷問題。用戶可以自己選擇要接收的消息,避免了傳統(tǒng)消息推送中過多的無效消息,有效的提高了對車間進(jìn)行監(jiān)控的實時性和可靠性,增加用戶的體驗感,提供更加人性化的推送。
關(guān)鍵詞:車間管理;消息推送;用戶選擇
0引言
隨著科學(xué)技術(shù)的不斷發(fā)展,給制造產(chǎn)業(yè)帶來了前所未有的發(fā)展機(jī)遇,同時也帶來了嚴(yán)峻的挑戰(zhàn)[1]。傳統(tǒng)的車間管理模式已經(jīng)不適應(yīng)現(xiàn)代制造技術(shù)的快速發(fā)展,因此將傳統(tǒng)的車間管理與現(xiàn)代網(wǎng)絡(luò)技術(shù)和管理技術(shù)等結(jié)合起來,從而提高市場競爭力就顯得很有必要。
從服務(wù)器上獲取消息[2]一般有兩種方式,第一種是Pull方式,客戶端主動連接服務(wù)器,查看是否有更新的消息出現(xiàn);第二種是Push方式,當(dāng)服務(wù)器端有消息更新時,主動把消息Push到客戶端。在工業(yè)控制過程中各種數(shù)據(jù)消息的獲取的實時性要求很高,以便對數(shù)據(jù)進(jìn)行有效管理以及及時應(yīng)對突發(fā)情況。Pull方式如果想要獲取及時的消息,就需要保持手機(jī)移動端和服務(wù)器的長鏈接,這種方式極為消耗手機(jī)端的網(wǎng)絡(luò)流量,浪費服務(wù)器資源;有時導(dǎo)致的擁塞可能導(dǎo)致整個系統(tǒng)獲取失敗,信息反饋不及時等情況。而Push方式可以很好的避免此類問題。Push和Pull兩種方式都能實現(xiàn)客戶端獲取服務(wù)器的及時消息,但就效率來說,Push明顯好于Pull[3]。
本文將以分布式數(shù)控系統(tǒng)[4](Distributed Numerical Control) 為平臺,詳細(xì)介紹一種基于工業(yè)車間的消息推送機(jī)制,并通過相應(yīng)的實驗及其數(shù)據(jù)進(jìn)行證明。
1問題的提出
隨著移動網(wǎng)絡(luò)的應(yīng)用開發(fā)掀起的熱潮,推送功能在手機(jī)應(yīng)用開發(fā)中顯得越來越重要。推送技術(shù)(PUSH)[5]是指根據(jù)一定的發(fā)送規(guī)則,依據(jù)相關(guān)的標(biāo)準(zhǔn)和協(xié)議通過互聯(lián)網(wǎng)向用戶發(fā)送信息的技術(shù)。由于推送的時間在一定程度上不完全受用戶的控制,可以減少信息過載問題,而其主動將信息推送給用戶也可以有效減少信息過載的問題[6]。如今的推送服務(wù)仍有不足,一方面推送的消息多為廣告形式,這些消息對于多數(shù)用戶來說是無效的,降低了用戶的體驗,是一種不夠人性化的推送,這對于車間管理這種高精確的服務(wù)來說無疑是難以接受的;另一方面,很多大公司采用的推送方式是電信提供的接口綁定或者自己開發(fā)的一套推送機(jī)制,這對一些小公司或者個人來說就難以實現(xiàn)。本文就是在此背景下,結(jié)合現(xiàn)實的車間狀況,在實現(xiàn)了基于網(wǎng)絡(luò)的DNC車間管理系統(tǒng)的基礎(chǔ)上,設(shè)計并實現(xiàn)了工業(yè)控制過程中完全開源的消息實時推送的功能。
2DNC車間管理系統(tǒng)概述
基于網(wǎng)絡(luò)的DNC車間管理系統(tǒng)使得車間管理者可以監(jiān)控整個車間機(jī)床運行的實時狀態(tài)[7]。數(shù)據(jù)采集服務(wù)器把實時采集到的各種車床狀態(tài)存儲到數(shù)據(jù)庫服務(wù)器,由于要對多臺機(jī)床進(jìn)行數(shù)據(jù)采集,就要滿足整個模塊的高并發(fā),DNC車間管理系統(tǒng)采用多線程池技術(shù),這將合理控制線程數(shù)目,這樣就減少線程切換時間,充分利用處理器,提高了系統(tǒng)的并發(fā)性[8-10]。車間管理者通過認(rèn)證以后登陸到手機(jī)移動端的管理系統(tǒng),可以在任何地方、任何時間掌握整個車間的運行狀態(tài).對于實時的運行狀態(tài)的掌握,必須通過長鏈接或者管理者自行采取Pull方式,這無疑會增加手機(jī)移動端的負(fù)擔(dān)。如何獲取車間車床的突發(fā)狀況就會成為一個急需解決的問題,因此實時推送技術(shù)就顯得很重要。DNC系統(tǒng)的結(jié)構(gòu)圖如圖1所示,服務(wù)器通過直連或者代理服務(wù)器與客戶端進(jìn)行交互;同時通過以太網(wǎng)與車間的設(shè)備進(jìn)行數(shù)據(jù)交換,如實時數(shù)據(jù)上傳等;移動設(shè)備的訪問主要通過無線網(wǎng)絡(luò)的形式進(jìn)行。
圖1 系統(tǒng)結(jié)構(gòu)圖
3關(guān)鍵技術(shù)的分析和實現(xiàn)
3.1消息的推送過程
由于不同的車間管理者要獲取車床實時狀態(tài)的側(cè)重點不同,服務(wù)器在主動推送消息之前,需要接收從車間管理者發(fā)送來的狀態(tài)信息,從而決定監(jiān)測并推送哪些消息。本文在客戶端通過Socket長鏈接與服務(wù)器建立通信[11],車間管理者決定需要推送哪些消息,服務(wù)器接收到客戶端傳輸?shù)臄?shù)據(jù)流后發(fā)送一條驗證消息,通知客戶端收到消息,客戶端接收到服務(wù)器返回的驗證消息后斷開鏈接。這種方式基本不會產(chǎn)生任何負(fù)擔(dān),還可以與服務(wù)器進(jìn)行交互,實現(xiàn)管理員對車床狀態(tài)監(jiān)控的的可選擇化,讓系統(tǒng)管理員更好的參與其中。
在push過程中,服務(wù)器主動推送消息到移動端,所以服務(wù)器必須要知道把消息推送給誰,也就是哪些移動端可以接收到消息,這就需要服務(wù)器和移動終端之間有一個標(biāo)識。本文借助于第三方開放平臺提供的一個獨一無二的App Key,這樣每個運行此系統(tǒng)的移動終端就有一個獨一無二的標(biāo)識。部署的服務(wù)器發(fā)送HTTP請求到第三方服務(wù)器的8800端口的Web Service,利用App Key把消息發(fā)送到第三方平臺,第三方平臺再利用App Key把消息推送到手機(jī)。具體流程如圖2所示,服務(wù)器接收到車間設(shè)備傳輸?shù)膶崟r數(shù)據(jù)后,判定是否有無線設(shè)備定制,如果有,則將消息首先推送到第三方服務(wù)器。推送到第三方服務(wù)器的消息通過App Key找到相應(yīng)設(shè)備,并推送給客戶端,由客戶端進(jìn)行展示。
圖2 推送結(jié)構(gòu)示意圖
3.2服務(wù)器的實現(xiàn)
本文實現(xiàn)的數(shù)據(jù)推送功能使用的是PHP語言,web服務(wù)器使用的是Apache,數(shù)據(jù)庫服務(wù)器采用的是MYSQL,并部署在同一臺機(jī)器上,之所以采用這種模式,也主要是其輕量級存儲的優(yōu)點。Apache Web服務(wù)器、MYSQL數(shù)據(jù)庫管理系統(tǒng)和PHP程序模塊是一組常用來搭建服務(wù)器的開源軟件組合,他們本身都是各自獨立的、開源的軟件,在項目開發(fā)中投資成本低,運行穩(wěn)定。
服務(wù)器端的PHP代碼在后臺運行,時刻監(jiān)控數(shù)據(jù)庫數(shù)據(jù)的變化。當(dāng)檢測到車床信息的狀態(tài)位發(fā)生改變(比如從運行變?yōu)楣收?,通過判斷條件從數(shù)據(jù)庫讀取數(shù)據(jù)并打包成JSON格式。PHP服務(wù)器通過封裝HTTP協(xié)議,把App Key作為參數(shù),JSON數(shù)據(jù)作為消息的主體,通過POST的方式把消息發(fā)送出去,主要代碼如表1所示。
表1 服務(wù)器端主要實現(xiàn)
3.3客戶端的處理
客戶端是運行在手機(jī)移動終端的Android程序,主要負(fù)責(zé)顯示車間車床運行的狀態(tài)、接收并處理服務(wù)器推送過來的消息。在Android的UI線程里不處理耗時的任務(wù),所以數(shù)據(jù)消息的處理和界面的更新主要是通過多線程機(jī)制和Handler消息處理機(jī)制來實現(xiàn)。多線程機(jī)制主要用來提高系統(tǒng)的性能,滿足高并發(fā)性,使得處理數(shù)據(jù)的延遲不影響到用戶的體驗感。Handler消息處理機(jī)制主要用來解決UI的刷新的問題:后臺線程把接收到的消息加入到消息隊列[12]Message Queue,Looper扮演Message Queue與Handler之間的橋梁角色,即循環(huán)器,循環(huán)取出消息隊列里的消息,并把message發(fā)送到主線程。由于所有的界面更新都發(fā)生在主線程,所以我們定義一個Handler的子類來接收Looper所送出的消息并更新用戶界面,實現(xiàn)車床運行狀態(tài)的實時更新。整個Handler消息處理機(jī)制如圖3所示。
圖3 Handler處理消息更新UI
App Key的注冊是在客戶端在配置文件里進(jìn)行的,當(dāng)自定義消息以Notification的方式發(fā)送到客戶端,在加載界面的時候初始化的接收消息的接口就會接收到數(shù)據(jù),通過后臺線程處理以后再通過Handler機(jī)制把更新的狀態(tài)顯示到UI界面方便用戶查看具體信息。
4實驗結(jié)果
本文在車床型號為CAK3275和YM650、數(shù)控設(shè)備型號為Faunc 0i和藍(lán)天數(shù)控系統(tǒng)上進(jìn)行了測試和驗證。DNC車間管理系統(tǒng)和消息推送的部分截圖如圖4和圖5 所示。
從圖4左上角我們可以看到服務(wù)器端推送的Notification客戶端已經(jīng)接收到,車間管理員設(shè)置要監(jiān)聽的消息為車床發(fā)生故障(error),即服務(wù)器檢測到車床狀態(tài)由正常變?yōu)楣收蠒r推送此消息。
客戶端管理員下拉手機(jī)屏幕即可選中此Notification,處理以后顯示出此時的故障狀態(tài)和車床的IP地址,如圖5所示。
圖4 運行結(jié)果
圖5 運行結(jié)果
在實驗中,服務(wù)器推送消息時把此時的系統(tǒng)時間寫入文本文件,在客戶端接收到推送消息的時候再把此刻的系統(tǒng)時間打印出來,最終統(tǒng)計的時間如表2所示。
表2 時間統(tǒng)計
從表2中可以看出,服務(wù)器端推送的消息在一秒左右就可以在移動端實時顯示出來,這個時間差對于車間管理員發(fā)現(xiàn)車床故障時可以接收的,因此此方案是可行的、可靠的。
5結(jié)論與展望
本文在DNC車間管理系統(tǒng)的基礎(chǔ)上,提出并實現(xiàn)了消息推送功能的解決方案,使得管理者能夠?qū)崟r監(jiān)控車間的突發(fā)狀況。與傳統(tǒng)車間管理的實時更新相比,本文提出的方案不僅解決了客戶端請求服務(wù)器端數(shù)據(jù)時必須一直保持通信的負(fù)擔(dān),還增加了客戶可選擇化推送信息的功能,使得服務(wù)器端不會盲目的推送消息,客戶也不會接收到一些無效的消息,使得DNC車間管理體統(tǒng)更加人性化、智能化,有效的提高了車間的生產(chǎn)效率。同時,本文設(shè)計和實現(xiàn)的的方案是基于完全開源的,也為小型企業(yè)和個人研究提供了一定參考價值。
下一步,主要研究搭建自己的推送平臺,實現(xiàn)推送接口,解決開源問題,進(jìn)一步減小時間差,使得車間管理員更及時的獲得消息。
[參考文獻(xiàn)]
[1] 王蘭美, 袁清琦. 21世紀(jì)制造業(yè)面臨的挑戰(zhàn)與對策[J]. 組合機(jī)床與自動化加工技術(shù), 1999 (4):7-9.
[2] 李小智. 基于消息中間件的服務(wù)器推送技術(shù)的應(yīng)用研究[D]. 長沙:湖南大學(xué), 2010.
[3] 李武銀. PUSH技術(shù)的發(fā)展及應(yīng)用[J]. 廣播電視信息, 2010(6):62-65.
[4] 馮寧. 一種分布式數(shù)控系統(tǒng)的調(diào)度策略研究[J]. 組合機(jī)床與自動化加工技術(shù), 2012(10):87-90.
[5] 冼學(xué)輝. 基于Web的實時信息推送技術(shù)的研究[D]. 保定:華北電力大學(xué), 2013.
[6] 劉瑜. 信息推送對于城建信息化的促進(jìn)研究[J]. 中國信息界, 2012(3):42-43.
[7] 杜柳青, 余永維, 袁冬梅. 基于OPC數(shù)據(jù)的數(shù)控機(jī)床精度狀態(tài)實時測評方法[J]. 組合機(jī)床與自動化加工技術(shù), 2014 (6):46-50.
[8] [San-ping LIU.Multi-thread data collection technology of detection system [J].Electric Locomotives & Mass Transit Vehicles,2003(2):012.
[9] Song H, Kim B W, Mukherjee B. Multi-thread polling: A dynamic bandwidth distribution scheme in long-reach PON[J]. Selected Areas in Communications, IEEE Journal on, 2009, 27(2): 134-142.
[10] Sundell H, Tsigas P. Fast and lock-free concurrent priority queues for multi-thread systems[C]//Parallel and Distributed Processing Symposium, 2003. Proceedings. International. IEEE, 2003.
[11] 陳艷軍, 溫占考, 周勝群. 基于Socket長短連接切換的C/S模型設(shè)計[J]. 電腦知識與技術(shù), 2014,10(8):1692-1694,1702.
[12] 馬璐. 應(yīng)用消息隊列應(yīng)對大并發(fā)訪問的解決方案[J]. 電腦知識與技術(shù),2013,9 (2):412-414,417.
(編輯李秀敏)
Design and Implementation of the Message Push Function of Real-time Based on DNC Workshop System
AN Tao1,2,HU Yi2,3,ZHANG Teng-fei1,2,WANG Shuai1,2,GUO An1,2
(1. University of Chinese Academy of Sciences, Beijing 100049,China;2. National Engineering Research Center For High-End CNC, Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168,China)
Abstract:In the process of industrial control ,the acquisition of a variety of real-time messages are increasingly demanding, the push mechanism are more important on mobile application development. As for solving the overload problem of data update at job shop manage systems, we design and implement a data transfer system ,which mainly depend on a message push mechanism, based on the Distributed Numerical Control(DNC) system in the analysis of traditional push mechanism’ insufficient. In our system, users only choose the messages that need to send instead of every information which may contain some useless information, aim to improve the real-time performance and reliability, cater the user’s experience, finally make the message transmission much more humility.
Key words:workshop manager;message push;users select
中圖分類號:TH166;TG506
文獻(xiàn)標(biāo)識碼:A
作者簡介:安濤(1991—),男,安徽定遠(yuǎn)人,中國科學(xué)院大學(xué)、中科院沈陽計算技術(shù)研究所碩士研究生,研究方向為網(wǎng)絡(luò)化的數(shù)控系統(tǒng),(E-mail)736307825@qq.com。
*基金項目:“高檔數(shù)控機(jī)床與基礎(chǔ)制造裝備”國家科技重大專項、基于二次開發(fā)平臺的專用數(shù)控系統(tǒng)開發(fā)與應(yīng)用(2013ZX04007-011)
收稿日期:2015-04-23
文章編號:1001-2265(2016)03-0151-03
DOI:10.13462/j.cnki.mmtamt.2016.03.042