王力侠 发表于 2011-7-12 22:14:04

数控加工仿真器加工代码的计算机识别

  数控加工是CIMS环境下最能明显发挥效益的生产环节之一,它可以保障产品达到很高的加工精度和稳定的加工质量,生产效率高,准备周期短,可以大大节省专用工艺装备,适应产品快速更新换代的要求。在CIMS环境下,针对不同的制造过程要求,需要不同的仿真器来进行相关问题的仿真。比如对功能性、切削加工性、装配性等等,数控加工过程仿真系统是这些仿真器中的一个。随着数控技术、计算机仿真与建模技术的发展,切削仿真系统可被用来检验刀具路径、预测设计零件的加工形状,已经成为数控数据验证的一个重要工具。
  近年来,为满足设计、制造集成一体化和全面提高多品种小批量产品加工质量及生产效率的要求,我们迫切需要一个功能更加强大的切削仿真系统。它不仅仅是一个简单的刀具路径验证系统,该系统除了具备几何仿真的功能外,还应具有对物理过程参数如切削力、切削误差和刀具疲劳以及由此引起的产品质量问题的分析预测功能,使之成为可以对切削加工性能进行分析评价的有效工具。从严格意义上讲,已有的数控仿真系统仍属于一个几何仿真验证系统,较多的是利用刀位数据作为仿真系统模拟运动的驱动代码。而利用数控加工信息载体——数控程序直接驱动仿真系统,由于考虑了加工环境及加工状态等因素,与生产加工实际更加接近,非常适合于精确的、功能完备的数控加工仿真。因此,对数控代码进行合理有效的分析处理,使其成为控制仿真系统机床运动部件可以接受的数据,是建立CIMS环境下集加工参数预测、产品质量分析的制造单元仿真系统的关键课题。
  一、数控代码及其特点
  数控加工中,零件的加工程序是由程序段组成的,每个程序段由若干个数据字组成;字是控制系统的具体指令,它是由表示地址的英语字母、特殊文字和数字集合而成。
  程序段格式是指一个程序段中字、字符、数据的书写规则,通常有以下三种格式:
  使用分隔符的程序段格式,它一般用于功能不多且较固定的数控系统。此格式程序不直观,容易出错。
  固定程序段格式,该方法程序段长且不直观,目前也很少使用。
  字-地址程序段格式。该格式由语句号字、数据字和程序段结束标志组成。各字前有地址,字的排列顺序要求不严格,数据的位数可多可少,不需要的字以及与上一程序段相同的续效字可以不写。优点是程序简短、直观以及容易检验、修改,因此,该格式在目前广泛使用。字-地址程序段格式如下:
  N
  G
  X
  Y
  Z
  …
  F
  S
  T
  M
  ;
  目前数控系统品种繁多,一些性能良好的却大多在国际标准出台之前就早已形成了自己的一套数控代码。尽管多数依据ISO和EIA标准,一般均有扩充,使得各系统的代码千差万别。为使仿真系统能够适应多种数控系统,并且能够真实地反映实际的加工环境和加工状态,对数控代码的计算机识别分析方法、能力及准确程度都提出了较高的要求。对各系统的数控代码综合分析后发现,尽管在一些代码上存在着功能的差异,但又都有以下共同的特点:1)数控程序段为典型的上下文无关文法,即语法单位可完全独立于其可能出现的环境。2)数控代码语法规则简单,数量较少。基于以上分析和数控仿真目的,我们只需在众多的数控代码中寻找提炼与仿真系统运动部件有关的运动与状态信息,而对于那些无法体现在仿真系统里的运动及状态信息。没有必要刻愈地去分析,只要计算机能够识别它们并进行词法的检验就可以了。
  二、数控加工代码的计算机识别及分析实现
  总体结构
  图1预处理控制方法流程图
  本文以Windows98为平台,Visual C++5为开发环境,基于仿真系统对加工状态、仿真精度及仿真实时连续性的要求,又综合考虑了复杂曲面产品数控代码庞大而导致的缓冲区容量需求,我们利用Win32 API的多任务、多线程编程及CPU分时共享特性,采用预处理控制流程,很好地解决了数控代码的计算机识别与分析向题。总体结构如图1所示。预处理任务负贵对零件程序的扫描与词法、语法识别,并将结果放入缓存区;解释任务完成对缓存区数据的扫描提取与分析,从而形成仿真驱动文件。该方法综合了加工过程解释和编译控制方法的优点,保证了仿真的及时性与高效性。
  预处理模块
  预处理模块首先对输入的数控程序采用单向链表结构来组织管理,利用链表的每个节点来对应一个程序段。单向链表的结构如下:
  typedef Struct File-text{
  char *text;
  Struct File-text *next;
  }File-text;
  然后对保存在单向链表中每个节点的程序段进行识别处理,去除不必要的注释及回车符,形成仅含功能代码字的标准程序段。再按照地址符转入相应的词法、语法判别检验处理分支在词法分析中,数控程序均按标准程序段编写,先按标识符类型记录其后面的表达式字符串,再按各赋值方式进行分析;语法分析是将词法分析产生的表示符分组,形成语法短语再完成语法的综合。经过对输入程序的预处理过程,若有词法及语法错误,就将锗误代码位置及错误性质记录到错误信息文件中,以待改正。最后将改正的程序存人级冲区。
  解释模块

  图2解释模块结构框图
  解释模块负责提取有关命令动作和状态信息,并将运动的数据按位移和速度的变化划分成时间片段,从而骆动仿真系统棋型的运动,模块的总体结构如图2所示:
  通过对已经存在入缓存区的数据结构进行分析扫描,提取出与仿真有关的动作及状态信息。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后面的编号,可以进入仿真系统的刀具库,并可返回相关的刀具几何及物理信息,如刀具类型、型号、切削刃的几何表达和刀具的材料特性等。经过上述处理,我们就可得到数控加工过程精确物理仿真所需的任竞刀具位置、姿态及刀具切削刃的几何信息。这些信息用以下的数据结构表示:
  typedef struct Random-data{
  float m-code;
  float f-code;
  float s-code;
  float g-code;
  struct tool-data{
  float center-x;
  float center-y;
  float center-z;
  int *tool-type;
  }tool-data;
  struct Random-data*prior;
  struct Random-data*next;
  }random-data;
  这里有一点值得注意:上述代码均为模态指令,即本字段产生后一直有效,直至再次遇到同样的字符指令,原来的指令值才会失效。在本文的研究当中,我们对数据结构采取由后向前的搜索策略,经初值判断后,可以得到各程序段的模态指令状态该方法在实施上是非常容易的。
  三、结论
  随着CIMS与虚拟制造的不断发展,作为制造单元的数控加工仿真系统已经发挥了越来越大的作用。为建立起一个能够反映真实加工过程的仿真系统,首先必须对数控加工代码进行准确无误的识别与分析,将其转化为仿真系统的驱动数据。本文在分析了数控代码特点的基础上,提出了方便计算机处理与分析的预处理控制方法。该方法已成功地应用在作者所开发的基于质量预测与分析的复杂曲面数控加工仿真系统中。
【MechNet】
文章关键词: 数控加工
页: [1]
查看完整版本: 数控加工仿真器加工代码的计算机识别

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

中国磨削网