找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 216|回复: 0

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

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

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

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

×
1 引言
; x; c8 S2 b' E- x  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。9 c  y- T" c+ J. W# r
2 系统的框架结构和功能, u/ q( H4 i6 ]5 Y" Y4 W
  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:4 `  o3 ~2 M6 \5 [0 k
20083811346.gif 6 @3 J7 x9 e9 D- k0 X1 b
图1 系统总体框架结构# e0 V8 @; ^, |. l1 c3 }
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
' _2 q3 v* ?3 r+ k- O1 `  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;/ _) o( m4 l/ V8 `2 G' r+ p5 n
  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
5 g. J9 x! E7 e; E3 S5 h+ A  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;& Q: N2 v) l1 D0 W' I8 [6 V
  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
! k6 O  V; X( m3 M  V3 软件设计过程
! K/ ~8 g1 B: h1 ?% R  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。
, s) a. v4 s, ~  S7 o, W$ p( E  (1)实体数据类型变量定义+ s5 _/ Y; S9 x3 n; F  q$ c
  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即  M1 }5 b/ J  M& q/ M6 m& T
Type ENTITIES-TYPE% f- n3 e1 J( u
′实体形式数据类型名:. |* L8 S/ P+ a
  ENTITIES-TYPE;
3 _" ~0 P0 g+ p, B; c  STYLE As String6 O% X* k" G  e# w. m- d
′实体类型变量(其值为LINE,ARC,CIRCLE);  W& y" C8 l# I, ]! C( L+ t8 @
  X1 As String3 b" k3 K0 j+ g
′实体的起点坐标分量x;$ ^1 M) C$ d- w. ~  y
  Y1 As String+ C" z8 M% r7 F0 p% \, s# R
′实体的起点坐标分量y;
! _/ A4 n& G* f6 V7 E" C  \  X2 As String
  F+ o$ A) _0 x& Y& G8 L′实体的终点坐标分量x;0 m4 Z) }7 h# t; r& D" f: W
  Y2 As String( N, [* A) N  o* Z
′实体的终点坐标分量y;4 k# C0 G" ~% p' C6 \
  X3 As String
" `) P! n% s. @# H′实体(圆弧或圆)的圆心坐标分量x;+ n6 K( C  _& U! o
  Y3 As String% ^; ]. |5 x# z+ ?
′实体(圆弧或圆)的圆心坐标分量y;6 Z4 G; k0 }+ E
  R1 As String
* B" f7 a. V9 s$ B, s′实体(圆弧或圆)的半径R;
7 r9 d% h2 I0 k0 d1 e; \9 Y: [  WISE As String/ i; r5 F0 _# ~! J4 n
′实体(圆弧或圆)的顺(=0)、逆(=1)方向;
' v# r" q; c/ w, ?8 `  ANGLE1 As String( N, `4 a9 q6 v" \, K2 x: P# d
′实体(圆弧或圆)的起始角;5 D* d$ X" n; T: f- M" y
  ANGLE2 As String
" f) U3 w2 ^# Z′实体(圆弧或圆)的终止角;
/ k; f1 c+ I, ~( o" V0 V  KEnd Type9 T1 |# O! ]; w, U8 R! c
Global MM(200) As ENTI-
* R% L: T2 c0 y6 xTIES-TYPE! O! w- w9 _9 \( w
′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
, l8 t% L4 P! h4 o′型变量,实体数目最多不能超过200个。  M5 L' X8 [5 x; E
  (2)DXF文件的读取程序  G3 p+ L- W) w  [
  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。, G5 L4 r+ ?* K) w) V' Z/ H3 A
  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。& k' V0 ]& O& E$ R* W4 T# g9 U
Sub DXF-IN 0- q  G3 c; I9 \; j& W  A. b
Dim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer7 E3 X+ I# t0 K( {0 O' K1 D# P- G: C% O
Open FILENAME1 For Input As #1- K8 j/ t' O0 }9 _  Q4 ]
  Do Input #1,B
7 a0 X7 J3 p8 O* x3 O8 d  Loop Until B=“ENTITIES”
: ]' _4 T2 m$ G1 v/ \* a& M  Seek #1,Seek(1)/ b7 ~6 B4 [0 p, R/ s
  Do While Not EOF(1)7 \: {$ F6 h" M
   Do Input #1,B7 U' k3 z6 L* b9 j( F. |# \
   Loop Until B 〈〉“0”6 }. A, F* X0 |9 x9 ?) e
   i=i+1+ a$ h) n  O1 z7 o* z6 A
   Select Case B
5 O9 ?! h# Q" V5 \* c( |4 S      Case “LINE”
5 X5 z8 Q! u8 w* [; Q       INDXF-LINE 1
9 U! k, r7 W% r4 e% h       CC.STYLE=“line”
, T! Q3 K0 v, c0 ]1 {       CC.X1=Str$(x1)3 F8 J* }2 ]% w3 E) j! U0 n
       CC.Y1=Str$(y1)
8 I. y3 [! |; h4 G       CC.X2=Str$(x2)
) a0 R0 e/ o* P! i; X+ a$ d$ {) c       CC.Y2=Str$(y2): O$ |5 J9 O1 ]! _( H' p9 {
       xx1=x2
. i0 Q) }6 G. P0 ^     Case“ARC”% w! t5 ?3 B# q% E
       INDXF-ARC 1
