桑冠林,王 品,胡 毅
(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)
基于RCS庫(kù)實(shí)現(xiàn)跨平臺(tái)遠(yuǎn)程通信*
桑冠林1,2,王品2,3,胡毅3
(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)
摘要:數(shù)控系統(tǒng)的信息采集存在處理速度較慢、區(qū)域限制等問(wèn)題,不能滿(mǎn)足快速多變的需求,因此文章提出一種利用RCS庫(kù)實(shí)現(xiàn)安卓終端與數(shù)控系統(tǒng)間遠(yuǎn)程連接和通信的方法,安卓終端成為數(shù)控系統(tǒng)信息顯示的載體。該方法使用Java版RCS庫(kù),先寫(xiě)配置文件,定義消息結(jié)構(gòu),然后使用RCS庫(kù)提供的方法建立遠(yuǎn)程連接,讀取數(shù)控系統(tǒng)的消息并顯示在安卓終端。實(shí)驗(yàn)結(jié)果表明了方法的可行性,配合安卓終端的優(yōu)勢(shì),可以提升工作的靈活性。
關(guān)鍵詞:數(shù)控系統(tǒng);RCS庫(kù);安卓終端;遠(yuǎn)程連接和通信
0引言
數(shù)控機(jī)床伺服系統(tǒng)的性能不僅直接影響著機(jī)床加工精度,也關(guān)乎數(shù)控加工能力能否充分發(fā)揮,但是數(shù)控系統(tǒng)的信息采集終端基本停留在處理速度較慢且只能針對(duì)特定系統(tǒng)操作的階段。
謝書(shū)童等提出基于仿真的數(shù)控加工多目標(biāo)參數(shù)優(yōu)化[1],獲取機(jī)床一次完整工序的位置數(shù)據(jù),對(duì)此次參數(shù)進(jìn)行整定和優(yōu)化,并調(diào)整至下一次生產(chǎn)加工中,因?yàn)檫@種方法依照真實(shí)生產(chǎn)數(shù)據(jù),故保證了參數(shù)優(yōu)化的精準(zhǔn)性,但實(shí)時(shí)性較差。田軍鋒等提出利用RCS庫(kù)實(shí)現(xiàn)模塊間的通信,通過(guò)網(wǎng)線將數(shù)控機(jī)床與PC連接,并實(shí)現(xiàn)通信,可以使得數(shù)據(jù)顯示的樣式更多樣化[2],但這種方式受到距離的限制,且PC的攜帶不便降低了便捷性。
為了解決上述方法存在的弊端,本文提出一種新的信息采集方式,把移動(dòng)通信技術(shù)嵌入到數(shù)控機(jī)床中。實(shí)現(xiàn)可以在手機(jī)上看到數(shù)控機(jī)床相關(guān)參數(shù)。解決空間局限性,具有通用性好、擴(kuò)展性強(qiáng)、簡(jiǎn)捷便利、處理速度快等特點(diǎn),符合時(shí)代潮流,能更好的滿(mǎn)足用戶(hù)需求。
1實(shí)驗(yàn)條件
PC一臺(tái),Windows 8 操作系統(tǒng),已安裝JDK,并裝有集成ADT的Eclipse。三星Tab平板一臺(tái),安卓程序發(fā)布的載體。藍(lán)天NC-210數(shù)控系統(tǒng),作為平板遠(yuǎn)程連接的對(duì)象。
Android是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),顯著的開(kāi)放性可以使其擁有更多的開(kāi)發(fā)者,并且擁有豐富的軟件資源,一經(jīng)推出就迅速占領(lǐng)了智能手機(jī)的大部分市場(chǎng)份額,受到了廣泛追捧。 Android平臺(tái)提供了一個(gè)十分寬泛、自由的開(kāi)發(fā)環(huán)境[3],因此實(shí)驗(yàn)選擇安卓終端作為連接端。選用Java版RCS庫(kù)。以Java面向?qū)ο蟮姆椒ǎ瑢⒊绦虺橄螅灶?lèi)封裝代碼,易于理解和使用。
實(shí)驗(yàn)將藍(lán)天系列產(chǎn)品“NC-210”作為被連接端,采用傳統(tǒng)編程標(biāo)準(zhǔn)。是在NC-200系統(tǒng)的基礎(chǔ)上的改進(jìn)型設(shè)計(jì),采用了NC-110系統(tǒng)開(kāi)放性的特點(diǎn),提高了插件之間的互換性,使系統(tǒng)的結(jié)構(gòu)更加緊湊,便于調(diào)試和維護(hù)。NC-210系統(tǒng)經(jīng)過(guò)了嚴(yán)格的國(guó)內(nèi)外電磁兼容測(cè)試和環(huán)境試驗(yàn)、測(cè)試。選擇這款可靠性很高的產(chǎn)品作為被連接端無(wú)疑能更好的提高實(shí)驗(yàn)的成功率[4]。
2RCS庫(kù)簡(jiǎn)介
RCS(Real-time control system)庫(kù)是由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)研究開(kāi)發(fā)的軟件庫(kù),可以用來(lái)輔助構(gòu)建多模塊的控制系統(tǒng)軟件[5]。RCS庫(kù)是基于RCS方法論和參考模型結(jié)構(gòu)RMA(Reference model architecture)發(fā)展起來(lái)的。它代碼開(kāi)放,可自由的使用、擴(kuò)展和裁剪,不僅提供了Java版本,還提供了C++版和Ada版的源碼。
利用RCS庫(kù)構(gòu)建的控制系統(tǒng)軟件往往具有多模塊、分層次結(jié)構(gòu),如圖1所示。每個(gè)模塊都有一個(gè)命令緩沖區(qū)和一個(gè)狀態(tài)緩沖區(qū)。頂層模塊負(fù)責(zé)接收操作指令,并寫(xiě)命令到命令緩沖區(qū),經(jīng)過(guò)任務(wù)分析、分解,把它轉(zhuǎn)發(fā)為具有內(nèi)部形式的控制任務(wù)信息,傳遞給中間層相關(guān)模塊。中間層模塊會(huì)將任務(wù)細(xì)分成更小的任務(wù),分配給下層模塊執(zhí)行,并協(xié)調(diào)它們的動(dòng)作。下層的模塊還要不斷更新自身的狀態(tài),子模塊通過(guò)狀態(tài)通道將狀態(tài)緩沖區(qū)里的狀態(tài)信息反饋給父模塊[6]。在實(shí)際系統(tǒng)中,會(huì)有更多的層次關(guān)系,但是它們的原理是一樣。

