- 1.27 MB
- 2022-04-22 13:42:40 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'基于c++的平面二轴数控运行仿真软件设计
湖南师范大学本科毕业论文开题报告书论文题目基于VC++的平面二轴数控运行仿真软件设计作者姓名周红亮所属院、专业、年级工学院机械制造工艺教育专业2007年级指导教师姓名、职称彭可副教授预计字数20000开题日期2011.03.12选题的目的及意义:数控机床在进行加工前,需要检查数控程序的正确性。传统的检验方法为试切法,这种方法耗时长、对机床设备损耗大、容易造成次品从而使得成本加高。开发数控仿真软件,对企业提高了工时效率,节省了投入成本,对编程人员预防了可能由工件与夹具或机床之间干涉引起的危险,对职校或技能培训部门的学生提供了一个良好的学习环境,有利于减轻在职教师的劳动强度,降低教学成本,提高教学效果,解决数控教学的安全、材料浪费等问题。主要内容:(1)根据数控车床特点,分析了数控车床加工仿真系统,提出了开发本系统的总体设计方案。(2)分析了数控系统常用的插补算法,选择极坐标插补做为本系统的插补算法,并编制出相应的插补程序。(3)研究了1506983NC程序词法和语法的特点,编制出NC程序的词法和语法编译模块。(4)研究了WINDOWS操作系统下多线程技术的原理,并利用多线程技术实现了数控车床加工仿真。(5)设计出数控车床仿真系统人机交互界面。(6)编制出数控车床仿真系统的帮助模块。研究方法:1.由搜集资料、查阅相关文献,掌握仿真软件设计的基本概念及方法。2.向指导老师请教,弄清设计中的难点。3.参照相关的资料,确定设计方案。4.学习标准C++编程的基本知识与开发过程,数控加工原理等知识。5.不断地与相关课题的同学进行讨论、交流、做实验。
完成期限和采取的主要措施:2010年3月1日~3月12日通过文献整理,编写论文开题报告;2010年3月13日~3月19日开题报告答辩;2010年3月20日~3月25日确定论文的整体方案;2010年3月26日~4月15日完成设计方案,设计说明书的初稿以及相关设计图稿;2010年4月16日~4月26日通过实例进行仿真检验;2010年4月27日~5月3日论文的整理和总结;2010年5月4日~5月15日准备毕业论文答辩。主要参考资料:[1]张根保.自动化制造系统.北京:机械工业出版,1999.5[2]葛研军等.数控加工关键技术及应用.北京:科学出版社,2005.[3]张铁军等.虚拟机床加工系统研究[J].制造技术与机床,1999.[4]王印芬.三维数控加工仿真的应用研究[D].北京航空航天大学硕士论文,2000.[5]姬舒平,刘卡林,马玉.NCVrification的研究现状及展望[J].组合机床与白动化加工技术,1997.指导教师意见:签名:年月日
开题报告会纪要时间地点与会人员姓名职务(职称)姓名职务(职称)姓名职务(职称)会议记录摘要:会议主持人签名:记录人签名:年 月日指导小组意见负责人签名:年月日学院意见负责人签名:年月日
湖南师范大学工学院指导教师指导毕业论文情况登记表论文(设计)题目基于VC++的平面二轴数控运行仿真软件设计学生姓名周红亮所属专业、年级机械制造与工艺教专业2007级指导教师姓名彭可职称副教授学历博士指导时间指导地点指导内容学生签名备注2011-3-5实验室解释论文主要研究方向2011-3-10实验室确定毕业设计主体流程,及设计方法2011-3-13实验室参考资料的查找,相关文献的搜索2011-3-18实验室VisualC-++编程的要点2011-3-25实验室仿真软件的界面设计2011-4-1实验室插补系统的设计与实现2011-4-8实验室NC代码的编译2011-4-12实验室图像的处理方法2011-4-22实验室仿真系统动画的实现2011-4-30实验室论文总结2011-5-3实验室论文的修改
二、湖南师范大学本科毕业论文评审表毕业设计题目基于VC++的平面二轴数控运行仿真软件设计作者姓名周红亮所属院、专业、年级工学院机械制造工艺教育专业2006级指导教师姓名、职称彭可、副教授字数30000字定稿日期2011.05.10中文摘要本论文以计算机仿真技术和计算机图形技术为基础,运用可视化和面向对象的编程技术,对数控车床加工仿真系统进行了研究,提出了基于visualC++.NET语言环境的模块化设计方案,开发出了一套数控车床加工仿真系统,来模拟数控车床加工。该仿真系统不但可以检验程序的正确性和合理性,避免由于机床的走刀错误而造成数控设备损坏的危险,而且大大降低了以往采用工艺试切方法带来的高消耗和高成本,缩短了新产品的开发周期。另外,仿真系统的开发也为今后进一步研究开发全软件型数控系统奠定了基础;加工过程仿真还具有辅助优化工艺安排、培训编程人员等实际应用前景。本论文主要内容有:(1)根据数控车床加工特点,分析了数控车床加工仿真系统,提出了开发本系统的总体设计方案。(2)分析了目前数控系统常用的插补算法,选择极坐标插补做为本系统的插补算法,并编制出相应的插补程序。(3)研究了WINDOWS操作系统下多线程技术的原理,并利用多线程技术实现了数控车床加工仿真。(4)设计出数控车床仿真系统人机交互界面。关键词(3-5个)数控车床;仿真;NC程序;visualC++.NET
英文摘要Thispaperbasedoncomputersimulationandcomputergraphicstechnology,usevisualizationandobject-orientedprogrammingtechniques,conductedastudyonsimulationsystemofNClathemachining,madebasedonvisualC++.ModulardesignofNETlanguageenvironment,developasetofNClathemachiningsimulationsystem,tosimulateNClathe.Simulationsystemnotonlycantheaccuracyandreasonablenessoftheinspectionprocedures,avoiderrorscausedbynumericalcontrolmachinetoolpassestheriskofdamagetotheequipment,butalsosignificantlyreducesprocesstestcuttingmethodsusedinthepastthehighconsumptionandhighercosts,reduceddevelopmentcyclesfornewproducts.Inaddition,thedevelopmentofsimulationsystemforfurtherresearchanddevelopmentinthefuturealsolaidtheFoundationforfullsoftwareCNCsystem;optimizationofmachiningprocesssimulationalsohasasecondaryprocessingarrangements,thetrainingofprogrammers,theactualapplication.Thisthesishasmainlyaccomplishedcontentsasfollows:(1)ByanalyzingthesimulationsystemofNClathe,proposesthegeneraldesignplanofthesimulationsystemofNClathebasedonthecharacteristicofNClathe.(2)Byanalyzingandcomparingtheprincipleofinterpolation,realizestheprogramofinterpolationmodule.(3)AnalyzingMulti-threadtechnologyindetail,realizesNClatheMachiningSimulationbasedonWindowsMulti-threadtechnology.(4)DesignsthefriendlyWindowsstyleinterfaceofNClatheMachiningSimulation.关键词(3-5个)NClathe;Simulation;NCprocedure;VisualC++.NET
毕业设计指导教师评定成绩评审基元评审要素评审内涵满分实评分选题质量30%目的明确符合要求选题符合专业培养目标,体现学科、专业特点和综合训练的基本要求10选题恰当题目规模适当5题目难易度适中5联系实际题目与生产、科研、实验室建设等实际相结合,具有一定的实际价值10能力水平35%综合运用知识能力能将所学专业知识和机能用与毕业设计中;设计内容有适当的深度、广度和难度5应用文献资料能力能独立查阅相关文献资料,能对本设计所涉及的有关研究状况及成果归纳、总结和恰当运用5实验(设计)能力能运用本学科常用的研究方法,选择合理可行的方案,能对实际问题进行分析,进行实验(设计),具有较强的动手能力5计算能力原始数据搜集得当;能进行本专业要求的计算,理论依据正确,数据处理方法和处理结果正确5外文应用能力能搜集、阅读、翻译、归纳、综述一定量的本专业外文资料与外文摘要,并能加以运用,体现一定的外语水平5计算机应用能力能根据设计题目要求编程上机或使用专业应用软件完成设计任务5分析能力能对设计项目进行技术经济分析或对实验结果进行综合分析5设计质量35%插图或图纸质量能用计算机绘图,且绘制图纸表格符合标准5说明书撰写水平设计说明书齐全;概念清楚,内容正确,条理分明,语言流畅,结构严谨;篇幅达到学校要求15规范化程度设计的格式、图纸、数据、用语、量和单位、各种资料引用和运用规范化,符合标准;设计栏目齐全合理5成果的实用性与科学性较好地完成设计选题的目的要求,成果富有一定的理论深度和实际运用价值5创见性具有创新意识,设计具有一定的创新性5正文部分成绩(上表):总成绩:评定等级:外文资料译文成绩:指导教师评审意见:指导教师签名:说明:此表指标部分为正文部分计分表,正文部分成绩=实评总分×0.9,外文资料译文成绩满分为10分。总成绩=正文部分成绩+外文资料译文成绩。评定成绩分为优秀、良好、中等、及格、不及格五个等级,总成绩90—100分记为优秀,80—89分记为良好,70—79分记为中等,60—69分记为及格,60分以下记为不及格。若译文成绩为零,则不计总成绩,评定等级记为不及格。
三、湖南师范大学本科毕业设计答辩记录表毕业设计题目基于VC++的平面二轴数控运行仿真软件设计作者姓名周红亮所属院、专业、年级工学院机械制造与工艺教育专业2007年级指导教师姓名、职称彭可副教授答辩会纪要时间地点答辩小组成员姓名职务(职称)姓名职务(职称)姓名职务(职称)答辩中提出的主要问题及回答的简要情况记录:会议主持人签名:记录人签名:年月日
答辩小组意见评语:评定等级:负责人(签名):年月日学院意见评语:毕业设计学院最终评定等级:负责人(签名):学院(公章)年月日学校意见评语:评定等级:负责人(签名):年月日
81
基于VC++的平面二轴数控运行仿真软件设计专业:机械制造工艺教育年级:2007级姓名:周红亮摘要本论文以计算机仿真技术和计算机图形技术为基础,运用可视化和面向对象的编程技术,对数控车床加工仿真系统进行了研究,提出了基于visualC++.NET语言环境的模块化设计方案,开发出了一套数控车床加工仿真系统,来模拟数控车床加工。该仿真系统不但可以检验程序的正确性和合理性,避免由于机床的走刀错误而造成数控设备损坏的危险,而且大大降低了以往采用工艺试切方法带来的高消耗和高成本,缩短了新产品的开发周期。另外,仿真系统的开发也为今后进一步研究开发全软件型数控系统奠定了基础;加工过程仿真还具有辅助优化工艺安排、培训编程人员等实际应用前景。本论文主要内容有:(1)根据数控车床加工特点,分析了数控车床加工仿真系统,提出了开发本系统的总体设计方案。(2)分析了目前数控系统常用的插补算法,选择极坐标插补做为本系统的插补算法,并编制出相应的插补程序。(3)研究了WINDOWS操作系统下多线程技术的原理,并利用多线程技术实现了数控车床加工仿真。(4)设计出数控车床仿真系统人机交互界面。关键词:数控车床;仿真;NC程序;visualC++.NET81
AbstractThispaperbasedoncomputersimulationandcomputergraphicstechnology,usevisualizationandobject-orientedprogrammingtechniques,conductedastudyonsimulationsystemofNClathemachining,madebasedonvisualC++.NET.ModulardesignofNETlanguageenvironment,developasetofNClathemachiningsimulationsystem,tosimulateNClathe.Simulationsystemnotonlycantheaccuracyandreasonablenessoftheinspectionprocedures,avoiderrorscausedbynumericalcontrolmachinetoolpassestheriskofdamagetotheequipment,butalsosignificantlyreducesprocesstestcuttingmethodsusedinthepastthehighconsumptionandhighercosts,reduceddevelopmentcyclesfornewproducts.Inaddition,thedevelopmentofsimulationsystemforfurtherresearchanddevelopmentinthefuturealsolaidtheFoundationforfullsoftwareCNCsystem;optimizationofmachiningprocesssimulationalsohasasecondaryprocessingarrangements,thetrainingofprogrammers,theactualapplication.Thisthesishasmainlyaccomplishedcontentsasfollows:(1)ByanalyzingthesimulationsystemofNClathe,81
proposesthegeneraldesignplanofthesimulationsystemofNClathebasedonthecharacteristicofNClathe.(1)Byanalyzingandcomparingtheprincipleofinterpolation,realizestheprogramofinterpolationmodule.(2)AnalyzingMulti-threadtechnologyindetail,realizesNClatheMachiningSimulationbasedonWindowsMulti-threadtechnology.(3)DesignsthefriendlyWindowsstyleinterfaceofNClatheMachiningSimulation.KeyWords:NClathe;Simulation;NCprocedure;VC++.NET81
第一章绪论1.1数控加工仿真技术的概述“仿真”一词源于英文术语simulation,早期也译为“模拟”。仿真就是通过对系统模型的81
验去研究一个存在或设计中的系统。这里的系统是指由相互联系和相互制约的各个部分组成的具有一定功能的整体。该技术是以控制论、系统论、相似原理和信息技术为基础,以计算机和专用设备为工具,用系统模型对实际的或设想的系统进行动态试验研究的一门多学科的综合性技术。其本质是对系统数学模型进行数值计算。根据仿真与实际系统配制的接近程度,将其分为计算机仿真、半物理仿真和全物理仿真。在计算机上对系统的计算机模型进行试验研究的仿真称为计算机仿真。用已研制出来的系统中的实际部件或子系统去代替部分计算机模型所构成的仿真称为半物理仿真。采用与实际系统相同或等效的部件或子系统来实现对系统的试验研究,称为全物理仿真。一般说来,计算机仿真较之半物理、全物理仿真在时间、费用和方便性等方面都具有明显优点。而半物理仿真、全物理仿真具有较高的可信度,但费用昂贵且准备时间长。数控仿真是利用仿真技术来模拟实际的机械加工过程,是验证数控加工程序的可靠性和预测切削过程的有力工具。数控仿真是在随着高速计算机和可视化技术的发展而发展起来的,其主要目的就是对数控加工代码进行验证,模拟刀具、工件几何体、加工环境及刀具路径和材料去除的过程,消除因程序误差而导致的机床刀具、夹具损坏及零件报废等。如果采用仿真加工来替代或减少实际的试切工作,特别是,如果能将仿真系统嵌入到实际的数控系统中,使其成为实际加工的支撑环境,那么对于制造业的发展将起到极大的推动作用。1.2国内外研究现状及存在的问题1.2.1国外的研究现状数控加工仿真一直是国外CAD/CAM技术的一个研究热点,Kawabe等人最早利用刀具轨迹,采用边界表示法来获取刀具加工零件的框架图,因为该方法简单,容易实现,所以被早期大多数的CAD/CAM系统所采用。但是,因为工作形状越来越复杂,刀具轨迹包含的信息量也越来越多,导致图形形状混乱不清,于是仿真研究开始向三维实体仿真算法方向发展,如:AndErson研究了三维碰撞检验算法,chappel给出了利用向量来分析切削过程的算法,Sungurtkin等提出了特定造型设备上的数控仿真系统,K.K.waNg研究了基于布尔运算的Nc检验系统,J.H.oliver提出了直接尺寸检验方法等。由于加工仿真具有诱人的应用前景,促使发达国家对其进行深入研究,并已出现许多成功的应用范例。在美国已形成了由政府、产业界、大学组成的多层次、多方位的综合研究开发力量。主要的研究机构有:(l)美国国家标准及技术局(NIST)制造工程实验室作为AMT计划的一部分,美国NlST开展了虚拟机床的研究。该实验室专门设有制造系统集成部(ManufacturingsystemsIntegration81
Division,MSID)。该部由多个不同研究小组组成,分别负责研究和开发实现计算机辅助集成制造系统所需要的各种标准和技术。它在这一领域的研究中比较著名的是提供了开放式虚拟现实测试床(OVRT)和国家先进制造测试床(NAMT)(2)美国Maryland大学系统研究学院CIM实验室该实验室主要以CIM领域的最新技术为研究主题,范围覆盖工厂层和车间层问题。研究重点则是在复杂制造系统的建模工具开发和应用及用于产品开发全过程的并行工程工具的开发和应用。他们开发了用于培训数控操作人员的虚拟数控机床仿真器。(3)美国伊利诺斯大学芝加哥分校机械系工业虚拟现实研究所该研究所主要从事工业与制造应用相关的,尤其是与制造设计、工艺处理等相关的虚拟现实技术研究。主要项目有:工厂及工艺过程模型、远程工程和数控仿真。加拿大WATERLOO大学的机械工程系和集成制造系统管理研究中心也有部分与数控仿真相关的研究项目。在欧洲英国Bath大学机械工程系用openlnventor2.0软件工具开发出了基于自己的Svlis几何造型工具的仿真系统。此外,英国Leeds大学计算机研究学院、Loughborough大学、HerriotWatt大学机械与化学工程系也进行着数控仿真的研究。意大利Bologna大学用B样条曲面建立端铣刀与工作台模型,采用真实感图形显示铣床精加工过程。1.2.2国内的研究现状81
近几年来,数控仿真也引起我国科技工作者的关注,目前全国己有许多家科研机构、高等院校和企业正在开展这方面的研究。国家863/cIMs主题组、国家自然科学基金也有专门的研究课题。华中理工大学开发的NCPVSS系统,具有数控铣削加工过程仿真功能,即通过生成刀具轨迹,由三维动画显示数控加工过程,以此发现数控程序错误。同济大学研制的数控程序微机动画仿真系统,以二维图形方式动态模拟加工过程,能满足生产现场实时性要求。哈尔滨工业大学的NCMPS系统,可建立集成的数控加工仿真环境,面向多轴数控加工中心,在图形工作站上实时显示三维多轴数控加工过程。清华大学CIMS工程研究中心开发的“通用加工过程仿真器”已在多家企业得到应用。天津大学的多功能数控机床仿真操作软件系统,可以在WINDOWS平台下虚拟各种数控机床系统进行操作、编程、训练,具有国际150标准G代码编程、加工过程图形仿真显示、编程仿真检错等功能。北京航空航天大学国家863/CIMS设计自动化工程实验室研究的金银花系列产品,以制造业最新国际标准150一10303(STEP)为系统设计的依据;采用面向对象的技术,使用了先进的实体建模、参数化特征造型、二维与三维一体化、SDAI标准数据存取接口等技术。镇江船舶学院研制的数控铣削加工仿真系统可显示零件三向投影和立体图,但毛坯和刀具是由离散点表示,模拟精度受离散点数目影响。合肥工业大学进行了数控车削自动编程的仿真模型,可以动态显示刀具运动轨迹,显示毛坯和零件的实体形状和属性,如冷却液状态,机床参数,切削参数,刀具当前坐标等。大连理工大学开发了数控曲面加工微机仿真器,主要针对曲面加工,如齿轮、凸轮、多边形面等较复杂的切削加工过程。它应用于微机,可进行各种曲面加工过程的模拟并采用数值分析的方法进行加工误差分析。能够对不同的工艺参数进行修改,从而提高加工精度。具有可透视动态仿真和剖视加工体的功能,可自动进行误差分析,给出误差分析图谱。1.2.3发展趋势及存在的问题81
数控仿真技术的研究目前主要集中在三个方面:几何仿真、物理仿真和加工过程仿真。(1)几何仿真切削加工几何仿真也称为数控加工程序验证,即以理想几何图形来检验数控代码是否正确,此时刀具和零件均被视为刚体,不考虑切削参数、切削力及其他因素对切削加工的影响。几何仿真可以减少或消除因程序错误而导致的机床损坏、夹具或刀具干涉碰撞和零件报废等问题,可减少从产品设计到制造的时间,降低生产成本。国内外现存的几何仿真方法主要有两种:精确仿真法和近似仿真法。l)精确仿真法精确仿真法即每次切削时,通过对毛坯和刀具进行布尔减运算而得到的切削后的实体形状,从而实现加工仿真的一种方法。该方法用解析法表示实体,此时的工件模型是数学而非像素模型,并应用支持正则布尔集合运算的构造实体几何法(CSG)和边界表示法(BRep)来实现实体造型。这些造型方法,从理论上讲,能够精确地描述数控加工过程,但由于五轴刀具扫描体和毛坯布尔集合运算的复杂性,使其应用仍旧受到一些限制,加之刀具每切削一次,都需要创建一个新的实体模型,可想而知,其计算量是非常庞大的。对于一个复杂的NC程序而言,应用此法进行仿真需要大量的时间和内存空间,不适合实际仿真需要。2)近似仿真法81
近似仿真法是利用扩展Z缓冲(Z一Buffer)数据结构来完成实时数控加工仿真的。其基本思想是将工件像素化,在仿真过程中先找到刀具运动时的像素点,然后对每个像素点做布尔运算。由于把三维空间的布尔运算简化到一维空间来完成,所以大大减少了计算量。由于该方法没有任何几何运算,且直接访问内存,因此解决了精确仿真法计算量大的弊端,并可产生实时显示效果,适合在微机上实现数控加工过程的实时仿真,并可显示过切、刀具补偿错误等。但其结果依赖于视觉的选择,假如视线改变的话,整个过程必须重新仿真。(2)物理仿真切削加工的物理仿真是将整个工艺系统视为弹塑性实体,对被控对象的一个或多个物理特性及其变化特征进行模拟。由于物理仿真直接影响切削加工的经济性,因此日益受到大学、企业及科研单位研究人员的关注。1995年由美国国家自然科学基金(NSF)重点资助,由伊利诺伊大学牵头,联美国国家自然科学基金(NSF)重点资助,由伊利诺伊大学牵头,联合普渡大学、西北大学对金属切削加工进行工艺建模,进而开展物理仿真的研究工作。由于物理仿真牵连面广,几乎涉及工艺系统的每一个环节,要完整描述切削加工中整个工艺系统的物理性质是非常困难的。目前大多从某一方面对其物理性质进行研究,大致包括预测切削力、预测己加工表面质量、预测刀具切削性能、预测切削的大小及形状和预测工艺系统热变形对加工精度的影响。(3)加工过程仿真81
切削加工过程仿真是将几何形状与物理性质的变化集成在一起,对加工过程进行较为真实模拟的一种仿真形式。为了能充分反映切削加工的实质,在加工过程仿真中仿真模型的建立至关重要。现存的切削加工仿真模型主要有解析模型、有限元模型和分子动力学模型。1.3本论文研究的内容和意义1.3.1研究的目的和内容通过对上面数控加工仿真的分析,考虑到加工过程仿真、物理仿真与几何仿真之间的难度差距,以及本系统所完成的任务,本论文采用了几何仿真作为本系统的研究重点。论文研究的目的:本论文是在导师彭可教授的指导下,研究了数控车床加工仿真系统的相关理论和关键技术,研制出数控车床加工几何仿真系统软件,并通过实例验证了系统的正确性。论文研究的主要内容有:(1)根据数控车床特点,分析了数控车床加工仿真系统,提出了开发本系统的总体设计方案。(2)分析了目前数控系统常用的插补算法,选择极坐标插补做为本系统的插补算法,并编制出相应的插补程序。(3)研究了1506983NC程序词法和语法的特点,编制出NC程序的词法和语法编译模块。(4)研究了WINDOWS操作系统下多线程技术的原理,并利用多线程技术实现了数控车床加工仿真。(5)设计出数控车床仿真系统人机交互界面。81
(6)编制出数控车床仿真系统的帮助模块。1.3.2研究的意义论文主要研究了当前数控系统中常用的插补算法,及如何在VISualC++.NET平台上实现数控车床的加工过程,详细分析了数控车床加工仿真的实现方法和NC程序检验的理论和方法。利用计算机图形技术对已编制的数控程序进行加工过程模拟演示,不但可以检验程序的正确性和合理性,避免由于机床的走刀错误而造成数控设备损坏的危险,而且大大降低了以往采用工艺试切方法带来的高消耗和高成本,缩短了新产品的开发周期。另外,仿真系统的开发也为今后进一步研究开发全软件型数控系统奠定了基础;加工过程仿真还具有辅助优化工艺安排、培训编程人员等实际应用前景。81
第二章数控车床仿真系统总体方案设计2.1数控车床简介数控车床是用计算机数字控制的车床。和普通车床相比,数控车床是将编制好的加工程序输入到数控系统中,由数控系统通过车床X、Z坐标轴的伺服电动机去控制车床进给运动部件的动作顺序、移动量和进给速度,再配以主轴的转速和转向,便能加工出各种形状不同的轴类和盘类回转体零件191。目前,数控车床是使用最为广泛的一种数控机床。2.1.1数控车床的组成数控车床一般由以下几个部分组成。(l)主机它是数控车床的机械部件,包括床身、主轴箱、刀架尾座、进给机构等。(2)数控装置它是数控车床的控制核心,其主体是有数控系统运行的一台计算机(包括CPU、存储器、CRT等)。(3)伺服驱动系统它是数控车床切削工作的动力部分,主要实现主运动和进给运动,由伺服驱动电路和伺服驱动装置组成。伺服驱动装置主要有主轴电动机和进给伺服驱动装置(步进电机或交、直流伺服电动机等。(4)辅助装置辅助装置是指数控车床的一些配套部件,包括液压、气压装置及冷却系统、润滑系统和排屑装置等。2.1.2数控车床的工作原理数控车床的工作原理:根据工件图样的工艺要求,将车床各运动部81
件的移动量、速度,动作先后顺序,主轴转速、转向及冷却等要求,以规定的数控代码形式编制程序单,并输入到机床专用计算机中。然后数控系统根据输入的指令,机床专用计算机进行编译、运算和逻辑处理后,输出各种信号和指令,控制车床各个部分进行规定的位移和动作。2.2仿真系统结构的总体方案设计2.2.1系统总体方案设计的原则为了缩短零件从设计到加工的开发周期,提高加工质量,减少制造费用,目前国内外都在采用图形仿真作为支撑工具。但是鉴于我国目前的实际水平,我们在设计仿真软件时要遵循的原则是:(1)实用性是仿真软件拥有一定实用前景。(2)先进性即设计的系统在主要技术上应具有一定的先进性。(3)可靠性即系统能够准确地模拟数控加工过程,仿真结果可靠。本系统能够根据输入的标准数控代码,计算出刀位轨迹,利用二维图形可靠地反映出实际加工过程。(4)可移植性为了使研究成果进一步推广应用,便于和其它软件集成,仿真软件采用标准的编程语言和图形软件进行编程实现,尽量减少对硬件的依赖性。(5)集成性使本系统能够作为一个模块与其它类似软件相结合,形成内容更加丰富的数控仿真软件。81
2.2.2系统的结构设计对于系统软件的设计,通常分为结构设计和过程设计两个阶段。结构设计的一条基本原理就是程序应该模块化,因此结构设计的主要任务是确定系统程序由哪些模块构成,以及这些模块之间的关系。而过程设计是确定每个模块的处理过程。结构设计是总体设计阶段的任务,过程,设计是详细设计的任务。这里我们只讨论系统的结构设计,过程设计将在以后的章节中做详细的讨论。根据系统的总体设计原则,对本数控仿真系统进行了结构设计。其总体结构如图2.1所示。系统总控制模块加工环境文件管理加工检验加工过程系统帮助机床模块工件模块刀具模块夹具模块代码编辑代码翻译代码检查动画仿真图2.1系统总体结构图由图可知,该系统主要由加工环境和加工过程这两大模块组成。下面就各模块的功能进行介绍。(1)文件管理模块:对系统中的文件进行管理,如数控代码文件、几何模型文件、刀位文件等。(2)加工环境模块:81
由机床、工件、刀具、夹具构成,通过人机交互得到加工条件和切削参数等信息,并生成和显示虚拟加工环境。(3)加工过程模块:是整个系统的核心模块,对输入的代码进行编译、检查,并生成刀具的位置数据,以此来驱动加工过程的进行。(4)动画仿真模块:是通过对加工环境和加工过程两个模块的综合,得到实际加工过程的动画显示。(5)加工检验模块:通过动画的仿真显示,以检验仿真结果的正确性。6)帮助模块:对系统的使用、常用术语、编写NC代码的规则提供详细的解释。2.2.3仿真系统人机界面的结构设计数控车床仿真环境程序控制加工仿真界面数控车床操作仿真界面帮助界面图2.2系统界面结构本仿真系统的界面由数控车床操作仿真界面、程序控制加工仿真界面和帮助界面组成。如图2.2所示。这三个界面的功能实现,并非单纯的调用某一个模块,它们依据任务请求将与上述几个模块产生联系。如数控车床操作仿真界面既要以数控车床、工件、刀具等作为仿真实体,又要加工仿真模块实现动画,还需要越程检查模块进行检测。而在程序加工仿真中,除了同样要调用这几个功能模块之外,还需要数控程序处理模块实现数控代码的数据处理。帮助界面主要针对初次接触本系统的人员,方便他们查阅和学习本系统相关资料。81
2.3仿真系统实现的关键技术2.3.1面向对象的技术简介81
所谓对象是指具有一定结构、属性和功能的实体,采用对象和对象类,以及对象之间的相互通信的消息,描述客观世界中的各种事物及其相互关系,建立面向对象和消息的具有层次结构的世界模型。面向对象的程序设计是通过为数据和代码建立分块的内存区域来提供对程序进行模块化的一种程序设计方法,这些模块可以被用作模板在需要时建立其拷贝。根据这个定义,对象是计算机内存中的一块区域。通过将内存分块,每个模块即对象在功能上相互之间保持独立。另外,定义也表明,这些内存块状中不但存储数据,而且也存储代码,这对保证对象是受保护的这一点很重要,只有局部对象中的代码才可以访问存储在这个对象中的数据。这清楚地限定了对象类具有的功能(即一个对象在一个软件系统中所起的作用),并使对象保护它自己不受未知的外部对它的文件的影响,而使其它的数据和功能遭到破坏。定义还表明,这些内存块中的结构可被用作样板产生对象的更多拷贝。在面向对象的程序中,对象之间只能通过函数调用相互通信。一个对象可以调用另一个对象中的函数,这样,对象之间的相互作用方式是消息控制的,外部对一个对象的代码就没有机会通过直接修改对象的内存区域妨碍对象功能。当对象的一个函数被调用时,对象执行其内部的代码来响应这个调用,这使对象出现一定的行为。行为及其结果就是该对象的功能。对象的这一特点导致了模拟世界的一种新型方法:面向对象就是将世界看成是一组彼此相关并能相互间通信的实体即对象组成的。程序中的对象影射世界中的对象。对象的另一个特点是继承,继承是一个对象可以获得另一个对象的机制,它支持层次分类这一概念。通过继承,低层的类只需定义特定于它的特征,而共享高层的类中的特征。2.3.2面向对象的设计方法面向对象技术的派生关系使我们可以直接从己有的类中获得大量现成的数据成员和属性,而它的多态属性又可以让我们在派生类实体中定义不同于基本实体的属性。用面向对象的方法分析、实现数控车床仿真,其核心和基本内容是抽象对象类,并建立对象类之间的关联。对象类的划分是否合理,对象类间联系是否恰当,一方面影响系统功能,另一方面也直接关系到系统实现起来的难易程度。对象类的设计是一个对客观世界抽象和提炼的过程。在面向对象的设计方法中,对象、类和消息是非常重要的概念。对象和传递消息分别是表现事物及事物间相互联系的概念,类和继承是适应人们一般思维方式的描述。方法是允许作用于该类对象上的各种操作。这种对象、类、消息和方法的程序设计方式的基本点在于对象的继承性和封装性。通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,再辅之以向各对象设计所提供的重载特性以及由此带来的实体多态性,从而构成了面向对象的基本特征。2.3.3面向对象类的建立81
类是对属性和方法的封装,通过封装代码,可以隐藏程序内部实现细节,通过访问属性方法来控制对象。这样做能够使开发人员从程序的复杂逻辑中跳出来,而专注于软件的整体功能设计。由于代码的封装,在改错时可以方便地修改一处代码,便能达到修改所有调用该方法处的代码。所以在开发系统的过程中,将各个功能模块分别建立成具体的类是十分必要的,如毛坯类、刀具类、用于显示的图形视图类、文件管理类等。2.4仿真系统的开发平台C语言是近年来国内外得到迅速推广和使用的一种现代语言。它语言功能丰富、表达能力强,使用灵活方便、应用面广、目标程序效率高、可移植性好,既有高级语言的优点,有具有低级语言的许多特点,因此特别适合于编写系统软件。而随着面向对象技术的发展,越来越多的语言也可视化了。VC++是C的可视化语言,它包括了综合的微软基本类库,这使得开发Windows应用程序变得简单而高效。2.4.2VisualC++编程的要点VisualC++(以下简称VC)是一个功能强大的集成开发环境,其编程的主要的几个方面有:(1)MFC类库MFC是MicrosoftFoundationClassLibrary,它是VC的重要组成部分,编程过程中可直接使用MFC中的类定义对象或在其基础上派生新类。(2)AppWizardAppWizard是VC集成开发环境下的一个工具,实质上是一个高级的代码生成器,按照用户在其对话框中的设置创建Windows应用的基本应用框架,该框架包括一些C++语言的头文件、源文件和资源文件,编译生成的可执行文件具有窗口系统的基本功能。对于不同层次应用的需求,只需在该框架的基础上进行修改。(3)ClassWizardClassW81
izard是VC中对类进行管理的工具,它创建的应用程序框架实际上由应用程序类、窗体类、文档类、视图类(从MFC派生)以及这些类定义的对象组成。利用ClassWizard可以对这些类进行管理,例如增加或删除成员变量和成员函数,定义对键盘、鼠标和菜单响应的消息处理函数,重载MFC虚函数等。(4)文档和视图结构典型的VC应用是文档和视图结构,每个窗口都可以看作由窗体、文档和视图组成,它们分别对应窗体类、文档类和视图类。在AppWizard创建的基本应用框架中,窗体类对象管理窗口的边框、标题和菜单,文档类对象负责窗口中内容的存取,视图类对象负责窗口中内容的显示。(5)消息响应机制消息是人机交互的纽带,所有的键盘、鼠标、菜单事件都通过消息传递到应用程序中,然后再进行处理。窗体、文档和视图对象之间的联系也是通过消息的发送和响应来完成的。此外,窗口的创建和销毁过程中都有大量的消息生成。VC中,对消息的响应是由消息处理函数来完成,通过ClassWizard可以方便地添加对某一消息的消息处理函数。鉴于本论文开发的数控车床加工仿真系统各模块的功能要求,以及VC编程的特点,为了确保仿真图形达到更加逼真的效果,选择了以VisualC十十.NET为本系统的开发平台。81
第三章插补系统的设计与实现3.1概述在机床的实际加工中,被加工工件的轮廓形状千差万别,各式各样。严格说来,为了满足几何尺寸精度的要求,刀具中心轨迹应该准确地依照工件的轮廓形状来生成。然而,在CNC或MNC中,以软件(程序)完成插补或软、硬件结合实现插补,而在NC中有一个专门完成脉冲分配计算(即插补计算)的计算装置一一插补器。无论是软件数控还是硬件数控,其插补的运算原理基本相同,其作用都是根据给定的信息进行数字计算,在计算过程中不断向各个坐标发出相互协调的进给脉冲,使被控机械部件按指定的路线移动。随着相关学科特别是计算机领域的迅速发展,插补算法也在不断地进行自我完善和更新;目前为止已涌现出了大量的插补算法,现将其归纳为两大类。3.1.1脉冲增量插补算法脉冲增量插补算法就是通过向各个运动轴分配脉冲,控制机床坐标轴作相互协调的运动,从而加工出一定形状零件轮廓的算法。显然,这类插补算法的输出是脉冲形式,并且每次仅产生一个单位的行程增量,故称之为脉冲增量插补。而每个单位脉冲对应坐标轴的位移量大小,称之为脉冲当量,一般用咨或BLU表示。脉冲当量是脉冲分配的基本单位,也是对应于内部数据处理的一个二进制位,它决定了数控机床的加精度,对于普通数控机床一般取占=0.0lmm,对于较为精密的数控机床一般取占=0.005mm、0.0025mm或0.00lmm等。81
一般来讲,脉冲增量插补算法较适合于中等精度(如0.01mm)和中等速度(如1~3m/min)的机床CNC系统中。由于脉冲增量插补误差不大于一个脉冲当量,并且其输出的脉冲速率主要受插补程序所用时间的限制,所以,CNC系统精度与切削速度之间是相互影响的。譬如实现某脉冲增量插补算法大约需要40户:的处理时间,当系统脉冲当量为0.00lmm时,则可求得单个运动坐标轴的极限速度约为1sm/min。进一步当要求控制两个或两个以上坐标轴时,所获得的轮廓速度还将进一步降低。反之,如果将系统单轴极限速度提高到15m/m如,则要求将脉冲当量增大到0.01mm。可见,CNC系统中这种制约关系就限制了其精度和速度的提高。3·1.2数据采样插补算法随着数控系统中计算机的引入,大大缓解了插补运算时间和计算复杂性之间的矛盾,特别是高性能直流伺服系统和交流伺服系统的研制成功,为提高现代数控系统的综合性能创造了充分条件。相应地,这些现代数控系统中采用的插补方法,就不再是最初硬件数控系统中所使用的脉冲增量法,而是结合了计算机采样思想的数据采样法。数据采样法实质上就是使用一系列首尾相连的微小直线段来逼近给定曲线。由于这些线段是按加工时间来进行分割的,所以,也称之为“时间分割法”。一般来讲,分割后得到的这些小线段相对于系统精度来讲仍是比较大的。为此,必须进一步进行数据点的密化工作。所以,也称微小直线段的分割过程是粗插补,而后须进一步的密化过程是精插补。通过两者的紧密配合即可实现高性能轮廓插补。81
插补周期界是相邻两个微小直线段之间的插补时间间隔。位置控制周期乓是数控系统中伺服位置环的采样控制周期。对于给定的某个数控系统而言,插补周期和位置控制周期是两个固定不变的时间参数。通常Ts≥TC,并且为了便于系统内部控制软件的处理,当Ts与乓不相等时,则一般要求Ts是TC的整数倍。这是由于插补运算较复杂,处理时间较长;而位置环数字控制算法较简单,处理时间较短,所以,每次插补运算的结果可供位置环多次使用。现假设程编进给速度为F,插补周期为界,则可求得插补分割后的微小直线段长度为ΔL(暂不考虑单位):ΔL=FTS(3-1)插补周期对系统稳定性没有影响,但对被加工轮廓的轨迹精度有影响;而控制周期对系统稳定性和轮廓误差均有影响。因此,选择Ts时主要从插补精度方面考虑,而选择TC时则从伺服系统的稳定性和动态跟踪误差。一般情况下,插补周期Ts越长,插补计算误差也将越大,因此,单从减小插补计算误差角度考虑,插补周期Ts应尽量选得小一些。但另一方面,界也不能太短,由于CNC系统在进行轮廓插补控制时,其CNC装置中CPU不仅要完成插补运算,还必须处理一些其它任务,例如位置误差计算、显示、监控、I/O处理等,因此,TS不单是指CPU完成插补运算所需的时间,而且还必须留出一部分时间用于执行其它相关的CNC任务。鉴于此,要求插补周期Ts必须大于插补运算时间和完成其它相关任务所需时间之和。据有关资料介绍,CNC系统数据采样法插补周期不得大于20ms,使用较多的大都在10ms左右。例如美国AB公司的7360CNC系统中Ts=10.24ms;德国SIEMENS公司的System一7CNC系统中Ts=8ms。但随着CPU处理速度的提高,为了获得更高的插补精度,插补周期也会越来越小。81
CNC系统位置控制周期的选择有两种形式:一种是TC=Ts,如7360系统中TC=TS=10.24ms;另一种是Ts为TC的整数倍,如system一7CNC系统中Ts=8ms,TC=4ms,即插补周期是位置控制周期的2倍,这时插补程序每8ms调用一次,计算出每个周期内各坐标轴应进给的增量长度,而对于4ms的位置控制周期来讲,每次仅将插补出的增量的一半作为该位置控制周期的位置给定,也就是说,每周期插补出的坐标增量均分两次送给伺服系统执行。这样,在不改变计算机速度的前提下,提高了位置环的采样频率,使进给速度得到了平滑,提高了系统的动态性能。总之,一般来讲,位置控制周期界大多在4~20ms范围内选择。3.2插补算法的原理由前面的介绍,知道了脉冲增量插补都有一个共同的特点,就是插补计算的结果是以一个一个脉冲的方式输出给伺服系统,或者说产生的是单个的行程增量,因而统称为脉冲增量插补法或基准脉冲插补法,该方法适合于以步进电机为伺服元件的数控系统。本数控仿真系统所采用的插补算法是基于数据采样插补法。对于数据采样插补,在每一插补周期中,计算出坐标轴在下一个周期应该行进的增长段,计算出相应的动点命令位置坐标值,因此,此类算法的核心问题是如何计算各坐标轴的增长数。对于直线插补来讲,插补所形成的步长小线段与给定的直线重合,不会造成轨迹误差。而在圆弧插补中,用切线近似圆弧具有较大的轮廓误差而不大采用,常用的是弦长逼近法,本系统所用插补算法就是基于数据采样插补法的极坐标插补算法,下面就该算法的原理做详细地介绍。81
3.2.1直线插补原理如图3.1所示,现假设刀具在坐标系内加工直线轮廓只尺,起点为图3.1直线插补示意图PS(xs,ys,zs),终点为PE(xe,ye,ze),程编进给速度为F,插补周期为界。直线插补时,首先根据插补的起点和终点坐标计算出直线的长度L:(3-2)并由式(3一l)求得一个插补周期内进给直线长度为:(3-3)计算出本次直线插补所需要的步数n为:(3-4)n将作为插补结束的判别条件。直线的终点坐标可以用起点坐标表示为:(3-5)式中α、β、γ分别为直线与x轴、y轴、z轴之间的夹角,如图3.1所示。所以81
(3-6)在插补过程中,第i次插补后从起点向终点方向前进了i×ΔL长度,x、y、z坐标轴上分别前进了i×ΔL×cosα、i×ΔL×cosβ、i×ΔL×cosγ,因此所得的坐标为:(3-7)式中:i为正整数,且i≤n。由上面分析可以看出,采用数据采样法进行直线插补时,算法相当简单,且插补轨迹与给定的直线重合,不会造成轨迹误差。3.2.2圆弧插补原理数据采样法圆弧插补的基本思路是在满足加工精度的前提下,用弦线或割线来代替弧线进给,即利用圆弧上相邻两个采样点之间的弦线来逼近相应圆弧的办法。在这里将坐标轴分为长轴和短轴,并定义位置增量值大的轴为长轴,而位置增量值小的轴为短轴。下面以例子介绍本系统所采用的圆弧插补算法。如图3.2所示,以xy平面第一象限的一段顺圆圆弧为例说明圆弧的加工轨迹。设要加工的某段轮廓线为圆弧AB,半径为R,在顺圆弧上的B点是继A点之后的插补瞬时点,两点的坐标分别为A(xi,yi),B(xi+1,yi+1)。81
则由图可知当刀具从A点进给到B点时,对应x轴和y轴的坐标进给量|Δxi|和|Δyi|,由于A、B两点均为圆弧上的点,故它们均应满足圆的方程,即(xi-xc)2+(yi-yc)2=(xi+1-xc)2+(yi+1-yc)2=R2(3-8)式中xi+1=xi+Δxi,yi+1=yi+Δyi,其中Δxi、<Δyi均采用带符号数进行运算,且这里Δxi>0,Δyi<0对于图3.2所示情况,由于|yi|>|xi|,故取X轴为长轴,这时先求Δxi。根据图中几何关系可得|Δxi|=ΔLcosβ(3-9)由于有(3-10)所以有(3-11)根据图中几何关系可得(3-12)式3-12中,它是弦对圆弧AB的逼近误差,由插补原理知当插补进给量相对于圆弧的半径足够小时,这时求式3-12中。可舍去即81
(3-13)81
由于式3一13中Δyi是未知数,因此采用一种近似计算方法来获得,由于圆弧插补过程中,两个相邻插补点之间的位置增量值相差很小,尤其对于短轴(y轴)而言,|Δyi-1|与|Δyi|相差就更小了,这样就可以使用|Δyi-1|近似代替|Δyi|因此而引起的轮廓误差是完全可以忽略不计的,由此可将式图3.2圆弧插补原理图3-13改写成(3-14)所以(3-15)由式3-8可求得(3-16)通常,很小,那么对于递推算式3-15、式3-16而言,和的初值可近似认为(3-17)式中(xs,ys)为圆弧起点坐标通过上述推导过程可以看出,其近似处理过程只对角度a合△a有微小的影响,由于式3~81
8的约束条件保证了任何插补点均处于圆弧上,而其中的主要误差是由于用弦代替弧进给而造成的弦线误差。类似地,当时,应取y轴作为长轴,这时应先求,同理可推得(3-18)3.3插补算法的误差分析在数据采样法直线插补过程中,由于给定轮廓本身就是直线,那么插补分割后的小直线段与给定直线是重合的,也就不存在插补误差问题。但在圆弧插补过程中,一般采用切线、内接弦线和内外均差弦线来逼近圆弧,显然,这些微小直线段不可能完全与圆弧相重合,从而造成了轮廓插补误差。下面就本论文所用的插补算法所引起的误差加以分析。由上面图3.2分析,其最大径向误差er为(3-19)式中R——被插补圆弧半径;——步距角,每个插补周期所走弦线对应的圆心角,且(3-20)反过来,在给定所允许最大径向误差er后,也可求出最大的步距角为(3-21)由于很小,现将(cos/2)按幂级数展开,有81
(3-22)先去其中的前两项,代入式3-19中,得(3-23)可见,在圆弧插补过程中,插补误差er与被插补圆弧半径R,插补周期Ts以及程编进给速度F有关。若Ts越长,或F越大,或R越小,则插补误差就越大。但对于给定的某段圆弧轮廓来讲,在可能的情况下,如果将Ts选得尽量小,则可获得尽可能高的进给速度F,提高了加工效率。同样,在其它条件相同的情况下,大曲率半径的轮廓曲线可获得较高的允许切削速度。3.4软件插补在加工仿真中的实现3.4.1插补流程的设计3.4.1.1直线插补流程设计NY保存数据指针开始n=o?结束计算线段长度计算插补次数n计算下一插补点坐标进给恢复数据指针图3.3极坐标直线插补流程图通过前面的分析可以看出,利用数据采样法来插补直线时,算法是比较简单的,它在CNC装置中分为两个步骤来完成,第一步是插补准备,完成一些常量的计算工作,例如L、cosα、cosβ、cosγ81
的计算,一般对于每个零件轮廓段仅执行一次;第二步是插补计算,每个插补周期均执行一次,主要完成该周期对应坐标增量值(Δxi,Δyi)及动点坐标值(xi,yi)的计算工作。根据以上的步骤可以制作出直线插补的软件流程图,软件流程图如图3.3所示。在这里还要说明的是,第一,数据采样法插补过程中所使用的起点坐标、终点坐标及插补所得到的动点坐标都是带有符号的代数值,而不是象脉冲增量插补算法那样使用绝对值参与插补运算。并且,这些坐标值也不一定转换成以脉冲当量为单位的整数值,也就是说,数据采样法中涉及到的坐标值是带有正、负符号的真实坐标值。第二,求取坐标增量值和动点坐标的算法并非唯一,例如也可利用轮廓直线所围成几何图形间的相似关系比来求得。3.4.1.2圆弧插补流程设计通过在3.2.2.2中对圆弧插补的分析,现将本仿真系统所需的插补公式汇总如下:当时(3-24)当时(3-25)动点坐标为(3-26)对于式3-24和式3-25中“±”号的选取与圆弧所在象限和区域有关。根据长轴和短轴的定义条件可用两条直线y=x和y=-x将xoy平面的四个象限划分成如图3.4所示的四个区域I区、Ⅱ区、Ⅲ区和Ⅳ区。显然,式3-24适用于I区和Ⅲ区,式3-25适用于Ⅱ区和Ⅳ81
区。进一步对于I区而言,由于Y≥0。因此,即其中对于图3.4中,圆心坐标。所以有对于Ⅲ区而言,由于Y≤0,故,即图3.4区域划分所以有同理,对于Ⅱ区而言,根据X≥0,可推得对于Ⅳ区而言,根据X≤0,可推得通过比较上面式子可以看出,这里只需要采用I区和Ⅲ区的两套插补公式就足够了,而Ⅱ区和Ⅳ区的情况则通过符号标志况的转换来实现。另外,由于以上推导过程均是在顺圆情况下进行,若进一步考虑逆圆插补情况后,则还需要引入另一个符号标志又来实现转换,据此设计出程序的流程图如图3.5所示。由于在插补算法中全部采用带符号的代数值进行运算,所以,上述算法不仅能适用于顺、逆圆的插补,而且还能实现自动过象限功能。81
YNYYNYNNY开始顺圆?S2=1S2=-1插补准备、计算、、|x|>|y|?Y>0?S1=1S1=—1S1=1S1=—1到终点?结束X>0?N图3.5圆弧插补流程图的实现81
3.4.2插补程序设计根据插补基本原理和软件流程图的分析可以编写出数据采样法直线插补和圆弧插补软件的程序。由软件流程图可知插补模块程序的实现主要通过循环结构,循环结构保证在未到达终点的时候能继续进行计算直到满足条件为止。本系统插补程序的实现是通过类CInterpolation来完成的,类中函数Line()来完成直线插补,函数Circle()来完成圆弧插补。程序中用到的主要变量:类中函数Line()来完成直线插补,函数Circle()来完成圆弧插补。程序中用到的主要变量:ClassCInterpolation{……Public:floatm_startp_x,m_startp_z;//起点坐标floatm_endp_x,m_endp_z;//终点坐标floatm_delta;//插补步长floatm_deltax,m_deltaz;//X、Z方向上的步长分量floatm_ll;//插补直线饿长度floatm_x,m_z;//目前插补所在的点floatm_lp;//目前插补所在的点距起点的距离(也就是:已经插补的长度)floatm_xx[10000],m_zz[10000];//存放插补计算出来的点坐标81
intm_total;//总共插补点个数……};在本系统的界面上,专门有一标有“ST”的按钮用来测试刀具的插补运动,其参数的设置是通过如图3.6所示的对话框实现的,通过参数设置可实现刀具的直线插补和圆弧插补。81
第四章数控程序编译系统的设计与实现4.1编译技术概述编译源于高级程序语言。从功能上看,编译程序相当于语言翻译程序,即把用一种语言(称作源语言)书写的程序翻译成用另一种语言(称作目标语言)书写的等价程序。编译程序完成从源程序到目标程序的翻译工作,它是一个复杂的整体过程。其整个工作分阶段进行,每个阶段将源程序的一种表示形式转换为另一种表示形式,各阶段进行的操作在逻辑上紧密连接,图4.1给出了一个编译过程结构流程。词法分析表格管理语法分析语义分析中间代码生成代码优化目标代码生成出错管理源程序目标程序图4.1编译过程结构图81
图中将编译过程划分为词法分析、语法分析、中间代码生成、代码优化和目标代码生成六个阶段。另外编译过程还包括两项重要工作:表格管理和出错管理,它们与上述六个阶段都有联系。编译过程中源程序的各种信息被保留在多种表格里,编译各阶段的工作都涉及构造、查找或更新有关表格,因此需要进行表格管理工作;如果编译过程中发现源程序有错误,编译程序应报告错误性质和错误位置,并且将错误的影响限制在最小范围,使得源程序其余部分能继续编译下去,有些编译程序还能自动校正错误,这些工作称为出错处理。下面从源程序在不同阶段所被转换成表格的不同形式来介绍编译程序的逻辑结构及各阶段的具体任务。(1)词法分析和语法分析是本编译程序的核心部分,在4.2节和4.3节中将会做详细的介绍。(2)语义分析其任务是审查源程序有无语义错误,为代码生成阶段收集类型信息。其中一项重要工作是进行类型审查,审查每个算符是否具有语言规范允许的运算对象,当不符合语言规范时,编译程序应报告错误。(3)中间代码生成。经过语法分析和语义分析后,编译程序将源程序变成一种内部表示形式,称为中间语言或中间代码。它是一种结构简单、含义明确的记号系统,可被设计为多种形式,但设计原则应遵循以下两点:一是易生成;二是易翻译成目标代码。编译程序大多采用了一种近似“三地址指令”的“四元式”中间代码,其形式为:(运算符,运算对象1,运算对象2,结果)。81
(4)代码优化。此阶段的任务是对前阶段产生的中间代码进行变换或改造,其目的是使生成的目标代码更为有效,即节省空间和时间。(5)目标代码生成。其任务是将中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。它是编译的最后阶段,其工作与硬件系统结构和指令含义有关,此阶段工作复杂,涉及硬件系统功能部件的运用、机器指令的选择、各种数据类型变量的存储空间分配以及寄存器和后寄存器的调度等诸多方面。为适应具体任务的需要,上述某些阶段可组合在一起。通常,可把编译过程分为前端(frontend)和后端(backend)。前端工作包括词法分析、语法分析、语义分析和中间代码生成,有时还包括某些优化工作,以及与前端每个阶段相关的出错处理和符号表管理工作,总之,前端工作主要依赖于源程序而与目标程序无关。后端工作指那些依赖于目标程序而一般不依赖于源程序,只与中间代码有关的那些工作,即目标代码生成,以及相关出错处理和符号表操作。4.1.1NC代码地址符分析NC代码中常用字符有:(l)数字0~9;(2)字母A、B、C…X、Y、Z;(3)特殊记号+(正号)、一(负号)、/(跳过任意程序段)、ER(程序号)、SP(空格)、DEL(注销码)、·(小数点)等。程序段中表示地址的英文字母可以分为尺寸符和非尺寸符两种。尺寸有X、Y、Z、U、V、W、P、Q、I、J、K、A、B、C、D、E、R、H共18个字母;非尺寸符有N、G、F、S、T、M、L、O共8个字母,除81
了地址符外,NC代码中还包含一些其它字符。4.1.2NC代码程序字分析地址符加上数字或符号就组成程序字,根据IsO6983NC程序标准,通常NC代码程序字有以下几种:1.准备功能(G代码)用来指定机床动作,由地址符G及两位数字构成,如G00来表示快速定位。G代码有如下特点:(1)根据功能不同分为00至18等19个组,同一程序段中可指定多个不同组G代码。在同一程序段内若指定多个同组G代码,则只有最后指定的G代码有效,由于此种情况会降低程序可读性,易引起加工错误,因此本系统给出警告信息。(2)有非模态和模态之分,00组G代码为非模态代码,只在被指定的程序段中有效;其它组G代码为模态代码,在同组代码出现之前一直有效。(3)在固定循环程序段中,若指定01组G代码,固定循环会自动注销,即01组G代码不受固定循环影响。(4)不同NC系统G代码并不一致,同一NC系统的不同型号G代码也不尽相同。2.辅助功能(M代码)用来指定机床辅助功能及状态,由地址符M和两位数字组成。与G代码类似,不同NC系统及同一系统不同型号定义的M代码也有所差别。81
3.主轴功能(S代码)用来指定机床主轴转速(切削速度),由地址S及四位数字组成。NC程序中,指定主轴功能后,还应用M代码指定主轴旋转方向,M03表示主轴正传,M04表示主轴反转。对于有恒定表面速度控制功能的机床,还要用G96或G97配合S代码来指定主轴速度,使之随刀具位置变化而变化,以保持刀具与工件表面的相对速度不变。4.刀具功能(T代码)用来选择刀具,有地址T和两位数字表示,T代码与刀具相对关系可由生产厂家与用户共同商定,也可由使用厂家确定。T代码之后,一般要跟辅助代码M0T来自动换刀。5.进给功能(F代码)用来指定坐标轴的进给速度,用地址F和四位数字表示,在快速定位GOO后不应有F代码。6.第二辅助功能(B代码)用来指定工作台进行分度,用地址B和三位数字表示。7.尺寸字NC程序中,尺寸字一般按如下顺序:X、Y、Z、U、V、W、P、Q、I、J、K、A、B、C、D、E、R。尺寸字可以是坐标尺寸字(绝对尺寸),也可以是增量尺寸字(相对尺寸)。4.2词法分析词法分析是编译过程的第一阶段。其任务是从左到右逐个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出各个单词(也称单词符号或符号),用于语法分析。这里的单词指逻辑上紧密相连的一组字符,且这组字符具有集体含义,是最小的语法单位,在数控代码中也称为程序字。如准备功能代码是由字母G和两位数字构成。81
为了有效地从源程序文本中分离出这些单词,需先对源程序文本输入字符串进行编辑,以消除输入代码中的注释、空格、换行符以及其它一些对语法分析和数据处理无用的信息。词法分析后最终以中间代码的形式保存有用的程序段。词法分析的工作原理是首先从输入字符串(一行数控程序)中识别一个单词,然后从初始状态出发,逐个输入该单词的字符,通过查词法分析表获得相应的状态值,如果每个字符都找到与之匹配的状态值,则单词通过词法分析,否则报错。4.3语法分析4.3.1语法分析实现原理语法分析是编译程序的核心部分,其作用是识别由词法分析给出的单词序列是否符合给定的文法形式。4.3.1.1文法的概念文法的概念文法G定义为四元组(VN,VT,P,S)。其中,VN为非终结符(或语法实体、变量)集;VT为终结符集;P为产生式(也称规则)的集合;叽、VT和P是非空有限集。S称为识别符号或开始符号,它是一个非终结符,至少要在一条规则中作为左部出现。VN和VT不含公共元素,即VN∩VT=Ø。一般用v表示VN∪VT,v称为文法G的字母表。通常,不将文法G用四元组显式表示,而只写出其产生式。一般约定,第一条产生式左部是识别符号;用尖括号括起来的为非终结符,不用尖括号括起来的为终结符。终结符即构成语言文法的单词,是语法成分的最小单元,而非终结符则是一个语法成分,书写语言程序中并不出现,是由终结符、非终结符串或终结符串定义的。对于NC代码编译而言,终结符指程序字,它是组成NC程序的最小单元,而程序段、分程序等均为非终结符。乔姆斯基(Chomsky)于1956年建立了形式语言的描述理论,把文法分成四种类型,即0型、1型、2型、3型,它们之间的差别在于对产生式有不同限制。(1)0型文法设G=(VN,VT,P,S),如果其每个产生式都81
是这样一种结构:α∈(VN∪VT)且至少含有一个非终结符,而β∈(VN∪VT),则G是一个O型文法。0型文法亦称短语文法。任何0型语言都是可递归可枚举的;反之,递归可枚举集必定是一个0型语言。(2)1型文法设G=(VN,VT,P,S),若P中每个产生式α→β均满足│α│≤│β│(│α│和│β│分别是α和β的长度),仅S→ε除外,则文法称为1型或上下文有关的。(3)2型文法设G=(VN,VT,P,S),若P中每个产生式α→β均满足:α是一非终结符,β∈(VN∪VT),则文法称为2型或上下文无关的。(4)3型文法设G=(VN,VT,P,S),若P中每个产生式的形式都是A→B或A→a,其中A和B都是非终结符,a是终结符,则G称为3型或正规文法。四个文法类的定义逐渐增加限制,每种正规文法都上下文无关,每种上下文无关文法都是上下文有关的,而每一种上下文有关文法都是0型文法。称为0型文法产生的语言为O型语言,上下文有关文法、上下文无关文法和正规文法产生的语言分别称为上下文有关语言、上下文无关语言和正规语言。同多数程序设计语言一样,NC代码语法能用正规文法(3型文法)描述。文法分析完成的是“单词”级的分析检查工作,而语法分析完成的是“语句”级81
的检查工作。要检查语句内部的完整性和正确性以及语句之间的相容性。语法分析采用的是自顶向下的分析方法,也叫递归下降分析方法。采用此分析方法,从语法规则的最顶部非终结符开始,然后向下逐步分析直到终结符出现。在数控代码中,各条语句的类型由起始符决定,下一条语句的起始符可以作为上一条语句的终止符。起始符包括各类语句的开始地址符,如“X”,“Y”,“G”,“F”,“S”,“T”,“M”,“U”,等。语法分析的流程图如图4.3所示。YYNN取单词有无一次单词开头的语句?执行此语句的处理程序程序段是否结束退出出错处理图4.3程序段的语法处理框图4.3.2语法分析中的错误类型(l)同一地址重入问题在数控系统中一般规定地址不得重入(G,M除外),即在一段数控码段中同一地址符出现的次数不能多于一次。可以对这个地址符的编程次数做一个统计标志,初态为零,遇到该地址符编码时增一,一段数控代码分析完后检查各个地址符的统计标志,如大于一则报错。(2)同组G、M代码重入问题数控系统中不允许同一数控代码程序段中出现多于一个的同组G、M代码指令语句。实现此类差错处理是对符号表中的每组G、M代码的内容进行检查。开始译码时设置各组代码为初态,当有一个G、M指令进行G、M代码组赋值时,则其所对应的代码组改变状态。如果同组中有另一个G、M指令进行G、M代码组赋值时,检查符号表中代码组的状态,不为初态则说明有多于一个同组G、M代码在本代码段指定,产生报警信号。81
4.5系统功能的实现4.5.1NC代码编译的实现NC代码的编译过程就是根据前面介绍的原理方法,将数控加工信息依次读出,按照数控指令语义将其翻译成实际刀具中心轨迹的节点坐标值并存入缓冲区中。本系统所采用的数据结构为链表,链表定义为:StructList{Doublex;//节点坐标xDoublez://节点坐标yDoublecx;刀圆弧插补的圆心坐标Doublecz洲圆弧插补的圆心坐标Intgcode;//G代码Intmcode;//M代码Inttoolnum://刀具号……StructList*next;//指向下一点的指针StructList*next;//指向下一点的指针}*head,*cur,*pq://定义链表头指针、临时指针、结点指针变量4.5.2编译系统界面的功能介绍本编译系统的功能主要由四个模块组成,如图4.4所示,即NC代码文件管理、NC代码的编辑修改、编译、以及编译系统的在线帮助。编译系统功能界面的结构如图4.5所示。81
(l)文件管理及编辑修改从图4.5可知,界面设计完全是Windows风格,对NC代码的处理都设置了按钮。该模块的功能与普通的高级语言的编辑功能相同,可以完成数控程序的编辑修改以及文件的存储管理。(2)代码的编译用户界面文件管理编辑修改编译帮助图4.4编译系统功能临时指针、节点指针变量选择界面上的编译按钮,就可开始对界面屏图4.5编译系统界面幕上的数控代码进行词法、语法的检查处理。检查时读入当前屏幕上的数控程序,逐段检查,查出的每一个错误都将在下面的出错屏幕上显示出来,显示出错误语句的行号、错误的类型以及原因。这样我们就可以方便的找到错误位置并修改和编辑屏幕上的数控程序,直到没有错误产生为止。在图4.5中,上面的屏幕上显示的为一个测试例子,下面的错误显示屏幕上则给出了出错语句的相关信息。81
第五章基于多线程的仿真加工的实现5.1软件的实时性PCNC软件系统一般都包括:读取处理后的NC文件——译码——轨迹插补计算伺服控制这样一个基本的加工循环,在未运行完最后一条NC语句前,该循环将一直进行。显然,两次循环之间总存在一定的时间间隔,而时间间隔的长短需要根据实际加工对实时性的要求来确定。对于控制精度要求不高的情况可以直接用Windows的计时器计时,在达到设定的时间后,计时器发出WM—TIMER消息到应用程序的消息队列中,如果将上述循环程序放在WM—TIMER消息的处理函数中,就可以方便地实现定时。但这种方法存在两个问题:一是WM—TIMER消息的优先级比较低,只有当系统处理完消息队列中优先级较高的消息后,才会处理WM—TIMER消息;二是计时器是以PC硬件的时间中断次数来确定计时的长短,而时间中断的周期是以系统电子911的时间为基准,固定4.95ms。由此可见,计时器的实际精度大于55ms,只能用于实时性要求不高的场合。大多数情况下,计时器都不能满足要求。为了增强控制程序的实时性,可以采用软件延时的方法,即在上述循环中放一段延时语句。对于毫秒级的延时精度,可通过调用windows的API函数timeGetTime来实现,该函数采用了基于BIOS的时间基准。以下是VC++中实现毫秒级延时的例子。Voiddelaytime(inttimdelay){DWORDm_timerl;81
m_timerl=timeGetTime();while((timeGetTime()—m_timerl)