找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 228|回复: 0

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

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

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

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

×
1 引言
" ]9 \9 B# O, N9 K6 g  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。! |% K+ [( M, U8 T+ G. {$ @* Y
2 系统的框架结构和功能; W& j% [9 S$ K
  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:
% F/ Z$ U* ?; \% F3 V: y 20083811346.gif
% m. ^" Y/ W- l( {+ t图1 系统总体框架结构& A3 M) i6 D, T9 ~2 G
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
* w+ r* Y: D5 T6 [  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;/ U3 |. v: z+ w: ^. x- p
  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
/ w7 J) @6 y; k, ?2 u# V  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
4 g! q" R5 F9 i3 I  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
( h; U. X1 g, ?3 软件设计过程
4 E  f, z$ {8 Y8 V& t% X2 ?* l  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。
; N# K2 }* A$ ~  (1)实体数据类型变量定义
, C( i* ?( [5 d9 _0 o9 p  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即. {. ^' {+ ]( G  G, q
Type ENTITIES-TYPE* ~1 B) A5 B8 J% D: O& x$ V* j
′实体形式数据类型名:! S3 F. S9 b& `3 y% f% n7 R7 N
  ENTITIES-TYPE;
3 O: n* i: k" }" J. p0 x. A. j  STYLE As String
8 D; O& W- a; K′实体类型变量(其值为LINE,ARC,CIRCLE);
: X# U4 D8 Z* F3 a; i; l0 ]  X1 As String! P; G# I; Z1 n5 `) }9 N) P
′实体的起点坐标分量x;3 V9 s6 a$ u- \3 d" g( z
  Y1 As String
2 i7 N- o4 w- a! g6 ?3 \6 f′实体的起点坐标分量y;: R  q% |$ u: v# f3 Q
  X2 As String
/ q  R; ^* w3 S8 U+ y' d′实体的终点坐标分量x;
: {: M3 X# f' w% ]/ g1 z" K" Z+ m  Y2 As String1 B* P1 B$ r/ I( b4 y: U  S+ Q. v
′实体的终点坐标分量y;2 c8 O) d- P) ^( P% Y+ H" a4 E
  X3 As String
7 r6 n& |% N# n6 r′实体(圆弧或圆)的圆心坐标分量x;* F: j$ y; ]8 t/ L6 N# K& U7 O
  Y3 As String! Z1 }7 Y  K" M  i
′实体(圆弧或圆)的圆心坐标分量y;
9 ?2 ]; b  q1 ]0 b& E" E  R1 As String' N5 J7 m/ m7 q3 w6 T
′实体(圆弧或圆)的半径R;" G: b6 Q- n. |$ B
  WISE As String
+ i- }) ]/ ~. b′实体(圆弧或圆)的顺(=0)、逆(=1)方向;
  u( g5 }9 P' v. N9 K  ANGLE1 As String5 C  K- d; v+ D1 ~" }" p. `
′实体(圆弧或圆)的起始角;/ j8 B/ t6 ~* B7 ]
  ANGLE2 As String4 ~& a" M; D/ M* T. `