圖1 RCS多模塊分層結(jié)構(gòu)
RCS各模塊(進(jìn)程)之間是利用RCS庫(kù)提供的CMS/NML例程,通過(guò)共享內(nèi)存緩沖區(qū)傳遞信息。CMS和NML負(fù)責(zé)對(duì)數(shù)據(jù)信息進(jìn)行編發(fā)和解碼,實(shí)現(xiàn)跨平臺(tái)通信[6]。
CMS (Communication Management System)是RCS軟件中的底層通信管理系統(tǒng),提供了非常全面且統(tǒng)一的通信接口。CMS提供的方法將所有數(shù)據(jù)類(lèi)型編碼成與平臺(tái)無(wú)關(guān)的格式,這使得RCS進(jìn)程可以在不同的操作系統(tǒng)上通信。
NML(Neutral Message Language,中性消息語(yǔ)言) 提供了更高層次封裝,簡(jiǎn)化了CMS的編程接口。所以開(kāi)發(fā)人員不必了解底層CMS的工作過(guò)程,不必處理與特殊平臺(tái)相關(guān)的問(wèn)題[7]。NML提供類(lèi)似“mail-box”的通信方式,每個(gè)通信緩沖區(qū)可以看作一個(gè)郵箱,可以從緩沖區(qū)中讀取消息,或者向某個(gè)緩沖區(qū)中寫(xiě)入消息;緩沖區(qū)內(nèi)可以包含一個(gè)消息隊(duì)列,否則每次寫(xiě)入信息將覆蓋原有的消息。對(duì)于NML通信中的每個(gè)消息,被稱(chēng)為一個(gè)NMLmsg。RCS庫(kù)中提供了一個(gè)NMLmsg的基類(lèi),提供了信息類(lèi)型定義、信息大小和數(shù)據(jù)格式轉(zhuǎn)換等基本功能。編程時(shí)通過(guò)繼承NMLmsg進(jìn)而定義實(shí)際所需的通信數(shù)據(jù),需要注意的是數(shù)據(jù)必須在編譯時(shí)定義而不能在運(yùn)行時(shí)動(dòng)態(tài)生成不同的數(shù)據(jù)結(jié)構(gòu)。
3實(shí)驗(yàn)過(guò)程
3.1寫(xiě)配置文件
NML的配置信息不保存在中心服務(wù)器或數(shù)據(jù)庫(kù)中,而保存在文本文件里。要實(shí)現(xiàn)安卓終端和數(shù)控系統(tǒng)間跨平臺(tái)遠(yuǎn)程連接,必須保證安卓程序和NC端程序使用相同的配置文件。配置文件主要定義兩類(lèi)信息,緩沖區(qū)和線程。
NML緩沖區(qū)用于存儲(chǔ)消息,實(shí)現(xiàn)內(nèi)存共享。在配置文件中,每個(gè)緩沖區(qū)定義占用一整列,以B開(kāi)頭,主要包含的參數(shù)有,Name(緩沖區(qū)名);Type(緩沖區(qū)類(lèi)型),包括SHMEM(共享內(nèi)存)、GLOBMEM(全局)、LOCMEM(本地)、FILEMEM(文本),Host(主機(jī)地址),標(biāo)識(shí)緩沖區(qū)所在主機(jī)的IP地址,特別要注意的是遠(yuǎn)程訪問(wèn)時(shí),Host應(yīng)寫(xiě)NML Server的地址。
NML進(jìn)程創(chuàng)建和連接一個(gè)或多個(gè)NML緩沖區(qū),用于讀寫(xiě)消息。每個(gè)進(jìn)程定義占用一整列,以P開(kāi)頭,主要包含的因素有,Name(進(jìn)程名);Buffer(進(jìn)程所連接的緩沖區(qū)名),匹配緩沖區(qū)定義的某列,Type(進(jìn)程類(lèi)型)等。
本實(shí)驗(yàn)所使用的配置文件如圖2、圖3所示。

