基于Android的远程监控系统的设计与实现*
2015-11-04谭海红
谭海红,何 方,王 品
(1.中国科学院研究生院,北京 100049;2.中国科学院沈阳计算技术研究所,沈阳 110171;3.沈阳蓝天高精数控技术有限公司高精数控研究室,沈阳 110171)
基于Android的远程监控系统的设计与实现*
谭海红1,2,何 方2,3,王 品2,3
(1.中国科学院研究生院,北京 100049;2.中国科学院沈阳计算技术研究所,沈阳 110171;3.沈阳蓝天高精数控技术有限公司高精数控研究室,沈阳 110171)
针对目前数控机床操控具有局限性的现状,设计出了一种基于Android的功能强大、操作简单的远程监控系统。通过对现有蓝天数控系统“NC-200”的基本功能和软件结构的分析研究,将用户控制界面从数控系统分离出来。在Android设备上开发用户控制界面。系统保留了原有数控系统采用RCS库进行通信的特点,利用JNI机制实现用户控制界面与RCS库之间的交互。在远程信息传输方面,利用无线WIFI,采用Socket机制UDP协议,实现Android移动终端与中心控制器的通信。最后介绍了系统的数据库设计方案。在完成对系统的运行和调试后对系统进行了测试,实现了对数控机床的远程监控功能。
监控系统;Android控制软件;无线;通信
0 引言
数控技术是一个国家繁荣昌盛的最根本的技术基础之一,在国民经济发展中起着重要的作用,是反映国民经济实力和科学技术水平的重要标志之一。目前我国数控系统已具备了高精、高速、高效的功能,可以使装备制造业实现数字化、柔性化和网络化制造,已经有了突飞猛进的发展。然而数控系统的控制终端却仍然停留在笨重而庞大且只能针对特定系统进行操作的阶段,这给数控机床操作人员带来很大的不便。开发基于Android的远程监控系统正是为了使人们从台式机的束缚中解脱出来,人们可以利用移动终端设备对数控机床进行操控,可以不受时间空间的限制,对机床的控制方式也更加方便灵活,实现了真正的移动性与便利性。
基于Android的远程监控系统是在Android系统下开发用户控制界面,通过RCS(Real-time Control System)库的NML通道将控制信息发送给中心控制器。中心控制器通过NML通道将状态信息和错误信息返回给用户控制界面。信息的接收与发送利用了无线WIFI技术,采用Socket机制UDP协议编写收发数据函数。系统收发的数据将会被存储在SQLite数据库中,数据库中的数据会随着用户的操作和系统信息的反馈随时进行更新。在完成整个系统的设计与实现后,选用参数设置子模块进行了测试与分析,验证了系统的可行性。
1 系统的整体设计方案
用户要通过软件控制数控系统,就需要用户控制界面;接着当用户点击界面上的相应功能按钮时,后台需要将具有某种特定含义的数据发送出去,传输给数控系统,再由数控系统处理后发给数控机床,同时也要能够接收数控系统传来的数据,最终实现对数控机床的控制,这个过程中软件需要实现数据的通信功能;当然无论是传输给数控系统的数据还是从数控系统传来的数据,软件都需要一个存储数据的地方,这时就需要用到数据库。由此可见,基于Android的远程监控系统应用软件主要由用户控制界面、通信功能实现和数据库三大部分组成。移动控制终端软件的组成如图1所示。
图1 基于Android的控制软件的构成
1.1 用户控制界面
用户控制界面主要由三部分组成:登录界面、控制中心主界面和数控系统各子界面。其整体的结构框图如图2所示。
图2 用户控制界面
为用户控制界面的每个屏幕设置自己的活动类。首先实现一个包含所有活动都有的组件的活动基类,并将其命名为MainActivity。然后为其他活动创建类,其继承关系如下:
①MainActivity:继承android.app.Activity,充当基类。在这里将定义应用程序首选项以及其他应用程序级设置和功能。
②StartActivity:继承MainActivity,表示启动屏幕。
③MainMenuActivity:继承MainActivity,表示主菜单屏幕。
④AMenuActivity:继承MainActivity,表示宏变量子屏幕。
⑤BMenuActivity:继承MainActivity,表示参数设置子屏幕。
⑥CMenuActivity:继承MainActivity,表示备份与恢复子屏幕。
⑦DMenuActivity:继承MainActivity,表示M码设定子屏幕。
⑧EMenuActivity:继承MainActivity,表示PLC子屏幕。
⑨FMenuActivity:继承MainActivity,表示螺距设定子屏幕。
⑩GMenuActivity:继承MainActivity,表示随机刀具子屏幕。
⑪ HMenuActivity:继承MainActivity,表示软IO设定子屏幕。
⑫ IMenuActivity:继承MainActivity,表示零漂补偿子屏幕。
⑬ JMenuActivity:继承MainActivity,表示系统升级子屏幕。
⑭ KMenuActivity:继承MainActivity,表示切换用户子屏幕。
屏幕之间的切换实际上就是在活动间互相调用的过程,Android使用Intent完成这个动作,实现各个界面的相互转换。
1.2 软件的通信功能实现
采用层次化设计思想将数控系统软件划分为包含三个层次、四个功能模块的分级结构。这三个层次分别为:第一层为人机界面(Human Machine Interface,HMI)模块,第二层为任务控制器模块,第三层为运动控制器模块和PLC(Programmable Logic Controller)控制器模块。其中,任务控制器模块、运动控制器模块和PLC控制器模块是蓝天数控系统中已有模块,直接将其移植到Android系统下即可。各层的相互关系如图3所示。
图3 基于Android系统控制器软件的模块划分
基于Android的数控系统软件的通信功能由两部分实现:①用户控制界面与数控系统中的任务控制器模块之间的通信。②Android控制软件与数控系统之间的无线数据通信。其中,用户控制界面与任务控制器模块之间是利用JNI机制,通过RCS库提供的NML通道实现通信。而Android控制软件与数控系统之间的无线数据通信功能需要自己编写数据接收函数,利用Socket套接字机制通过UDP协议实现。
1.2.1 用户控制界面与数控系统的通信
蓝天数控系统通过RCS(Real-time Control System)库实现用户控制界面与数控系统的通信。Android用户控制界面是由Java语言编写,用于向任务控制器发送控制命令信息,并获取从任务控制器反馈的状态信息和错误信息。RCS采用的是C++面向对象的方法,将程序抽象化,以类封装代码的形式。由于蓝天数控系列产品“NC-200”各软件模块间均由RCS库进行通信,而且技术已经发展成熟,所以为了缩短开发周期,实现高效地跨平台开发,采用了JNI机制,用Java语言直接调用RCS库中的类方法,实现Android用户控制界面和数控系统任务控制器的交互。
在Java环境下调用C++语言代码的过程通常由六个步骤组成,如图4所示。
图4 JNI调用机制
由于Android平台是Linux系统,所以需要将RCS库封装成.so的动态链接库,步骤如下:①安装和配置Android的交叉编译环境,需要下载软件cygwin和NDK(本地开发工具包)压缩包,然后安装软件cygwin以及在cygwin下配置NDK路径。②打开cygwin命令界面,在该命令界面中通过cd命令进入到代码文件所在目录,执行mkdir jni命令。③运行ndk-build,如果编译通过,就会在该工程的jni目录下生成.so文件,最后使用System.loadLibrary()导入到系统中。
1.2.2 Android控制软件与数控系统之间的无线数据通信
通信功能的实现在基于Android的数控系统控制软件中分为数据接收和数据发送两部分,都需要在单独的线程中完成,本文软件设计中采用Socket机制UDP协议编写收发数据函数,数据接收函数名为udp-ReceiveThread(),在主界面中实现,数据发送函数名为udpSend(String initInfo),在各个控制子模块中实现。
Socket(套接字)由服务器端和客户端两部分组成,服务器端使用ServerSocket,客户端使用Client-Socket,它俩之间建立网络连接,可以相互收发数据。客户端和服务器端的网络连接成功时,应用程序会完成所需的会话,这些都是通过Socket实例来完成的。套接字对于一个网络连接来说在服务器端或在客户端是平等的,不会有等级差别。
基于UDP协议的Socket通信机制编程的服务器端程序编写的一般步骤是:①创建一个socket,即开启套接字;②绑定IP地址、端口等信息到socket上,这样客户端才能正确的找到并连接到服务器端;③循环接收发送数据,最好是在一个单独的线程中完成;④关闭网络连接。
基于UDP协议的Socket通信UDP编程的客户端编程实现的一般步骤是:①创建一个socket,即开启客户端套接字;②设置对方的IP地址和端口等属性,这是正确发送数据的保障;③连接服务器,用函数connect();若是只是一次发送、接收数据,仅仅是一次通信就完事,不需要将客户端和服务器一直连接,此函数可不用;若是循环发送接收,则此处要用connect函数;因为若不用,当sendto()后服务器器kill掉,这时client端找不到服务器端,被阻塞在recvfrom处;④循环发送接收数据;⑤关闭网络连接。
建立服务器端和客户端后就能使用Socket进行数据通信了,本文的软件设计中服务器端接收数据,客户端发送数据;相应的,在中心控制器上的WIFI模块中也有相应的Socket客户端和服务器端来进行数据的发送和接收;从而最终实现移动控制终端与中心控制器间的无线数据通信。
1.3 数据库设计
在基于Android的数控系统控制软件中,采用SQLite作为数据库,来存储数据。SQLite具有占用内存少、支持Android操作系统、能跟Java语言相结合等特点。主要通过使用Android提供的SQLiteDatabase抽象类(通过从此类继承实现用户类,来提供数据库打开、关闭等操作函数)和SQLiteOpenHelper数据库访问类(执行对数据库的插入记录、查询记录等操作)两个类来操作数据。
对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取。
2 系统测试
在完成数控系统软件的各模块功能后,对整个系统进行测试。图5是基于Android的远程监控系统结构开发的远程监控示例。现场设备为一台Android操作系统的平板电脑,与FED现场总线(Fieldbus on Ethernet Device)连接的无线路由器,伺服驱动器,伺服电机,PLC/数字IO设备。平板电脑作为数控系统的控制主机、显示器和人机操作界面,运行数控系统的控制程序。通过无线WIFI向外部设备发送控制命令,同时接收外部设备发回的电机运行状态和数字开关状态。控制功能方面,伺服电机产生机床工作台的坐标运动;数字量输入输出站用来控制辅助功能,例如刀具松夹、冷却液开关等。
我们以参数设置模块为例,测试系统的可行性。首先在控制中心主界面(图6),点击参数设置[B]模块进入参数设置模块子界面(图7),界面显示当前机床坐标系位置和运行中的数控加工程序。
图5 系统现场设备
图6 控制中心主界面
图7 参数设置模块
3 结束语
基于Android的远程监控系统实现了用户远程控制数控机床的功能。不仅有利于工人的操作,而且在一定程度上有利于工人的身心健康,从而最终提高了生产效率。基于Android的、友好的、针对性强的用户控制界面,由于是在原有的数控系统上进行界面移植,不仅提高开发效率、减少开发成本,而且对用户和数控系统制造商也都有很重要的意义。用户既可以简化操作,又可以提高生产率。对数控系统制造商而言,系统的开发在数控系统的推广使用方面将会产生重大影响。
[1]田军峰,马跃,吴文江.利用RCS库实现数控系统模块间的通信[J].微计算机信息,2009,25(7):121-122.
[2]任俊伟,林东岱.JNI技术实现跨平台开发的研究[J].计算机应用研究,2005,22(7):180-183.
[3]李亚东,夏雨佳,席裕庚.基于JNI的跨平台软件设计[J].计算机工程,2000,26(9):87,154.
[4]向模军.利用JNI实现Java与C++通信[J].计算机时代,2009(12):56-57.
[5]Lauren Darcey,Shane Conder.Android应用开发入门经典[M].袁国忠,译.北京:人民邮电出版社,2012.
[6]应山.基于Android系统的便携式智能家居控制终端技术研究[D].哈尔滨:哈尔滨工业大学,2012.
[7]麦向习,裴海龙.利用RCS库构建控制系统软件[J].微计算机信息,2005,21(10-1):23-25.
[8]高甜容,于东,秦承刚,等.数控系统模块间通信方法的设计与实现[J].计算机工程,2010,36(12):238-241.
[9]基于Android平台WIFI的实现及应用[D].北京:北京邮电大学,2012.
[10]曾磊,张海峰,侯维岩.基于WIFI的无线测控系统设计与实现[J].电测与仪表,2011,48(7):81-83.
(编辑 李秀敏)
Design and Im plement of Remote M onitor and Control System Based on Android
TAN Hai-hong1,2,HE Fang2,3,WANG Pin2,3
(1.Graduate University,Chinese Academy of Sciences,Beijing 100049,China;2.Shenyang Institute of Computing Technology,Chinese Academy of Sciences,Shenyang 110171,China)
In light of the present condition of the ncmachine tool control has lim itations,devised a Android based remotemonitoring system of powerful function,simple operation.Based on the existing NC system" NC-200"blue sky and software structure analysis and research,the basic function of the user control interface is separated from the NC system.Developing the user control interface on Android devices.System to retain the original numerical control system USES the characteristics of RCS library to communicate using JNImechanism to realize the interaction between the user control interface and the RCS library.In the aspect of remote information transm ission,the use of w ireless W IFI,using UDP Socketmechanism,realize the Android mobile term inal and communication center of the controller.Finally introduced the database design of the system.After the completion of the system running and debugging,the system was tested,and realized the remotemonitoring function of nc machine tools.
monitoring system;Android control software;w ireless;communication
TH166;TG506
A
1001-2265(2015)07-0061-03 DOI:10.13462/j.cnki.mmtamt.2015.07.017
2014-10-14;
2014-11-09
"高档数控机床与基础制造装备"国家科技重大专项(2013ZX04007-011)
谭海红(1984-),女,河北邯郸人,中国科学院大学沈阳计算技术研究所硕士研究生,研究方向为计算机软件与理论,(E-mail)tanhaihong0608@126.com。