找回密码
 注册会员

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 232|回复: 0

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

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

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

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

×
1 引言
. q$ g) g( `  Z0 _6 {  数控技术作为现代制造技术的一项关键技术,它是有效提高机床生产效率、保证加工精度稳定和一致性的重要手段。目前,以美、日、欧为先驱,许多国家都在全力研制新一代开放式CNC高档数控系统,国内已有西北工业大学、北京航天航空大学、浙江大学等一些单位也在进行新一代基于工业个人计算机(Industrial Personal Computer,简称IPC)数控系统的开发与尝试。随着IPC数控系统的研制成功,其中数控系统软件的设计将更具开放性和易扩展升级的特点。为此作者选用“奔腾”PC机硬件平台、Windows95操作平台、AutoCAD for Windows开发平台、Visual Basic(以下简称VB)开发工具,研制适于工业PC机数控系统上使用的数控图形自动编程系统。该系统具有可移植性好,功能易扩展升级,操作、使用、维护简便等特点,本文对系统研制的主要内容予以介绍。2 w/ H( g5 q# |) W: K5 \) g
2 系统的框架结构和功能
% v4 I- B3 \5 k' }/ u  系统框架结构如图1所示,它主要包括AutoCAD图形生成、图形数据信息输入、工艺干预、NC代码生成、动态校验和数控加工程序输出六个功能模块。其中图形生成模块由AutoCAD完成;其余模块均为基于AutoCAD平台采用VB开发工具研制而成,功能如下:
$ h, `4 v5 b7 C- r3 X 20083811346.gif
' f" i0 d0 ?: U+ F. F图1 系统总体框架结构
  n* p1 |( @5 E6 X  (1)图形数据信息输入:它是AutoCAD实体建模后首先进入的功能模块。具有AutoCAD图形交换文件DXF接口,读取DXF接口文件为自动编程系统准备必要的图形数据;
  \( l5 h" p% ~  (2)工艺干预:它是继(1)步操作后对图形数据进行再加工的核心模块。工艺干预内容包括轮廓和点位两种方式,干预过程通过鼠标事件求鼠标干预位置与实体的最短距离实现。考虑到零件尺寸大小变化,本模块还具备视口放大和满屏显示的辅助功能,便于进行有效干预;6 l& ?; @$ h0 E3 _* N# P" V9 n
  (3)NC代码生成:经过工艺干预即确定刀具走刀路线后,根据ISO数控代码格式便可将图形几何信息和工艺干预信息转换成ISO标准数控加工程序代码。同时以“?.NC”形式文件名永久保存;" Q7 o2 q% K6 Q7 k
  (4)动态校验:上述生成的NC代码是否正确还要进行校核和检验方能制作控制介质输出,本模块采用逐点插补算法进行动态模拟检验ISO数控加工程序代码是否正确,以及刀具与工件是否会发生干涉等。如果检验不正确则需对上述各个环节进行反复调试直到正确为止;7 Q( J& R1 O" l% h( Q0 j
  (5)数控加工程序输出:经调试和校验后正确的数控加工程序可以通过拷贝、打印的方式输出。8 z/ W' n/ s. e4 t3 l$ t  e
3 软件设计过程
+ a  o+ q7 A- Z# |  构成图形自动编程系统的主要功能模块有图形信息输入模块、工艺干预模块、NC代码生成模块以及校核检验模块。以图形信息输入模块为例说明VB程序设计的过程。
! Z2 u+ @  q5 ]% I& G5 s  (1)实体数据类型变量定义
0 C5 M: E0 e2 A. G2 A/ U8 \  系统对点、直线、圆弧和整圆四种实体采用通用数据类型结构定义几何信息,该类型的全部元素均为字符串型变量,在图形信息输入模块中主要保存读取实体的几何信息。具体以数组MM(200)变量来保存,这里要求实体数目最多不能超过200个。即& X$ x! T- |5 u; X* [
Type ENTITIES-TYPE
$ S& b' d6 {* V3 U, j. g′实体形式数据类型名:
" z/ ~* e# J1 F5 `% b6 T& A  ENTITIES-TYPE;
0 O! V: `7 M" n  STYLE As String- n2 ]0 A( k* w. H2 q7 V! _. q% U
′实体类型变量(其值为LINE,ARC,CIRCLE);2 b8 |  N$ N' i3 i9 E' B3 N0 }) l
  X1 As String
. U; z4 [! n) X9 L/ G8 V( T′实体的起点坐标分量x;
' {1 V% P5 G! T' C  Y1 As String
; k$ n! Y: ~- f# f8 J4 e  h′实体的起点坐标分量y;
8 @1 b! t9 N5 ~+ F4 j  X2 As String3 ^) ~( e. d' l6 E& H/ P3 \0 @
′实体的终点坐标分量x;, W, v4 Q( ~% @/ y" k% L! l  u
  Y2 As String; U2 U+ s4 y+ r3 h- L" Q( S
′实体的终点坐标分量y;! l, T4 `% [+ d8 h
  X3 As String# b% O. g: i! v8 D* x0 ]3 g
′实体(圆弧或圆)的圆心坐标分量x;
6 n, O! R7 F3 y8 x3 b1 F8 S4 I& `  Y3 As String
" ]) R/ i! y* m2 \+ m5 B. P$ U′实体(圆弧或圆)的圆心坐标分量y;
' Q: l# @% s% b( C2 J  R1 As String! ^- V5 ~8 [5 Q3 A
′实体(圆弧或圆)的半径R;+ c- m0 \( X) L
  WISE As String
. c4 [( r& ]; P′实体(圆弧或圆)的顺(=0)、逆(=1)方向;- j! ~( K0 c- W4 U) s5 w
  ANGLE1 As String
. V' h: l$ `/ p' ]  x′实体(圆弧或圆)的起始角;
+ a# ~! a. ?" {( X, A1 j  ANGLE2 As String
, P- z' O  D0 o′实体(圆弧或圆)的终止角;& H  K& ]- T9 o2 S% S4 s* D- F& {
End Type
, {8 r( _- l/ D- v$ [: L0 BGlobal MM(200) As ENTI-# F4 \/ S) f; U% h+ r' l' c
TIES-TYPE9 o0 L9 h. w# s
′定义一维数组MM全局变量,其元素为ENTITIES-TYPE
3 [2 V. q9 A7 o# x9 w' y′型变量,实体数目最多不能超过200个。
# c; V4 C, Z3 Z  C$ m6 r& M  (2)DXF文件的读取程序& M0 R1 S$ t  J8 C" Q. O5 J
  结合当今微机平台上广泛使用的AutoCAD图形软件包,本文采用这一平台开发的图形自动编程系统,可以充分发挥AutoCAD的强大实体建模功能,同时缩短软件开发的周期。本系统使用需首先进入AutoCAD图形系统绘制零件实体,当零件绘制完毕,便以图形交换文件DXF输出,然后进入图形自动编程系统启动图形信息输入模块,读取图形信息。下面介绍零件实体几何信息提取的程序设计。
2 y! s) c7 [! S  U  DXF文件是具有专门格式的文本文件。一个完整的DXF文件由四个大段和一个文件结束标记构成。每一段的开始部分由四行组成:即DXF的组代码0和段标记SECTION,组代码2和段名各占一行,中间部分是段的实际内容,而段结合部分由组代码0和文件结束符EOF两行组成。DXF文件具有每个数据均占一行的特点。但是由DXF文件生成图形仅需实体段(以ENTITIES为段名)和文件结束标记。通过分析DXF文件的格式,现以VB编写的源程序说明读取DXF文件实体段几何信息的过程。
) }6 I/ G* O% CSub DXF-IN 0% P1 [6 g8 K! z, [2 q5 c
Dim A As String:Dim B As STRING:Dim CC As ENTITIES-TYPE:Dim i,il As Integer
' d2 {1 {0 x- YOpen FILENAME1 For Input As #1
2 v$ O8 s  k1 Y) q3 L  Do Input #1,B
$ _6 T: O; Q7 }, |1 Z( N  Loop Until B=“ENTITIES”8 O0 i. W4 n% Q$ L1 Y" {
  Seek #1,Seek(1)1 I* O1 v" r+ s4 V
  Do While Not EOF(1)
9 r0 X% Q4 b" p, f   Do Input #1,B
) f; d7 O+ r4 P   Loop Until B 〈〉“0”
/ Y- u; H/ e: a5 g5 J! `$ C3 Z   i=i+18 Q. s8 |5 M6 K" ~2 n- N8 D
   Select Case B
. x; P3 M% U2 W8 ?% M      Case “LINE”' k& n& _* f8 ~, w2 s3 ?+ E& g
       INDXF-LINE 1
* T( D7 Z, C! B  a& E' i       CC.STYLE=“line”2 E5 q$ }* U2 z# J
       CC.X1=Str$(x1)
# a0 q# i' j5 c" q+ e! D, l9 {       CC.Y1=Str$(y1)
7 e& }. n6 m1 B; y* h7 n       CC.X2=Str$(x2)
& V" @; M, u0 p( ?! S       CC.Y2=Str$(y2)
  y( W4 H% p7 v- P; X       xx1=x2
/ M1 j( U! @5 R* _/ V7 s% S- J     Case“ARC”) ^, g. ^! J# r8 E
       INDXF-ARC 1, P# V/ f8 ]% T* E* Q. Y9 l5 S/ m
       CC.STYLE=“ARC”" @' o2 R) _2 ?: j$ w
       CC.X1=Str$(x1)
9 n+ n$ ~5 D) _% p: J! i- u7 [2 Y       CC.Y1=Str$(y1)
& S# x4 \" _% m: \       CC.X2=Str$(x2)  u3 b/ b1 d) ~3 n2 N# X+ }
       CC.Y2=Str$(y2)
+ r& E7 q$ C' }/ i" O; B2 m' O       CC.X3=Str$(x3)
! t2 |. V$ n2 L3 r" l       CC.Y3=Str$(y3)
- N& ^/ l+ r* B+ E7 o+ F! |       CC.R=Str$(R)$ ~/ F6 s: @& |, L) @
       CC.ANGLE1=Str$(ANGLE1)
5 k  E, M5 A4 M% P       CC.ANGLE2=Str$(ANGLE2)1 F3 b* c2 K2 T) F+ N$ b- H$ S
       If Abs(x1-xx1)>.5 Then# K6 ]& H2 Y  t5 e& W9 C
        CC.WISE=“0”. B; q: S0 S/ D9 [
        A=CC.X1:CC.X1=CC.X2:CC.X2=A
; v9 V$ i; A9 Z0 K5 n1 m3 V        A=CC.Y1:CC.Y1=CC.Y2:CC.Y2=A  v" f% ~( ~( N: y5 o' f' K
        A=CC.ANGLE1:CC.ANGLE1=CC.ANGLE2:CC.ANGLE2=A
' @0 T& e9 \/ }         Else CC.WISE=“1”
! |2 d1 N  S! N6 @* b1 V5 `      End If xx1=x2
+ e; \. R- |9 p3 N) K8 U0 A3 O    Case“CIRCLE”5 W- E* m) p5 r2 I! O7 D1 l
      il=il+10 O4 R4 z% p( t  h5 o$ i
      INDXF-CIRCLE 1
6 k2 x, H& ~" T2 X      CC.STYLE=“CIRCLE”# ]  k% }, o5 U5 x( J% c6 D
      CC.X1=Str$(x1)
& p6 Y! s7 Z+ A. d      CC.Y1=Str$(y1)# G* \# b8 \+ I  D0 ]  ?
      CC.R=Str$(R1)! J5 c; Z3 G" L& p5 u
      CC.X2=CC.Y1+ y' \' A9 \, q3 ~6 c! A/ K& N
      xx1=x1- I7 I4 f9 j' Y7 ~2 \* A
    Case“POINT”; B8 y9 c  B7 B! G. [9 f! }  ]7 ]
      INDXF-POINT 1
( s# W8 A9 ]" z0 R  M) _, _0 A      CC.YSTYLE=“POINT”
! R7 W( B; f3 t3 c      CC.ZHX1=Str$(x1)
; g4 r& h% }( f# L8 z, X      CC.ZHX2=Str$(x1)
! M/ m. P: _5 A1 a$ h; ]      xx1=x1
, P5 s: I1 W+ i: ~    Case Else% c/ H5 e" D' S4 J( |' U
      CC.STYLE=“NONE”
: A! E/ P  F2 n0 J End Select
5 ?5 R. O0 f$ l1 t9 V* Y Seek #1,Seek(1)$ i) i/ ^- H/ v( _  Y2 s. r1 s# j
 j=Str$(i)# _- Z( Y6 e! _  [1 D
Loop% b, u5 d( ~3 W$ O- v, \( T! ~( K
Close #1* M# K0 d* O3 p7 a4 I
End Sub
/ @- x) i1 @( o6 y$ }# j1 Q+ D  其它模块的程序设计不再赘述。/ x- F7 `6 j9 u; r6 K/ m
4 实例5 W/ i1 r1 A! ?, A& j
  本文以二维零件数控铣削加工为例,首先进入AutoCAD绘制零件轮廓如图2所示。经图形交换文件DXF传输到系统后,工艺干预可得沿图示1-2-3-4-5-6-7顺时针方向走刀的ISO数控加工程序,且此程序已顺利通过校核检验。
" C9 a  ~; p% S- r N0001# {$ z& G+ Q9 I. @  \: p+ j
G90 G92 X0 Y0 S500 M03 LF1 w3 ^4 ~: C& [% N0 @8 E  Q
 N00021 \; u$ l9 w8 j4 X# @! e/ s
G01 X1 Y1 LF, B5 S9 r  R& G/ r% o
 N0003" ~; B; Q. s/ w
G01 X1 Y61 LF5 s* h2 v. ]7 |& K% F
 N0004$ z) \1 r1 R% \- i
G01 X41 Y61 LF/ |( v) j7 v4 K- _+ M0 |) y
 N0005
& |+ L; i) {" t3 L* j- {G02 X61 Y81 R20 LF
0 A$ C6 s4 ^9 B, [0 e& K7 @; X* b N0006
5 t2 |+ u- F& H+ M2 k% O/ x1 RG02 X101 Y81 R20 LF7 L% E5 V4 B/ q0 t& g; u1 A0 H
 N0007* k3 b  j% y! m' F
G01 X141 Y81 LF7 t8 G5 |7 M! N, O1 q% v: c
 N00084 v! x0 t0 f0 j* Q7 ^
G01 X141 Y1 Lf% P0 a! W, j7 {$ g
 N0009. v6 k3 N+ m+ S/ k6 T
G01 X1 Y1 LFM
" n& p4 l6 o' ] N0010
- f' O# ]& j% V' \* H0 V- l; M) x02 EM
5 l% F- ?. C( z8 m9 ~& ]0 C1 c+ T 2008381147.gif
  T! Q: J( {) H% [/ Q" s图2 AutoCAD绘制零件轮廓3 N- @$ K+ f0 b( M
5 结束语; F: \+ I! T4 r* ]7 V/ R/ M
  由以上实例可得如下结论:/ P+ ?1 {6 k% N4 i
  (1)本系统基于AutoCAD平台成功地实现了二维轮廓零件的数控自动编程,从而弥补了繁重手工编程带来的许多缺陷;, U8 v9 d" }* h4 L( X/ t- Y% k
  (2)该系统既可单独作为图形自动编程系统使用又可作为工业PC机数控系统实现自动编程的功能模块;. C2 k# t: ^+ k  q/ h$ p2 j! q
  (3)本系统一旦与CAPP系统结合,便发展为微机平台上的CAD/CAM一体化软件;
& O% z& m- z5 \: m  (4)添加刀具半径补偿功能后本系统将能实现刀具偏置自动补偿;
5 ?' z- }: a& x, N  (5)研制本系统是PC微机上实现自动编程的有效尝试,功能有待补充和完善。
) a0 b5 e7 n; m  y文章关键词:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

中国磨削网

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

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

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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