找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 262|回复: 0

[资料] 基于AutoCAD的数控图形自动编程系统

[复制链接]
发表于 2011-7-13 23:52:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转磨削论坛

您需要 登录 才可以下载或查看,没有账号?注册会员

×
1 引言
/ a( @4 Q$ i0 e( p% t% h  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。
5 u+ }/ L+ ~0 m2 系统的框架结构和功能: G- c- W4 P7 k2 N% B2 B3 h
  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:. }! j7 K* w/ \5 j9 G- L
20083811346.gif * F' i' A4 q. P6 r1 U# N. ?/ {
图1 系统总体框架结构. G/ E" k  I0 Z) s# ]& |3 n
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;6 A: C) L4 W+ m$ Z2 N
  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;' Y, c2 t- U5 b* A7 V5 ]0 K
  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
1 B1 [, ~2 ~; P: h% ~  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;: m4 T6 t+ U7 m2 w
  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
  Y) C/ v: c7 M2 ^3 软件设计过程
, K- Z3 E6 l6 ]! F! h  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。
3 l- p$ _( r$ }0 p; @$ ^$ h' g  (1)实体数据类型变量定义* I% N, F. N. A1 x3 D( b* R) ^
  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即
8 F3 M1 |0 h8 N/ [Type ENTITIES-TYPE; _" N' W0 a& _# w( z! U) X* b& {
′实体形式数据类型名:
2 p2 r" N# s1 s- _  ENTITIES-TYPE;: W! T4 A, U! i6 X% K
  STYLE As String: [9 U5 F& v# `! A2 B3 w
′实体类型变量(其值为LINE,ARC,CIRCLE);) T4 G2 `: F( ^
  X1 As String. x9 p6 [  L: J2 [, |" L6 {
′实体的起点坐标分量x;& \' a( f! w9 G* ?! a+ v
  Y1 As String3 ~' ~& w. S2 Z* T  [  J1 ~
′实体的起点坐标分量y;
5 `$ g" \. j3 \) g4 Y2 u- {  X2 As String1 n4 U( j. |1 {
′实体的终点坐标分量x;( p- @! ^, ~4 c; }/ K$ J
  Y2 As String/ \6 X$ I' E, n' Y2 w' p1 {
′实体的终点坐标分量y;
2 Z; M+ C! a! f  X3 As String; h3 Y- N. j, S0 Q7 d
′实体(圆弧或圆)的圆心坐标分量x;  P' `& l( P9 i$ f
  Y3 As String
7 k# ~& B( i9 y! c′实体(圆弧或圆)的圆心坐标分量y;( s5 q' d3 ?$ X4 F. w, s
  R1 As String" b9 \1 i3 L" a* C# H
′实体(圆弧或圆)的半径R;$ V& p, C! [* S8 [  f: L& o5 E
  WISE As String7 j, u% A/ [& _/ p  m3 E% z. W0 Y
′实体(圆弧或圆)的顺(=0)、逆(=1)方向;
- A8 [/ r2 E/ }% a5 g7 Z/ X% y% L9 r  ANGLE1 As String3 B$ p* ^& z# `& J. H
′实体(圆弧或圆)的起始角;9 C0 f3 m5 d& g) Y
  ANGLE2 As String, c1 a3 N" |: `& G
′实体(圆弧或圆)的终止角;
. s2 |% l+ |0 ^; V2 ]! \End Type
9 D* x) @5 @. Z" W2 VGlobal MM(200) As ENTI-" r  V" ~2 i' ^
TIES-TYPE
3 q' `) u/ H3 P/ a% o′定义一维数组MM全局变量,其元素为ENTITIES-TYPE2 b& s% `# W+ A& G1 G
′型变量,实体数目最多不能超过200个。
7 V$ s  c. W, R6 N- m* Y+ E  (2)DXF文件的读取程序2 }" |3 e* Y: `. c
  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。
