找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 260|回复: 0

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

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

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

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

×
1 引言5 S0 _2 w+ {  e
  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。8 I+ M! X6 a- p% o
2 系统的框架结构和功能
6 F8 f. r# ]0 ]* b4 {  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:
2 O9 N6 Y% x1 B: F2 k 20083811346.gif $ b( a2 f9 @$ [; S8 h
图1 系统总体框架结构" q0 F! v: `: Z/ U
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
# k, J1 z2 L. R6 Z( ^  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;/ K1 n2 A; M+ {
  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;9 I( V, T1 ?4 d. M# @; M0 i" t4 T! X
  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
+ r5 b( v5 M' Q9 ^- O3 }/ s5 P  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。8 d0 _3 ?' u- y2 }2 v8 p
3 软件设计过程* _, {0 M  N0 U
  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。7 u0 \- K1 x3 W/ D# x
  (1)实体数据类型变量定义
& Z# C; O+ u, P3 Z  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即
9 s7 Z- t" l5 N+ GType ENTITIES-TYPE# m1 e8 t, `2 o) o2 k/ X
′实体形式数据类型名:
0 f& X* F; ]3 F4 ^/ l( ]8 \9 `  ENTITIES-TYPE;
$ Z* {: q2 _- h7 j: M' G  STYLE As String
- A0 ]" w+ I8 K2 i" D- j3 _( o# B′实体类型变量(其值为LINE,ARC,CIRCLE);* ]! c: F; l& B
  X1 As String
6 o9 v9 B8 J* x" @6 Z; ]  M′实体的起点坐标分量x;+ l+ I! c7 h* E6 B
  Y1 As String
+ C9 J% e" o6 j6 L; e+ t1 Z′实体的起点坐标分量y;5 Y- e7 V. u  G8 E
  X2 As String. f' i1 \! ~- V
′实体的终点坐标分量x;( T3 P( b- i; u4 J" W! _7 k
  Y2 As String
  b; F8 ]6 ~* c7 o. t′实体的终点坐标分量y;* V2 z4 O; X. p
  X3 As String
% c: h. v. G; F7 B+ P) q2 C′实体(圆弧或圆)的圆心坐标分量x;# u5 J% a7 s; ~8 h  ~( j
  Y3 As String
2 P0 @6 V, M4 {3 E: [) P′实体(圆弧或圆)的圆心坐标分量y;) Y. z" A$ \/ d, o) D; j/ o
  R1 As String
( w- j! M6 w9 ^" Y$ ]9 x6 L6 i+ H′实体(圆弧或圆)的半径R;
" j2 [3 K: J& h  WISE As String5 w) |( w. X/ \4 z* V  f
′实体(圆弧或圆)的顺(=0)、逆(=1)方向;/ s% I" E6 c7 F, d% N
  ANGLE1 As String
, T( o% z! ^5 d' I′实体(圆弧或圆)的起始角;8 Q1 O" a# @; A5 ~1 }9 X2 U
  ANGLE2 As String
0 V, P4 `. B0 J1 G0 e2 j′实体(圆弧或圆)的终止角;3 v$ S$ y, c* n6 |
End Type
) k, L) U+ x- i( x, GGlobal MM(200) As ENTI-
/ z# e  v; V  T* H" NTIES-TYPE. b" r0 ]" s, a; W0 f
′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
" |" }2 [8 y' s% G6 y$ l′型变量,实体数目最多不能超过200个。5 v9 K( j; h  W) R7 h& Z+ c' N! i5 J
  (2)DXF文件的读取程序9 ^. \7 X7 e7 o/ d' S
  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。
$ v( m) p% v+ T" K$ D7 ]: L  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。/ O9 U& H+ `2 X% k! ^, z
Sub DXF-IN 0
) Y# d1 t/ {. [6 J1 P& lDim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer
0 e2 J  N" y8 }7 A) zOpen FILENAME1 For Input As #1* G# @: {0 w5 f, ^0 f
  Do Input #1,B8 X; v' h0 e! [$ W
  Loop Until B=“ENTITIES”: c, S$ z5 i4 o. u  @, B
  Seek #1,Seek(1)) F9 _/ i* z6 q/ S9 Y( T# K$ P1 z
  Do While Not EOF(1)& ?  X- H# H+ w0 V8 E
   Do Input #1,B
$ z4 m& m0 {2 R2 Q# _   Loop Until B 〈〉“0”
% j. B5 y3 z% @! ?# g+ r. y: Y   i=i+1; @( T. A: |! \; e- x
   Select Case B6 Y9 o, d# P+ p" w. G
      Case “LINE”1 Q/ v- k- d/ y
       INDXF-LINE 1
: g4 `! F! J9 ^7 s  p8 w       CC.STYLE=“line”7 ], t; e+ |6 b: o) z4 E7 O  p
       CC.X1=Str$(x1)
, |4 d: E2 g/ Q- M1 S% g       CC.Y1=Str$(y1)
. C" p  M3 j3 O4 W! g7 e% E, N4 w0 B; k       CC.X2=Str$(x2)0 ^1 o( u! R6 ~
       CC.Y2=Str$(y2)
' [2 O9 ^. @5 E9 ?" A- R; }6 ?& N  k       xx1=x2
$ }" W% t, F% M8 e6 _" O4 t     Case“ARC”
! {5 _/ l. g8 @9 I0 Y8 S: @       INDXF-ARC 1
( E  B7 F; b" Z! c8 |       CC.STYLE=“ARC”
% }" K2 ?) G. r       CC.X1=Str$(x1)) V/ a: \  \  I! Z+ B
       CC.Y1=Str$(y1)
# F: n* L! N9 A9 M/ U' }       CC.X2=Str$(x2)) Y1 {) [0 M' n4 ]
       CC.Y2=Str$(y2)6 X9 `4 M" ]& c2 X" p# Q0 J
       CC.X3=Str$(x3)
! v! ~, [2 J7 z. H0 U$ u. U       CC.Y3=Str$(y3)! E3 T2 i! q- f  r$ j  a
       CC.R=Str$(R)
% i6 S7 H0 M% H- b; T: f, D       CC.ANGLE1=Str$(ANGLE1)4 p9 r" j. L  S' ?' X( X' X2 |* U  ?
       CC.ANGLE2=Str$(ANGLE2)* u, _" j& N6 O' N( j/ c
       If Abs(x1-xx1)>.5 Then1 \2 k# F* ]/ E% s6 Y8 \
        CC.WISE=“0”
6 E4 R: a/ q+ ]8 m: ~$ j( H        A=CC.X1:CC.X1=CC.X2:CC.X2=A3 V/ R) O) A. E8 q7 w: W
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A% Y9 f$ n- S" i8 }: K) ]
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A0 O& ~, |9 N' d0 X  G- N% f. ~
         Else CC.WISE=“1”
/ h+ w$ Q8 J- F6 w; y. R# }6 C      End If xx1=x2' i. h! ~4 }& c, l3 d  d
    Case“CIRCLE”
+ |1 ~) N$ U1 v! ~& I) E      il=il+1$ O9 Z! X) m, d- i8 ~% B" q
      INDXF-CIRCLE 1
