


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 绪 论1.1 课题背景运动控制起源于早期的伺服控制 (Servomechanisn)。简单地说,运动控制就是对机 械运动部件的位置、 速度等进行实时的控制管理, 使其按照预期的运动轨迹和规定的运 动参数进行运动。早期的运动控制技术主要是伴随着数控(CNC)技术、机器人技术(Robotics)和工厂自动化技术的发展而发展的。早期的运动控制器实际上是可以独立运 行的专用的控制器, 往往无需另外的处理器和操作系统支持, 可以独立完成运动控制功 能、工艺技术要求的其他功能和人机交互功能。这类控制器可以成为独立运行 (Sta nd-alo ne的运动控制器。这类控制器主要针对专门的数控机械和其他自动
2、化设备而 设计,往往已根据应用行业的工艺要求设计了相关的功能, 用户只需要按照其协议要求 编写应用加工代码文件, 利用 RS232 或者 DNC 方式传输到控制器, 控制器即可完成相 关的动作。 这类控制器往往不能离开其特定的工艺要求而跨行业应用, 控制器的开放性 仅仅依赖于控制器的加工代码协议,用户不能根据应用要求而重组自己的运动控制系 统。通用运动控制器的发展成为市场的必然需求。由国家组织的开放式运动控制系统的研究始于 1987 年,美国空军在美国政府资助 下发表了著名的NGC(下一代控制器)研究计划”该计划首先提出了开放体系结构控制 器的概念, 这个计划的重要 内容之一便是 提出了 “开
3、放系统体系结构标准规格 (OSACA) ”自1996年开始,美国几个大的科研机构对 NGC计划分别发表了相应的研 究内容 3,如在美国海军支持下,美国国际标准研究院提出了“EMC (增强型机床控制器)”由美国通用、福特和克莱斯勒三大汽车公司提出和研制了“OMAC开放式、模块化体系结构控制器 )” ,其目的是用更开放、更加模块化的控制结构使制造系统更加具有 柔性、更加敏捷。该计划启动后不久便公布了一个名为“OMAC APT ”的规范,并促成了一系列相关研究项目的运行。通用运动控制技术作为自动化技术的一个重要分支,在 20 世纪 90 年代,国际上 发达国家, 例如美国进入快速发展的阶段。 由于有
4、强劲市场需求的推动,通用运动控制 技术发展迅速,应用广泛。近年来,随着通用运动控制技术的不断进步和完善,通用运 动控制器作为一个独立的工业自动化控制类产品, 已经被越来越多的产业领域接受, 并 且它已经达到一个引人瞩目的市场规模。根据 ARC 近期的一份研究,世界通用运动控 制(General Motion Control GMC)市场已超过40亿美元,并且有望在未来 5年内综合增 长率达到 6.3 。目前,通用运动控制器从结构上主要分为如下三大类:(1 ) 基于计算机标准总线的运动控制器它是把具有开放体系结构, 独立于计算机的运动控制器与计算机相结合构成。 这种 运动控制器大都采用DSP或微
5、机芯片作为CPU,可完成运动规划、高速实时插补、伺 服滤波控制和伺服驱动、外部 I/O 之间的标准化通用接口功能,它开放的函数库可供用 户根据不同的需求,在DOS或WINDOWS等平台下自行开发应用软件,组成各种控制 系统。如美国 Deltatau 公司的 PMAC 多轴运动控制器和固高科技 (深圳)有限公司的 GT 系列运动控制器产品等。目前这种运动控制器是市场上的主流产品。(2)Soft 型开放式运动控制器它提供给用户最大的灵活性, 它的运动控制软件全部装在计算机中, 而硬件部分仅 是计算机与伺服驱动和外部 I/O 之间的标准化通用接口。 就像计算机中可以安装各种品 牌的声卡、 CDROM
6、 和相应的驱动程序一样。用户可以在 Windows 平台和其他操作系 统的支持下,利用开放的运动控制内核, 开发所需的控制功能,构成各种类型的高性能 运动控制系统,从而提供给用户更多的选择和灵活性。基于 Soft 型开放式运动控制器 开发的典型产品有美国 MDSI公司的Open CNC、德国PA(Power Automation)公司的 PA8000NT。美国Soft SERVO公司的基于网络的运动控制器和固高科技 (深圳)有限公 司的GO系列运动控制器产品等。Soft型开放式运动控制的特点是开发、制造成本相对 较低,能够给予系统集成商和开发商更加个性化的开发平台。(3)嵌入式结构的运动控制器
7、 这种运动控制器是把计算机嵌入到运动控制器中的一种产品,它能够独立运行。运动控制器与计算机之间的通信依然是靠计算机总线, 实质上是基于总线结构的运动控 制器的一种变种。 对于标准总线的计算机模块, 这种产品采用了更加可靠的总线连接方 式(采用针式连接器 ),更加适合工业应用。在使用中,采用如工业以太网、RS485、SERCOS、 Profibus 等现场网络通信接口联接上级计算机或控制面板。嵌入式的运动控 制器也可配置软盘和硬盘驱动器,甚至可以通过 Internet 进行远程诊断。例如美国 ADEPT公司的SmartController,固高科技公司的GU嵌入式运动控制平台系列产品等。我国在运
8、动控制器产品开发方面相对落后, 1999 年固高科技 (深圳)有限公司在深 圳成立,她是国内第一家专业开发、生产开放式运动控制器产品的公司。其后,国内又 有其他几家公司进入该领域, 但实际上,大多是在国内推广国外生产的运动控制器产品, 真正进行自主开发的公司较少。 “八五”期间,我国广大科研工作者也成功开发了两种数 控平台和华中I型、蓝天I型、航天I型、中华I型等 4种基本系统,这些系统采用 模块化,嵌入式的软、硬件结构。其中以华中I型较具代表性,它采用工业PC机上插接口卡的结构,运行在 DOS 平台上,具有较好的模块化、层次化特征,具有一定扩展 和伸缩性。 但从整体来说这些系统是数控系统,
9、不是独立的开放式运动控制器产品。目 前,我国是世界上经济发展最快的国家, 市场上新设备的控制需求、 传统设备技术升级、 换代对运动控制器的市场需求越来越大。 另外由于市场日益竞争的压力, 系统集成商和 设备制造商要求运动控制系统向开放式方向发展。 同时,经济型数控市场占有率正在逐 渐减小。在这样的形势下,我国可以抓住这一机遇,研制出具有自主知识产权,具有高 水平、高质量、高可靠性的开放式运动控制器产品。 通用运动控制器在国内的应用及发展 自 20 世纪 80 年代初期,通用运动控制器已经开始在国外多个行业应用,尤其是 在微电子行业的应用更加广泛。 而当时运动控制器在我国的应用规模和行业面很小,
10、 国 内也没有厂商开发出通用的运动控制器产品。 1999 年,固高科技 (深圳 )有限公司开始 从事专业开发、生产开放式运动控制器产品。国内生产厂商提供的产品分类 目前,国内的运动控制器生产厂商提供的产品大致可以分为三类:(1)以单片机或微处理器作为核心的运动控制器 这类运动控制器速度较慢,精度不高,成本相对较低。在一些只需要低速点位运动 控制和对轨迹要求不高的轮廓运动控制场合应用。(2)以专用芯片(ASIC)作为核心处理器的运动控制器 这类运动控制器结构比较简单, 但这类运动控制器大多数只能输出脉冲信号, 工作于开环控制方式。 这类控制器对单轴的点位控制场合是基本满足要求的, 但对于要求多
11、轴协调运动和高速轨迹插补控制的设备, 这类运动控制器不能满足要求。 由于这类控制 器不能提供连续插补功能,也没有前瞻功能(Look ahead,特别是对于大量的小线段连 续运动的场合,如模具雕刻,不能使用这类控制器。另外,由于硬件资源的限制,这类 控制器的圆弧插补算法通常都采用逐点比较法,这样一来圆弧插补的精度也不高。(3)基于PC总线的以DSP和FPGA作为核心处理器的开放式运动控制器的核心处 理器,以PC机作为信息处理平台,运动控制器以插卡形式嵌入 PC机,既“ PC+运动 控制器”的模式。这样将 PC 机的信息处理能力有机的结合在一起,具有信息处理能力强、开放程度 高、运动轨迹控制准确、
12、 通用性好的特点。这类运动控制器通常都能提供多轴协调运动 控制与复杂的运动诡计规划、实时的插补运算、误差补偿、伺服滤波算法,能够实现闭 环控制。由于采用FPGA技术来进行硬件设计,方便运动控制器供应商根据客户的特殊 工艺要求和技术要求进行个性化的定制,形成独特的产品。1.2 课题的意义和培养目标运动控制器是近年来出现的一种新型书空装置, 与传统数控装置相比在开放性、 用户二次开发等方面有着极大的优势。GT400是一种通用运动控制器,它与PC计算机结 合,可设计给予Windows的人机操作界面,同时利用其提供的底层控制,可构建满足特 点需要的运动控制功能。目标是通过 对GT400运动控制器的二次
13、开发,利用其底层功 能设计一种基于PC的运动控制实验平台。该题目不仅与机电专业主干课程(数控系统、 伺服驱动、精密机械等)关系密切,同时又反映了机电遗体化技术的新发展。对于加强学生对专业知识的综合应用, 拓展知识面, 培养起分析和解决实际问题的能力都有着重 要的作用。1.3 课题的任务( 1) 多坐标闭环、开环运动控制实验平台功能模块(软件)总体方案的拟定和系统 框图。(2) 标准G代码、M代码前置预处理模块的设计和调试。( 3) 多坐标闭环、开环运动控制实验模块的设计和调试。( 4) 单轴多模式运动、电子齿轮运动实验模块的设计和调试。( 5) 外部中断响应处理实验模块设计和调试。( 6) I
14、/O 功能开发及逻辑控制模块的设计和调试。( 7) 绘制各主要模块的原理框图、程序流程图,编写设计说明书。2 硬件简介2.1 硬件的构成2.1.1 GT400 的简介(功能)固高公司生产的 GT 系列运动控制器,可以同步控制四个运动轴,实现多轴协调运 动。其核心由 ADSP2181 数字信号处理器和 FPGA 组成,可以实现高性能的控制计算。 它适用于广泛的应用领域, 包括机器人、 数控机床、 木工机械、 印刷机械、 装配生产线、 电子加工设备、激光加工设备等。GT系列运动控制器以IBM-PC及其兼容机为主机,提供标准的ISA总线和PCI总 线两个系列的产品。作为选件,在任何一款产品上可以提供
15、RS232串行通讯和PC104通讯接口,方便用户配置系统。运动控制器提供C语言函数库和 Windows动态连接库, 实现复杂的控制功能。 用户能够将这些控制函数与自己控制系统所需的数据处理、 界面 显示、用户接口等应用程序模块集成在一起, 建造符合特定应用要求的控制系统,以适 应各种应用领域的要求。( 1) 电机控制系统的基本组成 运动控制器; 具有 PCI 插槽的 IBM-PC 或其兼容机; STONE步进电机56D-B (两个); STONE驱动器SH208060N (两个); 驱动器电源( +24V); +12V+24V直流电源(用于接口板电源);原点开关、正/负限位开关;对于控制步进电
16、机,运动控制器提供两种不同的控制信号:正脉冲 /负脉冲、脉冲/ 方向。这样,控制器可以与目前任何类型步进电机驱动器配套使用。 在控制步进电机时, 控制模式为开环控制,不需要编码器。(2)系统原理系统原理图2-1 :图2-1系统组成框图采用GT系列运动控制器组成的控制系统典型连接见图2-2 :图2-2控制系统框图主要接口功能及连接在建立控制系统时,将控制卡插入 PC机的PCI插槽后,还需通过转接板和屏蔽线 在计算机外部连接一个配套的端子板。以后电机驱动器、各种外围设备及通讯的连接就 在这块端子板了进行。端子板的布局可见图2-3。图2-3 PCI系列运动控制器的外形结构运动控制卡与端子板连接示意图
17、可见图2-4图2-4运动控制卡与端子板联接示意图3系统构建3.1系统的构建思想在利用运动控制器进行二次开发之前,必须为其建立起相应的开发与控制环境。要 建立起这样一种环境,首先必须对我们所采用的开发平台进行具体的分析, 也就是评估 开发平台是否适用于进行运动控制器的二次开发。在评估当中应注意以下几个方面:开发平台所用的编程语言在GT400用户编程手册中所给出的几种编程语言都适用于作为运动控制器的开发平台。当然,我相信其他的编程工具也是能够实现的,因为我们二次开发所用的是C+Builder,而不是用编程手册当中的任何一个。从编程的实践角度来看,只要是以 C+ (包含C库)为语言的开发平台,基本上
18、都能够用来作为二次开发的编程平台。如 果要区分控制质量的优劣性的话, 我看也只在于程序设计当中所设计的控制方式和对基 本函数调用的方式的不同而已,因为控制器的控制性能主要取决于它的基本控制函数, 因而巧妙地对基本函数进行调用是提高控制性能的关键。 C+Builder 是一个快速的开发 工具,用它来编控制程序就比 VC要方便得多,而且编程界面也是相当的友好。当然, 我并不否认其他的编程工具的优越性, 这取决于不同的人对不同编程工具的熟悉程度和 使用习惯。3.1.2 编程平台使用的方便性我上面也稍微的提到了一点, 在此我再强调一下, 那就是我们所选用的编程平台一 定要尽量是我们所最为熟悉的编程平台
19、。 因为这样, 我们所编出来的程序才会更容易调 试,所出现的错误也更容易解决。 如果对所用的编程平台不熟悉的话,就算它有再好的 功能,也是无法发挥出来的。 同时,还必须花大量的时间去熟悉它的编程方法和调试方 法,这样的话会使你无法将主要精力集中到开发过程中去。3.1.3 对控制器的编程手册进行深入地了解。上面提到我们本次开发所用的控制器是固高公司的运动控制器。 每一个公司在销售 他们的产品同时都会给出相应的技术支持,这些技术支持是我们进行进一步开发的基 础。因此,对他们的技术支持进行详细地了解这一点很重要,为什么这么说呢,就用户 编程手册来说, 编程手册里面给出了控制器和各个控制轴的所有初始化
20、函数, 而这些初 始化函数是建立控制环境的基础, 每一次控制器和控制程序的运行都必须调用相应的初 始化函数,否则运动控制器无法正常工作甚至不能工作。当然,除此之外,基本控制函 数也是绝对不可或缺的,因为所有的二次开发最终都归结到对基本控制函数的调用上。 因此,二次开发的质量取决于如何巧妙对基本函数进行调用以完成你所需要完成的控制 功能,而不是取决于基本函数本身, 因为固高公司所给出的基本函数所能完成功能非常 丰富,无论是直线圆弧插补、中断处理、系统安全监控还是参数设定、输入输出处理或 是状态读回都有相应的基本函数来实现。3.2 系统的组建3.2.1 以 C+ Builder 为二次开发平台的运
21、动控制界面在固高运动控制器的编程手册中给出了三种常用的开发平台, 但在程序设计过程当 中我们发现,其实C+ Builder同样适用于作为固高运动控制器二次开发平台。而且在兼 容性上由于C+ Builder继承全部的C函数库,所以在整个二次开发的过程当中我们还没 有遇到兼容性上的问题。另一方面由于C+ Builder是一种快速开发语言又具备强大的功 能,同时编程界面也相当友好,程序编译起来相当的方便,这对于缺乏丰富的编程实践 经验的我们来说,可以省去不少摸索时间。这样我们就能够把主要的精力集中到运动控 制程序设计上。3.2.2 C+ Builder编程平台简介C+ Builder是Borland
22、公司推出的功能强大、并已彻底解决了 “千年虫”问题的应 用程序开发软件。C+ Builder是一个全新的可视化的C+编程环境,它为我们提供了 一个方便、快捷的 Windows 应用程序开发工具。它使用了 Microsoft Windows 图形用户 界面的许多先进特性和设计思想, 采用了弹性的、 可重用的面向对象程序语言。对于广 大的程序开发人员来讲,使用 C+ Builder 开发应用软件和数据库应用程序,可以大大 地提高编程效率。C+ Builder实际上是C+语言的一种版本,但它与传统的 C+语言有着很大的不 同。一个 C+ Builder 程序首先是应用程序的框架而这一框架正是应用程序
23、的“骨架” 。 在骨架上即使没有附着任何东西, 也仍然可以严格地按照设计运行。 程序员的工作只是 在“骨架”中加入自己的程序。缺省的应用程序是一个空白的窗体,我们可以运行它, 结果得到一个空白窗口。这个窗口具有 Windows 窗口的全部性质:可以放大缩小、移 动、最大化和最小化等。C+ Builder是非常容易使用的编程工具。C+ Builder支持全部的高级C+特性,例如模板、名字空间和操作符重载,此外, C+ Builder完全支持 全面的 Windows API函数,例如割边(cutting-edge)函数DirectX、OLE自动化和ActiveX。使用 C+ Builder 编写的
24、程序在代码的大小和性能上与使用 OWL 和 MFC 编写的代 码大致相当的。那些认为 C+ Builder 难以完成一些特殊的任务的观点是错误的。任何 可以使用 Visual Basic、PowerBuilder、Borland C+或Visual C+可以完成的任务都可以 用 C+ Builder 来完成,甚至在某种程度上可以完成得更好,也更加艺术。快速开发工 具可能会给人留下 C+ Builder 功能不全的错误印象。事实上,除了使用起来容易,设 计起来更方便快捷以外, C+ Builder 完全具备 OWL 和 MFC 的全部功能。3.3 系统方案设计运动控制器是 10000个脉冲转一圈
25、。 运动控制器的伺服周期是 200 微妙。我们决定 采用闭环控制并且设计出来的控制系统界面必须清晰, 操作方便并且用户可以直接在界 面上编写数控程序, 也可以直接调用已写好的程序直接运行。 为了界面看起来美观, 所 以我们将轴的坐标位置显示和一些主要的按钮放在界面右边。 其他功能采用模块化的界 面。总体界面框图见图 3-1图 3-1 系统界面框图3.3.1 界面介绍现将运动控制部分分成以下几个模块:(1)启动页见图 3-2图 3-2 启动页(2)参数设置模块这个模块包括设定系统必须的参数,如:插补周期、编码器的方向、各轴的行程 极限和PID等参数的设置。界面见图3-3和图3-4。图 3-3 一
26、般参数设置图 3-4 PID 参数设置(3)单轴运动模块这部分主要是单轴的手动进给和自动进给。包括增量式手动进给、连续式手动进 给、回零、 S- 曲线控制模式、梯形曲线控制模式、速度曲线控制模式、电子齿轮模式 及 PID 参数的设置对系统的影响。界面见图 3-5 和图 3-6。图 3-5 手动进给图 3-6 自动进给(4)多轴运动模块这部分包括直接插补运动和 NC 代码控制运动。直接插补里面可以实现 XY 直线 插补、XY圆弧插补(圆心角度)和 XY圆弧插补(终点半径)。如果你要继续插补可 以给编辑框里输入需要插补的坐标, 它就会自己执行你要的插补。 NC 代码控制运动是 根据用户给定的参数能
27、自动实现预定的轨迹,同时也能运行从 G 代码编译过来的的参 数。这个模块可运行单段轨迹,也可运行多段连续轨迹。轨迹就显示在本页面上可以 一目了然。界面见图 3-7 和图 3-8 。图 3-7 直接插补 图 3-8 自动插补(5)输出输入控制模块 这部分可以完成运动错误检测及状态恢复、驱动器报警处理、限位状态处理和辅 助功能处理。界面见图 3-9 。图 3-9 输入输出控制(6)状态监视模块这部分可以显示单轴的运动状态和多轴运动状态。在这个界面上我们可以看到那 个轴在哪个运动模式下运动,命令是否有错误,运动是否完成,伺服周期是否太大, 限位开关是否动作,多轴运动是否异常,立即插补运动是否开始和缓
28、冲区是否空等状 态。界面见图 3-10 和图 3-11 。图 3-10 单轴状态监视图 3-11 多轴状态监视(7)帮助模块主要介绍系统的界面、功能和操作要注意的事项。该设计主要包括运动控制、 平台界面和硬件连线三大部分的设计。 在本次设计中,我主 要负责单轴运动模块、多轴运动模块、 NC 代码预处理模块中的程序设计、信息显示模 块和帮助模块。界面见图 3-12 。图 3-12 帮助4 单轴运动4.1 初始化在使用运动控制器之前, 我们必须对它进行必要的初始化和参数设置, 否则控制器 无法工作。4.1.1 错误处理函数为了保证程序安全可靠的运行, 用户必须在程序中加一个错误处理函数。 用户在调
29、 试程序的时候可以检测每一个函数的返回值, 以判断命令的执行状态。 并建立必要的错 误处理机制, 保证程序安全可靠的运行。 运动控制器的命令状态寄存器提供命令出错的 详细原因,主机可通过调用命令 GT_GetCmdSts()得到命令出错的原因。4.1.2 运动控制器初始化运动控制器必须要初始化。运动控制卡有 ISA和PCI两种。我们实验室用的是PCI卡。初始化的函数有GT_Open()GT_Reset()GT_SetSmplTm(200)GT_Axis(1)打开运动控制器设备复位运动控制器设置控制器周期为 200us设置 1 轴为当前轴GT_LmtSns(0)GT_EncSns(0xF)GT_
30、ClrSts() GT_CtrlMode() GT_CloselosLp() GT_SetKp(10) GT_SetKi(6) GT_SetKd(8) GT_SetKvff(0) GT_SetKaff(0) GT_SetMtrBias(10) GT_AxisOn()GT_SetIntrMsk(0) 设置当前轴中断屏蔽字4.1.3 专用输入信号参数设置我们在使用过程中有限位开关和编码器。 所以我们就必须设置限位开关有限电平和编码器方向(仅 SV 卡),我们就要用到专用输入信号参数设置。函数如下:设置 14 轴正、负限位开关为高电平触发 设置编码器方向4.1.4 运动控制轴初始化函数如果要想使轴动
31、起来就必须对轴初始化。 运动控制卡分为SD SE SG SP和SV卡 实验室里的是SV卡,所以我们必须得设置 PID参数。其函数如下:清除当前轴不正确状态 设置为输出模拟量设置为闭环控制设置比例增益为 10设置积分增益为 6 设置微分增益为 8 设置速度前馈为 0 设置加速度前馈为 0 设置输出零点偏移值为 10驱动使能4.1.5 坐标映射要使相应的运动映射到相应的轴上我们就要调用 GT_MapAxis(), 从而建立各轴的运 动和要求的运动诡计之间的运动学传递关系。 运动控制器根据坐标映射关系, 控制各轴 运动,实现要求的运动轨迹。具体的程序可以参考固高公司的编程手册。4.2 运动模式4.2
32、.1 S 曲线控制模式s曲线控制模式的速度、加速度、加加速度的曲线见图 41图4 1S曲线控制模式速度十加速度和加加速度曲线其所有的函数如下:GT_PrflS()GT_SetJerk(0.00001)GT_SetMAcc(0.01)GT_SetVel(10)GT_SetPos(1000000)4.2.2 梯形曲线控制模式设置为s曲线控制模式 设置最大加加速度为 0.00001 设置最大加速度为 0.01 设置其速度为 10 设置其目标位置为 1000000图 4-2 梯形曲线模式的速度曲线设置为梯形曲线模式 设置加速度为 0.01 设置其目标位置为 1000000 设置其速度为 10设置为速度
33、控制模式设置加速度为 0.01设置其速度为 10梯形曲线控制模式速度曲线图见图 4-2其所有的函数如下:GT_PrflT()GT_SetAcc(0.01)GT_SetPos(1000000)GT_SetVel(10)4.2.3 速度曲线控制模式其所有的函数如下:GT_PrflV()GT_SetAcc(0.01)GT_SetVel(10)4.2.4 电子齿轮控制模式其所有的函数如下:GT_Axis(1)GT_PrflG(2)GT_SetRatio(-2)设置当前轴为 1 轴设置为电子齿轮模式并设主轴为 2 轴 设置电子齿轮传动比为 -2不过在使用电子齿轮控制模式的时候一定要先让当前轴以某种模式转
34、动起来后再启 动电子齿轮模式。要不然电子齿轮模式不起作用。4.2.5 手动进给手动操作是模仿 CNC 系统的手动操作。它可以实现微小的位置变化,其流程图见 图 4-3 。图 4-3 手动操作流程图(1) 增量式手动增量式手动就是我们必须先要设置每次增量的脉冲和增量的速度,系统会根据每次增量的脉冲和速度就会完成运动。 用户每次设置好每次增量的脉冲和增量的速度点X+ 、X-、Y+、Y-、Z+或Z-系统就会根据你所选择的轴和方向运动到你所要的位置。其实就 是用单轴模式里的梯形曲线模式。 如果是正的速度设为正的, 如果向负的方向运动就把 速度设为负的。梯形模式在下面介绍。(2) 连续式手动连续式手动其
35、实和增量式手动一样的, 只不过是在增量式手动里用的是梯形曲线模 式,在连续式手动里用的是速度曲线模式。 但是在连续式手动里是直接点 X+、 X-、 Y+、 Y-、Z+或Z-不需要设置每次增量的脉冲和增量的速度系统就会运动到你所要的位置。 还要用到 void_fastcallTMainForm:Button10MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)鼠标点下去时轴就会运动。void_fastcallTMainForm:Button10MouseUp(TObject *Sende
36、r,TMouseButton Button, TShiftState Shift, int X, int Y)鼠标弹上来时轴就会停止运动。停止知用的是 rtn=GT_SmthStp()函数(3) 回零操作回零操作就是不管轴的位置在那快点这个按钮轴就会回到0点去。其实就是设置它的目标位置为 0 点就了。其中用到的函数有:GT_SetAcc(0.2)设置其加速度为 0.2GT_SetPos(0)设置其目标位置为 0GT_SetVel(20)设置其速度为 204.2.6 自动进给固高公司提供的单轴运动中有 S曲线控制模式、梯形曲线控制模式、速度控制模 式、电子齿轮控制模式四种控制模式。 各种模式最后
37、都要有参数刷新,它就是让参数生 效的。其流程图见图 4-4。图 4-4 自动进给流程图4.3 参数刷新4.3.1 普通参数刷新普通参数刷新调用的是GT_Update()和GT_MltiUpdt()两个命令。GT_Update()是实现当 前轴立即刷新的。使当前轴的运动参数或是缓冲区命令生效。GT_MltiUpdt() 是实现多轴运动参数(命令)立即刷新。即多个控制轴同步刷新参数。 如果希望多个控制轴的运动同步的情况下,主机可采用此命令来实现多控制轴运动同 步。4.3.2 断点参数刷新主机可以设定某一个条件(断点)当控制轴运动满足该条件时,控制器将自动刷新控制轴参数(命令)。其函数主要如下:GT
38、_AuUpdtOn() GT_AuUpdtOff() GT_GetBrkCn() GT_PosBrk () GT_NegBrk () GT_ExtBrk () GT_MtnBrk () GT_BrkOff ()设置当前轴控制参数和命令自动更新 关闭当前轴控制参数和命令自动更新 读取当前轴断点位置比较值 设置当前轴断点条件为大于断点位置 设置当前轴断点条件为小于断点位置 设置当前轴原点信号触发断点模式 设置当前轴运动到位触发断点模式 清除当前轴断点,并关闭断点模式4.4 开闭环控制SV运动控制卡有开环和闭环两种方式。4.4.1 开环控制调用GT_CloseLp()命令,当前轴工作在闭环方式下,运
39、动控制器将当前规划的运 动位置、速度、加速度送入数字伺服滤波器, 与反馈的实际位置进行补角获得控制输出 信号。这种方式能够实现准确的位置控制。 但是我们必须设置好数字伺服滤波器的参数。4.4.2 闭环控制调用GT_OpenLp()命令,当前轴工作在开环方式下,允许主机通过GT_SetMtrCmd()命令直接设置运动控制器的控制轴输出信号。 这种方式主要用于秩序转矩控制的运动或 是标定驱动器,运动控制器无法实现准确的位置控制。5 多轴运动多轴运动是两个或是两个以上(最多是四个)的轴协调运动包括直线插补、圆弧插补(圆心角度)、圆弧插补(终点半径) 。其流程图见图 51。图 5-1 直接插补流程图5
40、.1 单段轨迹运动5.1.1 直线插补直线插补分为两维、三维和四维。其函数主要如下:GT_LnXY()GT_LnXYZ()GT_LnXYZA()5.1.2 圆弧插补(圆心角度)GT_ArcXY()GT_ArcYZ()GT_ArcZX()5.1.3 圆弧插补(终点半径)GT_ArcXYP()GT_ArcYZP()GT_ArcZXP()5.2 多段轨迹连续运动两维直线插补 三维直线插补 四维直线插补XY 平面圆弧插补(圆心角度)YZ 平面圆弧插补(圆心角度)ZX 平面圆弧插补(圆心角度)XY 平面圆弧插补(终点半径)YZ 平面圆弧插补(终点半径)ZX 平面圆弧插补(终点半径)如果要实现多段轨迹连续
41、运动就要用到缓冲区和缓冲区的命令。缓冲区是一个 4096Xl6Bit环行队列。缓冲区满时拒绝接受用户输入的多轴协调运动命令,并返回缓 冲区满的信息。在启动缓冲区中的命令后,随着命令的执行,缓冲区会有新的空间,用 户可以继续发送更多的命令。GT_StrtList()打开并清空缓冲区GT_MvXY()定位缓冲区坐标起点(两维)GT_MvXYZ()定位缓冲区坐标起点(三维)GT_MvXYZA()定位缓冲区坐标起点(四维)GT_AddList()再一次打开缓冲区GT_EndList()关闭缓冲区GT_SetSynVel()设置多轴协调运动轨迹切线速度GT_SetSynAcc()设置多轴协调运动轨迹切线
42、加速度GT_StrtMtn()启动缓冲区中坐标系命令执行GT_StpMtn()平滑停止坐标系运动GT_EStpMtn()紧急停止坐标系运动GT_SmthStp ()平滑停止单轴运动GT_AbptStp ()紧急停止单轴运动5.3 NC 代码控制模式要想使我们的系统更有大众化就必须别的系统有的我们的系统也得有呀。 所以我们 设计的机电一体化运动控制器实验平台和 CNC系统一样也可以识别NC代码,不过由于 时间的原因没有把M代码加上去,还希望下一届的同学能够加上去, 使这个系统更加完 善。系统能够识别NC代码当然就会有G代码解释模块了。5.3.1 G 代码解释1) 快速定位不一定每一个运动都从原点
43、开始。所以在 G 代码解释前,必须有快速定位。 其程序如下:G00(double X, double Y)short rtn;short aix;unsigned short status;rtn=GT_EndList();error(rtn); / 关闭缓冲区rtn=GT_GetCrdSts(&status); error(rtn); / 读取缓冲区状态 while(!(status&0x1) / 等待缓冲区空 rtn=GT_GetCrdSts(&status); error(rtn); /重新复位GTInitial(); /AxisInitial();rtn=GT_
44、Axis(1);error(rtn);rtn=GT_SetAtlPos(long)m_prePos.X); error(rtn); / 刷新当前轴的坐标rtn=GT_SetAcc(0.01); rtn=GT_SetVel(MAXSPEED); rtn=GT_SetPos(long)X); rtn=GT_Axis(2);error(rtn);error(rtn);error(rtn); / 以最大速度运动到目标位置error(rtn);rtn=GT_SetAtlPos(long)m_prePos.Y); error(rtn); rtn=GT_SetAcc(0.01);error(rtn);rtn
45、=GT_SetVel(MAXSPEED);error(rtn);rtn=GT_SetPos(long)Y);error(rtn);/ 两轴同时刷新rtn=GT_MltiUpdt(0x5); error(rtn);/error(rtn); / 以后停轴为当前轴 error(rtn); / 查询当前轴的轴状态寄存器 / 等待定位结束aix=fabs(X-m_prePos.X)>=fabs(Y-m_prePos.Y)?1:3; / 判断哪个轴后停 rtn=GT_Axis(aix);rtn=GT_GetSts(&status); while(status&0x400)rtn=GT
46、_GetSts(&status); error(rtn);/再一次初始化坐标系运动将各轴的坐标刷新保存本次运动的终点坐标MotInit(0 , 0);/rtn=GT_Axis(1); / rtn=GT_SetAtlPos(long)X); rtn=GT_Axis(2); rtn=GT_SetAtlPos(long)Y);m_prePos.X=X; m_prePos.Y=Y; / 从上到下,依次做了四件事(已经用虚线隔开) : 查询并等待插补运动结束 两轴同时刷新,实现快速定位 查询并等待定位结束 重新为插补运动作好初始化 其流程图见图 5 2。缓冲区空调用MotGOO(X,Y)关闭缓冲
47、区查询坐标系状态寄存器初始化系统多轴刷新目标位置为(X,Y)以后停轴为准查询轴状态寄存器初始化坐标系运动刷新各轴坐标并保存该坐标图5-2G代码解释流程图(2) G代码解释的编程思想在考虑G代码之前,我们充分了解运动控制器提供的运动函数,已经能够通过调 用这些函数来实现简单曲线插补,使得在底层已经具备了走G01和G02/G03的能力。为简化解释程序的设计难度,我们假设输入的加工程序都是正确的,这样就不必对 加工程序进行语法的检测。另外,在功能上,暂时先实现 G00、G01、G02、G03四条 基本的准备指令,以实现运动为目标,其它的功能可在后续扩充。基本的解释思路是,把一段 G代码看成一个字符串
48、,对它进行扫描,每判断出一 句程序段,便转入解释,作相应的处理,然后继续扫描,判断出程序段再转入解释,直 到所有字符都扫描完为止。一般数控系统的程序段以“N开头,用“;”作结束符,但也有些系统没有结束符。 考虑到程序段之间一般都要换行,我可以直接拿换行符“n”作为程序段的结束符。从显示的效果看我们系统中的 G代码程序段就没有结束符,但在录入程序时需要注意每 写一个程序段应回车换行才能被有效执行。完成解释工作函数是 Gcode(char *head, char *end),它有两个指针形参数分别指向 一个加工程序段的首字符和尾字符。它的作用就是完成加工程序段的解释和处理。现在如果输入两段加工程序
49、:NOO GOO X100 Y500N01 G01 X100 Y0 F0.5实际在内存中的存储形式见表5- 1:表5- 1存储形式012345678910111213N00G00X100Y1415161718192021222324252627500nN01G01X1282930313233343536373839404100Y0F0.5n0对字符串进行扫描,从第0个字符N开始,到第17个发现字符“n”程序段结束,并用head和end来定位起始位置,便可用 Gcode(head, end来解释。第一段解释完后, head指向第18个字符“ N ,直到end指向第38个字符“ n”又转入第二段的
50、解释。 当发现最后的“ 0 ”字符串结束,不再有加工代码,程序也至此结束。这个过程用C语言描述就是:char *s= ” N00 G00 X100 Y500n”;char *head=s;char *end;int n=0;/扫描累加器int lin e=0; /程序段累加器while(*(head+n)!= 0')程序未结束时if(*(head+n)= n' )/判断出一个程序段lin e+;end=head+n;定位尾字符Gcode(head, end) 进行解释head=end+;指向下一个程序段的首字符n=0;/扫描累加器清零n+;这里的Gcode函数可以看成一个黑匣子
51、,只要告诉它一个加工程序段的位置所在, 它就能作出解释,完成G代码中的动作。下面,将具体介绍一下,Geode函数的实现过程。在之前,我们已经引入坐标系运 动类,它是整个数控系统的核心。其中的三个成员函数:MotG00(double X, double Y)、MotG01(double X, double Y, double F)、MotG02(double X, double Y, double F, short dir)分 别用来实现快速定位、直线插补和圆弧插补的运动功能。它们是我们在解释G代码后需 要调用的。注意到 MotG02中有个方向参数dir,当dir=1时走顺圆,当dir=-1时走
52、逆 圆。通过改变参数来区分 G02和G03,这样可以避免定义两个功能基本几乎完全相同 的函数。我们还是以刚才的加工代码为例,来看第一条程序段:N00 G00 X100 Y500。大多数G代码都是由若干个指令字(字母)和数字(可以是负数和小数)组成。而且字母 不会单独出现,每个字母后面必有数字与它对应。这为我们分析G代码提供了依据。我们对G代码进行分离,用两个数组:char code和double data分别存放代码中 的字母和数字。于是有表5-2 :表5-2 :代码整理后的结果code012345NGXY0date0123450010050000这一步的完成是关键,接下来的解释都是围绕这两个
53、数组展开的用两个指针pCode和pData来分别指向code和data,进行扫描。扫描的终点就是 code末尾处的 0'字符。各动作是对字母和相应的数字进行判别实现的。过程见表 5-3。表5-3 :字母与动作的对应*pCodeNGXY0*pData0123动作无动作执 行G00执 行G01执 行G02执 行G03将pData 所指的 数据赋 给变量x将pData 所指的 数据赋 给变量y扫描结束对这条G代码的解释过程见图5-3图5-3代码解释示意图G01和G02/G03的解释过程与G00类似,无非多了对进给量f和r的赋值,而执行的是 MotG01(x, y, f),Mot02(x, y
54、, r, f, 1)/MotG02(x, y, f, r, -1) 0(3) G代码解释的具体实现上面讲的是G代码解释的编程思想,在具体实现中,为了提高程序的安全性和可扩展性,我们用类来封装,并将G代码的分离和执行动作分开来,分别用GcodeTrans和GcodeAct来处理,以避免单个函数的代码过于冗长,不易调试排错。G代码处理类的声明为:class TGcode /G代码处理类public:Tgcode();void GcodeCheck(); /语法检查void GcodeTra ns(char *head, char *en d);/ 代码转换short GcodeAct();/代码执
55、行private:char m_code10;/ 指令数组double m_data10; / 数据数组Tm apMotion m_motio n;/内含的运动类m_status; / 保存的代码状态成员函数中还有一个执行语法检查功能的GcodeCheck(),可以在后续得以补充,但因时间和精力有限,在我们这次设计中并没有添加代码。G代码解释中的数据都为私有不与外界交流。其中, m_code10用来存储分离后的 字母;m_data10用来存储分离后的数据;m_motion是一个内含的运动对象,用来完成 运动任务;m_status是一个自定义的结构体(TgcdStatus),用来保存G代码解释过程中 一系列的状态信息,这是一个重要的结构体,模态指令和相对编程的实现都有赖于它。代码运行时的状态运动参数工件坐标原点代码标志TgcdStatus的声明为: struct TgcdStatus /G double x;double y;double f;double r;/double x0;/double y0;short
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 几百几十数乘以一位数综合测试试题带答案
- 特别声明与工作证明的联合书证(7篇)
- 营销代理服务合同及业绩考核
- 娱乐场所演出活动合同
- 云南省特色农业绿色发展水平评价以及时空演变趋势研究
- 历史事件的影响事件作文(8篇)
- 随机比例方程的周期测度以及周期解研究
- 晚清日语翻译官刘庆汾研究
- 循环来源细胞外囊泡通过调节神经炎症和Tregs免疫反应影响小鼠缺血性脑卒中转归
- 锂离子电池三元正极材料LiNi0.6Co0.2Mn0.2O2的制备及利用镧系元素修饰改性的研究
- 肿瘤病人护理讲课
- 安全生产管理的工作流程与规范
- 第三小学花样跳绳校本教材(一至六年级通用)
- 《大数据技术原理与应用(第3版)》期末复习题库(含答案)
- 第13课第1课时立足专业谋划发展【中职专用】《心理健康与职业生涯》(高教版2023基础模块)
- 建筑施工安全管理及扬尘治理检查投标方案(技术方案)
- 供应商黑名单
- 班主任育人故事(通用17篇)
- 食材配送投标方案(技术方案)
- 第三章 结构材料的力学性能及指标
- 国开经济法律基础形考任务国开电大《经济法律基础》形考任务3答案
评论
0/150
提交评论