$ }$ N( s+ W- G  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。) V! |  G5 @  N6 }9 R
Sub DXF-IN 0& E7 B, _! O/ R5 l! @
Dim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer
8 W5 z: Z7 L! ^# F% w9 ]Open FILENAME1 For Input As #1
! u# I( W2 o. O  Do Input #1,B' z! u* R' b+ ^
  Loop Until B=“ENTITIES”
4 |9 b* d' D) v6 t- k  Seek #1,Seek(1)! f( h- v( N* g: a$ L. I% b* j5 `
  Do While Not EOF(1)
9 _0 i7 d, t# ]- ]  N   Do Input #1,B# L8 c3 J# r; y; b8 x/ p
   Loop Until B 〈〉“0”. u0 k# x1 {# t
   i=i+1# A# T- B* t' g6 B1 B/ b
   Select Case B
! t) i- s: ^3 H) s6 O      Case “LINE”2 X0 i- t6 d( O2 G/ J0 v7 S& m" t$ V1 Z
       INDXF-LINE 1
+ P- S& L$ e0 n1 j       CC.STYLE=“line”
# W9 d* O- p- K6 y( N) t2 x       CC.X1=Str$(x1)
& w5 k' ]) h/ F- I3 X) V, K       CC.Y1=Str$(y1)& _, ?* r! ]. A" I, q" t% x4 F
       CC.X2=Str$(x2)
0 }# P7 j% `: i8 e& }       CC.Y2=Str$(y2)
  V$ M- C; {! C5 Y2 m       xx1=x2% o2 y4 G, s( R
     Case“ARC”
& E  y# z; v5 F7 e, d0 _9 @: H' F3 P* H       INDXF-ARC 1
7 e# m( H) l7 {5 _6 O1 w       CC.STYLE=“ARC”
9 x& n- y- E/ Y+ l       CC.X1=Str$(x1)
  T. L% q- b1 e( a. l7 @       CC.Y1=Str$(y1)& L- {; g/ W9 K: C9 ~
       CC.X2=Str$(x2)
& K0 }/ f: q/ U% W/ G$ T       CC.Y2=Str$(y2)8 }  c7 N1 n: h: D5 r
       CC.X3=Str$(x3)) m( E  [2 o1 C9 u- ^6 v1 [
       CC.Y3=Str$(y3)
/ K! D' P/ F. k+ t       CC.R=Str$(R)' w. j7 }7 @6 P, m5 E
       CC.ANGLE1=Str$(ANGLE1)
3 ]  W6 y1 \) ]/ S/ ~       CC.ANGLE2=Str$(ANGLE2)
) A' m( X1 M6 s       If Abs(x1-xx1)>.5 Then# S( m) N5 b4 u% p9 j2 U3 V5 ?
        CC.WISE=“0”3 p+ B9 R0 q/ K. a9 u3 s) ^
        A=CC.X1:CC.X1=CC.X2:CC.X2=A; |! _4 V& g( D3 x* m# O: K
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A% I% ^2 ]2 m5 k3 Y
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A
6 O1 G: F$ g! M5 [, K0 E         Else CC.WISE=“1”3 j1 R" K# w0 Z
      End If xx1=x2
- l5 o: x8 B0 h' P    Case“CIRCLE”
# m5 Q$ T) a7 D; X! ]; X      il=il+1
! d. C# U  \# z1 ?3 e1 W8 E      INDXF-CIRCLE 19 e: x  }, R' J: n
      CC.STYLE=“CIRCLE”
% t/ v5 o4 j7 f      CC.X1=Str$(x1)0 p% s# o3 K; D: V) B& O
      CC.Y1=Str$(y1)
5 o& K- o5 J0 c, F9 K0 i$ f1 C; s      CC.R=Str$(R1)
" z5 r! U* J; U8 `' _: \' x( o      CC.X2=CC.Y1
2 w3 l" V- d. ?5 ]" F( h0 w' ]      xx1=x16 Y/ @6 k3 Z6 k+ r5 c1 A" B- O
    Case“POINT”# o' g, N! r! P7 G. U& n5 L7 O
      INDXF-POINT 1
, G8 _. A' P9 j% j" y( g      CC.YSTYLE=“POINT”) L$ }" f2 m7 C
      CC.ZHX1=Str$(x1)0 [) Q) W' L4 Z, Q4 w3 Q
      CC.ZHX2=Str$(x1)2 u+ v7 [% t0 _% G# I# K
      xx1=x16 m3 ~( y0 Y4 b. z9 A
    Case Else
/ X% `5 u- N( I0 r% V& ?      CC.STYLE=“NONE”$ C7 Z9 F) v+ b, @# ]5 Y
 End Select5 B& M: c6 x- f$ x; z, t% ]
 Seek #1,Seek(1)
5 E' u" Q" X" B2 a+ l j=Str$(i)! j1 H3 ^7 J. i- y
Loop
$ S1 I0 m# i4 m% W8 ~( x2 HClose #1+ W9 e  S6 [/ Q7 M) O& u
End Sub
# \, ?; o; H$ J% |  P* s0 I& y7 z  其它模块的程序设计不再赘述。
: H# W" _1 w8 t; ]! J4 实例& ?7 P5 J. |' k1 G/ h: ^
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。
5 y) `: O+ h& N. Q, n N0001& S. h& H/ g: T( i9 c5 d  Z5 o( @
G90 G92 X0 Y0 S500 M03 LF5 B: m, ?9 q% Z! X/ m! M
 N0002
) m" G. O: F! `6 h0 fG01 X1 Y1 LF
( O) _3 A4 x8 R) V- R5 e! n N00034 X! b; B0 @/ M1 F: }7 y& |
G01 X1 Y61 LF
8 P7 j/ ~, l4 g% {4 O( B) q N0004
. r3 F' J, D- P5 q+ m5 b5 U( U3 \G01 X41 Y61 LF* D& n. Z: Y1 D7 F) Q6 |. M$ F
 N0005
! a1 v1 _* d5 p- [7 t2 IG02 X61 Y81 R20 LF1 C/ Y1 J- f  E  |# _
 N0006
" ?+ j, q6 ~# S1 Z: oG02 X101 Y81 R20 LF5 L. o* S1 M, D/ r% q. }$ ~- |4 I* D
 N0007
; t$ d" L, B; N! `G01 X141 Y81 LF3 A2 e5 g4 d9 N7 p9 C& w
 N0008; N: F3 x7 @1 B: ^& K
G01 X141 Y1 Lf, a" q9 E* J. ~( q; y3 R9 K& ^
 N0009
: B2 p& W: Y1 l+ C5 L( ~G01 X1 Y1 LFM
! O( z: }; k- a& m2 S! a N0010
6 _" t: O. {) a$ D: x0 t% v02 EM& Z/ l* O0 }# N- k2 N
2008381147.gif
! S- F, Z8 |; ^图2 AutoCAD绘制零件轮廓
$ L) Q0 X( w0 U3 {) @$ V5 结束语) o6 ]: q6 s, X+ f: p+ C
  由以上实例可得如下结论:
' Q8 E  @* P( t, u# a  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;
9 O$ v# w$ O4 ?! o# U7 H+ v6 ?, ]  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
  Z4 s: M2 G. H1 ?  I, G5 M  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;
# l, A; k/ V( t2 [  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
. z: e0 `* e3 {; W6 l  Y  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。5 o2 Z# C8 u& B( d
文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

中国磨床技术论坛
论 坛 声 明 郑重声明:本论坛属技术交流,非盈利性论坛。本论坛言论纯属发表者个人意见,与“中国磨削技术论坛”立场无关。 涉及政治言论一律删除,请所有会员注意.论坛资源由会员从网上收集整理所得,版权属于原作者. 论坛所有资源是进行学习和科研测试之用,请在下载后24小时删除, 本站出于学习和科研的目的进行交流和讨论,如有侵犯原作者的版权, 请来信告知,我们将立即做出整改,并给予相应的答复,谢谢合作!

中国磨削网

QQ|Archiver|手机版|小黑屋|磨削技术网 ( 苏ICP备12056899号-1 )

GMT+8, 2025-5-23 00:28 , Processed in 0.167824 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表