圖2 緩沖區(qū)配置

圖3 線程配置
需要注意的配置項(xiàng)是,緩沖區(qū)所屬主機(jī)的地址,即NMLServer的地址,數(shù)控系統(tǒng)必須開(kāi)啟NMLServer進(jìn)程,否則無(wú)法遠(yuǎn)程訪問(wèn)。另外,線程配置中線程類(lèi)型必須為REMOTE類(lèi)型,因?yàn)镽CS庫(kù)的官方文檔里提到:Java applications must use REMOTE[8]。
3.2消息定義
建立連接前需要定義通信消息結(jié)構(gòu),先了解Java版RCS庫(kù)的幾個(gè)重要基類(lèi):
通道基類(lèi):基類(lèi)NML是建立NML通道的基礎(chǔ),通過(guò)基類(lèi)NML派生出RCS_STAT_CHANNEL和RCS_CMD_CHANNEL。它們分別用來(lái)創(chuàng)建狀態(tài)通道和命令通道,從而讓關(guān)聯(lián)模塊之間可以傳遞狀態(tài)消息和命令消息[9]。
消息基類(lèi):RCS_STAT_MSG和RCS_CMD_MSG。它們都是通過(guò)繼承NMLmsg類(lèi)派生出來(lái)的,分別是狀態(tài)消息基類(lèi)和命令消息基類(lèi)。命令消息通常是由父模塊傳遞給子模塊;而狀態(tài)消息則是由子模塊傳遞給父模塊,并帶有子模塊的狀態(tài)信息。結(jié)合NC-210數(shù)控系統(tǒng)內(nèi)部的消息結(jié)構(gòu),安卓端消息結(jié)構(gòu)如圖4所示。

圖4 狀態(tài)消息類(lèi)結(jié)構(gòu)圖
3.3建立連接及讀取消息
NML隱藏了繁瑣的進(jìn)程間通信與同步的實(shí)現(xiàn)細(xì)節(jié),給程序員提供了方便的API。在開(kāi)發(fā)代碼中使用NMLConnection()方法建立遠(yuǎn)程連接,獲得NML通道。并提供了4種封裝好的讀消息方法和2種寫(xiě)消息方法。本實(shí)驗(yàn)使用的是 read()方法,讀一個(gè)NMLmsg的同時(shí)更新was_read,標(biāo)明為已讀。遠(yuǎn)程讀操作流程如圖5所示[10]。

