找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 225|回复: 0

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

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

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

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

×
1 引言. D6 b% n7 R; F$ n
  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。& A0 j+ @% S6 m0 j" {
2 系统的框架结构和功能
" x  A" R/ R: h% V% Z  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:2 f+ ]: {9 r4 u! ~& `6 @7 Z
20083811346.gif
; g, B0 T# w- J2 D) ^$ o图1 系统总体框架结构3 ~' \# z4 O* V  p6 x/ O( B
  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
0 j1 N, Y. h* T' I( e7 N4 I  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;
* r2 {& e+ F5 X: K( y- o  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;
, r- E7 y+ S8 k; j8 J2 o% O4 {6 P9 ?  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;
3 t- z7 R( R, p( k7 O# u! \/ V5 s  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。
; x) ]+ \7 h& @. N" _$ k; B, \3 软件设计过程0 g( c% E3 _7 O* {
  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。! {4 @; _: y. g$ l, M9 _
  (1)实体数据类型变量定义
, l1 w. D1 j. L1 ?. {( \9 k6 c  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即" W1 X: D9 x: u4 _; g' u# l! U+ ^
Type ENTITIES-TYPE
2 H" u% i  ]& p- ?0 {  S4 l/ [; ?2 V′实体形式数据类型名:1 B3 g9 ~0 w+ l" T4 m4 f! ^
  ENTITIES-TYPE;
- T8 o+ J3 A, W9 u6 b9 J9 ?) M( ^  STYLE As String6 q2 j3 R9 u0 _+ e, i" }8 L+ e
′实体类型变量(其值为LINE,ARC,CIRCLE);3 I( m# w! {- u
  X1 As String9 D, S0 A, D! J: o) p" J
′实体的起点坐标分量x;
; n" o) T# d. V# b, x. Y  Y1 As String) P/ }4 F: r, V6 h* Y
′实体的起点坐标分量y;! E/ v' k' F4 Q
  X2 As String* y2 v6 A/ Z: c: D1 ?" `, m
′实体的终点坐标分量x;' ?3 h, N% F# O
  Y2 As String
" y1 b/ D3 J5 q′实体的终点坐标分量y;' k# ?* {# r; F+ g0 E6 E2 e
  X3 As String
6 f! Y" j4 ?7 z8 u% o* j  y6 m′实体(圆弧或圆)的圆心坐标分量x;
6 b& f3 A) w, q: G  Y3 As String
2 P- e6 C. w' l2 w9 z7 _′实体(圆弧或圆)的圆心坐标分量y;3 E1 L* X; D3 @9 S8 ~7 M) l6 ^
  R1 As String6 C+ \. d' b: D8 Q0 x
