找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 234|回复: 0

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

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

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

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

×
1 引言6 U- [, Y3 |' m* u
  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。
4 c0 q- L0 r3 ?" Y2 系统的框架结构和功能' ~+ d, t, C' l5 A2 A
  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:4 u- }) I) X- k/ }
20083811346.gif
8 I# E8 @1 N& p8 j5 z% ~  k0 Q" F图1 系统总体框架结构0 E% w  G& ^8 O9 Q% Z. L. [
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;$ z( S5 o3 e  B. c
  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;" m8 B! N% S9 s2 Z
  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;' p! H9 g9 H0 x7 z. W+ S2 h% u
  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
7 F2 _* c& T! m  Q6 H9 E0 R) M; V  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。0 Z- X. U4 ]/ r: e3 ?! y# v9 Y
3 软件设计过程, _4 q7 A% `, k# j, f( a9 P
  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。; C) D' G$ i8 N+ ?1 r' [  M
  (1)实体数据类型变量定义- w) R( j' u5 R% O) ?/ U+ |
  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即
3 G! b0 x- X9 @Type ENTITIES-TYPE
8 u* A. K" b( O3 p7 T. c" B3 f: I′实体形式数据类型名:( }: U3 J# ?  J3 c1 }
  ENTITIES-TYPE;; H3 k2 b/ c7 L- }( `) g
  STYLE As String  F( P5 ^; H' L
′实体类型变量(其值为LINE,ARC,CIRCLE);
& G& ^2 e' `4 l5 Y, |" R( ?  X1 As String
1 t. B* {" Y* I1 q) c′实体的起点坐标分量x;/ j9 K8 j6 S2 J8 O$ b
  Y1 As String1 i) E7 }5 d' x/ ]1 {, ]) O
′实体的起点坐标分量y;+ h# m  D+ w! j" Q: [
  X2 As String
9 N8 e  }$ L+ |' C3 ]9 j′实体的终点坐标分量x;& h5 a* \" C  ]0 z; h- Z
  Y2 As String2 X2 ]: m3 N- T3 o8 N6 U
′实体的终点坐标分量y;7 x$ Q6 v6 x4 Z0 ~
  X3 As String
: `9 q" l6 ]6 N5 _! A′实体(圆弧或圆)的圆心坐标分量x;! [7 o# ~- b& ^+ y
  Y3 As String6 l; b: s9 k$ F+ B6 ~
′实体(圆弧或圆)的圆心坐标分量y;  e, L# r( k( h, _3 K
  R1 As String3 L0 _3 d* M: [+ ?* A3 T
′实体(圆弧或圆)的半径R;" p3 Q2 d* `4 {# }
  WISE As String" v" @* e" j* ^) r$ s, h' r1 H
′实体(圆弧或圆)的顺(=0)、逆(=1)方向;
, I4 ~5 W5 j2 e& M, C  ANGLE1 As String- F% E( O+ }' P: C+ g6 O
′实体(圆弧或圆)的起始角;2 P. U( ~# D' t
  ANGLE2 As String% V8 T6 e  P- f9 I1 h
′实体(圆弧或圆)的终止角;
* V% A  H3 t7 V; ]End Type) y; n/ V1 F2 h: F# B7 ]% y
Global MM(200) As ENTI-
4 U8 a/ M) Q; b* a- ETIES-TYPE: z* h7 X8 J, f
′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
+ t0 G1 V! p$ O$ B! s5 a9 C′型变量,实体数目最多不能超过200个。3 ]9 C& |# Q; w- X+ B% k( E; q; ?* B+ A
  (2)DXF文件的读取程序) _/ }% L1 s  [$ x( U
  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。
! E. o2 |, x9 b' L  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。1 j* _9 D9 w9 U5 r2 o; I; B# _
Sub DXF-IN 0
; q5 S. Q3 A9 C7 \1 ]3 d* p& M7 h8 o( iDim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer' Z+ j! m( o4 f
Open FILENAME1 For Input As #1
: I; q4 H7 F4 a& e" d  Do Input #1,B
6 E# G3 I$ N1 S) x6 |  Loop Until B=“ENTITIES”0 H2 t( t0 A# v/ L/ Q
  Seek #1,Seek(1)
, C% d) _( K4 k' h# `8 l, R  Do While Not EOF(1)# c# ^" a1 \& d
   Do Input #1,B
$ l) W8 {! o% X! U2 `. ^5 |   Loop Until B 〈〉“0”+ d; @4 \- x8 r. b) c1 k
   i=i+1
/ ^9 D9 t# X; f% r0 h$ o' s   Select Case B
( E3 O/ K& ^& A+ V5 y3 N      Case “LINE”9 o' t0 }* C9 x2 D6 ^- A6 b4 N7 M
       INDXF-LINE 1& i, o6 [3 P1 w# s
       CC.STYLE=“line”: @, o' ^1 D- {8 M
       CC.X1=Str$(x1)! m. K! K2 K* ~6 C0 W/ q
       CC.Y1=Str$(y1)
9 m3 |& R3 Z& \0 z, n1 a       CC.X2=Str$(x2)  I! s+ g3 |  i
       CC.Y2=Str$(y2)2 t5 C0 q9 i" J6 r3 ]
       xx1=x2
  x% i2 X5 N( V, e' t8 [     Case“ARC”
+ H( Z# P& I  l. ~* z1 g  f- K0 H       INDXF-ARC 1
2 ]+ F' G0 n" x  ]1 p3 z       CC.STYLE=“ARC”
; h# m# ?4 M; @9 ^9 l3 P       CC.X1=Str$(x1)
$ M9 m3 f& U" Z       CC.Y1=Str$(y1)6 ]0 D" N' c" F( W- T3 v2 Y6 |& e
       CC.X2=Str$(x2)8 A0 ~4 N9 I& B/ ?$ k7 [. a$ h: a& G
       CC.Y2=Str$(y2); I  E0 G$ q/ u' s' ^1 p& k* k! D% T
       CC.X3=Str$(x3)8 u# ^$ c: h- D2 a5 w$ v
       CC.Y3=Str$(y3)+ E% t  H& D1 N! X
       CC.R=Str$(R)
4 z5 J! c3 U1 U+ A+ H       CC.ANGLE1=Str$(ANGLE1)( i9 U' {* q+ B) L
       CC.ANGLE2=Str$(ANGLE2)
% T/ ^+ s# i: G  y# X       If Abs(x1-xx1)>.5 Then, d: w* S& @. y( a& ^8 G8 v
        CC.WISE=“0”
' v) N4 r! z8 [, m        A=CC.X1:CC.X1=CC.X2:CC.X2=A
8 t1 x  \' ~( C/ E, Q- y! I0 K        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A, f3 X" @1 g; c1 n* Z& ^
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A: u/ C8 i& N4 h) _8 @$ [$ |8 f
         Else CC.WISE=“1”
5 B/ O1 ]& j" `) e# z      End If xx1=x2  V: x" F' H7 V4 s' u
    Case“CIRCLE”
2 A- l0 o" _* P1 f, M      il=il+1
# x3 p& h9 [' |" |' y9 @      INDXF-CIRCLE 15 v4 L, X, W" R, q
      CC.STYLE=“CIRCLE”* i# D' S4 T8 j" f0 S9 i
      CC.X1=Str$(x1)2 ~; j! }7 F! h. f, f3 q
      CC.Y1=Str$(y1)( |8 p0 o% f. K6 o$ H& T$ {1 \' w
      CC.R=Str$(R1)9 }$ R* U, b/ M; O, u% p
      CC.X2=CC.Y13 n+ F) S/ S# Q+ x/ S% C7 X
      xx1=x1
