找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 247|回复: 0

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

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

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

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

×
1 引言4 I, ~# d) G. g& M/ r0 ]. E
  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。
1 o8 `3 H0 T% U$ F" l7 l2 E2 系统的框架结构和功能
/ M6 N9 I' C) \% Q$ b. y! Z3 [  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:2 f, {# t$ g- _3 r" f. |
20083811346.gif
; z- R5 F- P# w( X! ]图1 系统总体框架结构7 l9 Y: n. m% V; m
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
# \* u5 v6 ]  `+ z5 e7 j2 K  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;
. _4 E7 w- G2 m" I/ h- H  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
6 Z( n! i0 n; t% K; U% L4 k% f  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
' K5 D+ U& U8 R( `2 }1 p  n7 Z  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
% [# |' v3 N+ `: q+ g1 g3 软件设计过程  v% x# X. Z+ Z0 Q: b
  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。
) {# ^( o6 y5 `  (1)实体数据类型变量定义
( Q6 j9 I% Z7 F9 v" D6 M) C  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即' P8 X1 U7 j& y$ a1 \  K( {! b6 D
Type ENTITIES-TYPE2 I# G9 Q, P; f
′实体形式数据类型名:3 G7 ~2 m9 r' o* j
  ENTITIES-TYPE;
5 i! r8 z' g+ |+ J  STYLE As String
$ N; [5 ?1 z4 t) m′实体类型变量(其值为LINE,ARC,CIRCLE);! D3 w- j* S' F% Q5 k/ Q. ~+ Q, x
  X1 As String
' D# C. t+ X4 U$ X6 b  R′实体的起点坐标分量x;
; ]4 _+ Z: A7 Y1 T  Y1 As String
. J4 u! z- t, M4 q$ y′实体的起点坐标分量y;
  g& \+ d' q4 u! S4 L  X2 As String
( C4 h$ A% E9 Z% `! K′实体的终点坐标分量x;
3 Z* L8 {) D& B9 d  Y2 As String: u' T: k$ X3 l1 q
′实体的终点坐标分量y;1 ?0 w2 L7 v! B5 _
  X3 As String* x' K. Z" f. W1 k) N- Y2 o
′实体(圆弧或圆)的圆心坐标分量x;
$ ?% ~8 f' u7 a1 \4 y  Y3 As String
6 h- G# T) x  r5 U" c; B; c' K; t" c′实体(圆弧或圆)的圆心坐标分量y;# X% M/ p9 ^7 \! K3 c' ?: {
  R1 As String
: Q% ?; o+ ~3 G0 E7 O& b′实体(圆弧或圆)的半径R;
/ E  U4 h0 I% m9 T! |  WISE As String- Z# {- T) A3 t
′实体(圆弧或圆)的顺(=0)、逆(=1)方向;, n0 e" @2 _( U/ f  B2 e! L
  ANGLE1 As String% x5 `4 H  T0 F- I5 \% ~
′实体(圆弧或圆)的起始角;8 y7 b2 K& h- Z( Y
  ANGLE2 As String
" j, M1 {+ f* q" j( z8 a! y′实体(圆弧或圆)的终止角;7 D  I9 b% i; o) T* G
End Type4 t' h$ `2 S+ Q, _6 Z  S
Global MM(200) As ENTI-
5 q1 o  Z$ n. Y5 K# JTIES-TYPE
, {, N) u) L6 W  [/ |′定义一维数组MM全局变量,其元素为ENTITIES-TYPE; c  D4 n) F* e
′型变量,实体数目最多不能超过200个。* {  D' m! {; P( }. @, B& q
  (2)DXF文件的读取程序& H! H" }' u% ?  N# @% E
  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。9 M" M0 e4 }  }# T
  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。9 N1 u* o; y) I. f# Q
Sub DXF-IN 00 d1 K% }7 K5 h  b7 r6 C
Dim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer
- s# C$ n0 b1 u& L: S  x+ BOpen FILENAME1 For Input As #1
; a  @' [4 K- {- f  Do Input #1,B
- L& F  G* q' |. B9 S1 f  Loop Until B=“ENTITIES”
( [4 \) Q; S" W4 a: s4 k2 P  Seek #1,Seek(1)
) u  @. O: U' X( l  Do While Not EOF(1)# {; O2 g9 }+ H( \# _3 ^( x
   Do Input #1,B, |% T# R& m+ v% |  ]" c
   Loop Until B 〈〉“0”
7 |. F. ?$ T! t7 I& w   i=i+1
* r9 T* [( U8 B$ L   Select Case B/ _0 W. C( t8 D7 D% T+ ]6 o
      Case “LINE”" p; J8 c+ W* \( [7 E
       INDXF-LINE 1
1 d" l# e  k# R8 a: l       CC.STYLE=“line”
) }, \8 u# J/ W, K, l) O! W. d       CC.X1=Str$(x1)
# J6 i3 @4 k/ Z5 ~       CC.Y1=Str$(y1)
% p$ Z2 [+ J6 H       CC.X2=Str$(x2); A6 G+ h3 x1 }+ m$ ~0 I
       CC.Y2=Str$(y2)$ T% n5 H! r2 p3 d
       xx1=x2& Y/ X3 `% o% W
     Case“ARC”' ^  d9 S, o8 |8 }/ L# X
       INDXF-ARC 1
$ M8 X' j& D; f! A: o% {       CC.STYLE=“ARC”
6 a9 @: `$ e1 m5 C       CC.X1=Str$(x1)6 u" E  [4 e$ Z9 y% f
       CC.Y1=Str$(y1)6 ]$ _! ^! o4 U
       CC.X2=Str$(x2)8 k* g, P- M/ \/ L" \4 f
       CC.Y2=Str$(y2)' K0 g' J: Y1 |# b8 g) Z
       CC.X3=Str$(x3)
6 f$ d7 F" ~  g- W9 ]( Y1 d9 |, z       CC.Y3=Str$(y3)
9 `$ q& Y, z2 H- M! [6 U       CC.R=Str$(R)
  r& n" V8 f$ R4 x       CC.ANGLE1=Str$(ANGLE1)
- H. C6 M; n' S3 z/ \       CC.ANGLE2=Str$(ANGLE2)
7 {5 e9 G0 |) ~4 G4 I       If Abs(x1-xx1)>.5 Then  Y9 \4 E0 _# R
        CC.WISE=“0”
- y( x+ k+ J3 I0 g' l, A        A=CC.X1:CC.X1=CC.X2:CC.X2=A, f: `: o+ E9 L" A8 J
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A3 R1 I; e7 Q) L' a" e, X
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A, N/ W- O! k3 x  C; @) A) O
         Else CC.WISE=“1”
