摘 要 目前在数控编程软件中,无法进行远程协同仿真和评注,本文所设计的网络化数控仿真环境基于Socket技术实现远程同步仿真和评注,以及聊天室的交流工具,使身处异地的设计人员能够通过网络来对数控程序进行远程的同步仿真和交流沟通,从而实现网络化的虚拟制造。
关键词 数控仿真;同步;G代码
随着信息化和网络化社会的到来,在经济全球化的趋势下,大型企业的不同分部之间,以及不同国家和地域的企业之间在设计、制造方面需要大量的分工协作,而飞速发展的互联网为这种实际工作的需要提供了良好的平台。而目前的通用的数控仿真软件多为本地运行,难以进行远程协同操作。因此基于网络的数控仿真环境有许多优势,如不受时空限制等,能够进行实时的协同操作,针对数控G代码中的问题进行交流。另一方面,本系统对于数控技术的教学也就有重要的作用。通过该软件,使学生可以直观地掌握数控插补的原理,达到较好的教学效果。
1 系统总体结构
图1 网络化数控仿真环境系统结构
网络化数控仿真环境的系统结构如图1所示,首先登录的一方自动成为服务器端,并等待其他用户的登录请求,一旦有其他用户登录,双方通过Socket技术建立起基于TCP/IP的网络通信。其中一方读入数控G代码后首先通过内嵌的解释器进行解释,然后在绘图区中绘制出仿真效果。与此同时,解释出来的G代码参数被传递给同步信息处理模块,按照系统定义的应用层协议生成基于TCP/IP协议的同步信息,然后由Socket通信控件发送给客户端并由客户端的绘图程序在绘图区中绘制出来。双方对G代码的仿真结果进行讨论时,通过协同评注工具如圆圈、直线等方式做出标记,然后用文字在聊天室中进行交流,其信息也通过基于Socket技术的同步信息来进行传递。
2 同步机制的实现
网络化数控仿真环境的主界面如图2所示,其中的同步包括三个方面:①G代码仿真过程的同步;②协同评注的同步;③文字聊天内容的同步。其中关于文字聊天内容的同步现在技术资料上已经很多,不再赘述。以下主要说明G代码的同步仿真和协同评注的同步过程。
图2 网络化数控仿真环境主界面
首先在界面上增添定时器控件Timer和列表框控件List。同步信息的传递是由定时器控件Timer来控制的,为了保证仿真过程的连续性与合适的网络数据量,要恰当的设置定时器的时间间隔,此处设置为50毫秒。每当时间间隔到时便启动相应的消息事件向外发送消息,代码
Private Sub Timer1_Timer()
On Error Resume Next
If List1.ListCount = 0 Then Exit Sub
senditem 0 ‘发送数据
End Sub
发送数据是通过Socket控件中的SendData方法来实现的,数控G代码经过解释器解释后所获得的参数被送入同步信息处理模块,然后被转换为格式化的数据存放在列表框List1中,Socket控件依次取出其中的元素然后进行发送,代码
Sub senditem(ByVal item As Integer)
On Error Resume Next
DoEvents
Socket1.SendData "|" & List1.List(item) & "^"
DoEvents
End Sub
对于数据的接收方而言,其Socket始终处于监听状态,当有数据到达时立即接收数据并进行分类处理,如果是命令信息,如清除绘图区命令,则会立即执行,如果是绘图信息(包括G代码仿真)则进一步解读,然后在绘图区中由绘图程序来执行,代码
Private Sub Socket2_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim dat As String
Dim tempchr As String
Socket2.GetData dat ‘接收数据
For n = 1 To Len(dat)
tempchr = tempchr & "^"
e = e + 1
Next n
For n = 1 To e
If dat = "cls^" Then Picture1.Cls ‘清屏指令
If dat = "" Then
For n = 0 To List2.ListCount - 1
decode List2.List(0) ‘解读绘图信息
List2.RemoveItem 0
Next n
…
整个同步过程中的绘图信息包括直线、圆弧、圆和徒手绘几种形式,首先根据得到绘图信息进行分类,然后调用相应的绘图函数进行绘图,其代码
Sub decode(ByVal dat As String)
… ‘变量定义
For n = 1 To Len(dat)
tempchr = Mid(dat,n,1) ‘提取字段
Select Case tempchr
Case ","
x1 = xx1:cur = "y1"
Case ""
y1 = yy1:cur = "x2"
… ‘解读第一字段
Select Case cur
Case "x1"
xx1 = xx1 & tempchr
Case "y1"
yy1 = yy1 & tempchr
… ‘解读第二字段
End Select
End Select
Next n
… ‘绘制直线
Picture1.Line (x1,y1)-(x2,y2),vbBlue
… ‘绘制圆弧或圆
Picture1.Circle ((x + XCent) + (LstZ / ZAsp),(y - YCent) - (LstZ / ZAsp)),RAD,RGB(Col1,Col2,Col3),Angle * 2 * PI / 360,Angle2 * 2 * PI / 360
3 结束语
基于网络的数控仿真完全基于现有的Socket技术和TCP/IP协议,能实现数控G代码的远程同步仿真,以及对仿真结果进行协同评注和文字交流,提升了计算机辅助制造的技术层次和应用范围,使异地协同设计和制造增加了技术支持。
参考文献
[1] 周自强,沈连婠等,面向用户的产品虚拟模型协同讨论环境的实现,2005(3):5-10
周自强,沈连婠等,基于Web 的虚拟设计中VRML 实时模型的可交互处理方法,计算机辅助设计与图形学学报,2005.17(6):1371-1377