资源描述:
《通用NC代码翻译技术.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、10卷5期系统仿真学报·1·*通用NC代码翻译技术清华大学国家CIMS工程技术中心,北京100084肖田元韩向利王新龙摘要在深入分析了NC代码特点的基础上,以“订做”方式实现通用NC代码翻译器。在编译理论和NC代码特点相结合的基础上,借鉴CAD/CAM中的模板技术,提出了通用NC代码翻译器的总体结构,并对翻译器的一些关键实现技术进行了讨论。关键词NC代码CAD/CAM虚拟制造GeneralNCCodeTranslationTechniquesXiaoTianyuanHanXiangliWangXinlongCIMSERC,TsinghuaUni
2、versity,Beijing100084AbstractOnthebasisofthoroughanalysisofNCcode'scharacteristics,AgeneralNCcodetransla-torisrealizedbythecustom-mademode.WepresentageneralstructureoftheNCcodetranslatoranddis-cusssomekeyrealizingtechniquesforNCcodetranslationbasedoncombiningcompilerandNCcod
3、etranslatingtheories,aidedbytemplatetechniquesinCAD/CAM.KeywordsNCcodeCAD/CAMVirtualmanufacturing引言自70年代以来,数控机床逐步取代传统的手动机床,以实现加工过程的自动化,机床在数控NC代码驱动下实现高精度自动加工,大大提高了加工的性能,然而,不正确的NC程序会造成过切、欠切或加工出废品,也可能发生零件与刀具、刀具与夹具,刀具与工作台之间的干涉碰撞,这显然是十分危险的,因此试切是必不可少的。传统的试切是采用塑模、蜡模或木模在机床上进行的。这不但浪费
4、人力物力,而且延缓了生产周期,增加了产品开发成本,降低了生产效率,阻碍了CIMS的实施。在我国,数控技术的应用表现出不同的层次差别,从完全的手工编程到完全采用计算机实现零件设计及工艺和加工NC代码的生成都有相当大的覆盖面。目前不少先进的CAD/CAPP/CAM系统都提供了一定的NC仿真功能,用于检查刀具切削过程的正确性,检查过切和干涉现象等,但直接通过NC代码来驱动仿真加工过程的方法及软件还很少。而在大量使用半手工数控编程的我国制造业,采用NC代码驱动仿真加工过程以检验NC代码的正确性是迫切需要的。NC代码翻译器用于指挥加工过程器的动作和状态,
5、机床的一切动作和状态都要受NC代码翻译器的控制。七十年代以来,随着数控图形编程和实体显示技术的迅速发展,对NC代码翻译器的需求也日益强*国家863/CIMS重大攻关项目“并行工程”子课题863-511-9504-002-033本文收稿日期:1998-06-08·2·系统仿真学报1998年10月烈。目前的NC代码翻译器为专用翻译器,即只适用于某一类数控系统。这方面的技术已经比较成熟。我国已有几家院校如华中理工大学、上海交通大学、哈尔滨工业大学等实现了某些数控系统的NC代码翻译器。目前应用情况良好。但是对于一个数控系统,其专用翻译器需要由专业人员来
6、开发,用户是无能为力的。这对于翻译器的维护和改进都是不利的,对于柔性制造系统来说也是很不方便的。通用是NC代码翻译器的发展方向,它使用户花费很少的工作量就能构造出一个某一数控系统的NC代码翻译器。目前,尚无文献表明有通用NC代码翻译器的实现。本文提出了一种通用NC代码翻译器的实现模式,并初步实现了它。1.通用NC代码翻译器总体结构NC代码翻译器的主要工作概括起来有两个:检错和翻译。检错,即按照该数控系统的编程规定和有关数控加工的常识,对NC代码进行词法分析、语法分析、语意分析,从而检查出该NC代码的词法错误、语法错误、逻辑错误(其中包括数据不合
7、理,加工状态不合理等)。经过检错阶段,若NC代码未被查出错误,则进入翻译阶段。翻译,即从NC代码中提取控制机床部件运动的有关命令动作和状态信息,将运动的数据按照位移和速度的变化划分成一系列时间片段,计算出各时间片段的机床各坐标的位移,从而驱动机床模型的运动,实现NC代码驱动的加工过程仿真。而通用NC代码翻译器(Generaltranslator,Universaltranslator),顾名思义,即适用于多种机床系统代码的翻译器,它当然要包含普通NC代码翻译器的检错与翻译两大功能。同时,它还必须解决通用性与特殊性的问题,即通用NC代码翻译器如何
8、能够正确翻译执行不同数控系统的代码。对于NC代码翻译器来说,我们应该有一个认识,它不可能也没必要实现某一数控系统代码中所有的功能。它有一个目标,就是为