8 z% R, Y; f% {- y+ l      End If xx1=x2
0 o! y3 t1 n9 }6 G    Case“CIRCLE”  D: `0 G+ G5 e. Q
      il=il+1& w. T  O$ c4 `7 K' S  @1 Z
      INDXF-CIRCLE 14 ~2 @: d8 ^2 @2 X: g9 u) _
      CC.STYLE=“CIRCLE”
/ F$ t, f3 y% U4 w; R/ _      CC.X1=Str$(x1)
' A! ?, q5 `! {4 Z8 Q7 b      CC.Y1=Str$(y1)+ ?3 c$ a: r7 k6 n7 X
      CC.R=Str$(R1)3 ]7 B  L/ P0 K* }* ?
      CC.X2=CC.Y1
2 l8 D* T4 w. ?: _# M6 I5 E' ^4 i      xx1=x15 r( u# P: [2 k0 D) V
    Case“POINT”
9 y. }/ L7 d) m) [# C0 V8 N      INDXF-POINT 1# U' Y# }; }7 }* v
      CC.YSTYLE=“POINT”- K3 X1 f2 U5 [6 c% i' @
      CC.ZHX1=Str$(x1)
: a* l  v$ A" {7 |/ W9 e      CC.ZHX2=Str$(x1)& J0 \" e, u& U) p0 e9 F, w& b: `$ n
      xx1=x1
, _. ]( L- `, s: Q; D+ H    Case Else0 K* s: h+ ]) i2 p) p6 @  Q& k6 d
      CC.STYLE=“NONE”
+ {6 ]% P0 ~' i3 n4 b End Select* v$ C) B; L% g5 a0 [; k
 Seek #1,Seek(1)
3 k; b$ Y/ \: q+ d+ Y9 h; p% N j=Str$(i)9 Q/ I6 r, v2 E
Loop( G2 G. f# \+ Q# b, }& F
Close #14 e, P( ]& d: e  H) g
End Sub
- O5 G/ K5 b& i5 ]/ w  其它模块的程序设计不再赘述。& p' P# X1 G- b' k
4 实例
, C5 j3 o1 Y7 f+ T2 t( I  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。. z( `9 G2 u: A
 N0001
9 D. d6 `! [* R- s. {G90 G92 X0 Y0 S500 M03 LF
/ K; K; J& ]  A4 o4 o N0002
& \/ X6 p/ I. \( d( [# PG01 X1 Y1 LF6 B1 \( u- f. B
 N0003( R$ ?0 X8 G" H3 i  }
G01 X1 Y61 LF" R8 Y. _$ A3 u, I8 @' G# @
 N0004! P$ y; ?9 q' D  e9 ]8 ]0 C5 t
G01 X41 Y61 LF1 v# F$ L7 \" Q# H6 f$ ~  u
 N0005
  |8 ~$ L8 a5 \G02 X61 Y81 R20 LF
& g) g' x: A/ V. g8 j- D- | N0006
# Y) S$ \! G7 w8 XG02 X101 Y81 R20 LF
: a  B0 x% V) ? N0007
" k6 e( g& Z  J& ]5 n) o: }G01 X141 Y81 LF
) ?: N! U  {7 ]0 A N0008! e( T' Y1 @9 d3 Q8 o0 ?* Q) p
G01 X141 Y1 Lf' A# h% F  i9 u9 z- R4 _
 N0009
9 [! c  `' a: y5 |G01 X1 Y1 LFM
, \! S2 C" p1 d) r5 G N0010
2 H* H( M3 u* [7 ^1 C' o02 EM
2 g. E1 x) _1 \' }" d; X 2008381147.gif 2 L  S0 F+ n+ k- ^" {; w
图2 AutoCAD绘制零件轮廓
  j# u7 m* C6 s3 L" T' |- x# I5 结束语6 s1 @; H* w- }: Y6 W- N' j$ d
  由以上实例可得如下结论:
% Z9 q2 ?0 t9 q4 k: G4 r" Q4 r  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;% q  e- q2 i* G( i
  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;1 n4 ?0 D# _% s& c, E7 R! H, c' p
  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;
/ l) J  l; I& H2 n  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
2 z/ z4 C. U* Y( _# g5 T% K: K6 L# X  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
) @7 w- w) W% x6 G$ m, z文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2025-3-7 10:46 , Processed in 0.176613 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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