基于运动控制器的SCARA机器人及控制系统设计.doc_第1页
基于运动控制器的SCARA机器人及控制系统设计.doc_第2页
基于运动控制器的SCARA机器人及控制系统设计.doc_第3页
基于运动控制器的SCARA机器人及控制系统设计.doc_第4页
基于运动控制器的SCARA机器人及控制系统设计.doc_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

55基于运动控制器的SCARA机器人及控制系统设计1 绪 论1.1 SCARA机器人的现状、发展SCARA(平面关节型)机器人是一种精密型装配机器人,在水平方向具有顺应性,在垂直方向具有很大的刚性,具有速度快、精度高、柔性好等特点,采用伺服电机驱动,可应用于电子、机械和轻工业等有关产品的自动装配、搬运、调试等工作。迄今为止,SCARA机器人仍被认为是自动加工生产中不可或缺的元素。在各种自动机械手臂的选择中,SCARA是被广泛认可的。由于它的速度、成本效率、可靠性和在工作过程中的小轨迹,使它在很多的工作中仍然是最好的机器人,比如:分配、装载、包装、安放以及装配和码跺等。近年来,其有效载重能力的提高,对智能系统地整合以及末端感应器种类的增加等因素都很好的扩展了SCARA机器人的应用。但是,对于机器人的控制大部分仍是以嵌入式单片机为核心的 ,其运算速度和处理能力远不能满足机器人控制系统飞速发展的需要 ,日益成为阻碍机器人技术进步的瓶颈 。随着以电子计算机和数字电子技术为代表的现代高技术的不断发展 ,尤其是高速度数字信号处理器DSP(Digital Signal Processor)的出现 ,从根本上解决了嵌入式系统运算能力不足的问题 ,并为机器人运动控制系统的改进提供了新的途径 。该设计正是从这 一 点 出 发 , 选 用 控 制 能 力 很 强 的 DSP芯 片作为机器人控制器的主处理器 ,设计出一套功能强大、使用方便的机器人运动控制系统 ,从根本上解决了单片机带来的各种问题 。1.2 运动控制器的现状、发展目前,国内外的运动控制器大致可以分为3类:(1) 以单片机或微处理器作为核心的运动控制器。这类运动控制器速度较慢,精度不高,成本相对较低。在一些只需要低速点位运动控制和对轨迹要求不高的轮廓运动控制场合应用。(2) 以专用芯片(ASIC)作为核心处理器的运动控制器。这类运动控制器结构比较简单,但这类运动控制器大多数只能输出脉冲信号,工作于开环控制方式。这类控制器对单轴的点位控制场合是基本满足要求的,但对于要求多轴协调运动和高速轨迹插补控制的设备,这类运动控制器不能满足要求。(3) 基于PC总线的以DSP和FPGA作为核心处理器的开放式运动控制器。这类开放式运动控制器以DSP芯片作为运动控制器的核心处理器,以PC机作为信息处理平台,运动控制器以插卡形式嵌入PC机,即PC+运动控制器的模式。这样将PC机的信息处理能力和开放式的特点与运动控制器的运动轨迹控制能力有机地结合在一起,具有信息处理能力强、开放程度高、运动轨迹控制准确、通用性好的特点。这类运动控制器充分利用了DSP的高速数据处理功能和FPGA的超强逻辑处理能力,便于设计出功能完善、性能优越的运动控制器。这类运动控制器通常都能提供板上的多轴协调运动控制与复杂的运动轨迹规划、实时的插补运算、误差补偿、伺服滤波算法,能够实现闭环控制。由于采用FPGA技术来进行硬件设计,方便运动控制器供应商根据客户的特殊工艺要求和技术要求进行个性化的定制,形成独特的产品。以上第一类运动控制器由于其性能的限制,在市场上所占份额较少,主要应用于一些单轴简单运动的场合,往往还面临同PLC厂商提供的定位控制模块的激烈竞争。第二类运动控制器因其结构简单、成本较低,占有一定的市场份额,但由于其专用芯片(ASIC)能提供运动控制的基本功能,用户可以利用该芯片设计专用的控制器而分薄了这类运动控制器的市场份额。第三类运动控制器是一种开放式系统,是目前国内外运动控制器产品的主流。2 任务分析2.1 课题的意义通过对SCARA机器人的结构及运用基于PC总线的以DSP和FPGA作为核心处理器的开放式运动控制器对SCARA机器人的设计,设计一款信息处理能力强、开放程度高、并能充分利用DSP的计算能力,进行复杂的运动规划、高速实时多轴插补、误差补偿和更复杂的运动学、动力学计算,使得运动控制精度更高、速度更快、运动更加平稳、通用性更好的SCARA控制系统,方便用户根据SCARA机器人的结构特点对SCARA机器人的控制。2.2 课题的主要任务(1)SCARA机器人机械结构的设计。(2)掌握运动控制器的工作原理。(3)掌握伺服电机、步进电机及相应驱动器的工作原理,能将它们正确连接。(4)运动控制器与PC机、驱动装置硬件的正确连接,并能正确实现简单的调试程序。(5)控制软件的编写,实现控制器对4个电机轴速度、位置的协调控制。(6)制作SCARA型机器人的运动学、动力学模块。(7)利用Delphi做出系统的控制软件。3 系统构建3.1 选择运动控制器3.1.1 根据SCARA工作特点,确定伺服电机的类型 简单的说:伺服电机是含有码盘反馈的,相当于一个闭环的控制系统,它可以接受脉冲或模拟量电压作为指令信号,调速范围一般在0-3000转,且恒扭矩输出。步进电机没有反馈,相当于一个开环控制系统,它只能接受脉冲指令信号,调速范围一般在0-1000转,且扭矩会随着转速的提高而下降。因此在要求精度不高的低速场合下用的比较多。根据以上比较,再加上对SCARA机器人的伺服控制要求,选择如下:大臂选用交流伺服电机+谐波减速器小臂选用交流伺服电机+谐波减速器手腕升降选用交流伺服电机+谐波减速器+丝杠螺母手腕转动选用步进电机3.1.2 确定要控制的电机轴数和电机工作模式(1) 控制电机轴数SCARA机器人有四个自由度,分别是大臂转动,小臂转动,手腕升降,手腕的旋转。由三个伺服电机和一个步进电机驱动。所以可确定SCARA机器人的电机轴数是四轴。(2) 电机工作模式 伺服电机的工作模式为模拟量控制输出 步进电机的工作模式为脉冲量控制输出3.1.3 确定位置检测、反馈模式,选择是否选用光电编码器或光栅尺根据机器人的控制要求对手的重复定位精度是+/-0.05,因此三个伺服电机采用闭环控制,既需要光电编码器;而步进电机采用开环控制,不需光电编码器。3.1.4 选择合适的运动控制器同国内外的运动控制器的比较,选用国内比较好的固高运动控制器 GT-400-SV-PCI。3.2 选择电机及驱动器3.2.1 手腕旋转电机选择(1) 手腕旋转步进电机的计算旋转步进电机下重:手重 m手=0.2kg手开合电机重 m电=0.3kg手最大负载重 m负=30N/9.8N/kg=3kg总重为 m手1=m手+m电+m负=0.2+.03+3=3.5kg假设负载为圆柱体则最大直径为: L=20mm则转动惯量为: J=1/2m=1/23.5=0.004375kg假设角角速度为: a=1.5rad/s转矩为: =0.0043751.5=0.00656Nm(2) 电机选择据最大转矩选择步进电机为:36BF003图3-1 步进电机外型结构图表3-1 步进电机参数电机型号类型相数步距角相电流驱动电压最大静转矩重量36BF003反应式31.51.5ADC24V0.08Nm0.2kg表3-2 步进电机尺寸电机型号dCD1DD2hEL36BF00336272.514.541与其匹配的驱动器型号:SH-3F075M3.2.2 手升降电机的选择(1) 升降电机的计算由于手的升降由电机带动丝杠螺母完成的,所以:假设丝杠移动需时间: t=10s 丝杠螺母的移动速度为:=100/10=10m/s假设丝杠导程为: 丝杠转数为: =10/8=1.25转/s角速度为: 轴向力为: =(0.2+3.5)9.8=36.26N由机器人技术应用 T=lh/2p 其中h=0.92转矩为: T=lh/2p=(36.260.10.92)/(23.14)=0.043Nm功率为: P=Tw=0.0437.85=0.3375 W(2) 电机选择根据以上计算选择伺服电机为:MSMA5A2A1A图3-2 伺服电机外型结构图表3-3 伺服电机参数额定功率(KW)额定转矩(NM)最大转矩(NM)电机惯量额定转速(rpm)最高转速(rpm)编码器制动器0.050.160.480.03300050002500P增量式DC24V 电源无极性LRSLALBLCLDLELF25845303838LZLL重量(kg)3041050.53(3) 驱动器型号为:MSDA5A3A1A(4) 减速器为:图3-3 谐波减速器外型结构图表3-4 谐波减速器参数机型减速比u输入转速 3000 rpm输出力矩T2 (Nm)输出转速n2( rpm)额定输入功率P( kW)25401.0750.012表4-5 谐波减速器尺寸机型dd1d2DD1D2LL1L2L3L4L5L6HH1AC25M486812224121(45)(45)2x63x103.2.3 大臂、小臂电机选择如图所示:(1) 计算电机的驱动力矩和功率 (a)正向递推 i=0: = = 图3-4 大臂和小臂示意图 : (b) 反向递推 i=2: : 所以关节1、2的驱动力矩为 有材料估算大臂质量为:=10kg 小臂质量为:=8kg 丝杠螺母和减速器的质量为:=0.43kg 再手的质量为: 把所有的质量看成在两端点的集中质量,既:=9kg =8.66kg 又因为手的最大速度为:=1.5m/s 所以分大臂和小臂的最大速度都为:=0.75m/s 大臂角速度为: 小臂角速度为: 假设大臂和小臂的角加速度为: 所以:(同时设) 大臂、小臂的驱动功率为: .(2) 电机的选择 小臂电机型号为:MSMA152A1A图3-5 电伺服机外型结构图表3-6 小臂伺服电机参数额定功率(KW)额定转矩(NM)最大转矩(NM)电机惯量额定转速(rpm)最高转速(rpm)编码器制动器1.54.7714.31.88300050002500P增量式DC24V 电源无极性LRSLALBLCLDLELF551911595100135310LZLL重量(kg)92026.5 大臂电机型号为:MSMA082A1A(见电机图4-5)表3-7 大臂电机参数额定功率(KW)额定转矩(NM)最大转矩(NM)电机惯量额定转速(rpm)最高转速(rpm)编码器制动器0.752.47.11.4300050002500P增量式DC24V 电源无极性LRSLALBLCLDLELF651990708038LZLL重量(kg)6177.53.9(3) 驱动器选择 小臂驱动器型号为:MSDA153A1A 大臂驱动器型号为:MSDA083A1A4 减速器选择:(见图3-3)表3-8 大臂和小臂谐波减速器参数机型减速比u输入转速 3000 rpm输出力矩T2 (Nm)输出转速n2 (rpm)额定输入功率P( kW)5012530.0240.097表3-9 大臂和小臂谐波减速器尺寸机型dd1d2d3DD1D2L2LL1L2L3HH1AC50M617018304375823x156x253.3选择传感器3.3.1 判断有无元件传感器选择在新编传感器实用宝典中选择光电开关作为检测有无元件的传感器其中选择光电开关中前卫精品传感器提供的对射式,其参数如下:表3-10 光电传感器参数检测距离对射(H)工作电压工作电流检测体0.25mNP常开 GH025-W1-3EDC6-30VDC80-260mA不透明物消耗电流响应时间工作环境温度防护等级30mA2.5Ms-25-+55IT67(IEC)3.3.2力传感器选择 对与手抓元件的力传感器要求体积小重量小,所以可以选择:MCL-L系列高精度拉压力传感器,其参数如下:图3-6 压力传感器外型结构图表3-11 压力传感器参数量程输出非线性滞后不重复性10N0.5V0.03 % FS0.03 % FS0.03 % FS温漂零位输出激励电压工作温度过载能力0.003% FS/oC2 % FS12V或24V-20-80 oC150% FS3.4 GT系列运动控制器介绍运动控制器是通过对以电机驱动的执行机构等设备进行运动控制,以实现预定运动轨迹目标的装置。可以说,只要有伺服电机应用的场合就离不开运动控制器,它以其特有的灵活性和优异的运动轨迹控制能力使许多工业生产设备焕发出勃勃生机。固高科技有限公司专业开发、生产开放式运动控制器产品,产品可同时控制四个运动轴,实现多轴协调运动。其核心由ADSP2181数字信号处理器和FPGA组成,可以实现高性能的控制计算。它适用于广泛的应用领域,包括机器人、数控机床、木工机械、印刷机械、装配生产线、电子加工设备、激光加工设备等。GT系列运动控制器以IBM-PC及其兼容机为主机,提供标准的ISA总线和PCI总线两个系列的产品。作为选件,在任何一款产品上可以提供RS232串行通讯和PC104通讯接口,方便用户配置系统。运动控制器提供C语言函数库和Windows动态连接库,实现复杂的控制功能。用户能够将这些控制函数与自己控制系统所需的数据处理、界面显示、用户接口等应用程序模块集成在一起,建造符合特定应用要求的控制系统,以适应各种应用领域的要求。3.5 控制器与计算机、驱动器及电机的连接3.5.1 控制器与计算机的连接(1) 用随板配备的62-Pi扁平电缆,将控制器的CN2接口与转接挡板(ACC1)相连接。(2) 关断计算机电源。(3) 对于PCI卡,打开计算机机箱,选择一条空闲的PCI插槽,用螺丝刀卸下对应该插槽的档板条。(4) 将控制卡可靠的插如该槽。(5) 拧紧其上的固定螺丝。(6) 卸下相近插槽的一条挡板条,用螺丝将转接板(ACC1)固定在机箱上。(7) 盖上机箱盖,打开PC电源,启动计算机。3.5.2控制器与驱动器的连接(1) 连接控制卡和端子板图3-7 控制卡和端子板接线示意图(2) 连接端子板电源 端子板的CN3接由用户提供的外部电源。板上标有+12V+24V的端子接+12V+24V,标有OGND的接外部电源地,至于使用的外部电源的具体的电压值,取决外部的传感器和执行机构的供电要求,使用时应根据实际要求选择电源图3-8 端子板电源连接图(3) 专用输入、输出连接 专用输入包括:驱动报警信号、原点信号和限位信号,通过端子板的CN5(CN6、CN7、CN8)、CN12与驱动器及外部开关相连。专用输出包括:驱动允许,驱动报警复位。专用输出通过端子板CN5、CN6、CN7、CN8与驱动器联接。CN5对应1轴,CN6对应2轴,CN7对应3轴,CN8对应4轴。CN5CN8的引脚定义相同。图3-9 专用输入、输出信号连接图(4) 编码器输入连接编码器信号如果是差动输入,可以直接连接到CN5 (CN6、CN7、CN8) 的A+、A-、B+、B-、C+、C-和VCC、GND;如果是单端输入信号,将编码器信号连接到CN5 (CN6、CN7、CN8) 的A+、B+、C+和VCC、GND上,同时将A-、B-、C-悬空。图3-10 编码器双端输图(5) 控制输出信号连接图3-11 控制器输出图(6) 通用数字量信号输入/输出图3-12 通用数字量信号输入/输出图3.5.3 驱动器与电机连接 由驱动器手册可知,选择的电机不同,驱动器与电机的连接方式不同,如下图:图3-13 驱动器与伺服电机接线图3-14 驱动器与步进电机接线 整个系统的硬件接线图参见图纸:3.6 BD(Borland Delphi)简介Delphi的集成开发环境(IDE)中集成了窗体设计器(Form Designer)、对象监视器(Object Inspector)、部件模板(Component palette)、项目管理器(Project Manager)、代码浏览器(Code Explorer)、代码编辑器(Code editor)、数据模块设计器(Data Module Designer)、软件区域工具(software localization tools)、调试等许多工具。作为一种RAD(Rapid Application Development)可视化编程环境,为编程者提供了充分得力的开发和调试工具,有利地缩减了程序开发周期。可以全面支持Windows95、Windows98和Windows NT,并使手工编写的代码降至最少。Delphi使用的是面向对象的Pascal语言(Orient Object Pascal,简称OOP),由于Pascal是一种强类语言,与其它语言相比,它提供了一种快速的编译器。优化的编译模式在很大程度上提高了代码的效率,因此,Delphi自推出以来一直受到人们的青睐。运动控制器是整个运动控制系统的灵魂。用户必需使用通用运动控制器提供的标准功能进行二次开发,根据自己的应用系统的工艺条件,应用运动控制器的相关功能,开发出集成了自己的工艺特点和行业经验的应用系统。应用运动控制器组成一个用户系统的控制流程图如图示:图3-15 用运动控制器组成一个用户系统的控制流程图4 SCARA控制软件介绍机器人的各种运动由各个关节轴系完成 ,机器人控制本质上是对各关节轴系的控制 。每个轴系具有一个自由度 , 可以完成某一方向的转动任务, 所有轴系同时协调运动就可以完成相对复杂的动作 。运动控制系统软件的任务就是对这些关节轴系进行控制 , 具体由底层运动控制器实现 。利用Delphi制作的本SCARA控制系统应用软件主要包括启动界面、主界面、参数设置界面、状态监视界面、运动学分析、动力学分析模块、图形的显示、单轴运动及示教输入、任务的执行等。4.1 启动界面与其它所有的应用软件相同,本SCARA控制系统软件在启动时也会显示一个启动界面,启动界面附图-1示:4.2 主界面作为产业化机器人,高效及尽量简单的算法固然重要,美观友好的人机界面也是机器人设计中的一个重要性组成部分。人机界面是用户与控制系统交互的主要操作界面,本设计所设计的人机界面主窗口分为六个区域:菜单区、工具栏区、状态条区、任务输入区、杆件位置区及图形显示区。菜单区和工具栏区完成界面管理及任务的执行;状态条区显示动态欢迎字体、日期、星期、时间及当前正在执行的任务;任务输入区完成作业任务的输入、编辑、修改或直接调出己保存的文体文件等;杆件位置区及图形显示区主要是用来显示SCARA机器人各杆件要运动的目标位置、当前位置及运动过程中各杆件的运动状态、模拟图形的动态跟踪。界面见附图-2、附图-3示:4.3 参数设置参数设置窗口分为控制器设置页、机器人结构参数设置页、电机参数设置页。这样设计的目的在于提高软件的通用性(能适应不同的用户、控制器、机器人结构、电机)、开放性。可以对运动控制器控制周期、专用输入信号参数,各运动控制轴参数,SCARA机器人各杆件几何参数、关节运动参数等进行设置,并完成控制系统的初始化工作,界面见附图-4、附图-5及附图-6示:4.4 状态监视状态监视窗口用来对SCARA机器人四个关节轴的运动状态、控制模式等进行监视,方便用户随时查询各关节轴的状态。在设计当中,对各关节轴的状态监视采用了一个TTimer定时器组件,由于查询轴状态时总要占用CPU一定的时间,而一般用户不经常查询轴的状态,因此,为了节省CPU的运行时间,在主界面的图形显示区也设置了四个关节轴运动状态标志符。界面见附图-7示:4.5 分析模块分析模块包含运动学分析、动力学分析两大模块。界面如附图-8示:4.5.1 运动学分析模块机器人运动学主要研究两个问题:一个是运动学正问题,即给定机器人手臂、腕部等各构件的几何参数及连接各构件运动的关节变量(位置、速度和加速度),求机器人末端执行器相对于参考坐标系的位置和姿态;另一个是运动学逆问题,即己知各构件的几何参数,机器人末端执行器相对于参考坐标系的位置和姿态,求是否存在实现这个位姿的关节变量。逆问题是机器人设计的关键,因为只有使各关节运动到逆解中求得的值,才能使末端执行器达到工作所要求的位置和姿态。SCARA控制系统软件主要是根据文本编辑框中给定的作业任务(末端执行器的位姿)来求解实现这个位姿的关节变量,并根据各关节变量值确定各关节轴的目标位置,以完成控制功能,因此属于运动学的逆问题。SCARA机器人运动学的逆解,可通过下面的计算实现:(1)已知数据:d1=800mm; l1=600mm; l2=400mm; d4=-100mm.(2)建立各构件的 D-H坐标系:采用(上关节)第一种坐标系。如下图所示:(3)确定各连杆参数和关节变量:如下表所示:表4-1 关节变量序 号关节变量10020030004000(4)各相邻杆件的坐标系间的位姿矩阵:M01= M12=图4-1 SCARA机器人机构运动简图M23= M34=(5)建立运动学方程:M0h=M04=M01M12M23M34= (6)运动学求解: M0h=M04= =其中 ; ;所以有:=; =; =0;=-; =; =0;=0; =0; =1; ; ;令: Pxl1* +l2* Pyl1* +l2* 则:cos2=(Px2+Py2-l12-l22)令: X=l2* Y=l1+l2* Y *-X* =Px两边平方得: Y2= Px2+ 2Px*X* +X2* = =- d4=Pz至此,运动学方程的逆解即可求出。在SCARA控制系统软件中,我们根据作业任务的格式要求,输入末端执行器的所有任务,在一个读取作业任务的过程RunClick(Sender: TObject)中通过调用另一过程Calculate(a:PosAtt)就可实现关节变量的求解,并在人机界面中显示。这两个过程如下:procedure Calculate(a:PosAtt); /计算关节变量的值var L1,L2,middle1,middle2,middle3,middle4:real;begin L1:=StrToFloat(SzDialog.Edit2.Text); L2:=StrToFloat(SzDialog.Edit4.Text); middle1:=1/(2*L1*L2)*(sqr(T4)+sqr(T8)-sqr(L1)-sqr(L2); sita2:=ArcCos(middle1); /弧度值 middle2:=L2*sin(sita2); middle3:=L1+middle1*L2; if T8=0 then middle4:=(-2*T4*middle2+2*sqrt(sqr(T4*middle2)-(sqr(middle2)+sqr(middle3)*(sqr(T4)-sqr(middle3)/(2*(sqr(middle2)+sqr(middle3) else middle4:=(-2*T4*middle2-2*sqrt(sqr(T4*middle2)-(sqr(middle2)+sqr(middle3)*(sqr(T4)-sqr(middle3)/(2*(sqr(middle2)+sqr(middle3); sita1:=ArcSin(middle4); /弧度值 sita3:=ArcSin(T5)-sita1-sita2; /弧度值 d:=T12; /Z位置 if T40 then if T8L1+L2 then begin showmessage(错误:超出可运动的范围!); break; end; Calculate(T); /数据处理部分 RadDegree(sita1,sita2,sita3); /弧度值转换成度 Label6.Caption:=formatfloat(0.00,sita1); Label7.Caption:=formatfloat(0.00,sita2); Label8.Caption:=formatfloat(0.00,sita3); Label9.Caption:=formatfloat(0.00,d); (运动控制执行部分)if SeekEof(f1) then /判断是否循环读取 if N25.Checked then begin Reset(f1); row:=0; end;end; /读整个文件结束 end;end; 当然,要给定作业任务,首先得知道各构件的关节变量值,然后通过一系列的计算,求解末端执行器的位姿,再给定作业任务,这样对于后面的控制来说,控制精度低,也不方便用户使用。对于一般的机器人控制系统来说,都具有示教功能,为方便用户,提高控制精度,在我们所设计的控制软件中,也具备示教输入功能,这在后面的单轴运动及示教输入中将介绍。4.5.2 动力学分析模块机器人的动力学主要是研究其机构的动力学。在机器人动力学的研究中,要解决的问题很多,但归纳起来不外乎两大类:第一类问题是动力学的力分析,或称之为动力学的正问题,它是指己知系统必要的运动,通过运动学分析,计算与己知运动有关的运动链各连杆的位移、速度、加速度,而后求得各关节的驱动力或反力;第二类问题是动力学的运动分析,或称之为动力学的逆问题,它是指己知作用在机构上的外力和各关节上的驱动力,计算各关节或连杆运动的加速度和反力,而后对加速度进行积分求得所需要的速度和位移。在SCARA控制系统软件中,只要我们打开分析窗口,就会启动一个TTimer定时器组件,后台处理程序会对机器人各杆件的角速度、角加速度、线速度、线加速度、惯性力、惯性力矩,各关节驱动力、驱动力矩循环计算、分析(例如:末端执行器是否超出额定速度,是否超载等),并显示在分析窗口中。程序参见软件文件夹Analysis.pas。4.6 单轴运动及示教输入为了避免由于人为的误操作而造成不可预料的事故,在我们的软件设计当中,我们尽量保证在操作过程当中,不能操作的按钮不可用,例如,在多轴协调运动完成作业任务过程当中,与运动有关的设置对话框、单轴运动均不可用,而在单轴运动过程当中,不能执行作业任务。在主界面的菜单栏单击运动(R)/单轴运动或单击工具栏上的(表示机器人关节轴正在运动,单轴运动不可用)就可启动单轴运动模式,同时,变为(单轴运动完成时要单击,否则多轴协调运动不可用),示教输入按钮有效(表示示教输入不可用)。运动控制器为用户提供了一个通用的16位数字量输入/输出口。考虑到实际情况,在我们的设计当中,我们采用了其中的8位输入口、8位输出口来控制并指示关节轴,只要单轴运动模式有效,就有一个TTimer定时器组件循环查询8路输入端口状态,其中,IN1、IN2、IN3及IN4用来实现四个关节轴的正转,IN5、IN6、IN7及IN8用来实现四个关节轴的反转,关节轴在同一时刻不可同时运动,同时,相应的输出端口指示输入端口的状态。在关节轴运动的同时,主界面杆件位置的当前位置标示当前关节轴的位置、图形显示区动态模拟杆件的运动及运动状态。利用各个关节轴的单轴运动使末端执行器运动到具有正确的位姿时,就可采用示教输入按钮在文本编辑框的光标所在位置处插入一个作业任务。4.7 作业任务的实现作业任务的完成是靠四个轴系的协调运动来实现的,我们在控制四个关节轴系协调运动的同时,利用一个TTimer定时器组件对各个关节轴的状态、当前位置进行查询并显示,有过编程经验的人都知道,应用程序中如果只有一个主线程存在,在这个查询过程中CPU的所有资源会陷入循环查询之中,在程序没有执行完之前根本不能做任何事,连普通的拖移界面窗口都无法响应更别说实时的位置和状态显示。为了解决这一难题,有必要引入多线程的概念:4.7.1 多线程的引入在Windows95和Windows NT中,进程是应用程序的一个运行实例,每个进程由若干代码和数据块(从EXE或DLL文件中调入)组成。每个进程还拥有别的资源,比如文件、动态内存地址等。 线程是进程中的一个执行单元,换句话说,线程是程序代码的执行路径。每个进程可以有若干个并行的线程共享进程的时间片,还可以共享进程的内存和数据结构。线程为用户提供了一种在进程内部实现并行操作的机制。进程和线程在Dos操作系统中,用户一次只能运行一个程序。用户在计算机中启动一个程序后,只有等待其完成才能运行下一个程序。这种类型的操作系统称为单任务操作系统。而在Windows操作系统中,用户可以一次启动多个程序,甚至还可以启动一个程序的多个实例,这样的操作系统称为多任务的操作系统。可以看出,静态的程序与在计算机中运行的程序是有明显区别的。为了明确表达这种概念,引入了进程的概念。调入内存准备执行的应用程序称为进程,具体来讲,进程由以下几部分组成。一个私有地址空间,它是进程可以使用的一组虚拟内存地址空间;程序相关的代码、数据;系统资源,如文件、操作系统的同步对象等。它们是在程序执行时由操作系统分配给进程的;至少包含一个线程,这个线程称为基本线程,通过它可以创建多个线程。线程是进程内的一个执行单元,它是操作系统分配CPU运行时间的基本实体,进程内的线程由数据结构、CPU寄存器和堆栈构成。一个进程内可以包含多个线程。每个线程都可以独立运行,并保持自己的堆栈和寄存器值。一个线程可以控制另一个线程的执行,进程的各个线程共享进程的虚拟空间和操作系统为此进程所分配的系统资源。多任务多任务是操作系统将处理器的运行时间分成小的时间片,并分配给多个线程,每个线程在操作系统指定的时间片内运行。当线程使用完所分配的时间片后,线程暂停执行,操作系统再将下一个时间片分配其它线程,因为线程的运行时间非常短,约20ms,因此给人的感觉似乎是多个线程同时运行,如图所示:图4-2 两个线程同时在计算机中运行,CPU通过线程的切换实现多任务操作系统不断地将其从一个线程的执行切换到另一个线程,在宏观时间上,同时执行了两个进程。4.7.2 Delphi中多线程的实现Delphi的VCL(Visual Component Library)的RTL(Run-Timer Library)库把几乎全部的Windows API函数封装起来,而且在此基础上增加了一些安全措施。在实际运用中,我们几乎没有必要直接调用Windows API函数,利用各单元所提供的函数库或例程就可直接对系统低层进行操作。(1)利用RTL库的System单元中定义的一个标准例程BeginThread(2)利用Delphi的VCL库中的TThread对象由于System单元中的标准例程BeginThread完整封装了Win32的CreateThread函数,而且是一个带有异常处理的标准Pascal函数,几乎可以处理所有自身的异常。如果在线程函数中有任何未被处理的异常,会自动产生一个退出代码,或者线程返回的句柄为0,表示线程没有创建成功,则应用程序将会调用EndThread过程(Porcedure EndThread(ExitCode:Integer)),自动终止线程的运行,相对于使用Win32的CreateThread函数,其安全系数大大增强。其完整声明如下:Function BeginThread(SecurityAttributes:Pointer;StackSize:Integer; ThreadFunc:TThreadFunc; Parameter:Pointer; CreationFlags:Integer; Var ThreadId:Integer) : Integer;各参数的使用特点类似CreateThread函数:SecurityAttributes参数:是一个指向SECURITY_ATTRIBUTES结构的指针,其目的用于设置线程的访问权限,nil表示为默认的安全属性。ThreadFunc参数:用于指定一个函数,该函数在线程创建后开始执行代码时调用。Parameter参数:传递给ThreadFunc参数所指定的函数,常为nil,或者设为一个32位的指针,指向一个数据结构。CreationFlags参数:用于指线程创建后是不是立即执行。0表示立即执行,CREATE_SUSPENDED表示处于挂起状态。ThreadId参数:表示为每个线程唯一的识别号,当BeginThread函数返回后,此参数就是线程的识别号。返回值为该线程的句柄,如果为0,表示线程没有创建成功,可以调用Windows的GetLastError函数分析错误的原因。4.7.3 任务执行对运动控制器、机器人各关节轴、杆件的参数设置好之后,就可以执行作业任务,我们所设计的界面,易于操作,只需单击主界面中的或Run(R)/运动。如前面所提到的,在任务执行的过程当中,即要保证任务的正常执行,又要确保各个关节轴的当前位置、状态正确,就需要在任务执行过程中创建一个线程,以保证它和主线程的同步。在我们的设计当中,我们在各个关节轴运动之前先创建了一个线程,具体程序设计如下:hthread:=beginthread(nil,0,mythreadfunc,nil,0,thid);/首先创建一个线程 if hthread=0 then showmessage(创建线程失败);Motion(); /各个关节轴的运动考虑到在实际当中,选择机器人进行工作的目的在于代替人执行重复性的简单工作,因此,对作业任务的执行不只是从第一个任务执行到最后一个任务,而是重复执行这些任务,因此,在我们的设计当中,为了实现这个目标,我们采用查询文件指针变量的位置,让它在执行完所有任务后再返回到文件的开始位置处重复执行这些任务。在软件中只需选择运行(R)/循环执行(循环执行前有)即可,如果要让机器人停止执行这些任务,可以再次选择循环执行(循环执行前无),则机器人各关节轴在运行完这批任务后自动停止。4.8 图形显示机器人各杆件的运动可通过动态的模拟图形显示功能显示出来。在设计当中,如果我们直接采用根据各杆件当前位置而绘制各杆件的位置,调试的结果出乎我们的意料,各杆件的运动轨迹全部显示在界面当中,令我们无法分辨杆件的当前位置,对我们来说,如何才能让它不显示以前的运动轨迹是一大难题。一个最简单的方法就是障眼法,即在显示当前的位置之前先擦除以前的轨迹,也就是先令画笔的颜色与背景色相同,擦除前一个轨迹,再将画笔颜色修改成所需要的颜色。具体到程序中,我们可以利用几个变量来记录各杆件的前一个轨迹,先绘制前一轨迹(与背景色相同,看不见),再绘制当前轨迹。4.9 其它辅助功能4.9.1 编辑功能 作业任务是在一个文本编辑框中给定的,有时,我们也需要对作业任务作一定的修改,因此,我们所设计的文本编辑框也具有一些简单的编辑功能(如剪切、复制、粘贴等)。4.9.2 停止功能无论是单轴运动还是处于执行任务阶段,如果发现参数设置不合理,都可以通过单击来实现暂停功能。4.9.3 关闭各轴运动功能如果由于人为或非人为因素而使关节轴的运动出现了异常情况时,可通过单击来实现关闭各关节轴运动功能。4.9.4 自动回零功能自动回零功能是指自动回到机器人的初始状态。关闭应用软件时,具有自动回零功能,为下次使用作好准备。4.9.5 复位功能 运动控制器出现异常情况而不能保证对各关节轴的正确控制时,可通过单击或选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论