找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 259|回复: 0

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

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

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

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

×
1 引言
& m$ I% O9 b; J; B: h& n. ?1 ~  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。5 d  f3 N5 n4 _2 B
2 系统的框架结构和功能
' E3 g1 b& A- e: @) O6 ^8 ~  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:
/ X- l% J1 n) ?$ W' u5 l9 {6 n 20083811346.gif
. W7 W0 t! q( L  d图1 系统总体框架结构
. @3 ^9 r- u! ]2 s+ R  O7 ?4 Z  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
/ S/ J8 ^8 }3 _) y$ W  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;; Y" B' ^% ]5 U5 t1 j
  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
( ]! J4 J; e8 G: E7 ]  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
& v. Y- o9 [# s+ {& v8 K  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
3 N9 ?+ D. l4 |- M0 `3 软件设计过程
: C! G2 _3 Z3 N0 j. i% M6 K, O* ^  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。
6 D( G, Z7 N4 c+ X2 N' X) H  (1)实体数据类型变量定义
5 Z$ Y( _: ?9 `) X, P2 n  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即
# B# i; B9 s# b1 LType ENTITIES-TYPE
+ e! b* D% _0 |′实体形式数据类型名:% Q; ^. |0 }% }3 [0 B/ d; `
  ENTITIES-TYPE;8 J5 a5 w" l9 [* u* S) {% y
  STYLE As String
! W* r- t9 j9 s, r2 ]; d$ f′实体类型变量(其值为LINE,ARC,CIRCLE);
8 r# R  N9 e+ _( L  X1 As String, q  O7 T; a& F/ Z( `  S- K
′实体的起点坐标分量x;) i. U' {- O! ]7 L  W
  Y1 As String
+ S4 E& U5 D6 c& x  s' S9 U′实体的起点坐标分量y;- O/ L7 B( d: l5 `/ e5 A& H
  X2 As String1 r' C- X4 \6 a5 g, }
′实体的终点坐标分量x;  _) z4 D! l0 w( d: m
  Y2 As String
/ ]. F% {' r) I( @# y′实体的终点坐标分量y;2 {3 B: P0 {6 ]
  X3 As String% _, x1 Q. x' d
′实体(圆弧或圆)的圆心坐标分量x;5 }: R7 t( H/ g* b7 ]/ S
  Y3 As String
/ H- Q* L, ]& Y" X* \' M′实体(圆弧或圆)的圆心坐标分量y;+ g; M' {( a$ d3 [  I! [. \
  R1 As String8 V1 `. Z9 h6 V, c9 _6 f
′实体(圆弧或圆)的半径R;
7 J( j2 \: t: d  WISE As String) G0 h( }0 {4 g- N3 P' W) P
′实体(圆弧或圆)的顺(=0)、逆(=1)方向;3 z; N! l" c  n- \* U" @9 I4 ?1 T
  ANGLE1 As String7 U. ?# O- U* I/ P8 o* i
′实体(圆弧或圆)的起始角;2 ~1 m/ v, v% [0 Z
  ANGLE2 As String
" _' ~6 F6 Z; X$ }4 K/ g% q% T′实体(圆弧或圆)的终止角;$ N- L! _' e* p/ d6 q
End Type
1 |; u# d- K  w: c; iGlobal MM(200) As ENTI-
. U' A4 g9 j- ?0 uTIES-TYPE
: Q0 z& P4 G+ C, E# ?  E′定义一维数组MM全局变量,其元素为ENTITIES-TYPE5 J7 J$ u3 w5 R) T/ D" w
′型变量,实体数目最多不能超过200个。
* K# u0 o2 M( |! _! f( p- ^2 s  (2)DXF文件的读取程序
, V) I( T- b; e$ w/ E  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。8 Z. }7 q% S5 r1 c; `
  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。) D4 N+ ]' _. I) B
Sub DXF-IN 0
# z* p: C% r( Z1 EDim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer4 ^! t; S3 H" H1 P
Open FILENAME1 For Input As #1
  D4 y+ h+ q) X9 b, d8 ~, K: n  Do Input #1,B
) ^9 `: Y0 i, |+ ~% z2 w  Loop Until B=“ENTITIES”- }% h4 H) |3 Q# H% n& @
  Seek #1,Seek(1)7 ?, b9 I' a9 O5 G* K
  Do While Not EOF(1)5 ^& g5 O; L: D. l- C# ]
   Do Input #1,B; ~$ p% E9 @& f* z
   Loop Until B 〈〉“0”- d2 q$ g. W/ z& x, i+ I
   i=i+1* Q1 A' N# `9 a1 d3 L2 G* s
   Select Case B, _' `% G& N' o( |
      Case “LINE”2 w( R5 C4 W, S# D" M: g
       INDXF-LINE 1: r# `( D1 f& N# @. `
       CC.STYLE=“line”
7 X% @/ g7 D: c       CC.X1=Str$(x1)1 D' q" c" x. N1 ^4 p: h
       CC.Y1=Str$(y1)
1 ^" d9 R, f. G- _! N9 E; ~3 C9 D# _       CC.X2=Str$(x2)( v6 v1 A+ y! r1 a; o# G9 Y
       CC.Y2=Str$(y2)
2 v* O! ?4 u; p+ i% Z$ K3 ^       xx1=x2
/ B1 W, _  e% y0 c: R" T9 o% ~+ e     Case“ARC”2 W+ C7 Z9 L% e8 G. W9 M7 H
       INDXF-ARC 1
' v; v, z! ^! H' z       CC.STYLE=“ARC”
" r/ f0 }/ E& G* Q4 ^       CC.X1=Str$(x1)
% V) k& s+ o0 A1 V0 e7 j( q* S       CC.Y1=Str$(y1)3 O* }$ ]) `; e
       CC.X2=Str$(x2)
, E- z' W, X8 ^7 z, p       CC.Y2=Str$(y2)% W9 `( ^. c$ p; ]
       CC.X3=Str$(x3)
