摘要:建立了基于B/S模式的钣金展开CAD/CAM系统。论述了基于ASP理念钣金展开/切割CAD/CAM系统的计算模型和编程原理、用户身份认证机制、零件信息输入与处理,NC指令生成及浏览器端的动态加工模拟、系统管理机制等关键技术及实现方法。
关键词:钣金展开;CAD/CAM;ASP;B/S模式
1 引言
近年来,出现一种新的软件部署模式,即所谓的应用服务供应商ASP。根据美国信息技术协会的定义,ASP是指那些通过因特网或者私人局域网向定购者/客户远程提供并管理应用与计算机服务的企业。通俗地说,ASP是一种业务租赁模式,是一种将应用系统通过互联网发布、管理和使用的商业模式,一种企业外包IT业务的租赁模式。企业用户可以直接租用ASP的计算机及软件系统进行自己的业务管理,任何用户只要有网络浏览器,就可以向ASP租用所需软件,而不必在本地的机器上安装该软件。客户再也不必购买软件或者为取得授权而支付昂贵的费用;相反,他们只须在需要的时候使用某些服务,并且相应地付少量的费用,从而节省一大笔用于IT产品技术的资金。因此,ASP被认为是继ISP、ICP后,IT领域的又一场革命。
本文根据Internet/Web分布式网络计算与网络安全支持技术,开发了”基于ASP理念的钣金展开CAD/CAM系统”。这不仅仅是一个基于ASP理念的、基于B/S分布计算模式的、支持多用户的钣金展开CAD/CAM的原型系统,而且是一种服务,一种客户无需购买专门的软件,只需为他所需要的功能付费的服务。通过这种系统,客户花很少的钱就可以得到专业的服务,不必再为不需要的功能承当额外的费用,体现了ASP理念的核心和本质。
基于ASP理念的钣金展开CAD/CAM系统结构如图1所示:
图1 钣金展开CAD/CAM系统结构图
其中,身份认证模块包括:用户注册、用户登录、用户注销、用户查看使用日志、用户查看和修改个人信息等功能;而系统管理模块包括:用户本身信息管理,系统管理员登录、查看用户意见、管理所有的帐户等功能。
2 计算模型和编程原理
在网络平台上要实现应用系统的开发,计算模式的选择是一件至关重要的事。传统的客户机/服务器计算模式一般都是“胖客户端”模式,客户机上除负责图形显示和事件输入外,应用逻辑和业务处理规则可能一并(或部分)置于客户机上,造成客户机越来越“胖”,也使得开发的着力点主要落在客户机端。由于客户机端配置了大量的应用逻辑和业务处理规则、软件以及开发工具软件,使得软件的变动与版本升级以及硬件平台的适应能力,牵动着系统中所有的客户机,势必造成资金开销的增加与管理维护的难度。90年代中期,逐渐形成一种新的基于浏览器、WWW服务器和应用服务器的计算模式—B/S计算模式。这种新型的计算模式继承和共融了原来传统的C/S(客户机/服务器)计算模式的网络软、硬件平台和应用,但它具有传统的C/S模式所不具有的很多特点:更加开放,与软、硬件无关,开发速度快、生命周期长,应用扩充和系统维护升级方便等。B/S模式的主流语言是Java、HTML等。由于浏览器、Java、HTML以及数据库资源都可以做到与软、硬件平台无关,因此,B/S模式真正实现与平台无关性。两种计算模式的比较如表1所示。
表1 C/S模式和B/S模式的比较
B/S模式下,把应用逻辑和业务处理规则放在服务器一侧,这样的结构,客户机可以做得尽可能的“瘦”,其功能可能只是一个多媒体浏览器和Java虚拟机。
本系统就是采用B/S模式,结构如图2所示:
图2 B/S计算模式结构图
客户端开发语言选择的正确与否对减轻服务器端负荷、真正实现B/S模式有重要的影响。Java语言是一种适用于网络编程的语言,它采用先编译成中间码(字节码),然后装载与校验,再解释成机器码来执行,即“JVM”(Java虚拟机)的思想。它“屏蔽”了具体的“平台环境”特性要求:只要能支持JVM的机器,就可运行各种Java程序。可以说,Java不仅仅是一种语言,更重要是一种区别于传统系统,遵循“网络就是计算机”信条的平台技术。Java平台将面向对象系统扩展成包括程序和数据的网络计算机,而这个平台的核心就是JVM,许多使Java成为万能开发平台的属性都源于JVM的概念和实现。由于Java是跨平台的,用Java开发出来的软件,只需编译一次,无需做任何修改,就可以在所有的支持JVM的操作系统上运行。因此,开发者就不必为每一种操作系统单独开发相应的软件。软件升级时,只需对服务提供者的那一份升级即可,大大地降低了软件开发和维护的成本。
Java语言提供一种新的机制扩充HTML的功能,即通过Applet标记把编译获得的Java代码以文件的形式插入HTML文件中,这些编译获得的Java代码中包括一些只需在客户端完成的功能,如数据检查。当用户浏览Applet所在的Web页面时,Ap plet被下载到用户客户端,并启动执行,用户像使用本地应用程序一样进行操作,既减轻了服务器端负荷,又省去了网络传输的时间,提高了网络的交互性和实时性。
钣金展开CAD/CAM系统的客户端是纯JavaApplet和一个Java虚拟机,服务器端则是JSP+JavaBean+DBS(数据库服务器)。客户只要能够连入Internet,使用浏览器就可以使用此服务,软件的安装是自动进行的,软件的升级是由服务提供者完成的,客户完全不需担心。
3 关键技术
3.1 用户身份认证机制
客户的注册、登录对于整个系统的维护是十分重要的。由于此系统是付费系统,它只支持受限的匿名登录,即匿名登录者可以浏览网页,但无权使用服务。系统在客户初次进入系统时,自动为每位客户建立帐号,并且把客户的信息载入信息数据库。客户以后只需凭帐号和密码就可以进入系统,这样方便了客户进入系统,又方便了对客户的管理。为防止产生了帐号被盗用的问题,在设计用户身份认证时,首先要重点考虑的是安全性。
因为安全性关系到整套软件的信誉,所以在开发本系统时,在安全性方面作了很大的努力。本系统的安全性主要表现在:
(1)选用具有很高安全性的开发语言JAVA,使得系统增强了安全性。
(2)用户必须输入正确的帐号及密码,才能进入钣金设计页面。
(3)在用户登录期间,任何人都不能再使用这个帐号。
(4)当黑客试图要破解用户帐号的密码时,在四次输入错误密码后,会自动挂起帐号,防止用户帐号被窃。用户可通过联系系统管理员恢复帐号。
(5)用户想绕开登录而直接打开钣金设计页面是不行的(即使用户知道页面的URL地并通过地址栏直接输入地址也不行),只有登录后才能访问。具体实现是在JSP页面中加上
图4 管件类型选择与参数输入界面
待用户选择了相应的展开类型及输入相应的参数后,并点击提交后,Applet检查用户输入的参数是否为合法数据:若非法,则提示用户输入的参数不合法;否则,Applet给web服务器发消息请求web服务器计费。web服务器向数据库服务器请求查询该用户的帐户余额是否足:如果余额不足,给Applet发送消息,提示用户的帐户余额不足,请交费后再使用;如果余额足,在用户的帐户上扣除相应的费用,并计算出必要的数据返回给Applet。Applet接收到Web服务器的数据后,该系统即可按照用户的要求,继续生成相应的展开图形和进行加工模拟,并以文本方式返回图形数据文件及数控代码。
3.3 展开图形
此功能的实现主要是借助Java语言的类库中提供的丰富的绘图方法,其中,绝大部分对图形、文本、图像的操作方法都定义在Graphics类中,Graphics类继承了Object类。关于Graphics类JBuilder的随机文档中有详细的说明;若想进一步了解API和开发文档,可以访问SUN公司网页http://java.sun.com./prod ucts/jdk/1.4/devdocs-v2-specs-html。在使用Graphics类时,要在程序的开头加上下面的语句:importjava.awt.Graphics
为了将某一图形在屏幕上绘制出来,还需要知道图形坐标系统。与大多数其他计算机图形坐标系统所采用的二维坐标系统一样,Java的坐标原点(0,0)在屏幕的左上角,水平向右为X轴的正方向,竖直向下为Y轴的正方向;每个坐标点的值表示屏幕上的一个象素点的位置。因此,所有坐标点的值都取整数。将展开图形在屏幕上绘制出来,主要是调用Graphics类的draw Line(intx1,inty1,intx2,inty2)方法:
publicvoidpaint(Graphicsg,CanvasmyCanvas){
doublestartPointX,startPointY; //定义绘图起始点
g=myCanvas.getGraphics(); //取得画布对象
· //这里画出管的展开图
·
}
生成展开图和进行加工模拟的界面如图5所示:
图5 系统生成展开图形和数据文件的界面图
3.4 加工模拟
加工模拟功能主要是为了让用户感性地认识生成的数控指令在实际加工时的走刀路径,实质是一个动画,其原理是利用人的“视觉暂留”,快速地切换画面。Java实现动画有两种方法:一种是在“绘制”和“清除”间相互切换,另一种是在原有的画面上逐渐添加东西。此系统实现的加工模拟的图形是逐渐生成的,因此采用第二种方法。在绘制图形时,是一点一点绘出来的,并在每两次绘图之间让线程休眠一段时间,这样就实现加工模拟的动画。线程休眠的方法如下:
try{
Thread.sleep(5);//此处指定线程休眠的时间,单位是毫秒
}
catch(InterruptedExceptione){}
3.5 生成数据文件
为了方便放样的用户,本系统提供了展开图形的数据文件,在输出图形数据文件的界面里,左边是对应的展开图,右边是图形数据文件,如图5所示:
用户手工地把这些数据复制粘贴下来,保存为文本文件,然后就可以非常方便地根据这些数据进行放样。
3.6 生成数控指令
数控指令的生成是本系统的一个很重要的模块,由于钣金展开比较麻烦,为方便用户,系统提供自动生成数控指令功能,具体生成激光切割方式下的数控指令的主要过程如下:
publicvoidNCInstrumnetOut(TextAreaNCInstrument){//生成相应类型的钣金件的数控//指令,并且将生成的数控指令写在TextAreaNCInstrument中
NCInstrument.append("%NDJZJP1MPF"+‘
‘);//输出文件名
NCInstrument.append("F3000"+‘
‘);//确定速度
NCInstrument.append("G91"+‘
‘);//相对坐标编程
NCInstrument.append("G64"+‘
‘);//平滑过度
NCInstrument.append("G00X"+String.valueOf((double)ex).toString()+"Y"+String.valueOf((double)ey).toString()+‘
‘);//快速定位到加工曲线部分的起点
NCInstrument.append("MM10"+‘
‘);//随动启动
NCInstrument.append("SUB1"+‘
‘);//打开机械阀打孔{//输出加工内轮廓曲线部分的数控指令
·
·
· }
NCInstrument.append("M21"+‘
‘);//关闭电子阀
NCInstrument.append("GOOXOYO"+‘
‘);
NCInstrument.append("SUB2"+‘
‘);//打开电子阀
{//输出加工外轮廓的数控指令
·
·
· }
NCInstrument.append("M13"+‘
‘);//关闭机械光阀
NCInstrument.append("M11"+‘
‘);//随动关
NCInstrument.append("M30"+‘
‘);//程序结束
}
3.7 系统管理机制
本系统采用SQlServer作为后台数据库管理系统,用来管理所有的客户的信息和提供客户个人信息管理。管理员凭管理员帐户登陆后,实现对所有帐户的管理:丢失或遗忘密码时,密码的返还;查看用户意见,以便更好地为客户服务,以及其它的一切日常维护等。用户登陆后,进入个人信息页面,可以修改个人信息,然后重新提交服务器,服务器将自动对存储在数据库管理系统中的客户个人信息进行更新,方便而且安全。
4 结束语
基于B/S模式的钣金展开CAD/CAM系统是采用纯Java语言开发出来的软件,只需编译一次,无需做任何修改,就可以在所有的支持JVM(Java虚拟机)的操作系统上运行。客户端采用JavaApplet,客户连入Internet,使用浏览器注册、登陆系统,软件即自动安装,客户就可以使用系统服务,软件的升级是由服务提供者完成的。系统通过程序实现将展开图形自动画在屏幕上;利用程序计算生成的数据,自动生成数控指令,既快速正确,同时又有很高的精度,大大降低了对操作者的要求。该系统在信息的发布和提供、软件版本的升级和维护等方面具有很大的优越性,具有广泛的应用前景。