为机床工具企业提供深度市场分析                     

用户名:   密码:         免费注册  |   申请VIP  |  

English  |   German  |   Japanese  |   添加收藏  |  
广州数控
数控系统

车床 铣床 钻床 数控系统 加工中心 锻压机床 刨插拉床 螺纹加工机床 齿轮加工机床
磨床 镗床 刀具 功能部件 配件附件 检验测量 机床电器 特种加工 机器人

数控系统

电工电力 工程机械 航空航天 汽车 模具
仪器仪表 通用机械 轨道交通 船舶

搜索
热门关键字:

数控机床

 | 数控车床 | 数控系统 | 滚齿机 | 数控铣床 | 铣刀 | 主轴 | 立式加工中心 | 机器人
您现在的位置:数控系统网> 技术前沿>基于RCS库实现跨平台远程通信
基于RCS库实现跨平台远程通信
2018-4-16  来源:转载  作者: 桑冠林,王品,胡毅

      摘要:数控系统的信息采集存在处理速度较慢、区域限制等问题,不能满足快速多变的需求,因此文章提出一种利用RCS库实现安卓终端与数控系统间远程连接和通信的方法,安卓终端成为数控系统信息显示的载体。该方法使用Java版RCS库,先写配置文件,定义消息结构,然后使用RCS库提供的方法建立远程连接,读取数控系统的消息并显示在安卓终端。实验结果表明了方法的可行性,配合安卓终端的优势,可以提升工作的灵活性。

      关键词:数控系统; RCS库; 安卓终端; 远程连接和通信

      0、引言

      数控机床伺服系统的性能不仅直接影响着机床加工精度,也关乎数控加工能力能否充分发挥,但是数控系统的信息采集终端基木停留在处理速度较慢且只能针对特定系统操作的阶段。
 
      谢书童等提出基于仿真的数控加工多目标参数优化,获取机床一次完整工序的位置数据,对此次参数进行整定和优化,并调整至下次生产加工中,因为这种方法依照真实生产数据,故保证了参数优化的精准性,但实时性较差。田军锋等提出利用RCS库实现模块间的通信,通过网线将数控机床与PC连接,并实现通信,可以使得数据显示的样式更多样化,但这种方式受到距离的限制,且PC的携带不便降低了便捷性。

      为了解决上述方法存在的弊端,本文提出一种新的信息采集方式,把移动通信技术嵌入到数控机床中。实现可以在手机上看到数控机床相关参数。解决空间局限性,具有通用性好、扩展性强、简捷便利、处理速度快等特点,符合时代潮流,能更好的满足用户需求。

      1、实验条件

      PC一台,Windows 8操作系统,已安装JDK,并装有集成ADT的Eclipse。二星Tab平板一台,安卓程序发布的载体。蓝大NC-210数控系统,作为平板远程连接的对象。

      Android是一种基于Linux的自由及开放源代码的操作系统,显著的开放性可以使其拥有更多的开发者,并且拥有丰富的软件资源,一经推出就迅速占领了智能手机的大部分市场份额,受到了广泛追捧。An-droid平台提供了一个十分宽泛、自由的开发环境因此实验选择安卓终端作为连接端。选用Java版RCS库。以Java而向对象的方法,将程序抽象,以类封装代码,易于理解和使用。

      实验将蓝大系列产品“NC-210”作为被连接端,采用传统编程标准。是在NC-200系统的基础上的改进型设计,采用了NC-110系统开放性的特点,提高了插件之间的互换性,使系统的结构更加紧凑,便于调试和维护。NC-210系统经过了严格的国内外电磁兼容测试和环境试验、测试。选择这款可靠性很高的产品作为被连接端无疑能更好的提高实验的成功率。

      2、RCS库简介

      RCS (Realime control system)库是由美国国家标准与技术研究院(KIST)研究开发的软件库,可以用来辅助构建多模块的控制系统软件。 RCS库是基于RCS方法论和参考模型结构RMA (Reference model ar-chitecture)发展起来的。它代码开放,可自由的使用、扩展和裁剪,不仅提供了Java版木,还提供了C++版和Ada版的源码。

      利用RCS库构建的控制系统软件往往具有多模块、分层次结构,如图1所示。每个模块都有一个命令缓冲区和一个状态缓冲区。顶层模块负责接收操作指令,并写命令到命令缓冲区,经过任务分析、分解,把它转发为具有内部形式的控制任务信息,传递给中间层相关模块。中间层模块会将任务细分成更小的任务,分配给下层模块执行,并协调它们的动作。下层的模块还要不断更新自身的状态,子模块通过状态通道将状态缓冲区里的状态信息反馈给父模块。在实际系统中,会有更多的层次关系,但是它们的原理是一样。
 
 
 