2 R( Y' O' J6 L: Y/ U% z4 \7 O       CC.STYLE=“ARC”
" E& _; y4 P  }3 {       CC.X1=Str$(x1)4 m$ S+ H! H: @3 N2 n) n! q$ g; Q
       CC.Y1=Str$(y1)
; X" t1 w5 H+ L% f       CC.X2=Str$(x2)
7 _% o/ _  C! f4 @1 U* {       CC.Y2=Str$(y2)
( N4 z( h+ A- l1 i* y! O  L       CC.X3=Str$(x3)8 S) m/ Z: k/ n# l
       CC.Y3=Str$(y3)+ _' z, K1 o9 D: L: e
       CC.R=Str$(R)# R$ ^! G, j$ q* d% A6 B+ L0 N
       CC.ANGLE1=Str$(ANGLE1)( O$ H8 _0 A3 V
       CC.ANGLE2=Str$(ANGLE2)/ j( U# b) @) Z& u
       If Abs(x1-xx1)>.5 Then% q. m+ d) H, M% [
        CC.WISE=“0”) F7 m1 U. A& l7 K
        A=CC.X1:CC.X1=CC.X2:CC.X2=A( U9 h. j2 u$ w$ Y6 b4 K
        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A
+ L9 x$ z, T. Y        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A
8 z1 N: O. U8 b         Else CC.WISE=“1”
2 |1 [# ?. p2 Q5 Q3 g      End If xx1=x2
* l' C1 D* i' l% B! B# n! F    Case“CIRCLE”6 W$ n& Q" O, B3 a6 h6 I) n
      il=il+1% W4 P6 n8 i5 R
      INDXF-CIRCLE 16 B' H- z/ D0 D
      CC.STYLE=“CIRCLE”
+ Q; H6 W$ @! A      CC.X1=Str$(x1). ?/ i: ~3 d) M0 M- v0 _
      CC.Y1=Str$(y1)
0 m: o7 C; V6 k" j5 E2 `" D      CC.R=Str$(R1)
! d" c5 @. I1 ~( n' a- r      CC.X2=CC.Y1- E5 p* y. D% U7 R- E' _& @
      xx1=x1% k  s% H9 O- I' V2 z
    Case“POINT”
: L7 k8 e/ x) {3 @      INDXF-POINT 1
% X* C! X0 \# N. G      CC.YSTYLE=“POINT”
) V+ r% O$ r; B: _, D3 l' J      CC.ZHX1=Str$(x1)
0 k; e3 A8 s& U  f  P: u. ^0 p5 @      CC.ZHX2=Str$(x1)
4 s  @$ h  _% v$ v& H      xx1=x1
' O5 d4 P3 h: h% H    Case Else
8 U; N) H3 w3 g5 y/ L      CC.STYLE=“NONE”
1 C5 y4 P; ]) d8 u1 G7 a End Select8 q# U4 N/ M. E( |4 h
 Seek #1,Seek(1)
) k; I0 [$ W; k& ^- R+ J j=Str$(i)& I" h4 s; w) m, D2 B/ S- h
Loop6 t+ L. i% Z8 z* h0 L" t1 i, Y
Close #1
9 Y* Q0 @3 ?/ p3 UEnd Sub: [* ?% C" B- @; U' k
  其它模块的程序设计不再赘述。; w6 O$ J: J$ U1 _
4 实例$ f& x) ^0 ?5 Y9 q3 U  N
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。: y$ C7 O1 l, A- D6 Q: k
 N0001
) v6 ?  f2 `1 |) G8 JG90 G92 X0 Y0 S500 M03 LF
! E( m) j& s. z9 v  T3 h2 y N0002
& {' m" x( [7 C6 I8 K4 A) tG01 X1 Y1 LF
8 w( |! K7 X1 B5 E9 ]6 L4 {" H N0003+ k% c' X9 O6 ?( x
G01 X1 Y61 LF
- `  X& ?# J3 a; U+ m3 A8 ` N0004
1 B% g6 ?5 u/ NG01 X41 Y61 LF
. P7 ?1 I8 x, [# O N0005. n) h" H% J9 p( l4 @1 S
G02 X61 Y81 R20 LF
8 R- }% U2 ^; B6 z6 C N0006
" x3 ?. h4 p5 C8 ^; pG02 X101 Y81 R20 LF5 X1 A- j$ C5 `( m& |
 N0007
0 p2 m7 J6 F9 `+ SG01 X141 Y81 LF
- g4 ?5 e6 ]+ G; }% b7 X! } N0008% i& t2 F( A+ W% n- k, K$ H
G01 X141 Y1 Lf
: D( j7 I- D6 C+ N' ^7 B4 b- V2 q N0009
8 y& n+ V! n, Z' g9 p; yG01 X1 Y1 LFM
0 V! n( ~& \5 y8 I5 f N0010
0 H* l6 D$ d3 U" g! s  v; O02 EM* p% w0 r9 _0 h* f3 D8 K
2008381147.gif 8 `' {7 ~9 Y& q8 p
图2 AutoCAD绘制零件轮廓* E$ x9 ~" b9 Q: z( H
5 结束语
* K! n* q% e; J, l0 |  由以上实例可得如下结论:
3 V% a+ L1 W* j, Y* Q- o/ F% m  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;
! |- H, K, h2 \  n7 G  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
  V! v) i1 l1 E! G  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;
0 U" E$ z2 w2 q  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
$ j1 B% c2 X0 v- T+ G  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
1 u+ ^0 Y% _4 d' `9 W& o文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2024-9-17 10:16 , Processed in 0.179092 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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