数控铣床Internet远程控制的一种实现
因特网的分布广泛使得建设基于因特网的远程控制系统成为一种可能。基于因特网的远程控制的特点有以下几点:
·传输通道是因特网。使用的协议是tcp/ip协议。因此, 对于采用因特网技术开发出来的远程控制技术,可以在采用tcp/ip协议的网络上使用, 一般不需要修改。
·系统开发周期短、充分利用了现有的网络资源; 维护费用小。
·具有很高的灵活性, 实现了真正的无处不在的远程控制。
·基于因特网的远程控制技术是不断发展的技术。随着因特网技术的发展, 基于因特网的远程控制技术也在不断的发展。
·存在不确定的时延问题。由于网络有限带宽和不确定路由造成的大且变化的网络时延, 网络阻塞也可能造成的数据包丢失。
目前, 基于因特网的机器人控制系统普遍都采用了客户/服务器(c/s)网络模型, 通过网络发出控制命令。
远程控制的实现方法
·建立远程控制的构架, 使的在任何一台连接到因特网的电脑上都可以通过浏览器控制异地数控铣床的工作状态。
·为了实现以上功能, 首先得建立一个本地控制函数, 此函数功能以动态链接库形式表现出来。其次,以网页的形式设计一个控制铣床的页面。设计一个服务器上运行的servlet, 通过动态链接库调用本地函数,把远程控制的命令转化为控制指令。
笔者用jbuilder建立servlet,接受网页信息和调用类函数;建立一个本地函数。用frontpage设计网页。用c++builder编写一个本地函数的动态链接库dll,它能快速调用advantech驱动软件包,实现对底层数字量i/o卡的控制。
系统总体设计
基于internet的数控铣床的远程控制系统的结构如图1所示。这是一个典型的三层b/s结构。
![](/uploadfile/images/content_2012/content_12/content_10/20121210103514446.jpg)
第一层是前台即浏览器。用户通过浏览器访问该系统而无需安装任何软件。 用户在网页上输入控制铣床的运动信息比如:
x轴、y轴、z轴三方向的进给、停止, 主轴的转动以及停止。
第二层servlet是运行在jbuilder自带的服务器tomcat4.0上的小程序。servlet负责调用本地函数,并把浏览器传送的信息转化成本地函数指令。
第三层是数控铣床的本地控制系统。本地控制系统执行本地函数的发出的命令, 并将自己的状态返回给本地函数,本地函数把这些状态信息传递给servlet。本系统中由bordland c++builder 进行远程控制,建立了一个dll动态的链接库,调用本地函数。本地函数是jbuilder建立的类函数, 此函数的功能由dll实现。
数控教学铣床的工作台是由步进电机实现控制的。采用信号发生器发出的给定脉冲(cp)控制步进电机的旋转步数,dir的高低电平来控制电机的正反转。
可以改变脉冲频率来调节铣床进给的快慢。
软件的设计
c++builder撰写动态链结函式库dll建立dll专案的方式和一般应用程式大致相同。使用dll有两种方式:明确呼叫和不明确呼叫。
不明确呼叫即静态调用法。该方法是利用链结一个记载输入函式的函式库档案(lib), 来进行链结, 如此系统会自动将该dll载入,同时在使用完毕后将其释放, 不必由使用者(也就是呼叫它的函式)来进行载入及释放的动作。所谓明确呼叫(explicited linked)是使用loadlibrary函式来载入dll。使用freelibrary函式来释放dll。使用明确呼叫的优点在于,可以完全控制该dll的载入及释放, 最有效地利用系统资源。在本系统中我们采用此种方式:
static{system.loadlibrary(“project9”);} //调用系统加载库
java与 c++的连接方法
jbuilder是java的开发工具,而c++builder是c的开发工具。java连接c++的方法是,先将c++语言所编写的程序构造成动态链接函数库(dll), 再由java程序调用 dll库中的函数,使得dll库中函数被java看作是“方法”(method)。dll我们在前面已经介绍过。不过这种方法是直接用其他编程语言所提供,而不是java所编写, 所以将其方法称为“原生方法”(native method)。我们采用的是jni方法来进行两者之间的接口。
javasoft公司提出了jni的标准接口。它使运行于java虚拟机上的java代码与用其他语言编写的库和应用程序能够相互调用。jni允许本地方法建立、使用和更新java对象,调用java方法和引用java类。也允许java代码调用c、c++、assembly等语言编成的程序和库。
实现步骤
开发环境: 操作系统为 windows2000平台java applet的开发工具为borland jbuilder8,本地方法的开发工具为bordland c++builder 6。
jni—java native interface specification(java本地接口规范)jni是一种编程接口,下面将按步骤介绍使用jni的方法。
·ava类中要用本地代码实现的方法用native修饰, 构造类初始化器装入实现本地方法的库。
·译 java类, 并用javah工具生成 c++语言头文件, jsvah为jdki1.2带的一个工具。
·编写本地代码并编译成project5.dll,放入winnt的system32目录下, 以使java vm能找到这个库。
servlet rvlet为服务器端的java的小程序,与运行在客户端的applet程序相对应,他们都是运用java语言编写的程序。servlet没有main方法,只有一些特定的方法用于启动, 执行, 和退出。它可以与运行在客户端的applet程序进行交互,也可以直接与客户端的html页面交互。servlet是对支持java的服务器的一般扩充,最常见的用途是扩展web服务器,提供非常安全的、可移植的、易于使用的cgi替代品。servlet完全运行在java虚拟机上,由于在服务器端运行, 因此它不依赖于浏览器的兼容性。
在《form》标记中调用servlet。html格式使用户能在 web页面(即从浏览器)上输入数据, 并向 servlet提交数据。远程控制页面如图2所示。
![](/uploadfile/images/content_2012/content_12/content_10/20121210103533259.jpg)
结束语
以有代表性的数控铣床控制机构为研究对象,从理论和实现方法上对基于因特网的远程控制系统进行了研究。运用c++builder、jbuilder实现了跨平台的操作,最终完成数控教学铣床的远程控制。
文章版权归西部工控xbgk所有,未经许可不得转载。