图1  RCS多模块分层结构

      RCS各模块(进程)之间是利用RCS库提供的CMS/NML例程,通过共享内存缓冲区传递信息。CMS和NML负责对数据信息进行编发和解码,实现跨平台通信。

      CMS  (Communication Management System)是RCS软件中的底层通信管理系统,提供了非常全面且统一的通信接口。CMS提供的方法将所有数据类型编码成与平台无关的格式,这使得RCS进程可以在不同的操作系统上通信。

      NML ( Neutral Message Language,中性消息语言)提供了更高层次封装,简化了CMS的编程接口。所以开发人员不必了解底层CMS的工作过程,不必处理与特殊平台相关的问题图。NML提供类似“mail-box”,的通信方式,每个通信缓冲区可以看作一个邮箱,可以从缓冲区中读取消息,或者向某个缓冲区中写入消息;缓冲区内可以包含一个消息队列,否则每次写入信息将覆盖原有的消息。对于NML通信中的每个消息,被称为一个NMLmsg。 RCS库中提供了一个NMLmsg的基类,提供了信息类型定义、信息大小和数据格式转换等基本功能。编程时通过继承NMLmsg进而定义实际所需的通信数据,需要注意的是数据必须在编译时定义而不能在运行时动态生成不同的数据结构。

      3、实验过程

      3.1 写配置文件

      NML的配置信息不保存在中心服务器或数据库中,而保存在文本文件里。要实现安卓终端和数控系统间跨平台远程连接,必须保证安卓程序和NC端程序使用相同的配置文件。配置文件主要定义两类信息,缓冲区和线程。

      NML缓冲区用于存储消息,实现内存共享。在配置文件中,每个缓冲区定义占用一整列,以B开头,主要包含的参数有,Name(缓冲区名);Type(缓冲区类型),包括 SHMEM(共享内存)、GLOBMEM(全局)、LOCMEM(本地),FILEMEM(文本),Hos“主机地址),标识缓冲区所在主机的IP地址,特别要注意的是远程访问时,Host应写NML Server的地址。

      NML进程创建和连接一个或多个NML缓冲区,用于读写消息。每个进程定义占用一整列,以P开头,主要包含的因素有,Name(进程名);Buffer(进程所连接的缓冲区名),匹配缓冲区定义的某列,Type(进程类型)等。

      本实验所使用的配置文件如图2,图3所示
 
  

图2 缓冲区配置
 
    

图3 线程配置

      需要注意的配置项是,缓冲区所属主机的地址,即NMLServer的地址,数控系统必须开启NMLServer进程,否则无法远程访问。另外,线程配置中线程类型必须为REMOTE类型,因为RCS库的官方文档里提到:Java applicationsmust use REMOTE。

      3. 2 消息定义

      建立连接前需要定义通信消息结构,先了解Java版RCS库的几个重要基类:

      通道基类:基类NML是建立NML通道的基础,通过基类NML派生出RCS_ STAT_ CHANNEL和RCSCMD_ CHANNEL。它们分别用来创建状态通道和命令通道,从而让关联模块之间可以传递状态消息和命令消息回。

      消息基类:RCS_ STAT_ MSG和RCS_ CMD_ MSGo它们都是通过继承NMLmsg类派生出来的,分别是状态消息基类和命令消息基类。命令消息通常是由父模块传递给子模块;而状态消息则是由子模块传递给父模块,并带有子模块的状态信息。结合NC-210数控系统内部的消息结构,安卓端消息结构如图4所示。
 
  
 

图4 状态消息类结构图

      3. 3 建立连接及读取消息

      NML隐藏了繁琐的进程间通信与同步的实现细节,给程序员提供了方便的API。在开发代码中使用NMLConnection)方法建立远程连接,获得NML通道。并提供了4种封装好的读消息方法和2种写消息方法。本实验使用的是read方法,读一个NMLmsg的同时更新was_ read,标明为已读。远程读操作流程如图5所示。
 
  

图5  Remote Read Operation

      1远程访问者(移动终端)发送读指定缓冲区的请求到NMLServer,这个动作由NML自动完成。

      (2)下级模块将状态消息写入Server的状态缓冲区。

      (3) Server从状态缓冲区(本地)中读取状态消息。

      (4) Server通过无线网络将请求结果发送给读请求者。完成一次远程读操作。

      实现安卓终端远程读取数控系统数据消息,需要保证:

      (1)硬件层而,双方IP位于同一局域网段内,数控系统通过网线与无线路由器相连,安卓手机连接该无线路由的无线信号。

      (2)软件层面,要保证通信双方配置文件相同且消息结构定义的一致。

      4、实验结果演示

      作者将实验结果打印在Eclipse控制台,方便测试和查看。下面将根据打印结果分析不同的情况及原因。

      (1)连接失败,如图6所示。
 
  

图6 连接失败

      分析原因:配置文件错误,如缓冲区所在主机(NMLServer)地址配置错误,或协议和端口号配置错误。抛出NMLException,显示连接不到指定主机的指定端口。

      解决方法:
 
      ①确保通信双方位于同一局域网网段内。 ②安卓端和数控系统端配置文件必须保持一致。 ③确定数控系统端NMLServer已开启。

      (2)读取消息为空,如图7所示。
 
   

图7 读不到消息

      分析原因:①安卓端和数控系统端消息结构定义不一致。②  NMLServer的状态缓冲区中没有消息。

      解决方法:①安卓端消息的结构必须和数控系统端消息结构一致。②检查NML进程所读取的缓冲区里是否有消息。③最好通信双方使用的RCS库具有相同的版本号。

      (3)正确的实验结果,如图8所示。
 
  

图8 正确的实验结果

      本次实验分别打印出了轴编程位置和轴位置实际值。其他位置参数,命令消息,NML错误消息的获得与状态消息获得类似。

      5、结论

      本文提出基于RCS库实现安卓终端与数控系统间远程连接和通信,通信过程的处理交给通信管理系统CMS,直接调用中性消息语言NML封装好的方法实现。实验结果证实了安卓终端远程连接并访问数控系统的可行性,所以配合移动终端具备的通用性好,计算速度快,携带方便等优势,将移动通信技术嵌入到数控机床中,必将成为趋势。远程机床监控,远程机床操控,远程机电参数优化,远程故障排除等都将在不远的未来实现。

      来源:1.中国科学院大学   2. 中国科学院沈阳计算技术研究所高档数控国家土程研究中心  3.沈阳高精数控技术有限公司
    投稿箱:
        如果您有机床行业、企业相关新闻稿件发表,或进行资讯合作,欢迎联系本网编辑部, 邮箱:skjcsc@vip.sina.com