找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 271|回复: 0

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

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

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

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

×
1 引言
8 I0 U' f: f9 K/ U" e  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。8 ~4 Q. Y2 ~: c/ u8 a
2 系统的框架结构和功能
: L6 O) l6 V% X) I  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:  ]/ y7 V) p  N# p" K
20083811346.gif , V4 z0 s3 x+ t' ]& n  U0 q
图1 系统总体框架结构: j  B! B: x5 Y, [( c. e+ a
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;) a/ [* G8 e. t; \; v" f
  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;
" H7 Q) r5 `$ L5 r* r, S  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
( f; Z- G8 B/ p6 j0 D5 t- R  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
  N- U  G" D) k$ h  v  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。4 |9 f/ K! S8 @+ P
3 软件设计过程
4 ~( |+ N5 F2 J  c6 N, c  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。
! ^& w3 z, J3 U$ @2 Y; a( _  (1)实体数据类型变量定义. v# G; Q, ?( V0 v; |
  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即" |; J' k; J2 B: J' Z$ Q
Type ENTITIES-TYPE+ [2 F6 C- R% z* e3 c9 |' O% W
′实体形式数据类型名:
' @5 A9 I: `0 d5 ]) o  ENTITIES-TYPE;6 [1 R8 R/ ~. w+ M$ O' ]# U
  STYLE As String
5 a7 I7 o& |+ `- A′实体类型变量(其值为LINE,ARC,CIRCLE);
! D* i' j6 |# }  X1 As String  j8 S" f, K( z7 Q6 ~  W9 `) z
′实体的起点坐标分量x;0 R9 F3 G4 i% A5 ?* i
  Y1 As String( r+ [0 y& _8 \7 x
′实体的起点坐标分量y;6 U* y" w" S! D
  X2 As String$ C' Z9 S9 E' I8 w8 J  Q
′实体的终点坐标分量x;8 p: j  l: e1 M7 S' R+ S) r# R1 }
  Y2 As String  h1 S5 f4 p6 A; N, k6 h4 Z% u* z$ O& m
′实体的终点坐标分量y;3 {% z# A! G* s' p
  X3 As String
4 H. I# |' ~2 |( J) M/ v+ L′实体(圆弧或圆)的圆心坐标分量x;
$ e+ _/ N3 O" N/ |# X& |3 H  Y3 As String) ~- R) }9 \5 h; {& a: }+ R1 p4 u
′实体(圆弧或圆)的圆心坐标分量y;% y1 A) v: z, S* \; n% h
  R1 As String
: x  S" z2 U" b' `& w′实体(圆弧或圆)的半径R;; R) @  A8 r; Z& m/ w
  WISE As String: r! R7 q  ^( i3 o
′实体(圆弧或圆)的顺(=0)、逆(=1)方向;
4 j) E4 S: R- A6 Z* A1 Z$ ^  ANGLE1 As String6 Z9 p: s/ n1 z" _: ^
′实体(圆弧或圆)的起始角;  N/ Q; W2 `: G
  ANGLE2 As String
0 h9 X1 a# s! x9 d; K( O0 s; T7 y′实体(圆弧或圆)的终止角;
+ q8 r; j  s4 ]6 ]  A/ a! d; @End Type/ V/ t- v& e9 t; B* f
Global MM(200) As ENTI-
% w+ r! }' A7 M5 N+ C0 c$ P/ i' WTIES-TYPE
. s8 Z% l& H2 B; n′定义一维数组MM全局变量,其元素为ENTITIES-TYPE+ I! p1 v. m9 a( ?0 H" U; k
′型变量,实体数目最多不能超过200个。
# q& l3 S' L# {6 L# y) n( j  (2)DXF文件的读取程序5 S7 }; T- e( w3 G5 F/ i
  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。
" u: [. N# O/ T) B  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。
# K/ j- v$ c( eSub DXF-IN 0) t- [3 H+ [( e% p
Dim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer
9 T: o$ o7 ~# f' [. KOpen FILENAME1 For Input As #1
. n$ ?1 |( M6 Y+ ]: s$ E  Do Input #1,B& L9 a$ h4 a6 g. X3 H  F
  Loop Until B=“ENTITIES”- Y# d/ ?, L3 F$ P9 r
  Seek #1,Seek(1)& o8 A& G: b. g! [. Z+ M
  Do While Not EOF(1)" Y' p! D, ?1 I: @7 g% ?
   Do Input #1,B2 O, o6 E& p+ I
   Loop Until B 〈〉“0”
6 [" H3 N8 Z1 f  d  d   i=i+14 k; E5 F4 T8 }
   Select Case B
9 _0 }+ U# u' T6 L" D5 S6 |0 U      Case “LINE”2 X. ~4 E* _1 B( P& L* N
       INDXF-LINE 17 L' P3 n7 B  t0 q7 W9 A+ @
       CC.STYLE=“line”
: @; V8 \5 K0 t* a- X3 p       CC.X1=Str$(x1)
* W" [* r" }' e# U4 g( u! N       CC.Y1=Str$(y1)/ g& m9 w1 `1 Q/ P2 _
       CC.X2=Str$(x2)
) Z, G* y4 M7 }) C# X1 L  k: f       CC.Y2=Str$(y2)
$ w; Y! u+ C1 _7 P       xx1=x2
  q! g) q: i( M: t     Case“ARC”
  [6 M% B3 J; S       INDXF-ARC 1- ~! s& h+ J- M; x
       CC.STYLE=“ARC”
: q! K. a7 j- ?2 {       CC.X1=Str$(x1)
* {3 ]* R. ^) b' w/ k: Z; k       CC.Y1=Str$(y1)2 E. E5 Z2 U: K0 I- C6 T8 s; W! \
       CC.X2=Str$(x2)
! C8 q' T, w9 C       CC.Y2=Str$(y2)
. n; ]$ J; Z( Y# p( V/ S, k; v       CC.X3=Str$(x3)
% e  g; V0 X, ^" Q" ^# c       CC.Y3=Str$(y3)7 B' a" B$ k% Z, k
       CC.R=Str$(R)
4 E9 z' s- `6 c: D2 @       CC.ANGLE1=Str$(ANGLE1)
, z8 Z9 v7 [& P4 J" A: w+ r       CC.ANGLE2=Str$(ANGLE2)
: z4 j+ Q4 [/ F& _- m       If Abs(x1-xx1)>.5 Then
8 d- t4 D/ H3 _# ]        CC.WISE=“0”
( h* N, D; p' n2 I7 O/ R$ C        A=CC.X1:CC.X1=CC.X2:CC.X2=A
& d% g2 n, }+ l: M) h' M& |$ p        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A5 d) Q6 N6 y3 T
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A/ Y& p3 R7 x; O
         Else CC.WISE=“1”3 R) o: L1 t7 A$ c5 O: J
      End If xx1=x2/ }2 k3 |) Y7 u
    Case“CIRCLE”" ]& h5 Y( G! r7 x3 b
      il=il+1
7 Z. M. H6 [  d/ n- Z      INDXF-CIRCLE 1
3 I2 h" p5 O5 G7 _: o5 H      CC.STYLE=“CIRCLE”9 y9 j4 S, Q* Y3 Q
      CC.X1=Str$(x1)
* |. Y/ c. y( }  F% ]* B; r      CC.Y1=Str$(y1)  ]* u* B4 [3 |) Y% ^2 T
      CC.R=Str$(R1)# Y; V0 L2 j4 N
      CC.X2=CC.Y1
) J4 v0 w$ \- j& e: N, s      xx1=x1" I% P& J$ _1 f* ~; p. ^; y
    Case“POINT”5 z& d4 F6 J0 l
      INDXF-POINT 1
