您的位置:网站首页 > CAM

基于网络支持的协同设计系统研究与实现

时间:2011-03-01 09:39:20 来源:

  网络支持的协同设计(Network Supported Collaborative Design,NSCD)是计算机支持的协同工作(Computer Supported Co-operative Work,CSCW)研究的一个分支,它融合通信技术、计算机技术和网络技术,采用并行工程的思想方法,使处于分散的一个群体借助相关技术,共同协调和协作来完成一项任务,从而大大提高生产效率,在制造业中有着广泛的发展前景。

  当前协同系统有两类协作框架,即透明协作Collaboration-transparent)和明确协作(Collaboration-aware)。

  针对目前大多数企业使用AutoCAD作为设计软件。以Au-toCAD2002为原型,以Teamcenter为协同设计平台,提出了一种基于AutoCAD图形数据交换的协同设计思想,并开发出了SCADS(Synchronization Collaborative AutoCAD Design System)协同设计系统。

  1 SCADS协同设计系统的总体结构

  SCADS协同设计系统由CAD系统模块、数据处理模块、网络处理模块和辅助模块组成。CAD系统模块由数据库监视模块、编辑功能监视模块、对数据库执行操作模块和执行编辑功能模块组成,数据处理模块由编码模块和解码模块组成,网络处理模块由发送数据模块和接收数据模块组成,辅助模块由文字沟通模块组成。在SCADS系统中,各协同设计者在AutoCAD环境中进行的操作都会被系统监控,并将其中变化了的增量数据,通过网络传递给其它协同设计者,从而达到实时协同设计的目的。由于采用了动态数据交换机制,SCADS协同设计系统较好地实现了网络实时协同设计。SCADS协同设计系统总体结构,如图1所示。协同登陆界面,如图2所示。

  

  图1 SCADS协同设计系统的总体结构

  

  图2 SCADS协同设计系统登陆界面

  2 SCADS协同设计系统的工作原理

  AutoCAD是一个开放的平台,提供的二次开发工具有Au-toLisp,ObjectARX,VisualLisp等,其中,尤以ObjectARX开发包的功能最为强大。

  系统实现实时协同方式的原理为:利用ObjectARX提供的数据库反应器类来监视AutoCAD内部数据库,并对数据库的添加、修改、删除等操作自动做出响应,然后利用vc++6.0的socket编程原理来将本地获得的数据传送到异地,并在异地的AutoCAD平台上还原数据,恢复图形。

  将人人交互通讯/协作模块和原来的应用模块结合起来,构造所需的协作功能,又能复用单用户程序的各种应用功能。其方法为CAD内核中增加了通迅/协作编程。其基本原理,如图3所示。

  

  图3 SCADS协同设计系统实时协同的原理

  其中,通讯/协作编程是建立在对现有的CAD资源更深层次的操作上,即必须要求能够通过通讯编程手段直接深入到现有CAD系统的图形数据库的内核上。这样不但使其具有了协作性能,而且保留了原有CAD的强大图形编辑功能。

  3 SCADS协同设计系统的实现

  在SCADS系统中,通过CAD监控模块完成实时数据提取功能。程序中主要使用了ObjecARX中的两类反应器:数据库反应器和编辑反应器。其中数据库反应器主要负责对AutoCAD数据库中发生的事件实时监控,例如实体对象的添加、修改、删除、镜像、拷贝等。编辑反应器主要负责对其它一些操作监控,如用户命令事件、数据库文档事件、写块事件和克隆事件等。实现过程大体历经触发、传输、和接受三个阶段。

  3.1 触发

  这个阶段从数据库反映器对象捕捉到AutoCAD图形数据库动作并触发反应事件开始。先获取新增实体的结果缓冲区链表,然后对结果缓冲区链表的每个节点执行编码操作,生成一种自定义的字符数组结构。触发要经历两个过程:添加数据库反应器,获得实体名和实体句柄(图略)。当AutoCAD成功的添加了数据库反应器后,再次在AutoCAD进行实体编辑时,则数据库反应器自动提取出了所做实体编辑的句柄号、ID号及所存数据库。

  3.2 传输

  在网络结构上,SCADS采取的是改进的客户机/服务器模式。这种模式下服务器并不存储所有数据,而是只负责实时转发和智能筛选,避免了传统C/S模式下数据集中于服务器而造成的服务器负担过重产生的拥堵现象。数据分布在所有客户机上,最大限度上避免了读写信息的延迟。

  利用visualC++6.0的Socket来编程实现通讯协议的。在数据通信中,不管客户端还是服务器端,发送数据是主动的,而接收数据总是被动的。在Visual C++6.0中提供了Socket类:提供了监听函数Listen(),服务器端建立一个监听Socket,即自动创建一个监听线程,随时监听是否有客户端的连接请求,在监听Socket上建立消息相应函数OnAccept(),接收客户端的连接请求。服务器为每一个客户端请求建立一个Socket,以便并行处理客户端的数据通讯请求。服务器端为了接收客户端的数据,在为客户端建立的Socket上建立消息响应函数OnReceive(),用来接收数据。客户端为了接收服务器端的数据,则在连接的Socket上,建立一个消息响应函数OnReceive(),用来接收数据。

  3.3 接收

  接收是触发的逆过程,执行的是解码。我们主要定义了ChatUneAdd(),ChatLineEdit (),ChatLineDel(),等函数来接受发送过来的数据。

  3.4 SCADS系统与AutoCAD的融合

  将我们所开发的SCADS系统融合到AutoCAD中。此时AutoCAD可以作为传统的CAD使用。当需要协同设计时,则点击菜单栏中河北工业大学SCADS系统或工具栏按钮进入协同设计界面,开始协同设计。还可通过聊天交流模块进行文字交流达到协同设计。SCADS融合到AutoCAD后的界面(图略)。

  3.5 SCADS系统的实时通讯模块

  系统采用面向对象的系统模型,采用VC++6.0这个可视化开发工具进行编码,使整个软件系统的结构变得更加灵活。实时通讯模块采用聊天的形式来实现(图略)。

  3.6 系统的软件实现

  系统的程序框图,如图4所示。

  

  图4 系统程序框图

  下面以添加椭圆(ellipse)为例来说明上面这个过程。本代码省略了变量定义、指针定义及指针关闭等辅助代码。

  if(TYPE-ELLIPSE EQ nType)

  {AcDbEllipse *pEllipse=static cast(pEnt);

  message.Add(TYPEesELLIPSE);

  AddPoint(message,pEllipse->center());

  Add Vector(message,pEllipse->normal());

  AddVector(message,pEllipse->majorAxis());

  message.Add(pEllipse->radiusRatio());

  message.Add(pEll ipse->startAngle());

  message.Add(pEllipse->endAngle());}

  message.SetAt(0,nReaICount);

  g_client.SendMessageToServer( message);

  if(TYPE_ELLIPSE EQ nType) {

  GetPoint(message,center,index);

  GetVector(message,normal, index);

  GetVector(message,majorAxis, index);

  message.GetAt(index++,radiusRatio);

  message.GetAt(index++,startAngle);

  message.GetAt (index++,endAngle);

  pEntityAdd=new AcDbEllipe(center,normal,majorAxis,radiusRatio,

  startAngle, endAngle ); }

  es=aeDocManagerPtr()一>lockDocument(g-pDoc);

  es=pBlockTable->getAt(ACDB_MODEL-SPACE, pBlockTableRecord,

  ACDb:: kForWrite);

  es--pBlockTableRecord->appendAeDbEntity(1 ineId, pEntityAdd) ;

  es=acDocManagerPtr()一>unlockDocument(g-pDoc);

  pEntityAdd->getAcDbHandle(localHand 1e);

  arrayLocal.Add(localHandle);

  arrayRemote.Add(remoteHhandle);}

  4 应用实例

  设计者甲和乙使用SCADS系统进行直角坐标压盖机器人的

  协同设计和并发控制情况,如图5,图6所示。

  

  图5 设计者甲端的显示

  

jpg

  图6 设计者乙端的显示

  5 结论

  提出的SCADS协同设计系统,提出了一种协作性能与应用功能相结合的协作框架。

  将当前CSCW系统在协作性能方面的长处和传统CAD系统在图形处理方面的优势有机地统一起来,直接支持事实上的工业标准的矢量图形的协同设计。通过直角坐标压盖机器人的协同设计实例验证了SCADS系统的正确性和可行性。

  SCADS协同设计系统是一个开放性的协作框架,有很好的商业和工程应用前景。为中小企业实现异地设计和异地制造提供了很好的技术支持。