安 濤,胡 毅,張騰飛,王 帥,郭 安
(1.中國(guó)科學(xué)院大學(xué),北京 100049;2.中國(guó)科學(xué)院 沈陽(yáng)計(jì)算技術(shù)研究所高檔數(shù)控國(guó)家工程研究中心,沈陽(yáng) 110168;3.沈陽(yáng)高精數(shù)控技術(shù)有限公司,沈陽(yáng) 110168)
?
DNC車間管理系統(tǒng)的消息實(shí)時(shí)推送功能的設(shè)計(jì)與實(shí)現(xiàn)*
安濤1,2,胡毅2,3,張騰飛1,2,王帥1,2,郭安1,2
(1.中國(guó)科學(xué)院大學(xué),北京100049;2.中國(guó)科學(xué)院 沈陽(yáng)計(jì)算技術(shù)研究所高檔數(shù)控國(guó)家工程研究中心,沈陽(yáng)110168;3.沈陽(yáng)高精數(shù)控技術(shù)有限公司,沈陽(yáng)110168)
摘要:在工業(yè)控制過(guò)程中,各種數(shù)據(jù)消息的獲取的實(shí)時(shí)性要求越來(lái)越高,推送功能在手機(jī)應(yīng)用開(kāi)發(fā)中顯得越來(lái)越重要。文章在分析了傳統(tǒng)推送功能不足的前提下,在實(shí)現(xiàn)了DNC車間管理系統(tǒng)的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了車床狀態(tài)消息實(shí)時(shí)推送的功能,有效的解決了車間管理系統(tǒng)消息實(shí)時(shí)更新帶來(lái)的客戶端的負(fù)荷問(wèn)題。用戶可以自己選擇要接收的消息,避免了傳統(tǒng)消息推送中過(guò)多的無(wú)效消息,有效的提高了對(duì)車間進(jìn)行監(jiān)控的實(shí)時(shí)性和可靠性,增加用戶的體驗(yàn)感,提供更加人性化的推送。
關(guān)鍵詞:車間管理;消息推送;用戶選擇
0引言
隨著科學(xué)技術(shù)的不斷發(fā)展,給制造產(chǎn)業(yè)帶來(lái)了前所未有的發(fā)展機(jī)遇,同時(shí)也帶來(lái)了嚴(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é)合起來(lái),從而提高市場(chǎng)競(jìng)爭(zhēng)力就顯得很有必要。
從服務(wù)器上獲取消息[2]一般有兩種方式,第一種是Pull方式,客戶端主動(dòng)連接服務(wù)器,查看是否有更新的消息出現(xiàn);第二種是Push方式,當(dāng)服務(wù)器端有消息更新時(shí),主動(dòng)把消息Push到客戶端。在工業(yè)控制過(guò)程中各種數(shù)據(jù)消息的獲取的實(shí)時(shí)性要求很高,以便對(duì)數(shù)據(jù)進(jìn)行有效管理以及及時(shí)應(yīng)對(duì)突發(fā)情況。Pull方式如果想要獲取及時(shí)的消息,就需要保持手機(jī)移動(dòng)端和服務(wù)器的長(zhǎng)鏈接,這種方式極為消耗手機(jī)端的網(wǎng)絡(luò)流量,浪費(fèi)服務(wù)器資源;有時(shí)導(dǎo)致的擁塞可能導(dǎo)致整個(gè)系統(tǒng)獲取失敗,信息反饋不及時(shí)等情況。而Push方式可以很好的避免此類問(wèn)題。Push和Pull兩種方式都能實(shí)現(xiàn)客戶端獲取服務(wù)器的及時(shí)消息,但就效率來(lái)說(shuō),Push明顯好于Pull[3]。
本文將以分布式數(shù)控系統(tǒng)[4](Distributed Numerical Control) 為平臺(tái),詳細(xì)介紹一種基于工業(yè)車間的消息推送機(jī)制,并通過(guò)相應(yīng)的實(shí)驗(yàn)及其數(shù)據(jù)進(jìn)行證明。
1問(wèn)題的提出
隨著移動(dòng)網(wǎng)絡(luò)的應(yīng)用開(kāi)發(fā)掀起的熱潮,推送功能在手機(jī)應(yīng)用開(kāi)發(fā)中顯得越來(lái)越重要。推送技術(shù)(PUSH)[5]是指根據(jù)一定的發(fā)送規(guī)則,依據(jù)相關(guān)的標(biāo)準(zhǔn)和協(xié)議通過(guò)互聯(lián)網(wǎng)向用戶發(fā)送信息的技術(shù)。由于推送的時(shí)間在一定程度上不完全受用戶的控制,可以減少信息過(guò)載問(wèn)題,而其主動(dòng)將信息推送給用戶也可以有效減少信息過(guò)載的問(wèn)題[6]。如今的推送服務(wù)仍有不足,一方面推送的消息多為廣告形式,這些消息對(duì)于多數(shù)用戶來(lái)說(shuō)是無(wú)效的,降低了用戶的體驗(yàn),是一種不夠人性化的推送,這對(duì)于車間管理這種高精確的服務(wù)來(lái)說(shuō)無(wú)疑是難以接受的;另一方面,很多大公司采用的推送方式是電信提供的接口綁定或者自己開(kāi)發(fā)的一套推送機(jī)制,這對(duì)一些小公司或者個(gè)人來(lái)說(shuō)就難以實(shí)現(xiàn)。本文就是在此背景下,結(jié)合現(xiàn)實(shí)的車間狀況,在實(shí)現(xiàn)了基于網(wǎng)絡(luò)的DNC車間管理系統(tǒng)的基礎(chǔ)上,設(shè)計(jì)并實(shí)現(xiàn)了工業(yè)控制過(guò)程中完全開(kāi)源的消息實(shí)時(shí)推送的功能。
2DNC車間管理系統(tǒng)概述
基于網(wǎng)絡(luò)的DNC車間管理系統(tǒng)使得車間管理者可以監(jiān)控整個(gè)車間機(jī)床運(yùn)行的實(shí)時(shí)狀態(tài)[7]。數(shù)據(jù)采集服務(wù)器把實(shí)時(shí)采集到的各種車床狀態(tài)存儲(chǔ)到數(shù)據(jù)庫(kù)服務(wù)器,由于要對(duì)多臺(tái)機(jī)床進(jìn)行數(shù)據(jù)采集,就要滿足整個(gè)模塊的高并發(fā),DNC車間管理系統(tǒng)采用多線程池技術(shù),這將合理控制線程數(shù)目,這樣就減少線程切換時(shí)間,充分利用處理器,提高了系統(tǒng)的并發(fā)性[8-10]。車間管理者通過(guò)認(rèn)證以后登陸到手機(jī)移動(dòng)端的管理系統(tǒng),可以在任何地方、任何時(shí)間掌握整個(gè)車間的運(yùn)行狀態(tài).對(duì)于實(shí)時(shí)的運(yùn)行狀態(tài)的掌握,必須通過(guò)長(zhǎng)鏈接或者管理者自行采取Pull方式,這無(wú)疑會(huì)增加手機(jī)移動(dòng)端的負(fù)擔(dān)。如何獲取車間車床的突發(fā)狀況就會(huì)成為一個(gè)急需解決的問(wèn)題,因此實(shí)時(shí)推送技術(shù)就顯得很重要。DNC系統(tǒng)的結(jié)構(gòu)圖如圖1所示,服務(wù)器通過(guò)直連或者代理服務(wù)器與客戶端進(jìn)行交互;同時(shí)通過(guò)以太網(wǎng)與車間的設(shè)備進(jìn)行數(shù)據(jù)交換,如實(shí)時(shí)數(shù)據(jù)上傳等;移動(dòng)設(shè)備的訪問(wèn)主要通過(guò)無(wú)線網(wǎng)絡(luò)的形式進(jìn)行。
圖1 系統(tǒng)結(jié)構(gòu)圖
3關(guān)鍵技術(shù)的分析和實(shí)現(xiàn)
3.1消息的推送過(guò)程
由于不同的車間管理者要獲取車床實(shí)時(shí)狀態(tài)的側(cè)重點(diǎn)不同,服務(wù)器在主動(dòng)推送消息之前,需要接收從車間管理者發(fā)送來(lái)的狀態(tài)信息,從而決定監(jiān)測(cè)并推送哪些消息。本文在客戶端通過(guò)Socket長(zhǎng)鏈接與服務(wù)器建立通信[11],車間管理者決定需要推送哪些消息,服務(wù)器接收到客戶端傳輸?shù)臄?shù)據(jù)流后發(fā)送一條驗(yàn)證消息,通知客戶端收到消息,客戶端接收到服務(wù)器返回的驗(yàn)證消息后斷開(kāi)鏈接。這種方式基本不會(huì)產(chǎn)生任何負(fù)擔(dān),還可以與服務(wù)器進(jìn)行交互,實(shí)現(xiàn)管理員對(duì)車床狀態(tài)監(jiān)控的的可選擇化,讓系統(tǒng)管理員更好的參與其中。
在push過(guò)程中,服務(wù)器主動(dòng)推送消息到移動(dòng)端,所以服務(wù)器必須要知道把消息推送給誰(shuí),也就是哪些移動(dòng)端可以接收到消息,這就需要服務(wù)器和移動(dòng)終端之間有一個(gè)標(biāo)識(shí)。本文借助于第三方開(kāi)放平臺(tái)提供的一個(gè)獨(dú)一無(wú)二的App Key,這樣每個(gè)運(yùn)行此系統(tǒng)的移動(dòng)終端就有一個(gè)獨(dú)一無(wú)二的標(biāo)識(shí)。部署的服務(wù)器發(fā)送HTTP請(qǐng)求到第三方服務(wù)器的8800端口的Web Service,利用App Key把消息發(fā)送到第三方平臺(tái),第三方平臺(tái)再利用App Key把消息推送到手機(jī)。具體流程如圖2所示,服務(wù)器接收到車間設(shè)備傳輸?shù)膶?shí)時(shí)數(shù)據(jù)后,判定是否有無(wú)線設(shè)備定制,如果有,則將消息首先推送到第三方服務(wù)器。推送到第三方服務(wù)器的消息通過(guò)App Key找到相應(yīng)設(shè)備,并推送給客戶端,由客戶端進(jìn)行展示。
圖2 推送結(jié)構(gòu)示意圖
3.2服務(wù)器的實(shí)現(xiàn)
本文實(shí)現(xiàn)的數(shù)據(jù)推送功能使用的是PHP語(yǔ)言,web服務(wù)器使用的是Apache,數(shù)據(jù)庫(kù)服務(wù)器采用的是MYSQL,并部署在同一臺(tái)機(jī)器上,之所以采用這種模式,也主要是其輕量級(jí)存儲(chǔ)的優(yōu)點(diǎn)。Apache Web服務(wù)器、MYSQL數(shù)據(jù)庫(kù)管理系統(tǒng)和PHP程序模塊是一組常用來(lái)搭建服務(wù)器的開(kāi)源軟件組合,他們本身都是各自獨(dú)立的、開(kāi)源的軟件,在項(xiàng)目開(kāi)發(fā)中投資成本低,運(yùn)行穩(wěn)定。
服務(wù)器端的PHP代碼在后臺(tái)運(yùn)行,時(shí)刻監(jiān)控?cái)?shù)據(jù)庫(kù)數(shù)據(jù)的變化。當(dāng)檢測(cè)到車床信息的狀態(tài)位發(fā)生改變(比如從運(yùn)行變?yōu)楣收?,通過(guò)判斷條件從數(shù)據(jù)庫(kù)讀取數(shù)據(jù)并打包成JSON格式。PHP服務(wù)器通過(guò)封裝HTTP協(xié)議,把App Key作為參數(shù),JSON數(shù)據(jù)作為消息的主體,通過(guò)POST的方式把消息發(fā)送出去,主要代碼如表1所示。
表1 服務(wù)器端主要實(shí)現(xiàn)
3.3客戶端的處理
客戶端是運(yùn)行在手機(jī)移動(dòng)終端的Android程序,主要負(fù)責(zé)顯示車間車床運(yùn)行的狀態(tài)、接收并處理服務(wù)器推送過(guò)來(lái)的消息。在Android的UI線程里不處理耗時(shí)的任務(wù),所以數(shù)據(jù)消息的處理和界面的更新主要是通過(guò)多線程機(jī)制和Handler消息處理機(jī)制來(lái)實(shí)現(xiàn)。多線程機(jī)制主要用來(lái)提高系統(tǒng)的性能,滿足高并發(fā)性,使得處理數(shù)據(jù)的延遲不影響到用戶的體驗(yàn)感。Handler消息處理機(jī)制主要用來(lái)解決UI的刷新的問(wèn)題:后臺(tái)線程把接收到的消息加入到消息隊(duì)列[12]Message Queue,Looper扮演Message Queue與Handler之間的橋梁角色,即循環(huán)器,循環(huán)取出消息隊(duì)列里的消息,并把message發(fā)送到主線程。由于所有的界面更新都發(fā)生在主線程,所以我們定義一個(gè)Handler的子類來(lái)接收Looper所送出的消息并更新用戶界面,實(shí)現(xiàn)車床運(yùn)行狀態(tài)的實(shí)時(shí)更新。整個(gè)Handler消息處理機(jī)制如圖3所示。
圖3 Handler處理消息更新UI
App Key的注冊(cè)是在客戶端在配置文件里進(jìn)行的,當(dāng)自定義消息以Notification的方式發(fā)送到客戶端,在加載界面的時(shí)候初始化的接收消息的接口就會(huì)接收到數(shù)據(jù),通過(guò)后臺(tái)線程處理以后再通過(guò)Handler機(jī)制把更新的狀態(tài)顯示到UI界面方便用戶查看具體信息。
4實(shí)驗(yàn)結(jié)果
本文在車床型號(hào)為CAK3275和YM650、數(shù)控設(shè)備型號(hào)為Faunc 0i和藍(lán)天數(shù)控系統(tǒng)上進(jìn)行了測(cè)試和驗(yàn)證。DNC車間管理系統(tǒng)和消息推送的部分截圖如圖4和圖5 所示。
從圖4左上角我們可以看到服務(wù)器端推送的Notification客戶端已經(jīng)接收到,車間管理員設(shè)置要監(jiān)聽(tīng)的消息為車床發(fā)生故障(error),即服務(wù)器檢測(cè)到車床狀態(tài)由正常變?yōu)楣收蠒r(shí)推送此消息。
客戶端管理員下拉手機(jī)屏幕即可選中此Notification,處理以后顯示出此時(shí)的故障狀態(tài)和車床的IP地址,如圖5所示。
圖4 運(yùn)行結(jié)果
圖5 運(yùn)行結(jié)果
在實(shí)驗(yàn)中,服務(wù)器推送消息時(shí)把此時(shí)的系統(tǒng)時(shí)間寫(xiě)入文本文件,在客戶端接收到推送消息的時(shí)候再把此刻的系統(tǒng)時(shí)間打印出來(lái),最終統(tǒng)計(jì)的時(shí)間如表2所示。
表2 時(shí)間統(tǒng)計(jì)
從表2中可以看出,服務(wù)器端推送的消息在一秒左右就可以在移動(dòng)端實(shí)時(shí)顯示出來(lái),這個(gè)時(shí)間差對(duì)于車間管理員發(fā)現(xiàn)車床故障時(shí)可以接收的,因此此方案是可行的、可靠的。
5結(jié)論與展望
本文在DNC車間管理系統(tǒng)的基礎(chǔ)上,提出并實(shí)現(xiàn)了消息推送功能的解決方案,使得管理者能夠?qū)崟r(shí)監(jiān)控車間的突發(fā)狀況。與傳統(tǒng)車間管理的實(shí)時(shí)更新相比,本文提出的方案不僅解決了客戶端請(qǐng)求服務(wù)器端數(shù)據(jù)時(shí)必須一直保持通信的負(fù)擔(dān),還增加了客戶可選擇化推送信息的功能,使得服務(wù)器端不會(huì)盲目的推送消息,客戶也不會(huì)接收到一些無(wú)效的消息,使得DNC車間管理體統(tǒng)更加人性化、智能化,有效的提高了車間的生產(chǎn)效率。同時(shí),本文設(shè)計(jì)和實(shí)現(xiàn)的的方案是基于完全開(kāi)源的,也為小型企業(yè)和個(gè)人研究提供了一定參考價(jià)值。
下一步,主要研究搭建自己的推送平臺(tái),實(shí)現(xiàn)推送接口,解決開(kāi)源問(wèn)題,進(jìn)一步減小時(shí)間差,使得車間管理員更及時(shí)的獲得消息。
[參考文獻(xiàn)]
[1] 王蘭美, 袁清琦. 21世紀(jì)制造業(yè)面臨的挑戰(zhàn)與對(duì)策[J]. 組合機(jī)床與自動(dòng)化加工技術(shù), 1999 (4):7-9.
[2] 李小智. 基于消息中間件的服務(wù)器推送技術(shù)的應(yīng)用研究[D]. 長(zhǎng)沙:湖南大學(xué), 2010.
[3] 李武銀. PUSH技術(shù)的發(fā)展及應(yīng)用[J]. 廣播電視信息, 2010(6):62-65.
[4] 馮寧. 一種分布式數(shù)控系統(tǒng)的調(diào)度策略研究[J]. 組合機(jī)床與自動(dòng)化加工技術(shù), 2012(10):87-90.
[5] 冼學(xué)輝. 基于Web的實(shí)時(shí)信息推送技術(shù)的研究[D]. 保定:華北電力大學(xué), 2013.
[6] 劉瑜. 信息推送對(duì)于城建信息化的促進(jìn)研究[J]. 中國(guó)信息界, 2012(3):42-43.
[7] 杜柳青, 余永維, 袁冬梅. 基于OPC數(shù)據(jù)的數(shù)控機(jī)床精度狀態(tài)實(shí)時(shí)測(cè)評(píng)方法[J]. 組合機(jī)床與自動(dòng)化加工技術(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長(zhǎng)短連接切換的C/S模型設(shè)計(jì)[J]. 電腦知識(shí)與技術(shù), 2014,10(8):1692-1694,1702.
[12] 馬璐. 應(yīng)用消息隊(duì)列應(yīng)對(duì)大并發(fā)訪問(wèn)的解決方案[J]. 電腦知識(shí)與技術(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
中圖分類號(hào):TH166;TG506
文獻(xiàn)標(biāo)識(shí)碼:A
作者簡(jiǎn)介:安濤(1991—),男,安徽定遠(yuǎn)人,中國(guó)科學(xué)院大學(xué)、中科院沈陽(yáng)計(jì)算技術(shù)研究所碩士研究生,研究方向?yàn)榫W(wǎng)絡(luò)化的數(shù)控系統(tǒng),(E-mail)736307825@qq.com。
*基金項(xiàng)目:“高檔數(shù)控機(jī)床與基礎(chǔ)制造裝備”國(guó)家科技重大專項(xiàng)、基于二次開(kāi)發(fā)平臺(tái)的專用數(shù)控系統(tǒng)開(kāi)發(fā)與應(yīng)用(2013ZX04007-011)
收稿日期:2015-04-23
文章編號(hào):1001-2265(2016)03-0151-03
DOI:10.13462/j.cnki.mmtamt.2016.03.042