|
马上注册,结交更多好友,享用更多功能,让你轻松玩转磨削论坛
您需要 登录 才可以下载或查看,没有账号?注册会员
×
N
, ?2 s! Y1 F' a( p5 qG
4 d5 ~/ Z8 F8 {% FX
- _* a' t! `+ Y+ g; n8 w1 |Y$ }0 ^6 r1 [: z/ G3 y
Z, S) z4 {, E' C9 Q- ?
…
( P8 F! h* n( K$ L9 K& p# dF
- ~) | ^0 S7 U P* j/ ~( wS; n! I+ h3 }) v' F" _4 S( {
T
" z I5 |2 c) m6 F( VM2 |4 b+ G: L! {0 A9 a
; Q9 m Z; \8 X2 M
. N4 o; o: p3 a# S. `图1 预处理控制方法流程图
% J4 G0 I; i* d本文以Windows98为平台,Visual C++5为开发环境,基于仿真系统对加工状态、仿真精度及仿真实时连续性的要求,又综合考虑了复杂曲面产品数控代码庞大而导致的缓冲区容量需求,我们利用Win32 API的多任务、多线程编程及CPU分时共享特性,采用预处理控制流程,很好地解决了数控代码的计算机识别与分析向题。总体结构如图1所示。预处理任务负贵对零件程序的扫描与词法、语法识别,并将结果放入缓存区;解释任务完成对缓存区数据的扫描提取与分析,从而形成仿真驱动文件。该方法综合了加工过程解释和编译控制方法的优点,保证了仿真的及时性与高效性。/ G) l1 `8 u2 k
预处理模块首先对输入的数控程序采用单向链表结构来组织管理,利用链表的每个节点来对应一个程序段。单向链表的结构如下:
& L' x8 H1 t6 [% p+ l5 xtypedef Struct File-text{
9 x" U7 {2 A2 j, k m! tchar *text;! B0 E+ _, I3 F+ E4 \# c* u4 W
Struct File-text *next;
" `! V; j- }2 i- V/ w}File-text;
7 t$ y- H1 i4 s0 f- R7 u然后对保存在单向链表中每个节点的程序段进行识别处理,去除不必要的注释及回车符,形成仅含功能代码字的标准程序段。再按照地址符转入相应的词法、语法判别检验处理分支在词法分析中,数控程序均按标准程序段编写,先按标识符类型记录其后面的表达式字符串,再按各赋值方式进行分析;语法分析是将词法分析产生的表示符分组,形成语法短语再完成语法的综合。经过对输入程序的预处理过程,若有词法及语法错误,就将锗误代码位置及错误性质记录到错误信息文件中,以待改正。最后将改正的程序存人级冲区。0 E2 Q- G7 v; D
S' O# x/ u3 y图2 解释模块结构框图" m" }% _2 l# x$ i7 I
解释模块负责提取有关命令动作和状态信息,并将运动的数据按位移和速度的变化划分成时间片段,从而骆动仿真系统棋型的运动,模块的总体结构如图2所示:
7 e. ^) R: V3 B; y% a通过对已经存在入缓存区的数据结构进行分析扫描,提取出与仿真有关的动作及状态信息。G代码是数控代码中最重要的代码,几乎控制了数控机床所有的功能和重要设置,必须对其进行合理、有效的处理。从众多的G代码中我们发现,只有如下的代码与仿真有关:G00点位控制;G01直线擂补;G02/G03圆弧擂补;G17/G18/G19坐标面设置;G40/G41/G42半径补偿;G90/G91设置绝对或相对坐标。为此,在本文的研究中我们将忽略其它G代码而只对上述G代码进行分析。为使数控仿真系统不仅能够棋拟实际的材料几何去除过程,还可以反映出加工过程的物理特性,使其成为集加工参数优化和加工质量情况预测的一个功能完菩的系统,我们对一些加工代码如M代码,T代码、F代码及S代码做进一步的分析。对多数数控系统来说,M03/M04代码分别代表了主轴的旋转方向;F代码,也叫进给功能字,通常以每分钟进给距离的方式指定速度;S代码则定义了主轴的转速。将这三个代码作为一个分支处理,使其与G代码信息综合,可以得到任意时刻刀具的精确位置及姿态。T代码,即刀具选择代码,根据地址码T后面的编号,可以进入仿真系统的刀具库,并可返回相关的刀具几何及物理信息,如刀具类型、型号、切削刃的几何表达和刀具的材料特性等。经过上述处理,我们就可得到数控加工过程精确物理仿真所需的任竞刀具位置、姿态及刀具切削刃的几何信息。这些信息用以下的数据结构表示:
/ s$ Z# a% T: i% otypedef struct Random-data{& o* ^6 h0 z8 T! |2 b. H
float m-code;5 c0 q- [- h. u, B/ S+ X
float f-code;4 @8 G( s. j" D5 B% G: A& D- `$ \3 L
float s-code;
& H8 Y1 M, s6 O( Ifloat g-code; T( j: R9 s( y8 X
struct tool-data{8 S/ K% q0 ?; A1 q9 R
float center-x;
- h; `2 {7 R4 P4 K# ~float center-y; g9 B9 }9 S- J3 Z' C
float center-z; a! N! P: ^8 r& N: x3 V% d
int *tool-type;
a( ?, u7 d4 n& Y7 ~}tool-data;
" T0 ]' c0 y8 K/ @% N) [4 Mstruct Random-data*prior;
2 f1 t# p' d& i. h6 hstruct Random-data*next;6 h% H$ J6 X( h) J0 h7 |
}random-data;
/ y* W, k7 n# ^0 Y1 p这里有一点值得注意:上述代码均为模态指令,即本字段产生后一直有效,直至再次遇到同样的字符指令,原来的指令值才会失效。在本文的研究当中,我们对数据结构采取由后向前的搜索策略,经初值判断后,可以得到各程序段的模态指令状态该方法在实施上是非常容易的。
4 D- i4 u+ w( H三、结论& R% A( k8 D( d) i1 j' z- ^
随着CIMS与虚拟制造的不断发展,作为制造单元的数控加工仿真系统已经发挥了越来越大的作用。为建立起一个能够反映真实加工过程的仿真系统,首先必须对数控加工代码进行准确无误的识别与分析,将其转化为仿真系统的驱动数据。本文在分析了数控代码特点的基础上,提出了方便计算机处理与分析的预处理控制方法。该方法已成功地应用在作者所开发的基于质量预测与分析的复杂曲面数控加工仿真系统中。/ @4 H* q( t5 j5 Y
文章关键词: |
|