- 2022-09-27 发布 |
- 37.5 KB |
- 43页



申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。
文档介绍
基于autocad和mpc02运动控制程序的开发doc
四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发基于AUTOCAD和MPC02运动控制程序的开发(机械设计制造及其自动化)学生:陈增强指导老师:李翔龙摘要:基于AUTOCAD和MPC02的设计与开发,使产品从在AUTOCAD上的设计到利用MPC02实现机床的运动控制,从而实现CAD/CAM一体化技术的小雏形,这也是先进制造技术发展的一个趋势,MPC02加工的精度高,最小精度是0.001微米。AUTOCAD是一个功能很强的图形编辑系统,它提供了图形输入、图形编辑和图形输出的一个完整的工作环境,并且还可以把图形输出成DXF格式文件,以便其他程序读取、分析、加工和处理,其他程序也可以按照规定的格式生成DXF文件,AUTOCAD可以接受该DXF文件并转换成图形。MPC02控制卡是基于PC机PCI总线的步进机或数字式伺服机的上位控制单元,它与PC机负责人机互界面的管理和控制系统的实时监控等方面的工作(例如键盘和鼠标的管理、系统状态的显示、控制指令的发送、外部信号的监控等等);MPC02卡完成运动控制的所有细节,MPC02运动函数库用于二次开发,用户只要用VC++或VisualBasic等支持DLL调用的开发工具编制所需的用户界面程序,并把它与MPC02运动链接起来,就可以开发出自己的控制系统,例如:数控系统、检测设备、自动生产线。基于上述的介绍,本文所要进行的研究和开发工作就是以下几个方面:(1)AUTOCAD把图形输出成DXF格式文件,(2)用VisualBasic6.0编一个DXF接口程序,把有用的数据提取出来,(3)用VisualBasic6.0编一个程序,实现对MPC02的运动控制,从而开发了一个基于AUTOCAD对MPC02的开发技术。关键词:AutCAD;MPC02;运动控制程序Abstract:BasedonAUTOCADandMPC02,wemaketheproductfromdesigningontheAUTOCADtousingMPC02formotioncontrolofthemachinebed,andrealizeCAD/CAMintegraltechnique.Thisisalsoatrendofforerunnermanufacturingondevelopingtechnique.MPC02processeshighaccuracy.Minimumaccuracyis0.001micron.AUTOCADhaveaeditedsketchsystemwithverystrongfunction,itprovidethesketchtoinput,thesketchtoeditandcompleteworkenvironmentofsketchoutputting.ItalsocanmakethesketchoutputtingintheDXFformationdocument,sothatotherprogramscanread、analysis、processanddealwithit.TheotherprogramscanalsomaketheDXF’sdocumentfollowingtherules,andAUTOCADacceptthedocument,conversingsketch..MPC02controlcardisaccordingtoPCmachinePCIorarithmeticfiguretypeunit.ItandPCmachinerepresentativedirector’smachinewitheachotherdothejobofinterfacewithcontrollingthe-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发systemsuperviseandcontrollingwaitingtheaspectofstepofthetotalline(forexamplethemanagewiththekeyboardandmouse、themanifestationofthesystem、sendingoutofthecontrollingsupervise,andexteriorsignaletc.)TheMPC02completesalldetailsofmovingcontrol.MPC02movingfunctionstoresusefordevelopment,andprogrammersonlyuseVC++orVisualBasicwhicharethedevelopingtoolssupportingDLLforwritingthecustomerinterfaceprogramthatisneeded.ConnectingtheprogramwithMPC02moving,wecandevelopouttheowncontrolsystem.Forexamplecontrolsystem,examinationequipments,automaticproductionline.Baseontheaboveintroduction,thistextresearchinganddevelopingprogramisbelowafewaspect:(1)AUTOCADoutputthesketchwithDXFformationdocument;(2)usetheVisualBasic6.0writeaconnectingprogramofDXF;(3)useVisualBasic6.0forwritingaprogramtocontrolMPC02’smoving,soaprogram,accordingtoAUTOCADandMPC02,isdvelopedKeyword:Autocad;MPC02;Motioncontrolprogram-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发第一章程序开发综述1.1绪论先进制造技术是为了适应时代要求提高竞争能力,对制造技术不断优化及推陈出新而形成的。先进制造技术是制造业不断吸收机械、电子、信息(计算机与通信、控制理论、人工智能等)、能源及现代系统管理方面的成果、并将其综合应用于产品设计、制造、检测、管理、销售、使用、服务乃至回收的制造全过程,以实现优质、高效、低耗、清洁、灵活生产、提高对动态多变的产品市场的适应能力和竞争能力的制造技术的总称。在人类社会生产发展的历史长河中,蒸汽机和电机的应用延伸了人的体力劳动,催生了工业革命;而以计算机技术为核心的信息技术(InformationTechnology,简称IT)的应用则延伸了人的脑力劳动,导致了一次新的工业革命——制造业信息化。制造业信息化是本世纪人类最伟大的科技成果——电子计算机在制造业应用发展的必然结果。从1946年第一台电子计算机问世以来的半个多世纪里,计算机的应用几乎扩展到制造业生产经营活动的所有领域,使传统制造业从工业社会大专业化社会生产向信息的专业化、信息化社会生产发展。计算机辅助设计与制造(ComputerAidedDeignandManufacturing,简称CAD/CAM)技术是计算机科学、电子信息技术与现代设计制造技术相结合的产物,是当代先进的生产力,被国际公认为20世纪90年代的十大重要技术成就之一。CAD/CAM系统以计算机硬件、软件为支持环境,通过各个功能模块(分系统)实现对产品的描述、计算、分析、优化、绘图、工艺规程设计、仿真以及NC加工。而广义的CAD/CAM集成系统还应包括生产规划、管理、质量控制等方面。CAD/CAM系统是一种从设计到制造的综合技术,能够对设计制造过程中信息的产生、转换、存储、流通、管理进行分析和控制,所以CAD/CAM系统是一种有关产品设计和制造的信息处理系统。CAD/CAM系统的组成应包括CAD,CAPP,CAM,CAE和工程数据库、产品数据交换标准、计算机网络等单元技术。CAD/CAM系统是以计算机硬件为基础,系统软件为主体,应用软件为核心组成的面向工程设计问题的信息处理系统。面对高速发展的计算机技术,CAD/CAM系统在理论方法、体系结构与实施技术上均在不断更新和发展。本论文就是秉承了CAD/CAM技术设计开发了这个基于AUTOCAD对MPC02的运动控制的程序,使零件从设计到制造成品。在AUTOCAD里,设计人员对零件进行设计开发,并用AUTOCAD的一种格式文件(”*.dxf”文件)保存在某个特定的位置,然后再用Visualbasic-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发6.0编一个dxf接口程序提取有用的数据,例如直线,就要得到直线的起始点的坐标位置和终点的坐标信息,并将保存起来,vb程序将保存的数据转换成可利用的数据,并驱动电机运动,从而完成对零件的加工,这就是程序的整个总的概括。本程序的开发工作是由我和吴坤壁同学合作完成,吴坤壁同学完成前半部分的工作,而我完成后半部分的工作,所以在本论文中我主要介绍我完成的部分。1.2VisualBasic6.0的开发特点1.2.1VB的简介Microsoft公司推出的Windiws应用程序开发工具——VisualBasic,Visual意为“可视化”,指的是一种开发图形用户界面(GUI)的方法,所以VisualBasic是基于Basic的可视化的程序设计语言。在VisualBasic中,既继承了其先辈Basic所具有的程序设计语言简单义勇的特点,其编程系统又采用了面向对象、事件驱动的编程机制,用一种巧妙的方法把Windows的编程复杂性封装起来,提供了一种所见即所得的可视界面设计方法,给广大非计算机专业人员学习、使用、研究和开发Windows环境下的应用程序带来了福音。VisualBasic最早是由Microsoft公司在1991年推出的,刚推出的VisualBasic也有缺陷,功能也相对少了一些。经过了Microsoft公司的不断努力,1993年推出的VB3.0已初具规模,进入实用阶段,利用VB可快速地创建多媒体、图形界面等的应用程序。1995年、1997年和1998相继推出的VB4.0、VB5.0和VB6.0在开发环境、功能上进一步完善和扩充,尤其在数据库管理、网络应用方面更胜一筹,使得VB成为许多程序员首选的编程工具,本程序的设计开发就是利用VisualBasic6.0这强大的功能特点,下面我们就来谈一下VB的功能特点。1.2.2VB的功能特点VB主要的功能特点如下:1.具有面向对象的可视化设计工具具有面向对象的程序设计方法(OOP),把程序和数据封装起来视为一个对象,每个对象都是可视的。程序员在设计时只需用现有工具根据界面设计的要求,直接在屏幕上“画”出窗口、菜单、按钮、滚动条等不同类型的对象,并为每个对象设置属性。程序员的编程工作仅编写针对对象要完成哪些功能的程序,因而程序设计的功率可提高许多。2.事件驱动的编程机制事件驱动是非常适合图形用户界面的编程方式。传统的编程方式是一种面向过程,按程序事先设计的流程运行。但在图形用户界面的应用程序中,用户的动作即事件掌握着程序的运行流向,每个事件都驱动一段程序的运行。程序员只要编写响应用户动作的代码,各个动作之间不一定有联系。这样的应用程序代码较短,使得程序既易于编写又易于维护。3.提供了易学易用的应用程序集成开发环境-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发在VB集成开发环境中,用户可设计界面、编写代码、调试程序,直至把应用程序编译成执行文件,在Windows中运行,使用户在友好的开发环境中工作。4.结构化的程序设计语言VB具有丰富的数据类型、众多的内部函数和结构化程序结构,而且简单易学。5.支持多种数据库系统的访问利用数据控件或ODBC能够访问的数据库系统有,MicrosoftAccess、Btrieve、dBASE、MicrosoftFoxPro和Paradox等,也可访问MicrosoftExecel、Lotusl1-2-3等多种电子表格。6.OLE技术VB的核心就是其对对象的链接与嵌入(OLE)的支持,利用OLE,VB能够开发集声音、图象、动画、字处理、Web等对象于一体的应用程序。7.Active技术Active技术发展了原有的OLE技术,它使开发人员摆脱了特定语言的束缚。可方便地使用标准的Active部件,调用标准的接口,实现特定的功能。8.完备Help联机帮助功能与Windows环境下的软件一样,在VB中,利用帮助菜单和F1功能键,用户可随时方便地得到所需的帮助信息;VB帮助窗口中显示了有关的示例代码,通过复制、粘贴操作可获取大量的示例代码,为用户的学习和使用提供了捷径。1.2.3VB6.0新功能特点与以前的版本相比,VB6.0除了新增了一些控件、函数外,主要的改进是提供了功能强大的数据库和Web开发工具。1.新增控件新增了许多控件,如工具条控件CoolBar、数据库控件ADOData、日历界面时间控件DateTimePicker和MonthView、图形组合框控件ImageCombo等。2.语言新功能(1)新增了较多的字符串函数,如筛选函数Filter、连接函数Jion、反向查找函数InstrRev、分隔函数Split、替换函数Replace等,还有日期等其他函数。(2)函数可以返回数组,动态数组可以赋值。(3)增加了文件系统对象,能全面地实现驱动器、子目录和文件的管理。3.数据库功能的增强新增了功能强大、使用方便的ADO(ActiveDatabaseObject)技术,ADO是微软制订的应用程序级数据库访问接口,支持所有OLDDB数据库厂商。ADO包括了强有的ODBC,而且占有内存少,访问速度更快。同时提供的ADO控件,不但可以用最少的代码创建数据库应用程序,也可以取代Data和RDO控件。4.增强网络功能-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发VB6.0最重要的新特性之一,是提供了DHTML(DynamicHTML)设计工具。这种技术可以使Web页面设计者动态地创建和编辑页面,使用户在VB中开发多功能的网络应用软件。5.新增了多个应用程序向导VB新增的应用程序向导可以自动创建不同类型、不同功能的应用程序。有数据向导、数据窗体向导、IIS应用程序和DHTML等;同时已有的向导增强了功能。因为Visualbasic6.0有上述多种优点,所以我们选择了它作为我们的开发设计的工具,在下文分析设计的过程中我们将更加深入的介绍VB6.0在我们程序设计开发的运用。1.3AUTOCAD的DXF格式AutoCAD是一个功能很强的图形编辑系统,它提供了图形输入、图形编辑和图形输出的一个完整的工作环境。其系统的灵活性和广泛的开放性决定了众多的应用程序选择它作为图形设计、编辑及前后处理的支撑平台。特别是AutoCADR14提供了的面向对象的高级语言开发环境ObjectARX,可以让应用程序开发者用面向对象的VisualC++或VisualBasic语言建立功能更加完整的基于AutoCAD的应用程序。然而在某些应用中,其他用户应用程序需要使用或必须检查AutoCAD生成的图形。而在另外的一些应用中,又需要使用AutoCAD来观察、修改和输出由其他CAD生成的图形。由于AutoCAD图形数据库(“*.dwg”文件)是以十分紧缩的二进制格式来存储的,并且该格式随AutoCAD版本的更新及新特性的加入而经常发生大的变动,所以Autodesk公司不提供这种文件的结构格式,也不鼓励用户编写程序直接读写该格式文件。AutoCAD提供了另一种格式的文件,用于其他CAD系统及应用程序间的图形信息交换,这就是所谓的“图形交换文件(DrawingInterchangeFile)”,它是一种既严密又易于读取的文件格式。AutoCAD把图形输出成DXF格式文件,以便其他程序读取、分析、加工和处理;其他程序也可以按照规定的格式生成DXF文件,AutoCAD可以接受该DXF文件并转换成图形。1.3.1DXF文件的一般结构DXF文件的最小组成单位是组(GROUP)。一个DXF文件由多个组组成。每个组在DXF文件中占两行。第一行是组码(GROUPCODE),它是一个整数;第二行是组值(GROUPVALUE),它的数据类型取决于组码的数值。DXF文件的组码分成很多类,每类组码具有确定的用途,并确定其相应的组值的类型。每组均用组码作为其简称,例如,组码为0的组称为0组;组码为70的组称为70组。DXF文件分成多个节(SECTION),每个2均由多个组(GROUP)的组成。每个节均由一个组值为字符串(SECTION)的0组开始,后跟组值为表示节名的字符串的2组,其后为组成该节的各个组,最后以组值为字符串ENDSEC的0组表示该节的结束。所有节都结束后,在DXF文件的最后是组值为字符串EOF(EndOfFile)的0组作为文件结束标志。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发典型的DXF文件由下面几个节组成:(1)标题节(HEADER)标题节记录了图形的一般信息。它包括AutoCAD图形数据库的版本号以及大量的系统变量。每个参数都有一个表示变量名字符串的9组和若干个表示变量值的组。(2)类节(CLASSES)类节保存由应用程序定义的类,而该类的实例则出现在块节(BLOCKS)、实体节(ENTITIES)和对象节(OBJECTS)中。(3)表节(TABLES)表节按顺序包含表1.3.1所述的9个符号表信息。表1.3.1符号表内容序号表名说明1APPID应用程序标识符表2BLOCK_RECORD块引用描述表3DIMSTYLE尺寸标注格式描述表4LAYER层描述表5LTYPE线型定义表6STYLE文本格式表7UCS用户坐标系统表8VIEW视图表9VPORT视口配置表(4)块节(BLOCKS)块节描述图形中所包含的块定义,包括块中的实体。(5)实体节(ENTITIES)实体节描述构成图形的所有实体和块引用,但不包括块内的实体。(6)对象节(OBJECTS)对象节包含图形数据库中所有非图形实体的定义数据。所有那些既不是实体,也不是符号表记录,又不是符号表的实体出现在该节中。DXF文件的一般结构如下:标题节开始:0块节开始:0SECTIONSECTION22HEADERBLOCKS-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发┊┊标题节结束:0块节结束:0ENDSECENDSEC类节开始:0实体节开始:0SECTIONSECTION22CLASSESENTITIES┊┊类节结束:0实体节结束:0ENDSECENDSEC表节开始:0对象节开始:0SECTIONSECTION22TABLESOBJECTS┊┊表节结束:0对象节结束:0ENDSECENDSEC文件结束:0EOF1.3.2实体节常用实体的定义格式实体节可以出现在DXF文件的BLOCKS和ENTITIES两节中。在这两节中实体的出现是等同的,但是BLOCKS节中的实体没有实体描述字。下面给出每个实体出现在文件中的格式。定义一个实体时,某些组一定要出现,而某些是任选的,并且仅在与它们的缺省值不同时才出现。在下面的讨论中,一定要出现的组成它的组码和功能来给出,而任选组用跟在组说明之后的“——可选N”来指出。在组说明中“N”为缺省值。阅读DXF文件是图形数据库的一个完整表示,并随着AutoCAD的进一步改进,将给实体增加一些新组以完成另外的功能。用表驱动方式编写DXF处理程序,不能对某一个实体中组的顺序作任何假定,并应当忽略当前尚未定义的任何组。这将使它能更容易地与AutoCAD将来的版本兼容。每个实体均从标识实体类型的一个组码0开始。后面我们会给出实体的DXF名称。每个实体都包含一个组码8,它后面给出实体所在的层名。每个实体均可以具有与它相关的高度、厚度、线型或颜色等信息。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发如果实体描述字有效,则每个实体均有一个组码5来容纳其描述字(以一个标识十六进制数的字符串表示)。在本论文中,我们主要用了实体的两个专用码,下面来介绍这两个专用码:LINE100子类标记(AcDbLine)10,20,30起点X,Y,Z11,21,31终点X,Y,ZARC100子类标记(AcDbLine)10,20,30圆心坐标X,Y,Z40半径50起始角度(度)51终止角度1.4简要概括程序开发整个内容基于AUTOCAD和MPC02运动控制程序的开发是利用AUTOCAD和MPC02的特性,将它们连接起来,集成零件设计和加工为一体的控制程序,具有CAD/CAM的技术的小雏形,这也是制造业将来发展的趋势。本程序的设计开发分为两部分,前部分主要调用AUTOCAD、设计图形、保存图形并以DXF格式输出,后部分主要驱动电机运动,完成零件的加工。程序的执行过程如图1.4.1所示。打开本程序序调用AUTOCAD零件的设计以DXF格式输出并回到本程序的控制界面获得数据电机运动加工图1.4.1程序执行流程图1.4.1基于AUTOCAD的程序设计本程序的设计开发有别以往对AUTOCAD的设计开发,我们采用调用的方式打开AUTOCAD软件,然后在AUTOCAD里进行零件的设计开发,并将设计完后的零件以“*.dxf”-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发格式保存在特定的位置,这一步是比较重要的一步,也是决定我们能否获得可靠数据的关键,所以我们这一步也用了比较多的时间来设计,确保正确无误。1.4.2基于MPC02的运动控制MPC02配备了功能强大、内容丰富的运动控制驱动软件工具,其运动函数库可用于二次开发,用户只要用VC++或VisualBasic等支持DLL调用的开发工具编制所需的用户界面程序,并把它与MPC02运动库链接起来,就可以开发出自己的控制系统,例如数控系统、检测设备、自动生产线等。在这里我们开发的程序是把在AUTOCAD软件里设计的零件,通过MPC02加工完成的,这类似于数控系统。在接下来的第三章中,我将会详细的介绍这部分的设计过程。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发第二章MPC02运动控制介绍2.1概述MPC02控制卡是基于PC机PCI总线的步进电机或数字式伺服电机的上位控制单元,它与PC机构成主从式控制结构:PC机负责人机交互界面的管理和控制系统的实时监控等方面的工作(例如键盘和鼠标的管理、系统状态的显示、控制指令的发送、外部信号的监控等等);MPC02卡完成运动控制的所有细节(包括脉冲和方向信号的输出、自动升降速的处理、原点和限位等信号的检测等等)。每块MPC02卡可控制3轴步进电机或数字式伺服电机,并支持多卡共用,以实现多于三个运动轴的控制;每轴均可输出脉冲和方向信号,以控制电机的运转;同时,可外接原点、减速、限位等开关信号,以实现回原点、保护等功能,这些开关信号由MPC02卡自动检测并作出反应。另外,MPC02卡还提供了适用于伺服系统的伺服使能和偏差清零信号接口,以及供用户使用的通用I/O接口。MPC02卡采用先进的专用控制芯片,具有梯形及S形升降速曲线,最高输出频率可达2.4MHz,带有编码器反馈端口,主要适用于数字式交流伺服系统或闭环的步进电机控制系统。 MPC02配备了功能强大、内容丰富的运动控制驱动软件工具。MPC02在插补算法和运动函数的执行效率方面采用了更有效的方法,提高了插补精度、插补速度和实时性。这些软件工具主要分为示范软件和运动函数库两大类。利用MPC02的示范软件既可以很快地熟悉MPC02控制卡的软、硬件功能,又可以方便快捷地测试执行电机及驱动系统在完成各种运动时的性能特性。MPC02运动函数库用于二次开发,用户只要用VC++或VisualBasic等支持DLL调用的开发工具编制所需的用户界面程序,并把它与MPC02运动库链接起来,就可以开发出自己的控制系统,例如:数控系统、检测设备、自动生产线等。MPC02的运动函数库能够完成与运动控制有关的复杂细节(比如:升降速、直线插补、圆弧插补等),这样就可以大大缩短控制系统的开发周期。2.2MPC02硬件介绍2.2.1MPC02硬件结构MPC02控制卡作为开发运动控制系统的平台,其结构是开放式的。该卡插在PC机PCI扩展槽内使用,同时使用控制卡的数量和各卡上的控制轴数可方便地配置;MPC02卡提供了功能强大的运动控制函数库,并可以充分利用PC机现有的资源来开发完美的运动控制系统。MPC02控制卡的结构示意图如下:-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发2.2.2MPC02的技术特性和使用范围MPC02控制卡主要特征有:开放式结构、使用简便、功能丰富、可靠性高等。MPC02的特征体现在硬件和软件两个方面:在硬件方面采用PC机的PCI总线方式,适用范围广,卡上无需进行任何跳线设置,所有资源自动配置在Windows98及Windows2000操作系统中支持即插即用,使用非常方便;MPC02的接线方式采用SISC型插头,可使用屏蔽线缆,并且所有的输入、输出信号均用光电隔离,提高了控制卡的可靠性和抗干扰能力;在软件方面提供了丰富的运动控制函数库,以满足不同的应用要求。用户只需根据控制系统的要求编制人机界面,并调用MPC02运动函数库中的指令函数,就可以开发出既满足要求又成本低廉的多轴运动控制系统。MPC02的技术指标主要有:l3轴步进机或数字式伺服控制;l脉冲输出速度可代2.4MPS;l梯形、S形加速度;l运动中可变速;l多轴高速线性插补;l圆弧、椭圆和螺旋插补;l可输脉冲/方向或双脉冲信号;l每轴带有Servoon和Servocls信号l每轴带有原点、减速和限位开关等接口;l4个通用输入开关信号,8个通用输出开关信号;l可外接编码器位置反馈(A型);l具有外部定时器中断;lWINDOWS环境下WDM、DLL库;l演示和测试软件、例子程序。正是由于MPC02的开放式结构,使之应用范围十分广泛,在由步进机和数字式伺服机组成的基于PC机的运动系统中,都可以使用MPC02作为核心控制单元,例如:-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发l数控机床、加工中心、机器人等;lX-Y-Z控制台;l绘图仪、雕刻机、印刷机械;l送料装置、云台;l打标机、绕线机;l医疗设备;l包装机械、纺织机械;等等。2.2.3MPC02的接口技术MPC02控制卡采用68芯SISC接口,外接线可采用屏蔽线缆,以提高控制卡的抗干扰能力。其中开关量信号(原点、减速、限位以及I/O信号等)采用12~24DCV光电隔离;脉冲量信号(脉冲、方向、编码器反馈等)采用5DCV高速光电隔离。1.信号接口定义MPC02卡SISC68的接口定义为表2.2.1:表2.2.1编号名称定 义编号名称定 义1OUT7输出72OUT6输出63OUT5输出54OUT4输出45OUT3输出36OUT2输出27OUT1输出18OUT0输出09SRV1伺服使能110CLR1偏差清零111SRV2伺服使能212CLR2偏差清零213SRV3伺服使能314CLR3偏差清零315GND24+24V电源地16DCV24+24V电源正17PUL1-脉冲1-18PUL1+脉冲1+19DIR1-方向1-20DIR1+方向1+21PUL2-脉冲2-22PUL2+脉冲2+23DIR2-方向2-24DIR2+方向2+25PUL3-脉冲3-26PUL3+脉冲3+27DIR3-方向3-28DIR3+方向3+29GND5+5V电源地30DCV5+5V电源正31IN1输入132IN2输入233IN3输入334IN4输入4编号名称定 义编号名称定 义-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发35EA3+编码器A3+36EA3-编码器A3-37EB3+编码器B3+38EB3-编码器B3-39EZ3+编码器Z3+40EZ3-编码器Z3-41EA2+编码器A2+42EA2-编码器A2-43EB2+编码器B2+44EB2-编码器B2-45EZ2+编码器Z2+46EZ2-编码器Z2-47EA1+编码器A1+48EA1-编码器A1-49EB1+编码器B1+50EB1-编码器B1-51EZ1+编码器Z1+52EZ1-编码器Z1-53SD1-负向减速154SD1+正向减速155EL1-负向限位156EL1+正向限位157ORG1原点158SD2-负向减速259SD2+正向减速260EL2-负向限位261EL2+正向限位262ORG2原点263SD3-负向减速364SD3+正向减速365EL3-负向限位366EL3+正向限位367ORG3原点368ALM外部报警输入表2.2.1(续表)注:除通用输入/输出信号外,信号名称中的1、2、3分别对应MPC02卡上的第1、2、3轴。 各接口信号的详细说明如下表2.2.2:表2.2.2类型功能编号说 明脉冲量信号脉冲/方向17~28脉冲/方向信号与步进电机驱动器或数字式伺服电机驱动器相连以控制其运转。脉冲/方向信号为光电隔离的差分式输出信号,以提高其抗干扰能力。对于仅需要单端式信号的驱动器,只要接该差分信号的正端即可(参见接线方法);对于接收双脉冲信号的驱动器,PUL端为正转(CW)脉冲输出端,DIR端为反转(CCW)脉冲输出端(这种情况下,应调用set_output_mode设置MPC02卡的脉冲输出模式,参见set_output_mode函数说明)。编码器反馈35~52编码器反馈输入接口用于接收外部旋转式光电编码器或直线光栅尺等的A/B相90°相位差信号和Z相零位信号。MPC02卡的编码器反馈输入采用光电隔离的差分接收方式。对于单端输出的编码器信号,将MPC02卡的信号正端(+)接编码器电源(应为+5V电源,若不是+5V请与供应商联系)的正极,信号负端(-)接编码器的单端信号。光隔电源29、30+5V光电隔离电源。为脉冲/方向提供光电隔离和差分信号的驱动。该电源由外部提供。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发开关量信号限位55、5660、6165、66MPC02卡上每个控制轴有两个限位输入信号(EL+和EL-)。在MPC02卡发送脉冲时,如果接收到相应的限位信号,MPC02卡将立即停止发送脉冲。减速53、5458、5963、64MPC02卡上每个控制轴有两个减速输入信号(SD+和SD-)。在MPC02卡执行快速指令发送脉冲时,如果接收到相应的减速信号,MPC02卡将以设定的加速度减速至低速。原点57、62、67MPC02卡上每个控制轴有一个原点输入信号(ORG)。在MPC02卡执行回原点指令发送脉冲时,如果接收到相应的原点信号,即表示已到达原点,MPC02卡将立即停止发送脉冲。伺服使能9、11、13MPC02卡上每个控制轴有一个伺服使能输出信号(SRV),通过调用set_servo_on函数来控制伺服系统的Servo-On状态。偏差清零10、12、14MPC02卡上每个控制轴有一个伺服偏差计数器清零信号(CLR),通过调用set_servo_clr函数来清除伺服系统的偏差计数器。外部报警68MPC02卡有一个共用的外部报警输入信号,当MPC02卡接收到该信号时,卡上的各轴将立即停止发送脉冲。通用输入31~34MPC02卡提供4个通用的光电隔离输入口,供用户使用。通用输出1~8MPC02卡提供8个通用的光电隔离输出口,供用户使用。光隔电源15、1612~24DCV的光电隔离电源,该电源由外部提供,为所有开关量信号提供光电隔离的驱动。表2.2.2(续表)注:在系统中若不需要减速、原点、伺服使能、偏差清零,可将其作为通用I/O使用。2.接线方法 MPC02卡的开关量输入信号(限位、减速、原点、外部报警和通用输入),可以是触点型开关,也可以是NPN输出的传感器接近开关等。其接线方法如图3.1所示。 MPC02卡的开关量输出信号(伺服使能、偏差清零和通用输出),可以作为伺服系统的输入开关信号(伺服-ON、偏差计数器清零)或驱动12/24DCV的中间继电器或光电耦合器。其接线方法如图3.2所示。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发MPC02卡的脉冲/方向输出信号,作为步进电机或数字式伺服电机驱动器的控制信号,脉冲信号的频率决定电机的转速,脉冲信号的个数决定电机的转角。脉冲和方向信号的接线方法如图3.3所示。 MPC02卡的编码器反馈输入信号,用于接收外部旋转式光电编码器或直线光栅尺等的A/B相90°相位差信号和Z相零位信号。其接线方法如图3.4所示。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发2.3MPC02软件介绍2.3.1MPC02运动控制功能MPC02控制卡的运动控制功能主要取决于运动函数库。运动函数库为单轴及多轴的步进或伺服控制提供了许多运动函数:单轴运动、多轴独立运动、多轴插补运动等等。另外,为了配合运动控制系统的开发,还提供了一些辅助函数:中断处理、编码器反馈、间隙补偿等。下面简单介绍一下这些函数的功能。1.单轴运动控制单轴运动有三个基本的类型:点位运动(pmove)连续运动(vmove)回原点运动(hmove)这些运动又可以在常速模式或梯形速度模式下工作因此总共有六种基本运动类型列表如下:con_pmove以常速移动指定距离(图(a))fast_pmove以梯形速度移动指定距离(图(b))con_vmove以指定的常速连续运动(图(c))fast_vmove加速后保持在指定高速的连续运动(图(d))con_hmove以常速运动至原点(图(e))fast_hmove加速后快速移至原点位置(图(f))-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发带有升/降速控制的运动函数称之为快速(fast)运动函数,譬如:fast_pmove,fast_vmove和fast_hmove,而常速运动函数则称之为常速(con)运动函数,如con_pmove,con_vmove,con_hmove.2.多轴独立运动控制多个运动轴能以独立的形式进行点位运动、连续运动和回原点运动(同时开始,不一定同时到达)这类运动一般在函数名的末尾以2或3来指明参加运动的轴数,例如con_pmove2是一个两轴同时独立做点位运动的函数,fast_home3是三轴独立做回原点运动的函数。这一类函数总共有12个。3.多轴插补运动控制多轴插补函数能以特定的矢量速度执行线性、圆弧、椭圆和螺旋插补运动。参与插补运动的各轴同时开始运动,并且按照特定的算法同时到达各自的目标位置。线性插补函数允许两轴或三轴沿直线运动;圆弧类插补函数允许两轴沿着圆弧或椭圆运动,以及三轴作螺旋运动。做直线插补运动时,可以采用均匀矢量速度方式或梯形矢量速度方式。例如,fast_line3函数让三轴以梯形矢量速度走直线运动。这一类的函数总共有六个。4.运动指令执行方式运动指令可以两种方式运行,批处理方式和立即方式。(1)批处理方式主要在多条不同的运动指令连续执行时使用。在这种方式下只有上一条运动指令控制的所有轴全部运动完毕后才开始下一条运动指令的执行。(2)立即方式主要在单指令实时控制不同的轴运动时使用。该方式下不等上一条运动指令控制的所有轴运动完毕即开始下一条运动指令的执行。若新发出指令控制的轴只要未处于运动状态则立即开始按新运动指令运动,否则新发出指令不予执行并返回一个错误。这种方式若用在多条不同的运动指令连续执行时使用可能造成某些指令无法执行,除非开发人员通过检查运动状态或错误代码加以避免。以下代码示例说明同一批运动指令按不同方式执行后的区别:(假设1、2两轴速度设置相同)批处理方式……set_batch_flag(1);-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发con_pmove(1,1000);con_pmove(2,2000);con_pmove(1,1000);……运行后运动轨迹如下立即方式……set_batch_flag(0);con_pmove(1,1000);con_pmove(2,2000);con_pmove(1,1000);……运行后运动轨迹如下:(其中第三条指令执行不到,因为第三条指令发出时第一条指令控制的1轴正在运动.)2.3.2MPC02的函数描述一.控制卡和轴设置函数该类函数主要用于设置MPC02卡的使用数量、控制轴数以及每轴的输出模式,速度、加速度、S形曲线等的设置和读取等等。相关函数有:-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发intauto_set(void);/*自动检测和自动设置控制卡*/intinit_boardvoid;/*对控制卡硬件和软件初始化*/intget_max_axevoid;/*读取总轴数*/intset_outmodeintchintmodeintoutlogic;/*设置各轴输出模式*/intset_home_modeintchinthome_mode;/*设置回原点模式*/intset_conspeedintchdoubleconspeed;/*设置各轴常速度*/doubleget_conspeedintch;/*读取各轴常速度*/intset_profileintchdoublelsdoublehsdoubleacc;/*设置梯形速度*/intget_profileintchdouble&lsdouble&hsdouble&acc;/*读取各轴梯形速度*/doubleget_rateintch;/*读取当前运转速度*/intset_s_curveintchintmode;/*设置S形曲线是否有效*/intset_s_sectionintchdoublerate;/*设置S形曲线段*/函数名:auto_set目的:用auto_set函数自动检测MPC02卡的数量、各卡上的轴数,并自动设置每块MPC02控制卡。语法:intauto_setvoid调用例子:auto_set;/*自动检测和自动设置MPC02卡*/描述:可以调用auto_set完成MPC02卡的数量、轴数的自动检测,并自动设置这些参数。该函数在程序中只能调用一次。返回:值如果调用成功,auto_set函数返回总轴数,否则返回0。系统:WINDOWS98、WINDOWS2000注释:参见:函数名:init_board目的:用init_board函数初始化控制卡。语法:intinit_board(void);调用例子:init_board();描述:在用auto_set自动检测和设置之后,必须调用init_board函数来对控制卡进行初始化。init_board函数主要初始化控制卡的各个寄存器、各轴的脉冲输出模式(脉冲/方向)、常速度(2000pps)、梯形速度(初速2000pps,高速8000pps,加减速80000ppss)、矢量常速度(2000pps)、矢量梯形速度(初速2000pps,高速8000pps,加减速80000pps)等等。该函数在程序中只能调用一次。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发返回:值如果调用成功,init_board函数返回0,否则返回-1。系统:WINDOWS98、WINDOWS2000。注释:如果不调用init_board函数初始化,控制卡将不能正常工作。若需改变脉冲输出模式、速度等初始化数据,可调用其它函数来修改。参见:auto_set函数名:get_max_axe目的:get_max_axe用于读取总的控制轴数。语法:intget_max_axe(void);调用例子:max_axe_num=get_max_axe()返回值:get_max_axe返回总控制轴数。系统:WINDOWS98、WINDOWS2000参见:函数名:set_outmode目的:用于设置每个轴的脉冲输出模式以及信号逻辑定义。如果驱动器要求双脉冲(正向脉冲、反向脉冲)控制信号接口,或者需要改变输出信号的逻辑,那么应在init_board函数后调用该函数。语法:intset_outmode(intchintmode,intoutlogic);ch:所设置输出方式的控制轴;mode:脉冲输出模式设置(1为脉冲/方向方式,0为双脉冲方式);outlogic:脉冲输出和方向输出的逻辑设置:0为负逻辑,1为正逻辑。调用例子:set_outmode(2,0,1);/*将第2轴的脉冲输出模式设置为双脉冲模式,正逻辑有效。*/描述:在缺省情况下,init_board函数将所有轴设置为脉冲/方向模式,输出信号为负逻辑。如果驱动器要求双脉冲(正向脉冲和反向脉冲)模式的输入或正逻辑,那么应在init_board函数后调用set_outmode重新设置所要求的模式。注意:控制卡的输出模式应与所连接的驱动器的输入信号模式一致,否则电机将不能正常工作。返回值:如果输出方式设置成功,则set_outmode返回值为0,否则返回-1。系统:WINDOWS98、WINDOWS2000参见:init_board函数名:set_home_mode目的:用于设置各轴回原点运动时检测原点信号的方式。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发语法:intset_home_mode(intch,inthome_mode)ch:是所设置的轴home_mode:回原点运动时检测原点信号的方式(0:仅检测原点接近开关信号,1:检测原点接近开关信号和电机上光电编码器Z相脉冲信号同时出现)。调用例子:set_home_mode(1,1)描述:在被控设备(比如数控机床等)回原点运动时,MPC02卡将自动检测原点信号,并在到达原点位置时自动停止运动。原点信号一般由接近开关发送。但在一些回原点时定位精度要求较高的场合,原点信号除了接近开关信号之外,还要检测执行电机上光电编码器的Z相脉冲,即仅当接近开关信号和Z相脉冲信号同时出现时,才表明已到达原点。函数set_home_mode就是用于设置每个轴在回原点运动时检测原点信号的方式。当home_mode=0时,仅将原点接近开关信号作为原点信号。当home_mode=1时,将原点接近开关信号和Z相脉冲信号两者同时出现作为原点信号。注意:只有执行电机上装有光电编码器时,才能将原点接近开关信号和Z相脉冲信号同时出现设置为回原点运动的检测信号,否则将无法正确完成回原点运动,返回:值如果设置成功返回0,否则返回-1。系统:WINDOWS98、WINDOWS2000。参见:con_home,fast_home。函数名:set_maxspeed目的:用于设置每个轴的最大速度。语法:intset_maxspeed(intch,doublespeed);ch:所设置的控制轴speed:设置的最大速度值单位为脉冲秒pps调用例子:set_maxspeed(2,10000)/*将第2轴的最大速度设置为10000pps*/描述:在缺省情况下,init_board函数将所有轴按卡的型号设置其最大速度,即A型卡为2400000,B型卡为100000。使用时可按照实际输出速度进行设置以获得比较好的速度精度。返回值:如果输出方式设置成功,则set_maxspeed返回值为0,否则返回-1。系统WINDOWS98,WINDOWS2000。参见:set_conspeed函数名:set_conspeed,get_conspeed目的:用set_conspeed函数来设置一个轴在常速运动时的速度。用get_conspeed函数来获取某个轴所设置的常速度。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发语法:intset_conspeed(intch,doubleconspeed);doubleget_conspeed(intch);ch:函数所操作的轴;conspeed:设定的常速度值单位为脉冲秒pps;调用例子:set_conspeed(2,400);speed=get_conspeed(2)描述:函数set_conspeed可以设定在常速运动方式下的速度。如果多次调用这个函数,最后一次设定的值有效,而且在下一次改变之前一直保持有效。返回值:如果常速度值设置成功,set_conspeed返回0值,出错时返回-1。函数get_conspeed返回指定轴的常速度值。系统:WINDOWS98,WINDOWS2000。注释:常速度值一般设置较低,以免造成控制电机(尤其是开环的步进电机)丢步或过冲。如果需要高速运动,最好使用梯形速度或S形速度方式。参见:set_profile,set_vector_conspeed函数名:set_profile,get_profile目的:用set_profile函数来设定在快速运动(包括fast_hmove,fast_vmove,fast_pmove等)方式下的梯形速度的各参数值;用get_profile来读取梯形速度的各参数值。语法:intset_profile(intch,doublels,doublehs,doubleaccel);ch:设定的轴数;ls:设定低速(起始速度)的值单位为pps(脉冲/秒)hs:设定高速(恒速段)的速度值单位为pps(脉冲/秒);accel:设定加速度大小;单位为ppss(脉冲/秒/秒);intget_profile(intch,int*lsint*hslong*accel)double*ls:指定起始速度的指针;double*hs:指向高速的指针;double*accel:指向加速度值的指针。调用例子:set_profile(3,600,6000,10000)get_profile(3,&ls,&hs,&accel)描述:函数set_profile设定一个轴在快速运动方式下的低速(起始速度)、高速、加/减速度值(减速度值等于加速度值)。这几个参数的缺省值分别为200、800、8000。函数get_profile通过指针返回一个轴的梯形速度的低速、高速和加/减速度值。返回值:如果设定参数值成功,set_profile返回0,否则返回-1。如果调用成功,-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发get_profile返回0值,否则返回-1。系统:WINDOWS98、WINDOWS2000参见:set_conspeed,set_vector_conspeed,set_vector_profile函数名:get_rate目的:用get_rate函数来获取当前正在运行的某个轴的速度。语法:doubleget_rate(intch);ch:函数所操作的轴;调用例子:speed=get_rate(2)描述:函数get_rate可以在被控轴运动过程中读取该轴当前的运行速度。返回值:函数get_rate返回指定轴的当前运行速度,单位:每秒脉冲数(pps)系统:WINDOWS9,8WINDOWS2000参见:get_profile函数名:set_s_curveset_s_section目的:用set_s_curve函数来设置某个轴在快速运行时是否采用S形升降速;用set_s_section函数设置S形升降速的S段。语法:intset_s_curve(intch,intmode);intset_s_section(intch,doubleaccel_sec,doubledecel_sec);ch:函数所操作的轴;mode:等于0时,快速运动为梯形升降速;等于1时,为S形升降速;accel_sec:S形升速的S段升速值,单位:每秒脉冲数(pps)decel_sec:S形减速的S段减速值单位每秒脉冲数(pps)调用例子:set_s_curve21;/*把第2轴的升降速设置为S形*/set_s_section(2,100,200)/*升速时从初速到(初速+100)之间为S形,从高速-100到高速之间为S形;降速时从高速到高速-200之间为S形,从(初速+200)到初速之间为S形。注意:其中初速和高速由set_profile设置。描述:对于快速运动方式,为了使升降速过程更为平稳,可以采用S形升降速。函数set_s_curve用于设置指定轴在快速运行时是否采用S形升降速。在S形升降速曲线中,S段的升降速值由set_s_section来设置。返回值:如果调用成功,set_s_curve和set_s_section返回0值,否则返回-1。系统:WINDOWS98、WINDOWS2000参见:set_profile二.运动指令函数-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发按运动类型分类,主要有三种类型:点位运动、连续运动和回原点运动;按运动方式可分为独立运动和插补运动;两种按运动速度可分为常速运动和梯形速度两种。为了描述方便下面将运动指令分为独立运动和插补运动两部分来说明。(1)独立运动函数所谓独立运动指各轴的运动之间没有联动关系,可以是单轴运动,也可以是多轴同时按各自的速度运动。点位运动、连续运动和回原点运动都属于独立运动。独立运动指令的函数名格式:为X_YmoveZ其中:X:由con和fast替代,con表示常速运动,fast表示快速运动;Y:由pv和h替代,p表示点位运动,v表示连续运动,h表示回原点运动;move:为指令主体,表示该指令为运动指令;Z:没有时为单轴运动,为2时表示两轴独立运动,为3时表示三轴独立运动。例如:con_vmove为单轴的常速连续运动函数;con_pmove2为两轴的常速点位运动函数;fast_hmove3为三轴的快速回原点运动指令。对于常速运动指令,运动速度由set_conspeed设定;对于快速运动指令,运动速度由set_profile设定。下面几个运动指令是经常用到的,我们来看看它的含义。点位运动是指被控轴以各自的速度分别移动指定的距离,在到达目标位置时自动停止。注意:在两轴或三轴的点位运动函数中,各轴同时开始运动,但不一定同时到达目标位置。在MPC02函数库中共提供了六个点位运动指令函数:intcon_pmove(intch,longstep);/*一个轴以常速做点位运动*/intfast_pmove(intch,longstep);/*一个轴以快速做点位运动*/intcon_pmove2(intch1,longstep,1intch2,longstep2);/*两轴以常速做点位运动*/intfast_pmove2(intch1,longstep1,intch2,longstep2);/*两轴以快速做点位运动*/intcon_pmove3(intch1,longstep1,intch2,longstep2,intch3,longstep3);/*三个轴以常速做点位运动*/intfast_pmove3(intch1,longstep1,intch2,longstep2,intch3,longstep3);/*三个轴以快速作点位运动*/其中:ch、ch1、ch2、ch3:被控轴的轴号;Step、step1、step2、step3:表示被控轴从当前位置开始移动的距离,正数表示正方向;负数表示负方向,其单位为脉冲数。调用例子:con_pmove(1,-2000);/*第一轴以其常速向负方向移动2000个脉冲的距离*/-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发fast_pmove2(2,5000,3,-1000)/*第二轴以快速向正方向移动5000个脉冲的距离;第三轴以快速向负方向移动1000个脉冲的距离。*/返回值:如果调用成功,这些函数返回0,在出错情况下返回-1。连续运动是指被控轴以各自的速度按给定的方向一直运动,直到碰到限位开关或调用制动函数才会停止,在MPC02函数库中共提供了六个连续运动指令函数:intcon_vmove(intch,intdir);/*一轴以常速连续运动*/intfast_vmove(intch,intdir);/*一轴以快速连续运动*/intcon_vmove2(intch1,intdir1,intch2,intdir2);/*两轴以常速连续运动*/intfast_vmove2(intch1,intdir1,intch2,intdir2);/*两轴以快速连续运动*/intcon_vmove3(intch1,intdir1,intch2,intdir2,intch3,intdir3);/*三个轴以常速连续运动*/intfast_vmove3(intch1,intdir1,intch2,intdir2,intch3,intdir3);/*三个轴以快速连续运动*/其中:ch、ch1、ch2、ch3:被控轴的轴号。Dir、dir1、dir2、dir3:表示被控轴的运动方向,+1表示正方向;-1表示负方向。调用例子:con_vmove(1-1/);/*第一轴以其常速向负方向连续运动*/fast_vmove2(2,1,3,-1);/*第二轴快速向正方向连续运动第三轴快速向负方向连续运动*/返回值:如果调用成功,这些函数返回0,在出错情况下返回-1。回原点运动是指被控轴以各自的速度按给定的方向一直运动,直到碰到原点信号(参见set_home_mode)、限位开关或调用制动函数才会停止。在MPC02函数库中共提供了六个回原点运动指令函数:intcon_hmove(intch,intdir);/*以常速返回原点*/intfast_hmove(intch,intdir);/*以快速返回原点*/intcon_hmove2(intch1,intdir1,intch2,intdir2);/*两轴以常速各自返回原点*/intfast_hmove2(intch1,intdir1,intch2,intdir2);/*两轴以快速各自返回原点*/intcon_hmove3(intch1,intdir1,intch2,intdir2,intch3,intdir3);/*三个轴以常速各自返回原点*/intfast_hmove3(intch1,intdir1,intch2,intdir2,intch3,intdir3);-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发/*三个轴以快速各自返回原点*/其中:ch、ch1、ch2、ch3:被控轴的轴号;dir、dir1、dir2、dir3:表示被控轴的运动方向+1,表示正方向-1;表示负方向。调用例子:con_hmove(1,-1);/*第一轴以其常速向负方向作回原点运动*/fast_hmove2(2,1,3,-1);/*第二轴快速向正方向作回原点运动;第三轴快速向负方向作回原点运动。*/返回值:如果调用成功,这些函数返回0,在出错情况下返回-1。注释:要成功地实现回原点运动,运动轴上应设有常开型原点开关(接近开关或传感器),低电平或下降沿有效。(2)插补运动函数插补运动是指两轴或三轴按照一定的算法进行联动,被控轴同时启动,并同时到达目标位置。插补运动以矢量速度运行,矢量速度分为常矢量速度和梯形矢量速度,与插补运动有关的函数有:intset_vector_conspeed(intcon_speed);/*设置常矢量速度*/intset_vector_profile(doublevec_fl,doublevec_fh,doublevec_ad);/*设置梯形矢量速度*/doubleget_vector_conspeed(void);/*读取矢量常速度*/intget_vector_profile(double*vec_fl,double*vec_fh,double*vec_ad);/*读取矢量梯形速度*/intset_ellipse_ratio(floatratio);/*设置椭圆运动时的两运动轴的比例*/圆弧插补运动是指两个轴以矢量速度(常矢量速度或梯形矢量速度)沿给定圆弧作联动,每个被控轴的运动速度为矢量速度在该轴上的分速度,由于矢量速度的方向在不断改变,各被控轴的运动分速度也在不断改变。各个被控轴同时启动,并同时到达目标位置,并且两个轴的合成运动轨迹为给定的圆弧。MPC02函数库中提供四个圆弧类插补函数:intarc_certer(intch1,intch2,longcen1,longcen2,floatangle);/*两轴以常矢量速度做圆弧插补运动*/intfast_arc_center(intch1,intch2,longcen1,longcen2,floatangle);/*两轴以梯形矢量速度做圆弧插补运动*/intarc_final(intch1,intch2,intdir,longfx,longfy,longradius);/*以常矢量速度沿圆弧运动到指定位置*/inthelical_move(intCHX,intCHY,intCHZ,longcen1,longcen2,floatangle,longpitch);/*在CHX、CHY作圆弧插补运动的同时,CHZ轴作直线运动*/下面对上述函数分别详细说明:-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发函数名:arc_center,fast_arc_center目的:用arc_center函数让两轴以常矢量速度做圆弧运动。语法:intarc_center(intch1,intch2,longcenter1,longcenter2,floatangle);intfast_arc_center(intch1,intch2,longcenter1,longcenter2,floatangle);ch1,ch2:做圆弧运动的两个轴;center1:轴ch1相对于圆弧运动起始点的圆心坐标;center2:轴ch2相对于圆弧运动起始点的圆心坐标;angle:圆弧角,单位为度。angle<0逆时针;angle>0顺时针。调用例子:arc_center(1,3,-2000,0,5400)fast_arc_center(1,2,1000,1000,360);描述:函数arc_center使两个轴同时运动形成一个圆弧,其矢量速度为由set_vector_conspeed设置的常矢量速度。函数fast_arc_center使两个轴同时运动形成一个圆弧,其矢量速度为由set_vector_profile设置的梯形矢量速度。返回值:如果调用成功,函数返回0,在出错的情况下,返回-1。系统:WINDOWS98、WINDOWS2000注释:arc_center可以做任意角度的圆弧运动。如果调用set_ellipse_ratio,可以让arc_center走出椭圆轨迹。fast_arc_center功能相同速度为梯形速度。参见:arc_finalset_ellipse_ratio(3)位置和状态查询函数在运动过程中,如果需要查询某个轴的运动位置或状态,可以调用位置或状态查询函数。函数名:get_abs_pos,get_rel_pos,get_encoder目的:用get_abs_pos读取一个相对于初始位置或原点位置的绝对位置。用get_rel_pos读取一个相对于当前运动起始点的相对位置值。用get_encoder读取一个相对于初始位置或原点位置的编码器反馈的实际位置值。语法:intget_abs_pos(intch,long*abs_pos);intget_rel_pos(intch,long*rel_pos);intget_encoder(intch,long*en_pos);ch:读取位置的轴号;abs_pos:一个指向绝对位置的长整型指针;rel_pos:一个指向相对位置的长整型指针;en_pos:一个指向实际位置的长整型指针;-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发调用例子:temp=get_abs_pos(1,&abs_pos);temp=get_rel_pos(1,&rel_pos);描述:函数get_abs_pos获取指定轴的当前绝对位置,如果执行过回原点运动,那么这个绝对位置是相对于原点位置的;如果没有执行过回原点运动,那么这个绝对位置是相对于开机时的位置。函数get_rel_pos获取对应于当前运动起始点的相对位置值,如果指定轴当前没有运动,那么该轴的相对位置为0。由于这两个函数读取的位置值是由控制卡输出脉冲的数量决定的,所以在丢步或过冲等情况下,不能反映实际的位置值。get_encoder读取光电盘反馈的实际位置。返回值:如果调用成功,get_abs_pos、get_rel_pos和get_encoder返回0值,在出错情况下返回-1。系统:WINDOWS98、WINDOWS2000(4)多指令连续运动讲了那么多的指令,下面一段代码演示如何使两轴在二维平面通过多指令连续运动走出如下图形:set_conspeed(1,1000);//设置1轴常速度set_conspeed(2,1000);//设置2轴常速度set_vector_conspeed(1000);//设置矢量常速度用于插补函数arc_center(1,2,0,2000,180);con_pmove(1,4000);con_pmove(2,4000);arc_center(1,2,2000,0,180);con_pmove(2,-4000);con_pmove(1,4000)arc_center(1,2,0,-2000,180)con_pmove(1,-4000)con_pmove(2,-4000)arc_center(1,2,-2000,0,180)-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发con_pmove(2,4000)con_pmove(1,-4000)通过这个例子,我们就能比较清楚的知道怎样通过指令来控制MPC02的运动,这将有助于我们的设计。2.4MPC02运动控制系统的开发利用MPC02的动态链接库(DLL),开发者可以很快开发出Windows平台下的运动控制系统。MPC02动态链接库是标准的Windows32位动态链接库,选用的开发工具应支持Windows标准的32位DLL调用。以下介绍如何利用常用的开发工具MicrosoftVisualBasic开发基于WINDOWS平台的运动控制程序。2.4.1概述为了开发基于Windows的运动控制程序,用户可以使用VB5.0或更高版本,开发一个简单的VisualBasic控制程序非常容易。按照如下步骤可以快速开发一个简单的控制程序。(1)安装MPC02驱动程序及函数库;(2)用VisualBasic写一个界面程序(3)将MPC02.bas文件添加到VBProject中去;(4)在应用程序中调用运动函数。所有VisualBasic的教材都介绍了如何写介面程序,包括按钮、对话框以及菜单等。对于熟悉VisualBasic和MPC02运动函数库的开发者来说,一个由输入框和命令按钮组成的基于Windows的简单运动程序可以在几分钟内就可以开发出来。当然开发一个复杂的运动应用程序所需的时间可能会长一些。2.4.2动态链接库函数调用方法在VB中调用动态链接库(DLL)中函数应包括两部分工作:l函数声明每一个动态链接库(DLL)中的函数在VB中的声明已经包含在MPC02.bas文件中了,该文件可在MPC02卡软件安装盘\MPC02\Win98\DLL\VB文件夹下找到,用户只需要将该文件添加进VB工程中即可。l函数调用若调用函数的返回值为空或不需要返回值,则按如下方法调用:con_pmove1,2000或-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发Callcon_pmove(1,2000)若要得到函数的返回值,则按如下方法调用:DimrtnAsLongrtn=con_pmove(1,2000)注意:传递的参数数据类型及接收返回值的变量类型应与函数声明的数据类型一致,并且建议函数描述中所有int型(C语言中的整形)和long型(C语言中的长整形)参数及返回值均统一采用Long型(VB中的长整形)数据类型;所有的float(C语言中的单精度浮点型)和double(C语言中的双精度浮点型)参数及返回值均统一采用Double型(VB中的双精度浮点型)数据类型,否则将可能产生无法预料的结果。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发第三章运用VB6.0对MPC02的二次开发3.1界面的设计在VB中,应用面向对象的程序设计方法(OOP),把程序和数据封装起来视为一个对象,而每个对象都是可视的。程序员的设计时只需用现有工具数据界面设计的要求,直接在屏幕上“画”窗口、菜单、按钮、滚动条等不同的类型的对象,并为每个对象设置属性。本程序用VB设计了一个控制MPC02运动的界面如图3.1所示。图3.1MPC02控制卡的界面主要由7个按钮控件、运动参数框、矢量速度框、反馈信息框组成,每个按钮控件实行每个功能,而在运动参数框和矢量速度框里则设置各种参数,从而组成完成各个动作。下面就来介绍一下,界面各控件的功能。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发(1)在运动参数框里,主要设置X、Y轴的轴号。在第二章对MPC02的介绍中,我们知道MPC02可对立体零件的加工,但本程序的设计只针对平面的加工,所以只需要对X、Y轴的设置,默认的轴号设置是轴1、轴2。(2)在矢量速度框里,主要是对各轴速度的设置。框里包括有常速速度、起始速度、最大速度和加速度。在常速加工中,只需要常速速度,在对MPC02函数的调用就只需要常速速度,而其他的速度设置则可以不用理会,这并不会影响到加工的速度。相反,进行快速加工时,则需要起始速度、最大速度和加速度,这时同样不用理会常速速度的设置。矢量速度的默认设置为:常速速度为1000PPS、起始速度为1000PPS、最大速度是5000PPS和加速度为1000PPSS。(3)反馈信息框主要是把轴X、Y的位置显示出来,从而我们可以知道轴在哪个位置,加工到哪一段。(4)控件名为“AUTOCAD”的按钮是用来调用AUTOCAD的,从而在AUTOCAD上进行设置,并以DXF的格式输出。打开AUTOCAD图3.2单击该按钮打开AUTOCAD后,就可以在AUTOCAD进行各种图形的设置,画出我们需要的图形,如图3.3。绘完图后需要把图形进行保存,在这里是把图形保存成DXF格式,这方便于以后的数据处理,如图3.4。(5)控件名为“获取数据”的按钮,主要是把界面的数据赋给数组变量,并AUTOCAD的“DXF”进行处理,把获得的数据存储在特定的地方,为以后MPC02运动控制卡提供数据。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发(6)控件名为“常速加工”的按钮,主要是驱动MPC02控制卡进行常速速度进行运动。(7)控件名为“快速加工”的按钮,主要是驱动MPC02控制卡进行快速速度进行运动。(8)控件名为“缓停”、“急停”、“快速复位”的按钮,分别驱动MPC02控制卡缓停、急停和快速复位的运动。在AUTOCAD进行图形的绘制。图3.3保存为DXF-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发图3.43.2编写程序代码面向对象的程序设计是伴随WINDOWS图形界面的诞生而产生的一种新的程序设计思想,与传统设计有着较大的区别,VisualBasic就采用了面向对象的程序设计思想。所谓“对象”就是一个可操作的实体,如窗体,以及窗体中的按钮、文本框等控件。每个对象都能响应多个不同的事件,每个事件均能驱动一段代码(事件过程),该段代码决定了对象的功能。我们称这种机制为事件驱动。事件由用户的操作触发。例如,单击一个按钮,即触发按钮的Click(单击)事件,处于该事件过程中的代码就会被执行。若用户未进行任何操作(未触发事件),则程序将处于等待状态,整个应用程序就是由彼此独立的事件过程构成。因此,使用VB创建应用程序,就是为各个对象编写事件过程。VisualBasic集成开发环境是一个交互式的开发环境。传统的应用程序开发过程可以分为3个明显的步骤:编码、编译和测试代码。但是VisualBasic与传统的语言不同,它使用交互式方法开发应用程序,使3个步骤之间不再有明显的界限。在大多数语言里,如果编写代码时发生了错误,则在开始编译应用程序时该错误被编译器捕获。此时必须查找并改正该错误,然后再次进行编译。对每个发现的错误都要重复这样的过程。而VisualBasic在编程者输入代码时便进行解释,即时捕获并突出显示大多数语法或拼写错误,看起来就像一位专家在检查代码的输入。除即时捕获错误以外,VisualBasic也在输入代码时部分地编译该编译代码。当准备运行和测试应用程序时,只需极短时间即可完成编译。如果编译器发现了错误,则将错误突出显示于代码中。这是可以更正错误并继续编译,而不需从头开始。由于VisualBasic的交互特性,因此可以在开发应用程序时运行它。通过这种方式,代码运行的效果可以开发时就进行测试,而不必等到编译完成以后。下面就来详细介绍各个控件的编码。3.2.1函数库初始化在应用程序初始化部分添加如下代码,这些代码对每一个应用程序均是必须的:DimRtnAsIntegerRtn=auto_set()'对板卡进行自动设置IfRtn<=0Then'若自动设置错误则返回0SetBoard=-1ExitFunctionEndIfRtn=init_board-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发IfRtn<0ThenSetBoard=-2ExitFunctionEndIfSetBoard=0初始化检测:IfSetBoard<0ThenMsgBox"初始化错误!",vbOKOnly,"MPC02演示错误信息"EndIf以上初始化完成后,各轴速度及模式设置缺省值如下:参数类型参数缺省值修改函数常数运动参数各轴常速度2000Set_conspeed矢量常速度2000Set_vector_conspeed快速运动参数低速2000Set_profile高速8000加/减速度80000矢量地速2000Set_vector_profile矢量高速8000矢量加/减速度80000升降速类型梯形Set_s_curve模式及状态脉冲信号逻辑脉冲/方向方式Set_outmode输出信号逻辑负逻辑Set_outmode回原点运动时检测原点信号方式仅检测原点接近开关信号Set_home_mode指令执行方式立即方式Set_bacth_flag编码器反馈模式反馈信号模式A/B相90度相位差Set_encoder_mode信频数4计数单位每1个脉冲计数1次3.2.2获取数据获取数据分为两个过程,首先是把界面文本框的数据赋给代码程序的变量,其次就是利用DXF的接口程序把有用的数据提取出来,并存在数组中。编程总是在代码窗口进行的,故我们双击“获取数据”按钮进入代码窗口,如图3.5所示。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发双击进入代码窗口图3.5图3.6代码窗口由图3.6可知,程序定义6个变量,axesnumx(X轴)、axesnumy(Y轴)、comspeed(常速速度)、startspeed(起始速度)、highspeed(最大速度)和accel(加速度)。在这个触发事件里,首先把界面的文本框数据赋给这6个变量,其代码为:axesnumx=Val(axesnumx1.Text)'轴号axesnumy=Val(axesnumy1.Text)cmspeed=Val(comspeed1)'常速startspeed=Val(startspeed1.Text)'低速-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发highspeed=Val(highspeed1.Text)'高速accel=Val(accel1.Text)'加速度函数Val(变量名)表示把文本框的字符串转化为数值类型,在程序执行时,文本框的数据就会传到上面那6个变量。触发事件的作用除了变量的赋值以外,还调用了另一个子函数(DXFIN),该函数的作用是DXF的接口程序,把“ENTITIES”模块的数据提取出来,存储在数组里。CallDXFIN’调用子函数3.2.2常速加工(1)MPC02函数MPC02运动控制卡按运动速度可分为常速速度和梯形速度两种,常速加工就是以常速运动进行加工,程序调用了两个MPC02运动函数:Intcon_pmove(intch,longstep)/*一个轴以常速做点为运动*/Intarc_center(intch,intch,longcenter1,longcenter,floatangle)Ch1,ch2:做圆弧运动的两个轴;Center1:轴ch1相对于圆弧运动起始点的圆心坐标;Center2:轴ch2相对于圆弧运动起始点的圆心坐标;Angle:圆弧角,单位为度。Angle<0逆时针;angle>0顺时针。例如:intcon_pmove(1,1000)intarc_center(1,2,1000,2000,5400)(2)代码编程同样双击界面的“常速加工”按钮控件,打开代码窗口编写代码程序,如图3.7所示。图3.7-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发程序首先调用存储的数据,提取直线段,圆弧段的数据,如从直线段信息中,可以获得直线的起始点坐标和终点坐标;圆弧段可以获得圆心坐标、起始点角度和终点角度。由于MPC02运动卡所需的数据和DXF提供的数据不同,所以需要通过转换成MPC02函数需要的数据。其转化方法如下:直线数据的转化:例如要加工这段直线,MPC02运动控制卡需要获得X轴的距离和Y轴的距离,故X轴方向:x2-x1Y轴方向:y2-y1这样就可以转化成MPC02所需要的数据。圆弧段数据的转化:加工圆弧段时,MPC02函数需要圆心的坐标,这可以从DXF文件直接读出,而轴ch1相对于圆弧运动起始点的圆心坐标、轴ch2相对于圆弧运动起始点的圆心坐标和圆弧角,却不能从DXF文件直接读出,需要通过几何关系得出,其转换公式为:轴ch1相对于圆弧运动起始点的圆心坐标:R*sin(angle1)轴ch1相对于圆弧运动起始点的圆心坐标:R*cos(angle2)圆弧角:180°-(angle1+angle2)这样也就把圆弧段的数据转化成MPC02可以利用的数据了。除此MPC02运动函数库使用的单位是脉冲,所以还得把上面的数据转化为脉冲数。MPC02每转动一圈需要4000个脉冲,而一圈是4毫米,1毫米就需要1000个脉冲。运动函数的代码为:直线段:con_pmoveaxesnumx,(cc(i).x2-cc(i).x1)/4*4000-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发con_pmoveaxesnumy,(cc(i).y1-cc(i).y1)/4*4000圆弧段:arc_centeraxesnumx,axesnumy,cc(i).R1*Sin(cc(i).angle1),cc(i).R1*(-Cos(cc(i).angle1)),180-(cc(i).angle1+cc(i).angle2)3.2.4快速加工(1)MPC02函数快速加工就是以梯形速度加工,程序调用的函数为:intfast_move(intch,longstep);/*一轴以快速连续运动*/intfast_arc_center(intch1,intch2,longcenter1,longcenter2,floatangle);/*两个以梯形速度做圆弧插补运动*/ch、ch1、ch2:被控轴的轴号;step:表示被控轴从前位置开始的距离,正数表示正方向;负数表示负方向,其单位为脉冲数。例如:fast_move(1,1000)fast_arc_center(1,2,100,100,120)(2)代码编程同样双击界面“快速加工”按钮控件,进入代码窗口进行编程,其代码如下:直线段:fast_pmoveaxesnumx,(cc(i).x2-cc(i).x1)/4*4000fast_pmoveaxesnumy,(cc(i).y2-cc(i).y1)/4*4000圆弧段:fast_arc_centeraxesnumx,axesnumy,cc(i).R1*Sin(cc(i).angle1),cc(i).R1*(-Cos(cc(i).angle1)),180-(cc(i).angle1+cc(i).angle2)3.2.5缓停、急停和快速复位缓停:decel_stopaxesnumx,axesnumy急停:sudden_stopaxesnumx,axesnumy快速复位:reset_posaxesnumx,axesnumy-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发第四章结论从计算机科学的角度来看,设计与制造的过程是一个关于产品信息的产生、处理、交换和管理的过程。人们利用计算机作为主要技术手段,对产品从构思到投放市场的整个过程中的信息进行分析和处理,生成和运用各种数字和图形信息,进行产品的设计与制造。本论文就是用VisualBasic6.0对AUTOCAD和MPC02运动控制程序的设计开发,使产品从设计到制造实现一体化。在AUTOCAD里,设计人员对零件进行设计开发,并用AUTOCAD的一种格式文件(”*.dxf”文件)保存在某个特定的位置,然后再用Visualbasic6.0编一个dxf接口程序提取有用的数据,例如直线,就要得到直线的起始点的坐标位置和终点的坐标信息,并将其保存起来;vb程序将保存的数据转换成可利用的数据,并驱动电机运动,从而完成对零件的加工。但是,本程序设计并不是很完美,存在某些缺点。例如,本程序只能把图形的设计和制造联系起来,并不能对产品进行其他的设计,如优化设计、有限元分析和结构分析,并不能真正实现CAD/CAM技术,这也有待于以后的继续开发设计。本程序开发的每一个过程都需要通过按钮控件来实现动作,减低了自动化的效率,还有就是常速加工和快速加工并没有放在同一个工序中,而是把常速加工和快速加工分开来实现,这也是程序的缺点之一。-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发致谢语历经近三个月的毕业设计即将结束,敬请各位老师对我的设计过程作最后检查。在这次毕业设计中通过参考、查阅各种有关MPC02的资料和VB书籍,请教极具MPC02二次开发设计经验的李翔龙老师有关MPC02方面的问题,使我在这短暂的时间里,对MPC02的认识有了一个质的飞跃。经过三个月的努力,我相信这次毕业设计一定能为四年的大学生涯划上一个圆满的句号,为将来的事业奠定坚实的基础。在这次设计过程中得到了指导老师李翔龙老师以及许多同学的帮助,特别是李翔龙老师的悉心指导,使我受益匪浅。在此,对关心和指导过我各位老师和帮助过我的同学、特别是李翔龙老师表示衷心的感谢。陈增强2004.6.12-43-\n四川大学本科毕业论文基于AutoCAD和MPC02运动控制程序的开发参考文献:【1】蔡青,高光焘主编.CAD/CAM系统的可视化、集成化、智能化、网络化.西安:西北工业大学出版社,1996【2】龚沛曾,陆慰主编.VisualBasic6.0程序设计教程.第一版.北京:高等教育出版社高等教育出版社,2000.7【3】盛晓敏,邓朝辉主编.先进制造技术.第1版.北京:机械工业出版社,2002年11月【4】步进机电有限公司.MPC02运动控制卡操作手册.2.0版【5】郭朝勇主编.AutoCADR14二次开发技术.第1版.北京:清华大学出版社,1999.4【6】刘荣忠主编.数控技术.第一版.成都:四川大学出版社,2003.6(重印)【7】卢佐潮主编.计算机辅助机械设计.广州:华南理工大学出版社,1984【8】秦鹏飞主编.现代制造工程.北京:清华大学出版社,1998【9】杜裴主编.计算机辅助制造.中国纺织大学出版社,1998【10】殷国富,杨随先.计算机辅助设计与制造技术原理及应用.第一版.成都:四川大学出版社,2001.11月【11】唐荣锡主编.CAD/CAM技术.北京:北京航空航天大学出版社,1996【12】冯辛安主编.CAD/CAM技术概论.北京:机械工业出版社,1995【13】蔡秉枢主编.机械CAD技术基础.北京:清华大学出版社,1996【14】郭朝勇主编.AutoCAD的定制与开发.北京:人民邮电出版社,1998【15】范炳炎主编.数控加工程序编制.北京:航空工业出版社,1990【16】刘雄伟等主编.数控加工理论与编程技术.北京:机械工业出版社,1994【17】王爱玲,俞于谦,王晓春主编.实用数控与编程技术.北京:国防工业出版社,1993【18】何立明主编.单片机应用系统设计.北京:北京航空航天大学,1989【19】航空制造工程手册总编委会.计算机辅助制造工程.北京:航空工业出版社,1995【20】汪应洛等主编.先进制造生产模式与管理研究.中国机械工程,1997.2-43-查看更多