0 d' B4 ]/ @9 e1 b    Case“POINT”& Q: R! ^5 X* h; L1 }- E: }+ [
      INDXF-POINT 1
  L2 J& {" Y9 `1 z      CC.YSTYLE=“POINT”
0 k' z' M* q) d3 @      CC.ZHX1=Str$(x1)
, H$ ^) G* @8 C: z  B% s- D  n! ]      CC.ZHX2=Str$(x1)
6 Z1 a+ t0 @. @9 ?7 c' Z, J      xx1=x15 Z) P3 @: M; U" w# }
    Case Else9 C6 c" o# t5 [4 f* o. R
      CC.STYLE=“NONE”- \$ m( Q4 ?! y9 T" t
 End Select
3 K. ?$ ~# `2 g- ^' K+ L Seek #1,Seek(1)
  g3 ^; u) h' d) \ j=Str$(i)* f7 O0 C- D! a  r
Loop% K  U' m9 _1 _; D
Close #1
2 u1 X3 B" d, [End Sub/ }; W' q& U, d5 P! j  |9 |
  其它模块的程序设计不再赘述。
) ^: _6 U3 B) P9 O" X' V2 f# |4 实例, L& H8 w3 N4 X9 n& Z
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。! ~( A& w# T6 j5 `; K
 N0001
. B8 Q/ Z1 P6 C1 O  k3 Z8 t1 c; oG90 G92 X0 Y0 S500 M03 LF
3 I/ k, S( j' }5 g: F0 P N0002' @: w0 ~+ h* P1 z
G01 X1 Y1 LF; ^' }0 N$ C- V% M, o5 D* [7 F- Q
 N0003
& D8 O3 _3 ~; o) }G01 X1 Y61 LF
/ O* V$ M% Z, i4 I N0004
% _- L& M# D% R; H' zG01 X41 Y61 LF* C1 ^1 k5 ]2 M9 w
 N0005* b! L- c$ d& `6 E
G02 X61 Y81 R20 LF) D; x7 k' [+ ^' @( {; J* P$ l$ n
 N0006
! n* N' g# S! zG02 X101 Y81 R20 LF
1 E: B( T9 k& s1 N N0007
- m5 `& ~7 s0 p. z  _5 i5 eG01 X141 Y81 LF
* G3 d2 V' P' r1 O- J7 f! y! j1 q8 W N00085 r. j% B4 _, T" C% R: f
G01 X141 Y1 Lf
. Y1 y; O4 O0 A3 _6 l5 T N0009
; w8 N& c. ~$ Y$ ^/ FG01 X1 Y1 LFM
$ u3 B: p% f. r. i2 `7 { N0010
( W& c1 C) R4 u& y8 }( s: G% P5 @, ?02 EM! M, `& e2 Q5 d( u9 |2 n
2008381147.gif : ^. K$ h' g4 n+ B. y
图2 AutoCAD绘制零件轮廓0 E" x* M2 K/ |' x4 ]& f
5 结束语2 g) {0 m( L: J  I  \
  由以上实例可得如下结论:2 `" ?6 f9 S% Y% r6 x
  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;
8 \2 I* {( O# ?6 m' U# k  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
6 U9 T1 Y3 f$ W  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;7 N, s. b; F- U% C7 b
  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
6 u" n% f1 v4 T  ^0 z4 V; W  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
5 _2 C+ W2 ?" q3 w, W% Y9 t文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2025-2-19 06:47 , Processed in 0.152707 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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