圖5 Remote Read Operation
(1)遠(yuǎn)程訪問(wèn)者(移動(dòng)終端)發(fā)送讀指定緩沖區(qū)的請(qǐng)求到NMLServer,這個(gè)動(dòng)作由NML自動(dòng)完成。
(2)下級(jí)模塊將狀態(tài)消息寫(xiě)入Server的狀態(tài)緩沖區(qū)。
(3)Server從狀態(tài)緩沖區(qū)(本地)中讀取狀態(tài)消息。
(4)Server通過(guò)無(wú)線網(wǎng)絡(luò)將請(qǐng)求結(jié)果發(fā)送給讀請(qǐng)求者。完成一次遠(yuǎn)程讀操作。
實(shí)現(xiàn)安卓終端遠(yuǎn)程讀取數(shù)控系統(tǒng)數(shù)據(jù)消息,需要保證:
(1)硬件層面,雙方IP位于同一局域網(wǎng)段內(nèi),數(shù)控系統(tǒng)通過(guò)網(wǎng)線與無(wú)線路由器相連,安卓手機(jī)連接該無(wú)線路由的無(wú)線信號(hào)。
(2)軟件層面,要保證通信雙方配置文件相同且消息結(jié)構(gòu)定義的一致。
4實(shí)驗(yàn)結(jié)果演示
作者將實(shí)驗(yàn)結(jié)果打印在Eclipse控制臺(tái),方便測(cè)試和查看。下面將根據(jù)打印結(jié)果分析不同的情況及原因。
(1)連接失敗,如圖6所示。

圖6 連接失敗
分析原因:配置文件錯(cuò)誤,如緩沖區(qū)所在主機(jī)(NMLServer)地址配置錯(cuò)誤,或協(xié)議和端口號(hào)配置錯(cuò)誤。拋出NMLException,顯示連接不到指定主機(jī)的指定端口。
解決方法:①確保通信雙方位于同一局域網(wǎng)網(wǎng)段內(nèi)。②安卓端和數(shù)控系統(tǒng)端配置文件必須保持一致。③確定數(shù)控系統(tǒng)端NMLServer已開(kāi)啟。
(2)讀取消息為空,如圖7所示。

圖7 讀不到消息
分析原因:①安卓端和數(shù)控系統(tǒng)端消息結(jié)構(gòu)定義不一致。② NMLServer的狀態(tài)緩沖區(qū)中沒(méi)有消息。
解決方法:①安卓端消息的結(jié)構(gòu)必須和數(shù)控系統(tǒng)端消息結(jié)構(gòu)一致。②檢查NML進(jìn)程所讀取的緩沖區(qū)里是否有消息。③最好通信雙方使用的RCS 庫(kù)具有相同的版本號(hào)。
(3)正確的實(shí)驗(yàn)結(jié)果,如圖8所示。