′实体(圆弧或圆)的半径R;
! p$ W. H; P; W! `+ E8 M8 o* g7 _  WISE As String! \: @& P" m: T. f! q0 f3 V% A
′实体(圆弧或圆)的顺(=0)、逆(=1)方向;/ y5 N% q, S: ?+ t5 u# [& G1 K6 G
  ANGLE1 As String' r- i" {) Y* V  o6 l( j" ~
′实体(圆弧或圆)的起始角;; e9 }& ^  i& A( M
  ANGLE2 As String
( X; g- _" n' Q+ G& a6 b* r′实体(圆弧或圆)的终止角;
7 C& D/ y$ F) G2 s$ F0 a4 aEnd Type  h$ z5 N, y' J
Global MM(200) As ENTI-8 ~+ R* e, Y8 A( }
TIES-TYPE
4 C7 f* C7 D* J! ~' g′定义一维数组MM全局变量,其元素为ENTITIES-TYPE& K- T0 f6 d0 y7 p/ G3 Z. o2 [& e6 u
′型变量,实体数目最多不能超过200个。
8 H( Z, i' f$ g6 h0 o7 y/ u# R* i/ J  (2)DXF文件的读取程序
( d4 `% q1 ]) {  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。  t- x% Z% P5 f$ I8 {" U
  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。
) q; r5 a5 Y/ T8 {& l6 p1 |Sub DXF-IN 0" e6 m+ b( Q& k7 T  ^  \
Dim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer0 ~- D* a  s3 t0 T0 V- r  C
Open FILENAME1 For Input As #1. q' i: h' m5 Y1 F6 y, o* H0 C
  Do Input #1,B( u( S/ R3 X' E+ Z* p
  Loop Until B=“ENTITIES”: N4 _  X9 V  Y, i8 _" \$ Y" m
  Seek #1,Seek(1)
# n; Z9 c+ D. o0 f7 d  Do While Not EOF(1)
2 N1 A9 y1 b# l$ B   Do Input #1,B
- F0 h; `% C  L3 p: ~$ ]: W   Loop Until B 〈〉“0”
) c* p4 y9 P$ C6 v7 o2 L   i=i+1: S- A( }2 R7 n2 `! z
   Select Case B& E- f: I3 D3 e4 M2 ?# w
      Case “LINE”
' |3 V2 Q* D9 B       INDXF-LINE 1) y& o$ W6 v& c- s( b3 ]6 O: q
       CC.STYLE=“line”
) j6 P9 B5 _; `* [4 G* B       CC.X1=Str$(x1)
3 D4 L+ K; i0 j9 B       CC.Y1=Str$(y1)
: q! ]  o$ e+ Q: A/ H       CC.X2=Str$(x2)$ h0 S* w* `2 ^7 y5 t
       CC.Y2=Str$(y2)# ]' b' b1 v) m1 s
       xx1=x2! L5 v: n5 e% B  s( x7 N+ @
     Case“ARC”  w' n/ _6 u4 C5 V3 \7 U5 o
       INDXF-ARC 1
& s& F8 ?6 d3 T       CC.STYLE=“ARC”8 t5 j! m* K% X/ w0 x0 U
       CC.X1=Str$(x1)2 l: k! V' B( O; k2 P% L6 g
       CC.Y1=Str$(y1)
# N# X2 D5 D8 C+ [7 L; P       CC.X2=Str$(x2)
) {8 |- d4 V8 ^: L: w; h: K       CC.Y2=Str$(y2)) h' x$ A) `3 O$ B2 g# T
       CC.X3=Str$(x3)
4 M" m2 j9 K4 r/ U       CC.Y3=Str$(y3)/ x, |6 i& z" u" Z# h4 H. o
       CC.R=Str$(R)
! t, B( c0 `  [  J0 J" E       CC.ANGLE1=Str$(ANGLE1)
# s0 X2 h/ y- U  ^& a, p7 C6 D       CC.ANGLE2=Str$(ANGLE2)
9 j" R+ {! c6 F: q  T4 z       If Abs(x1-xx1)>.5 Then0 F/ x# a" w, }7 L: t$ L  Y
        CC.WISE=“0”  J6 v# Y9 i& E
        A=CC.X1:CC.X1=CC.X2:CC.X2=A
+ |1 p9 z- U* ], @; ^! ~& b        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A5 B9 Q: h) S0 {
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A7 p# s; W6 P' m0 c$ I
         Else CC.WISE=“1”
- c0 X. G8 E2 @$ K3 Z4 Q      End If xx1=x2
4 ]! P' V' E% f+ p1 v. t. o    Case“CIRCLE”
! A0 r# S3 N: F      il=il+15 z, q$ l+ `& b
      INDXF-CIRCLE 17 n- ]; X5 m1 f% G& P( _# O
      CC.STYLE=“CIRCLE”
0 G5 a' J* f- N4 A! q# n      CC.X1=Str$(x1)2 ]5 r0 |" n9 X$ B/ v
      CC.Y1=Str$(y1)
( F3 Y- n% f3 v. C      CC.R=Str$(R1)
& K7 L) u1 q$ I      CC.X2=CC.Y1
( h* N  f2 |5 l" f# d      xx1=x1
9 ^5 ?1 O$ |; @- j: p  u7 B    Case“POINT”
4 d& b1 X4 }  n; S- X- J1 }      INDXF-POINT 1
- e+ m7 h2 O+ f6 R- S* F      CC.YSTYLE=“POINT”
9 P" D/ J1 O* \# \7 X- x      CC.ZHX1=Str$(x1), ?2 g! ]3 u0 h& a  ]) }: O
      CC.ZHX2=Str$(x1)
6 ~+ M- ?0 I, j" w! W) k      xx1=x1( h. |3 T; n  C/ Z9 W% \$ J
    Case Else
' T( ?1 k6 A9 {. A      CC.STYLE=“NONE”
0 L# J5 s2 J! F) N' @2 C- r, { End Select
7 W) ]* \$ x9 |# k$ \ Seek #1,Seek(1)
) o' W1 R& P: I/ i+ D j=Str$(i)
- S0 `- I5 w# v8 I- g+ ~( I/ f0 U6 V8 sLoop: `" E- ^  L  L; s  S
Close #12 @6 [: W% n4 ^; @  W4 z  k4 e$ u
End Sub% E: a8 K: Y+ q- f% R$ j
  其它模块的程序设计不再赘述。
; o% M( S; N4 o, i3 M5 [: [! v4 实例- k2 t6 C( f1 b, v# ~/ C! X
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。5 G" O" y0 ?  j& z3 B/ l; @* `' t
 N0001) I8 T+ b  R+ u
G90 G92 X0 Y0 S500 M03 LF$ E" N" d9 L7 C& j0 {& G' a# Z
 N0002
- t; \1 E# P- y3 J5 {G01 X1 Y1 LF4 T: w" A* A0 t8 P9 r% d3 G1 A
 N0003( i- h) Y/ \) x5 D
G01 X1 Y61 LF. Z8 C! C: P2 @, [8 A( _
 N0004$ c! ?* C, C  O0 {* I/ e
G01 X41 Y61 LF1 _  q$ s2 c, C1 ]" M' Q
 N0005& X( e$ l0 j4 p( W- D' B) @( g
G02 X61 Y81 R20 LF
5 Y) W: L3 O% U) \% t8 j N00060 s) l( T' `* D5 L0 t
G02 X101 Y81 R20 LF, N- @) U1 n  e, L/ A) [- ^% m0 P0 L
 N0007
$ h) C* |) J6 N3 x1 RG01 X141 Y81 LF5 ]' F; B% o& H) t' m% M8 z9 j
 N0008
+ @' f; u$ @7 ]G01 X141 Y1 Lf5 X' s; I  ]& S! N# l- ^3 a
 N0009& d8 y# V6 W; i# n7 N
G01 X1 Y1 LFM
1 C, ?; l, b, r N0010
" X# l. k) ~2 M8 ^$ K02 EM
* B1 a( N$ N! O% F! Z 2008381147.gif 4 m  O! ?/ z$ v4 m$ [) X* b$ v) p0 B
图2 AutoCAD绘制零件轮廓( }6 D7 N5 f5 o8 @7 s
5 结束语
* Q, [5 h9 s( l4 T: C  由以上实例可得如下结论:
4 U+ F! a5 k0 X( J  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;
/ q4 B! r+ m% o  c( i* p  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;
6 `4 K4 X+ W% F  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;
$ F( S! b0 e- \! c1 K4 f  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;$ w* n# M/ u2 |
  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
& j( M& {: `$ e文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

GMT+8, 2024-11-17 16:51 , Processed in 0.166028 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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