找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 223|回复: 0

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

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

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

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

×
1 引言9 `7 K& P9 t3 ?  p
  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。
7 A$ a5 G9 G6 I$ f* N2 B2 系统的框架结构和功能
0 g7 Y/ S3 i4 T+ k  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:
& i- l8 j' m+ B8 e 20083811346.gif
2 z/ o0 b5 m- i! X& U图1 系统总体框架结构
, y3 J0 d, `, P* ~  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
- i8 q0 s/ V& w) p2 D4 _0 ^  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;
% c4 r! w% T& ^+ L% H& c) O0 u  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;7 h( g! F; x9 z2 n. N
  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
+ W7 Z/ {! s4 _# O5 P  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
6 U8 \7 i( N4 M9 G0 U" l& P9 `3 软件设计过程
( j% F# k; ^' K3 L  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。' c' f7 P# F/ f* u
  (1)实体数据类型变量定义
+ z+ Y  j$ J% a4 _  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即
- S4 U  v: R' ^% {4 VType ENTITIES-TYPE; \2 N- W. Y" \/ Q- s0 k
′实体形式数据类型名:. ]5 F& F6 d  F
  ENTITIES-TYPE;( ~8 m- t: L9 \
  STYLE As String
# |: G. \$ V( z0 _′实体类型变量(其值为LINE,ARC,CIRCLE);
* h6 {  Z- z. X! L  X1 As String& @8 a$ x# ~4 b. R- w; e. h7 r+ i# j
′实体的起点坐标分量x;
/ x( K7 r1 P$ X% ?( M" [! J  Y1 As String4 V: v, H' g9 }! o# ~+ W, n1 Z
′实体的起点坐标分量y;" \9 z. X8 A: \& q% b& L# A
  X2 As String4 ~9 ^% ?1 o: C! C
′实体的终点坐标分量x;
3 D! t" {; j4 d) q4 r  Y2 As String* _# V; I1 p, l4 P( C
′实体的终点坐标分量y;- P. S/ u( S; t8 ?" E
  X3 As String) G  K- }+ K9 T% G
′实体(圆弧或圆)的圆心坐标分量x;
* A, c* [# K  o9 `, S: h  u  Y3 As String( x8 w( V% K" o1 [  c+ M
′实体(圆弧或圆)的圆心坐标分量y;
) s6 |8 Z8 s+ Y' @& h  R1 As String1 m% T9 |$ D( r& K4 ~* v
′实体(圆弧或圆)的半径R;
( W$ o4 A" {2 i4 ~) h  WISE As String
2 C% n/ [  ?$ S( Y" c' ]0 r# N′实体(圆弧或圆)的顺(=0)、逆(=1)方向;" Q: R' |5 v* c$ q4 h
  ANGLE1 As String  `. U' V# H- `, J4 G
′实体(圆弧或圆)的起始角;6 M6 o- z1 r# k( E
  ANGLE2 As String
% K: F% M1 }, b- B; B5 u& G′实体(圆弧或圆)的终止角;' F4 S1 q# d5 K9 N% }
End Type) \! G2 G8 z9 ^$ x: b0 w. F
Global MM(200) As ENTI-" i8 S3 k- h- @8 T7 a1 b6 h
TIES-TYPE9 w; t- t. s7 t8 G! F3 `! P# ]7 N
′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
* U: \6 n; Q% z* J8 H' d) m' ^′型变量,实体数目最多不能超过200个。4 `4 i9 c9 [# T- ^
  (2)DXF文件的读取程序
6 {* z; E; O; D8 S! @# T' q  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。
! z' r+ i! v8 w+ ?7 G  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。
, I) D' j; s8 d; w4 N6 _Sub DXF-IN 0
* s4 O/ K) m7 u" \; ^. DDim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer( Y/ ~" o! O- X  O
Open FILENAME1 For Input As #15 [( y# ~% N0 o- x% M# ^( ^7 Y
  Do Input #1,B! v2 e5 A$ S9 U( _! ^" [8 n9 B! w
  Loop Until B=“ENTITIES”
/ r0 t" A& _/ o' x6 ^" w( P8 T& `6 W  Seek #1,Seek(1)
) ?; ], p8 q6 A+ m  Do While Not EOF(1)+ P0 b2 J! _. [4 _3 t6 O
   Do Input #1,B' R5 H! d/ f2 k# V9 a+ I' P' z
   Loop Until B 〈〉“0”
; A6 S) Q# K% z& @: C7 Y   i=i+10 `" Y: Q" Z; X
   Select Case B3 l6 b8 j6 R, @0 C: I; `% C
      Case “LINE”
/ U2 n0 A( s. |4 ?" n       INDXF-LINE 1/ }. d6 J  Q" a, M
       CC.STYLE=“line”8 p0 c( x* @. ~. j4 G' a# Z
       CC.X1=Str$(x1)
# w/ f% b, |9 y( P$ U* j& A       CC.Y1=Str$(y1)
8 r5 F; V$ C4 y( S       CC.X2=Str$(x2)0 ?; q/ w+ X" f! U
       CC.Y2=Str$(y2)
7 B2 F8 c& R; H4 _6 q% N       xx1=x2
1 }: m8 i5 X- a' ?     Case“ARC”. f$ w9 L7 ~/ ~  j' E" y
       INDXF-ARC 1
# A' t( x7 m7 d+ ~       CC.STYLE=“ARC”5 A6 o, v' G1 ~" @9 w1 [, e5 ]
       CC.X1=Str$(x1)! f$ J" f0 m3 W, R3 _1 U
       CC.Y1=Str$(y1)
# H# A. j: [  B3 |. L       CC.X2=Str$(x2)0 N6 x2 z5 U; M. B3 d
       CC.Y2=Str$(y2)# R1 a3 }+ C2 l
       CC.X3=Str$(x3)* Z' r/ Z: d0 q9 u, }8 Y$ i$ J
       CC.Y3=Str$(y3)
- T2 `2 n* l4 K6 W8 P% H9 ~' F       CC.R=Str$(R)/ \: }2 ]4 V5 n8 B/ r$ v. c4 b! r0 F- l1 {
       CC.ANGLE1=Str$(ANGLE1)
3 r* n$ U8 S. M& h       CC.ANGLE2=Str$(ANGLE2)7 C- v& `; Q* l9 F
       If Abs(x1-xx1)>.5 Then' }3 J% c  L, l5 \9 V1 g+ [; a
        CC.WISE=“0”
( K4 X' c4 N( I. ~! H! i  T0 h        A=CC.X1:CC.X1=CC.X2:CC.X2=A1 r! w; p) E2 Y2 ?3 D& \: B4 m
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A- T9 K3 R: b7 v& ?9 Z
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A1 L) Y: }, f6 v- [7 ]6 B7 t
         Else CC.WISE=“1”2 Y2 ], o2 W+ H" m, s7 |) x
      End If xx1=x2
/ L. }( s6 ?6 K7 e8 x( T0 i1 y    Case“CIRCLE”
* x6 X8 T) O3 I5 [1 u      il=il+1
  N- ?& `" f& [" q: w      INDXF-CIRCLE 1
! R/ T. k0 B" k: T) c4 V  e      CC.STYLE=“CIRCLE”; C( j7 Y3 T% w) O
      CC.X1=Str$(x1)* ?; ?7 ^0 f  w* m* C( ]( l
      CC.Y1=Str$(y1)$ j+ F5 y) q- d. @3 J
      CC.R=Str$(R1)9 d7 C5 a- @2 f! z5 }3 ~, O4 _
      CC.X2=CC.Y1: J& t+ U' Z' V
      xx1=x1& }( S8 P7 |- _. ~; J  f3 E
    Case“POINT”) T8 y- V; |% ?
      INDXF-POINT 1% c. o. n* y" k$ y, A% d; O( D
      CC.YSTYLE=“POINT”
: ]$ j0 `! ?) ^& I& t6 O; p      CC.ZHX1=Str$(x1), c& O4 [. k4 ?0 z) T# u- R
      CC.ZHX2=Str$(x1)
7 N" V4 }; @) C      xx1=x18 j7 n) i7 V0 l. `0 G5 i
    Case Else
+ W9 u, ]. q9 k# a; g3 o+ w      CC.STYLE=“NONE”
9 ]% T. k8 A0 f5 _ End Select* C, K' B* |$ g7 T0 r, u
 Seek #1,Seek(1)
, o. ~+ S0 R  L* E5 B$ \ j=Str$(i)2 x, x9 H2 f+ x
Loop9 m) u0 P+ R7 [0 o) X6 Y
Close #1$ I' _, m* s" |7 |0 B4 t. }
End Sub1 T& k5 H% B6 y8 [" l" a1 @
  其它模块的程序设计不再赘述。9 |2 q& \9 W3 \' s6 w* R
4 实例# @0 w! o& e( U5 o/ k
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。$ X& y; F: X, z$ i) h' w. y
 N00012 w2 V1 [. O8 n6 x
G90 G92 X0 Y0 S500 M03 LF3 F- t. E' b3 O8 q% h
 N0002! q. @# e) D# }) @* B8 m7 G
G01 X1 Y1 LF; T3 p. t, H$ O
 N0003
2 Z2 w# |) Y" s7 E. NG01 X1 Y61 LF
- J4 g4 z0 E5 Z( i* B N0004$ W, L5 f7 ]' F; P# z
G01 X41 Y61 LF5 d3 y) b& f7 v  w* N, W* I  M3 `3 q
 N0005
" J% ]- i( `+ c1 B9 DG02 X61 Y81 R20 LF
' E: C' a( O/ b+ f1 R! x, N N0006' J8 g& C. u1 H
G02 X101 Y81 R20 LF
4 m: r" y5 L- o; H* c0 O! C N00076 I- `" ^! {9 e, L# d7 j
G01 X141 Y81 LF
) K4 c, A! v: c( B' _( G2 C N0008! I; F+ D2 f0 g0 v* }7 t
G01 X141 Y1 Lf8 h: x* I1 t0 x9 p% m! \: L
 N0009# C) s2 O0 d+ d3 p$ z$ @  \; l
G01 X1 Y1 LFM% I. T$ ?( U2 b' D) |# J
 N0010$ h- k5 W' o3 C
02 EM" f* m0 g% G, r
2008381147.gif 6 M, \! f6 ~* K
图2 AutoCAD绘制零件轮廓
& u: g2 f7 z9 U9 _: H* u$ L5 结束语
# V9 x7 X1 \5 I0 s( F2 C: i( F1 o  由以上实例可得如下结论:- [6 S3 H: q$ S6 z- v% R2 }
  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;
2 S& p0 R- d6 [4 A$ p: R  C; z  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
7 N6 ]% Q& m. b: V8 F/ K! ?1 M( Q; y  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;! Y: T& m) p* z( q: Q, \
  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
6 U, e6 \1 s/ t7 H8 z& D' d7 l0 }$ a  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
! W$ F& t1 }5 D3 a! B2 b文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2024-11-15 06:31 , Processed in 0.191353 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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