圖8 正確的實(shí)驗(yàn)結(jié)果
本次實(shí)驗(yàn)分別打印出了軸編程位置和軸位置實(shí)際值。其他位置參數(shù),命令消息,NML錯(cuò)誤消息的獲得與狀態(tài)消息獲得類(lèi)似。
5結(jié)論
本文提出基于RCS庫(kù)實(shí)現(xiàn)安卓終端與數(shù)控系統(tǒng)間遠(yuǎn)程連接和通信,通信過(guò)程的處理交給通信管理系統(tǒng)CMS,直接調(diào)用中性消息語(yǔ)言NML封裝好的方法實(shí)現(xiàn)。實(shí)驗(yàn)結(jié)果證實(shí)了安卓終端遠(yuǎn)程連接并訪問(wèn)數(shù)控系統(tǒng)的可行性,所以配合移動(dòng)終端具備的通用性好,計(jì)算速度快,攜帶方便等優(yōu)勢(shì),將移動(dòng)通信技術(shù)嵌入到數(shù)控機(jī)床中,必將成為趨勢(shì)。遠(yuǎn)程機(jī)床監(jiān)控,遠(yuǎn)程機(jī)床操控,遠(yuǎn)程機(jī)電參數(shù)優(yōu)化,遠(yuǎn)程故障排除等都將在不遠(yuǎn)的未來(lái)實(shí)現(xiàn)。
[參考文獻(xiàn)]
[1] 謝書(shū)童,郭隱彪. 雙刀并行數(shù)控車(chē)削中的切削參數(shù)優(yōu)化方法 [J]. 中國(guó)機(jī)械工程第卷期,2014, 25(14):1941-1946.
[2] 田軍鋒,馬躍,吳文江,等.利用RCS庫(kù)實(shí)現(xiàn)數(shù)控系統(tǒng)模塊間的通信 [J].微計(jì)算機(jī)信息,2009,25(7):121-122.
[3] 李培林. 安卓系統(tǒng)的應(yīng)用及發(fā)展趨勢(shì)展望 [J]. 計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2012(18):160-16.
[4] 黃艷,于東,吳文江,等.基于藍(lán)天數(shù)控系統(tǒng)的STEP-NC控制器設(shè)計(jì)[J].制造技術(shù)與機(jī)床,2007(12):24-28.
[5] 梁紅波,裴海龍,楊春.利用RCS開(kāi)發(fā)工具構(gòu)建實(shí)時(shí)控制系統(tǒng)[J].福建電腦,2014(5):180-182.
[6] 郭秀萍,張?jiān)粕?基于RCS模塊的梯階分布控制系統(tǒng) [J].計(jì)算機(jī)應(yīng)用,2003,23(3):67-69.
[6] GaziV, MooreM, Passino K M. Real-time control system soft-ware for intelligent system developmen:t Experiments and an edu-cational program [A]. Proceedingsof the 1998 IEEE Internation-alSymposium on IntelligentControl [C]. Piscataway, NJ, USA:IEEE, 1998,102-107.
[7] 梁紅波. 基于RCS庫(kù)構(gòu)建分布式實(shí)時(shí)控制系統(tǒng) [J] .信息與控制,2011,35(5):581-583.
[8] 麥向習(xí), 裴海龍. 利用RCS庫(kù)構(gòu)建控制系統(tǒng)軟件 [J] .微計(jì)算機(jī)信息,2005,21(10):23-25.
[9] 李校慧,于東,胡毅,等.數(shù)控系統(tǒng)網(wǎng)絡(luò)通信平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn) [J].計(jì)算機(jī)工程與設(shè)計(jì),2013,34(4):1141-1146.
(編輯趙蓉)
Remote Communication Based on RCS Library
SANG Guan-lin1,2,WANG Pin2,3,HU Yi3
(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:The information collection of numerical control system has the problems such as slow speed of processing and regional restriction,this has been unable to meet the rapidly changing demand.In this paper,a method of remote connection and communication between the Android terminal and the numerical control system was proposed based on RCS library,which makes the terminal becomes the carrier of the information display of the numerical control system.The method is based on the Java version of the RCS library,firstly, the configuration file was written and the message structure was defined,then the RCS library was used to provide remote connectivity,and the message can be recognized with the position data of the NC displayed in the Android terminal.The feasibility of the proposed method was showed by experimental results,the flexibility of work can be enhanced with the advantages of mobile terminals.
Key words:numerical control system;RCS library;android terminal;remote connection and communication
文章編號(hào):1001-2265(2016)06-0088-04
DOI:10.13462/j.cnki.mmtamt.2016.06.023
收稿日期:2015-07-28;修回日期:2015-08-18
*基金項(xiàng)目:“高檔數(shù)控機(jī)床與基礎(chǔ)制造裝備”國(guó)家科技重大專(zhuān)項(xiàng) 基于二次開(kāi)發(fā)平臺(tái)的專(zhuān)用數(shù)控系統(tǒng)開(kāi)發(fā)與應(yīng)用(2013ZX04007-011)
作者簡(jiǎn)介:桑冠林(1990—),男,河南安陽(yáng)人,中國(guó)科學(xué)院大學(xué)碩士研究生,研究方向?yàn)橛?jì)算機(jī)軟件與理論,(E-mail)sangguanlin@sina.com。
中圖分類(lèi)號(hào):TH165;TG659
文獻(xiàn)標(biāo)識(shí)碼:A