8 \  @' q& L2 D, j      CC.STYLE=“CIRCLE”4 j, t# ^6 I" {4 S* P  `2 M
      CC.X1=Str$(x1)4 p) n1 x. d) Q' L
      CC.Y1=Str$(y1)
6 |5 L# P- r' B" J6 P      CC.R=Str$(R1)! h9 z$ i( S( C7 p3 q" B
      CC.X2=CC.Y1' T2 r3 a) x- K% N) i! z( x' F+ p
      xx1=x1. Q  B" m! o% O  k$ c' A% m+ L
    Case“POINT”
4 n3 a8 @  `2 W$ e- U      INDXF-POINT 1
& N& w. M8 a  h8 e# b) d/ ~1 Y      CC.YSTYLE=“POINT”
; p6 A0 _! B& v# R+ U  l4 K8 t      CC.ZHX1=Str$(x1)/ w" C  N4 T0 W* e/ k
      CC.ZHX2=Str$(x1)
) p+ p; q2 [, V+ {: l      xx1=x1. F3 e. K/ x! M& V3 S
    Case Else
1 S. G% {; ~9 K3 ]1 m% T. L# x      CC.STYLE=“NONE”4 |+ h. @' [9 ]. y; y! @! [
 End Select5 V5 ]* r, F6 u* h% y: X: R# j, T
 Seek #1,Seek(1)
5 K$ l; Q/ c6 c- j j=Str$(i). N5 _, N+ L0 `; B$ B5 L
Loop
& a' C7 {$ o5 o6 M; sClose #1  |( m9 x& t# T) J4 M0 m* _- u- A" R
End Sub
6 c2 w# T7 k9 j  其它模块的程序设计不再赘述。( _; H, v  S7 F; z2 G9 }: y/ V
4 实例: U- v2 K( C" A( Z& ^% h
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。4 P: R1 V! l2 a  t* Y; h
 N0001
2 B8 r: }6 R! BG90 G92 X0 Y0 S500 M03 LF3 B  d4 }# D1 R8 n7 d& G0 ^
 N0002
/ A! X$ a8 u0 \& _* Q% UG01 X1 Y1 LF
. @6 h  O' ~' f$ ~) i) g4 |! s N0003' _$ f, L$ S; w0 Y8 F
G01 X1 Y61 LF" u8 K" u! i% }7 [* ^
 N0004
3 w* q" F' O# c% c: NG01 X41 Y61 LF
$ @) a( l; M, s4 g# M! i. v- O N0005
, M3 e/ p' j5 g. f+ {% l  EG02 X61 Y81 R20 LF
; H0 |0 a4 f, `' H N00064 d% A7 s' {7 I
G02 X101 Y81 R20 LF  V. A" X! b/ @) J+ m
 N0007
! N8 u' n3 x% x( G* jG01 X141 Y81 LF
0 V# |' G8 a( n( I N0008
4 m! f1 E$ B8 P( l0 IG01 X141 Y1 Lf
. o/ v( D$ g0 w' `! I N0009# b0 o6 M) g4 t4 \/ }
G01 X1 Y1 LFM
0 q  g. U% G, ^1 x+ F4 S N0010
* P9 \. @1 }, Y9 D4 q02 EM5 I7 B, N9 I2 v( C5 G0 z
2008381147.gif ( `, A9 S3 i' q# s1 O
图2 AutoCAD绘制零件轮廓$ X' J; x6 I% |
5 结束语* I+ `$ ~$ f2 u% }& o
  由以上实例可得如下结论:
- k) T7 f) a1 L( E4 J  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;, ~" O8 T# ~/ S3 |5 l: m3 l  U1 c
  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
' J  D% K9 }' i9 s; A( R  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;
! L/ L) n! z( o, b5 X/ y: T  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
$ g6 z6 P% D9 P  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
& _) K# E+ z9 Y% W/ H文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2025-4-29 03:45 , Processed in 0.180024 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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