+ b2 B1 X- R+ U+ W       CC.Y3=Str$(y3)
  p+ B2 w! w4 G3 b4 `; X       CC.R=Str$(R)3 S; F" Y$ z. \; @: K
       CC.ANGLE1=Str$(ANGLE1)
* W/ {! E+ W& O0 h0 N" J2 w' Q6 z8 m       CC.ANGLE2=Str$(ANGLE2)/ \" o" B" K+ x, B! u
       If Abs(x1-xx1)>.5 Then5 _7 }  u" A" C: x
        CC.WISE=“0”8 u0 P1 v+ U4 n& {! |* t: Y( H4 B# H( R
        A=CC.X1:CC.X1=CC.X2:CC.X2=A
$ ?$ W: y. S; @' c8 {        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A- K/ T  }, E8 I- E. y8 M% l
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A+ G# N5 f+ i' B0 X( [) w  c
         Else CC.WISE=“1”
" k9 W! O" H* }6 |* T! L8 B: o% }      End If xx1=x2
9 Q  q+ q5 z, x1 N! K4 i, {    Case“CIRCLE”
7 z( n3 _2 ]3 b5 q4 `      il=il+19 o' N9 V5 F; M2 d4 v) S
      INDXF-CIRCLE 1
- ]* v6 R- z+ r7 s: J2 [4 Q/ s      CC.STYLE=“CIRCLE”
5 m; {; @' q0 J2 F6 T      CC.X1=Str$(x1)
- }1 T9 x5 q2 u7 q* X      CC.Y1=Str$(y1)5 }$ y# f! V* [: ]" f5 d
      CC.R=Str$(R1)
! T) N3 y7 j6 E5 a) W; A4 ]& O! L4 F      CC.X2=CC.Y1
# s) W! t8 W! i& z+ G; H& Z      xx1=x15 ?6 f: {* N7 f/ c) c; V
    Case“POINT”
9 p  Q. N7 a# N6 ~! N6 V      INDXF-POINT 1
# g4 H" M1 a8 Y. ^  T      CC.YSTYLE=“POINT”
4 o4 V; I6 s  N: ~/ h+ i      CC.ZHX1=Str$(x1)% L% {/ J8 G/ ]$ B7 |, A
      CC.ZHX2=Str$(x1)# @4 p5 U- b( h% ~% L8 p2 t
      xx1=x16 o( o6 v$ e: b, ]
    Case Else
  ]- P: ?4 B. K% B  O      CC.STYLE=“NONE”8 E+ g! r) m1 i0 O! Z1 {
 End Select" B8 k" \) Q1 M$ e% L3 U
 Seek #1,Seek(1)2 d9 d* F* ]- B3 c4 @2 V# q1 ?
 j=Str$(i)% `2 a6 `  G3 `2 _
Loop4 u( e1 K7 b" u, J& u
Close #15 r+ C) J& j2 m. D/ n0 M6 T
End Sub( B& j6 D( {" g+ V" a- F
  其它模块的程序设计不再赘述。# g% W0 {. v! l) h! Y
4 实例- G3 i* B! C. z; D5 G
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。" N! u% R" k" K$ R7 e; {
 N0001
4 v- z( E& n4 N3 g( k% v+ m$ nG90 G92 X0 Y0 S500 M03 LF
& `3 v0 |8 Q& M: H1 q N0002
0 T% R3 \1 s4 K, d# ^G01 X1 Y1 LF! l/ T( X- {2 G+ B( {* j! K
 N0003
4 J0 U0 B0 o1 u% C' y; L' lG01 X1 Y61 LF* L' L9 L; R7 m0 M# p. H1 q& |
 N0004
5 Z4 I& B, @7 L7 J. O5 RG01 X41 Y61 LF9 Q" [6 U# M* |% y* h5 `# V
 N00055 n# z1 q6 ?3 J$ ~
G02 X61 Y81 R20 LF
. ?8 ^% W" ^3 ~; d  D N00061 \& Q+ p- L8 M7 O3 P5 F
G02 X101 Y81 R20 LF
9 Y2 E0 C) K& k, l7 L, B N0007
- i9 R2 _; b1 u8 FG01 X141 Y81 LF
  R3 ]; W* _& S/ y; W( Q N0008- o9 T# U$ X6 r" L: ]9 ~8 u
G01 X141 Y1 Lf# ?* m# e( N" C9 Y
 N0009
6 C( x7 s0 N+ O, O% IG01 X1 Y1 LFM- o6 g1 Q# m3 s' Q/ f5 e
 N00108 H) Q6 z5 W- M: Y* v
02 EM
& O% A2 C  D3 P9 c, A5 e2 d 2008381147.gif 9 }$ U2 t# O" ?/ Z3 s
图2 AutoCAD绘制零件轮廓
* H. s, b) W: @! K3 `- I9 b' [; U5 结束语
% z  B" b  H' u  w3 b9 O9 C  由以上实例可得如下结论:
" K$ \9 c0 i6 f1 L  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;; Z# z6 k8 V. ^$ a
  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
7 W3 `- ^' E$ h& W9 z- q4 h  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;6 ]/ L4 q9 v$ o4 ?3 V! I1 ^
  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;! ^3 j. u- S& g
  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。/ H* T. w/ z  J
文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2025-4-26 13:56 , Processed in 0.189172 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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