基於RCS庫實現跨平台遠程通信
2018-4-16 來源:轉載 作者: 桑冠林,王品,胡毅
摘要:數控係統的信息采集存在處理速(sù)度較慢、區域限製等問題,不能滿足快速多變的需求,因(yīn)此文章提出一種利用RCS庫實現安卓終端與數控係(xì)統間遠程連接和通(tōng)信的(de)方法,安卓終(zhōng)端(duān)成為數控係統信息顯示的載體。該(gāi)方法使用Java版RCS庫,先寫(xiě)配置文件,定義(yì)消息結構,然後使用RCS庫提供的方法建立遠程連接,讀取數控(kòng)係統的消息並顯(xiǎn)示在安卓終端。實驗結果表(biǎo)明了(le)方法的可行性,配合安卓終端的(de)優勢,可以提升(shēng)工作的靈活性。
關鍵詞:數(shù)控係統(tǒng); RCS庫; 安卓終端(duān); 遠程連接和通信
0、引言
數控機床伺服係統的(de)性(xìng)能不僅直(zhí)接影響著機床加工精度,也關乎數控加工能力能否(fǒu)充(chōng)分發揮,但是數控係統(tǒng)的信息采集終端基木停留在處理速度較慢且隻能針對特定係統操作(zuò)的階段。
謝(xiè)書童等提(tí)出基於仿真的數控加(jiā)工多目標參數優化,獲取機床一次完整工(gōng)序的位置數據,對此次參數進行整定和優化,並(bìng)調整至下次生產加工中,因為這種方法依照真實生產數據,故(gù)保(bǎo)證了參數優化的(de)精準性,但實時性較差。田軍鋒(fēng)等提出利用RCS庫實現模塊間的通信,通過網線將數(shù)控機床與(yǔ)PC連接,並實現通信,可(kě)以使(shǐ)得數據顯示的(de)樣式更(gèng)多樣化,但這種方式受(shòu)到(dào)距離的(de)限製(zhì),且PC的攜帶不便降低了便捷性。
為了解決上(shàng)述(shù)方法存在的弊端,本(běn)文提出(chū)一種新的信息采集方式,把移動通信技術嵌入到數控機床中。實現可以在手機上看到數控機床相關(guān)參數。解決(jué)空間局限性,具有通用性(xìng)好、擴展(zhǎn)性強、簡捷便利、處理速度快等特點,符合時代潮流,能更好的滿足用戶需(xū)求。
1、實驗條件
PC一台,Windows 8操作(zuò)係統,已安裝JDK,並裝有集成(chéng)ADT的Eclipse。二星Tab平板一台,安卓程序發布的載體。藍大NC-210數控係(xì)統(tǒng),作為平板遠程連接的對象。
androids是一(yī)種基於Linux的自由及開放源(yuán)代碼的操作係統(tǒng),顯著的開放性(xìng)可以使其擁有更多的開發者,並且擁有豐富的軟(ruǎn)件資(zī)源,一經推出就迅速占領了智能手機的大(dà)部分市場份額,受到了廣泛追捧(pěng)。An-droid平台提供了一個十分寬(kuān)泛、自由的開發環境因此(cǐ)實驗選擇安卓終端作為(wéi)連(lián)接端。選用Java版RCS庫。以Java而向對(duì)象的方法,將程序抽象,以(yǐ)類封裝代碼,易於理解和(hé)使(shǐ)用。
實(shí)驗將藍大係列產品“NC-210”作為(wéi)被連接(jiē)端,采用傳統(tǒng)編(biān)程標準。是在NC-200係統的(de)基礎上的改進型設計,采用了NC-110係統開放性的特點,提高(gāo)了插件之間的(de)互換性,使係統的結構(gòu)更加緊湊,便於調試和維護。NC-210係(xì)統(tǒng)經過了嚴(yán)格的國內外電磁兼容測試和環境試驗、測試。選擇這(zhè)款可靠(kào)性很(hěn)高的(de)產品作為被連接端無(wú)疑能更好的提高實驗的成功率。
2、RCS庫簡介
RCS (Realime control system)庫是由美(měi)國國家(jiā)標準與技術研究院(KIST)研(yán)究開發(fā)的軟件(jiàn)庫,可以用來輔助構建多(duō)模塊的控製係(xì)統軟件。 RCS庫是基於RCS方法(fǎ)論和參考模型結構RMA (Reference model ar-chitecture)發展起來的。它代(dài)碼(mǎ)開放,可自由的(de)使用(yòng)、擴展和裁剪,不僅提供了Java版木,還提供了C++版和(hé)Ada版的源碼。
利用RCS庫構建的控(kòng)製係統軟件往往(wǎng)具有多模(mó)塊、分層次結構(gòu),如圖1所示。每個模塊都有(yǒu)一個命令緩(huǎn)衝區和一個狀態緩衝區。頂層模塊負責接收操作指令,並(bìng)寫命令到命令緩衝區,經過任務分析、分解,把它轉發為具有(yǒu)內部(bù)形式的控製任務信息,傳遞給中間層相關模塊。中間(jiān)層模塊會將任務細分成(chéng)更(gèng)小的任務,分配給下層模塊執行,並協(xié)調它們的動作(zuò)。下(xià)層的模塊還要不斷更新自身的狀態,子模塊通過(guò)狀態通(tōng)道將狀態緩衝區裏的狀態信息反饋給父(fù)模塊。在實際係統中,會有更多(duō)的層次關係,但是它們的原理是一樣。
圖1 RCS多模(mó)塊分層結構
RCS各模塊(進程)之間是利用RCS庫提供的CMS/NML例程,通過共享內存緩衝(chōng)區傳遞信息。CMS和NML負責對數據信息進行(háng)編發和解碼,實現跨平台通信。
CMS (Communication Management System)是RCS軟件中的底層(céng)通信管理係統,提供(gòng)了(le)非常全(quán)麵且統一(yī)的通信接口。CMS提供的方(fāng)法將所有數據類型編碼成與平台無關的格式,這使得RCS進程可以在不(bú)同的操作係(xì)統(tǒng)上(shàng)通信。
NML ( Neutral Message Language,中性消息語言)提供了更高層次封(fēng)裝,簡化了CMS的編程接口。所以開發人員不必了(le)解底層CMS的(de)工作過程,不必處理與特殊平台相關的問題圖。NML提供類似“mail-box”,的(de)通信方式,每(měi)個通信緩衝區可以看作一個郵箱,可以從緩衝區中讀(dú)取消息,或者向某個緩(huǎn)衝區中寫入消息;緩衝區內可以包含一個消(xiāo)息隊列,否則每次寫入信息將覆蓋原有的(de)消息。對於NML通信中的每個消息,被(bèi)稱為一個NMLmsg。 RCS庫中提供了一(yī)個NMLmsg的(de)基類,提供了信息類型定義、信息大小和數據格式轉換等基本功能(néng)。編程(chéng)時通過繼承NMLmsg進而定(dìng)義實際所需的通信數據(jù),需要(yào)注意的是數據(jù)必須在編(biān)譯(yì)時定義而不能在運行時動態生成不同(tóng)的數據(jù)結構。
3、實驗過程
3.1 寫配(pèi)置文件
NML的配置信息不保(bǎo)存(cún)在中心服務器或數據庫中,而保存在文本(běn)文(wén)件裏。要實現安卓終端和數控係統間跨平台遠程連接,必(bì)須保證安卓程序和NC端程(chéng)序使用相同的(de)配置文件。配置文件主要定義兩類信息,緩衝區和線程。
NML緩衝區用於存(cún)儲消息,實現(xiàn)內存共享。在(zài)配置文件中,每個緩衝區定義占用一整(zhěng)列,以B開頭,主要包含的參數有,Name(緩衝區名);Type(緩衝區(qū)類型),包括 SHMEM(共享內存)、GLOBMEM(全局)、LOCMEM(本地),FILEMEM(文本),Hos“主機地址),標識緩衝區所在主機的IP地址,特別要(yào)注意的是遠(yuǎn)程(chéng)訪(fǎng)問時,Host應寫NML Server的地址。
NML進程創建和(hé)連接一個(gè)或多個NML緩衝區(qū),用於讀寫(xiě)消息。每個進程定義占用一整列,以P開(kāi)頭,主(zhǔ)要包含的因素有,Name(進程名);Buffer(進程所連(lián)接(jiē)的緩衝(chōng)區名),匹配緩衝區定義的某列,Type(進程類(lèi)型)等。
本實驗所使用的(de)配置文件如圖2,圖3所(suǒ)示
圖(tú)2 緩衝區配置
圖3 線程配置
需要注意的配置項是,緩衝區(qū)所屬主機的(de)地址,即NMLServer的地址,數控係統必須開啟NMLServer進程,否則無法遠程訪問(wèn)。另外,線程配置中線程類型必須為REMOTE類型,因為RCS庫的官方文檔裏提到:Java applicationsmust use REMOTE。
3. 2 消息定義
建立連接前(qián)需要定義通信消息結(jié)構,先了解Java版RCS庫的幾個重要基類:
通道基類:基類NML是建立NML通道的基礎,通過基類NML派生出(chū)RCS_ STAT_ CHANNEL和RCSCMD_ CHANNEL。它們分別用來創建狀態(tài)通道和命令通道,從而讓關聯模塊之間(jiān)可以傳遞狀態消息和命令消息回。
消息基類:RCS_ STAT_ MSG和RCS_ CMD_ MSGo它們都是通過繼承NMLmsg類派(pài)生出來的,分別是狀態消息基類和命令消息基類。命令消息通常是由父(fù)模塊傳遞給子模塊(kuài);而(ér)狀態消息則是由子模塊傳(chuán)遞給父模塊,並(bìng)帶有子模塊的狀態信息。結合NC-210數控係(xì)統內部的消息(xī)結構,安卓端(duān)消息結構如圖4所示。
圖4 狀態(tài)消息類結構圖
3. 3 建立連接及讀取消息
NML隱藏了繁瑣的進程間通(tōng)信與同步的實現細(xì)節,給(gěi)程序員提供了方(fāng)便的API。在開發代碼中使(shǐ)用NMLConnection)方法建立遠程(chéng)連接,獲得NML通道。並提供了4種封裝好的讀消息(xī)方法和2種(zhǒng)寫消息方法。本實(shí)驗使(shǐ)用(yòng)的是read方法,讀一個NMLmsg的同時更新was_ read,標明為已讀(dú)。遠程讀(dú)操作流程如圖5所示。
圖5 Remote Read Operation
1遠(yuǎn)程(chéng)訪(fǎng)問者(移動終端(duān))發送讀指定緩衝區的請求到NMLServer,這個動(dòng)作由NML自動完成。
(2)下級模塊將狀態消息寫入Server的狀態緩(huǎn)衝(chōng)區。
(3) Server從狀態緩衝區(本地)中讀取狀態消息(xī)。
(4) Server通(tōng)過無線網絡(luò)將請求結果發送給讀(dú)請求者。完成一(yī)次遠程讀操作。
實現安卓終端遠(yuǎn)程讀取數控係統數據消息,需要保證:
(1)硬件層而,雙方IP位於同一局域網段內,數控係統通過網線與(yǔ)無線路由器相連,安卓(zhuó)手機連(lián)接該無線路由的無線信號。
(2)軟件層麵,要保(bǎo)證通信雙方配置文件相同(tóng)且消息結構定(dìng)義的一致。
4、實驗(yàn)結果演示
作者將實驗結果打印在(zài)Eclipse控製台(tái),方便測試(shì)和查看(kàn)。下麵將(jiāng)根據打印結果分析不同的(de)情況及原因。
(1)連接失敗,如圖6所示。
圖6 連接失敗
分析原因:配置文件錯誤,如緩衝區所在主機(NMLServer)地址配置錯(cuò)誤,或(huò)協議和端口號配置錯誤。拋出NMLException,顯(xiǎn)示連接不到指定主機的指定端口。
解決方(fāng)法(fǎ):
①確保通信雙方位(wèi)於(yú)同一局域網網段內。 ②安卓端和數控係統端配置文(wén)件必須保(bǎo)持一(yī)致。 ③確定數控係統端NMLServer已(yǐ)開啟。
(2)讀取消息為(wéi)空,如圖7所示。
圖7 讀不到消息
分析原因:①安卓端和數控係統端消息結構定義不一致。② NMLServer的狀態緩衝區(qū)中沒有消息。
解決方法:①安卓端消息的結構必須和數控係統端(duān)消息結構一(yī)致。②檢查NML進程所讀取的緩衝區裏是否有消(xiāo)息。③最好通信雙方使用的RCS庫具有相同的版本號。
(3)正確的(de)實驗結果,如圖8所示。
圖8 正確的實驗結果
本次實驗分別打印出了軸編程位(wèi)置和軸位置(zhì)實際值。其他位置(zhì)參數,命令消息,NML錯誤(wù)消息的獲得與(yǔ)狀(zhuàng)態(tài)消(xiāo)息獲得類似。
5、結論
本文提出基於RCS庫實現安卓終端與數控係統間遠程連接和通信,通信過(guò)程(chéng)的處理交給(gěi)通信管理係統CMS,直(zhí)接調用中性消息語言NML封裝(zhuāng)好的(de)方法實現(xiàn)。實驗結果證實了安卓終端遠程連接並訪問(wèn)數控係統的可(kě)行性,所以配合移(yí)動終端具備的通用性(xìng)好,計算速度快,攜(xié)帶方便等優勢,將移動通信(xìn)技術嵌入到數(shù)控機床中,必將成為趨勢。遠程機床(chuáng)監(jiān)控,遠程機床(chuáng)操控,遠程機電參數優化,遠程故障排除(chú)等都將在不遠的未來實現。
來源:1.中國科學院大學 2. 中國科學院沈陽計(jì)算技術研究所高(gāo)檔數控國家(jiā)土程研究中(zhōng)心 3.沈陽高精數控技術有限公司
投(tóu)稿(gǎo)箱:
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合(hé)作,歡迎聯係本網編輯部, 郵箱:skjcsc@vip.sina.com
如果您有機床行業、企業相關新聞稿件發表,或進行資訊合(hé)作,歡迎聯係本網編輯部, 郵箱:skjcsc@vip.sina.com
更多相關信息
業界視點
| 更多
行業數據
| 更(gèng)多
- 2024年11月 金屬切削(xuē)機(jī)床產量數據
- 2024年(nián)11月 分地區金屬切削機床產量數(shù)據
- 2024年11月 軸承出口情況
- 2024年11月 基本型乘用車(轎車)產量數據(jù)
- 2024年(nián)11月 新能源汽車產量(liàng)數(shù)據
- 2024年11月 新能源汽車銷(xiāo)量情況
- 2024年10月 新能源汽車產量數(shù)據
- 2024年10月 軸承出(chū)口情況(kuàng)
- 2024年(nián)10月 分地區金屬切削(xuē)機床產量數據
- 2024年10月 金屬切削機床產量數據
- 2024年9月 新能源汽車(chē)銷量情況
- 2024年8月 新能源汽車產量數據
- 2028年8月 基本型乘用車(轎車)產量數據