9 X  ^  @3 F1 J) j/ S  P! }      CC.YSTYLE=“POINT”
# L3 u1 U8 f) U5 c; S: {      CC.ZHX1=Str$(x1)
: ]: P$ X- k% h- f      CC.ZHX2=Str$(x1)4 p4 `6 E. E& f8 T$ u/ j
      xx1=x1. H- M# I) X6 ]: d1 S6 `6 j& e7 H
    Case Else8 i" i' x" ]+ S+ `8 v
      CC.STYLE=“NONE”
& I0 l# [) k/ r' a/ T End Select" x  f- Q  e# b5 c* j" t! |- B
 Seek #1,Seek(1)
# G1 \& W4 c2 _# G j=Str$(i)
5 N4 A6 R" {/ _8 c& eLoop
9 Z8 i, Z9 e, T! Q0 zClose #12 Y& C' z" c$ l* Y# Q
End Sub  L% ?& K( \1 G2 y; k
  其它模块的程序设计不再赘述。
  u, f( |. b* f5 v4 实例
1 ?3 `- @% x1 C  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。
- K* t& d1 Z* C- L N0001
' C* {- B( e5 H8 A  V5 ^" F" fG90 G92 X0 Y0 S500 M03 LF* h& t' t1 p5 T+ o
 N00029 A& U' l( I; }/ f- a4 O
G01 X1 Y1 LF. s+ t2 W$ O" e7 l4 e# Z) i
 N00035 J1 K! D0 T# I  D
G01 X1 Y61 LF
* p9 Q  d/ h6 ~! e4 ?- B N0004* l8 D9 b1 f* R& i
G01 X41 Y61 LF
9 o, ]8 T8 }8 D N0005
1 @. t0 W! ?( E. }% t! M/ m9 JG02 X61 Y81 R20 LF
# i* R1 x  E/ W- | N0006( ^' _! K/ K& E, x; v, v
G02 X101 Y81 R20 LF
3 z- l: s  x, [( `$ ? N0007
' j: \. {! f6 u3 |2 \G01 X141 Y81 LF
+ S- E) [( {1 x8 F& Q N00082 y; K8 g+ I! }' }  L1 C
G01 X141 Y1 Lf
1 [/ _0 J& `  T, ]2 [ N0009
  d7 v% s* T7 m# f; oG01 X1 Y1 LFM
( ^/ q1 l& U" y8 Y7 S7 n N0010
( H  m) Y, _- H4 e5 y02 EM8 T$ }2 y2 L8 H
2008381147.gif
# @9 \# s+ h: ~8 l4 x- W5 I图2 AutoCAD绘制零件轮廓( Z5 M; @1 p9 Q
5 结束语+ D+ r/ S! s" p! f8 |
  由以上实例可得如下结论:
' O4 f' o8 Y: D! k  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;
( {8 Y1 K0 g$ \, G/ P0 y  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
7 `' _% \0 u$ Y/ ?3 M  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;4 ~4 v; p# M' i) p% W" e
  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;) I! W" @% G& D  W  s
  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
7 S: c. }! W2 z' a) a) f2 [4 H: z文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2025-11-26 10:10 , Processed in 0.140219 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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