′实体(圆弧或圆)的终止角;, a  H' S5 t; C; B; w9 a4 p7 U) N
End Type" H0 W4 b- z& n1 W. x# D0 r. X
Global MM(200) As ENTI-& ]$ X! ~/ _6 Z/ l
TIES-TYPE: L) [: X0 ?: D2 l% F- U1 i
′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
7 C. [; ?: p" o+ _′型变量,实体数目最多不能超过200个。
. ~5 l: y( [: x* V& P" J9 ?  (2)DXF文件的读取程序
) v- j( A, {8 R& ?: x0 }  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。
; t  w6 r' B+ o* u8 \8 D7 e) L/ K# u  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。$ I# L7 N# c4 r7 s- {# w# r
Sub DXF-IN 0
/ e+ l0 @7 G/ t6 H- y2 O+ c9 j4 v% vDim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer
& s. n% d. _* o  u" o' sOpen FILENAME1 For Input As #1
0 M8 w4 h: m7 G& h  ]! F  Do Input #1,B( |0 X/ @# C0 e( ?9 r( W
  Loop Until B=“ENTITIES”
9 N0 n& R3 q2 c6 V( R' B3 v  Seek #1,Seek(1)
+ s$ t& f* |) o4 s" a( Y  Do While Not EOF(1)  [$ C7 ~. b% e) _) F
   Do Input #1,B# Z1 r+ `+ Y# h9 \5 Y, ~3 f
   Loop Until B 〈〉“0”
  N$ R5 \( s% X( |) X* J+ n1 e   i=i+18 b( c% `( E0 z3 v) c1 @" ?
   Select Case B
! s4 J: j/ E1 d! i) v# g6 V* y7 H1 ~  K      Case “LINE”' L* i! A: O# o& T) l1 i" C4 n
       INDXF-LINE 1& y7 a- s, ^! R- P
       CC.STYLE=“line”
" P8 @0 Z! @* @, }% S0 g       CC.X1=Str$(x1), ~5 q: g0 S2 c3 h0 g% ^# w
       CC.Y1=Str$(y1)
, p- k( d6 u  Q7 c7 z/ U       CC.X2=Str$(x2)
$ _" h7 j; H+ v/ t: b( v/ _& c, ]2 l       CC.Y2=Str$(y2)
/ G  S8 ~  V: Z& O! m       xx1=x2
0 q* l# b7 A4 w' |, T" C     Case“ARC”. q( F4 B& ]6 |' d/ T  V, ~
       INDXF-ARC 1
7 D6 v( R! o. _4 q, ^7 @/ w       CC.STYLE=“ARC”
6 F' h0 s2 c6 i  t5 Z5 h       CC.X1=Str$(x1)/ c( m$ `9 L+ p5 t7 ?" @; o
       CC.Y1=Str$(y1)! Z, p% V9 n, L% e# v
       CC.X2=Str$(x2)" Z, w, }( c* o
       CC.Y2=Str$(y2)
3 K- V7 N1 m2 a) V) h4 [& c1 K       CC.X3=Str$(x3)
+ {* \1 s2 D. l+ U) Z       CC.Y3=Str$(y3)
7 d( g# G% ^$ _& D& I( s       CC.R=Str$(R)' O* ~+ M/ Z8 j' V0 l
       CC.ANGLE1=Str$(ANGLE1)+ x% @/ u8 w: `/ ^, Q- K. C- m5 l* ^
       CC.ANGLE2=Str$(ANGLE2)
  F6 \$ b. b3 \) h, B) w       If Abs(x1-xx1)>.5 Then
/ b  p% N$ |5 d4 Z$ Y- O        CC.WISE=“0”
( c% B" k8 c9 d% B        A=CC.X1:CC.X1=CC.X2:CC.X2=A- K* O+ E/ q" v% T4 U# G9 p6 [$ A
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A7 a9 f9 a- m: e! T, K
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A  |6 l" F9 _; ~' w8 Z
         Else CC.WISE=“1”
- ?9 a- H; K/ D  {. m2 ~4 c      End If xx1=x2& |, ^! Q- E% k' [
    Case“CIRCLE”
0 l/ s) f6 S! c2 A      il=il+1' Q0 {  M. ~. e8 }( c+ f
      INDXF-CIRCLE 1
8 V8 c. ?" A) H1 i5 n6 k      CC.STYLE=“CIRCLE”
3 a4 h5 X* T  ]5 H2 K      CC.X1=Str$(x1)% d3 @0 D5 Z) c' J6 r) N4 Y
      CC.Y1=Str$(y1)
: G. Z7 y# f+ Q, c  N      CC.R=Str$(R1)
! B: N& A# H" E. Y! [! |7 p      CC.X2=CC.Y1
# C2 ^4 R2 Q8 [# F# c1 |1 j      xx1=x1
: M# M/ B. z1 b* A    Case“POINT”
: {, q, s# ^. f9 M/ E5 R- g0 ?$ z      INDXF-POINT 1
+ u2 [& O) O, {9 p2 `# \0 w% H      CC.YSTYLE=“POINT”
. `( K0 [* a9 x0 o; c' d, c      CC.ZHX1=Str$(x1)
7 @; @* `1 P+ q/ o- I8 F      CC.ZHX2=Str$(x1)
0 @# Z3 {+ c" M9 A9 r/ v      xx1=x1
0 W! r0 x( ^0 W) {, O: {( {" O    Case Else) f  h9 o& n  }' |
      CC.STYLE=“NONE”
7 d' m/ l; R3 i# ~9 \- I End Select7 b  k; O7 b! I, q6 w. T
 Seek #1,Seek(1)
# I5 O& {) z+ A6 n% G# b# E+ p) D5 i j=Str$(i)$ h5 B  d% [, u& Z4 {
Loop* p" j( D7 h! i$ v' M, K; N" Y
Close #1- M% H- P; @* h6 m
End Sub  @+ }6 A( O/ Y4 K
  其它模块的程序设计不再赘述。
" w# _$ m5 ~: [7 I6 |4 实例
9 A9 b! s. J8 @( _. B$ m) q. u7 f$ a  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。
! R9 |2 M% ]/ D& y N0001/ g4 k' h/ ?: y* D/ J5 ]  v2 h
G90 G92 X0 Y0 S500 M03 LF2 p8 ]* a! q7 c6 g
 N0002" f4 ~4 [/ w) b0 l  D
G01 X1 Y1 LF
8 x3 b5 [1 s) |1 I3 j# }6 I! n N0003
2 [. C- U4 D) X* F8 _G01 X1 Y61 LF
- ]8 z% F+ J1 B0 s1 e: ?4 ~ N0004+ m4 @2 w% t, R
G01 X41 Y61 LF4 O" w0 f; [- I9 l; R
 N00050 Z( E" `+ P5 @- q- D
G02 X61 Y81 R20 LF
7 \9 M- b) p, b N0006
' s0 q# c5 [- J$ t  ~; JG02 X101 Y81 R20 LF5 W$ }+ z8 v( G, A  g2 @2 J
 N0007( v; t1 X- S/ {! c. {: ]3 p
G01 X141 Y81 LF
) X! W8 U. B8 ~8 j9 r. l& r N0008
) I* X, `$ m: V1 X# E8 e$ vG01 X141 Y1 Lf
: {* n7 u1 F- `* E) o, F* K- m N0009
6 l/ ^, \  k6 Z! [; qG01 X1 Y1 LFM
$ `3 L$ b4 s  b7 T8 K2 R/ p$ { N0010
7 s: I! v7 a& L02 EM% w5 d3 W( m" K% U* X
2008381147.gif # I  u" p0 B% U, |) a
图2 AutoCAD绘制零件轮廓
5 {# S* P$ w  L! H( V5 结束语; {8 M  s9 h- _
  由以上实例可得如下结论:
1 Y% V' {8 _8 d  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;
" d  w* y& X. o* ^" A  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
  m6 l9 z# g2 Q% b. U5 ~0 G  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;2 `' X" y- }! W4 t  M, D
  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
# @8 c, A- H, c  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。& n2 p/ f) i+ J; A; e
文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2024-12-24 08:09 , Processed in 0.138874 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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