《3074.工业机器人控制系统.doc》由会员分享,可在线阅读,更多相关《3074.工业机器人控制系统.doc(50页珍藏版)》请在三一办公上搜索。
1、 第一章 绪论1.1 工业机器人的发展及分类1.1.1 工业机器人的发展 工业机器人的发展通常可规划分为三代: 第一代工业机器人:通常是指目前国际上商品化与使用化的“可编程的工业机器人”,又称“示教再现工业机器人”,即为了让工业机器人完成某项作业,首先由操作者将完成该作业所需要的各种知识(如运动轨迹、作业条件、作业顺序和作业时间等),通过直接或间接手段,对工业机器人进行“示教”,工业机器人将这些知识记忆下来后,即可根据“再现”指令,在一定精度范围内,忠实的重复再现各种被示教的动作。1962年美国万能自动化公司的第一台Unimate工业机器人在美国通用汽车公司投入使用,标志着第一代工业机器人的诞
2、生。 第二代工业机器人:通常是指具有某种智能(如触觉、力觉、视觉等)功能的“智能机器人”。即有传感器得到触觉、力觉和视觉等信息计算机处理后,控制机器人的操作机完成相应的适当操作。1982年美国通用汽车在装配线上为工业机器人装备了视觉系统,从而宣布了新一代智能工业机器人的问世。 第三代工业机器人:即所谓的“只治式工业机器人”。它不仅具有感知功能,而且还有一定的决策及规划能力。第一代工业机器人目前仍处在实验室研究阶段。工业机器人经历了诞生-成长-成熟期后,已成为制造业中不可缺少的核心装备,世界上有约75万台工业机器人正与工人朋友并肩战斗在个条生产线上,特种机器人作为机器人家族的后起之秀,由于其用途
3、广泛而大有后来居上之势,仿人机器人、农业机器人、服务机器人、水下机器人、医疗机器人、军用机器人、娱乐机器人等各种用途发特种机器人纷纷面世,而且正以飞快的速度向实用化迈进。 我国的工业机器人从80年代“七五”科技攻关开始起步,在国家的支持下,通过“七五”、“八五”科技攻关,目前已基本掌握了机器人的操作机的设计制造技术、控制系统硬件和软件设计技术、运动学和轨迹规划技术、生产了部分机器人的关键元器件,开发出喷漆、焊弧、点焊、装配、搬运等机器人;其中有130多台配套喷漆机器人在二十与家企业的近30条自动喷漆生产线上获得规模应用,弧焊机器人已应用在汽车制造厂的焊装线上。 但总的来看,我国的工业机器人技术
4、及其工程应用水平和国外比还有一定的距离,如:可靠性低于国外产品;机器人应工程起步较晚,应用领域窄,生产线系统技术与国外比有差距;在应用规模上,我国已安装的国产工业机器人约200台,约占全球已安装台数的万分之四。以上原因主要是没有形成机器人产业,当前我国的机器人生产都是应用户的要求,“一客户,一次重新设计”,品种规格多、批量小、零部件通用化程度低、供货周期长、成本也不低,而且质量、可靠性不稳定。因此迫切需要解决产业化前期的关键技术,对产品进行全面规划,搞好系列化、通用化、模化设计,积极推进产业化进程。1.1.2 工业机器人的分类工业机器人按不同的方法可分下述类型 工业机器人按操作机坐标形式分以下
5、几类:(坐标形式是指操作机的手臂在运动时所取的参考坐标系的形式。) (1) 直角坐标型工业机器人 其运动部分由三个相互垂直的直线移动(即PPP)组成,其工作空间图形为长方形。它在各个轴向的移动距离,可在各个坐标轴上直接读出,直观性强,易于位置和姿态的编程计算,定位精度高,控制无耦合,结构简单,但机体所占空间体积大,动作范围小,灵活性差,难与其他工业机器人协调工作。 (2) 圆柱坐标型工业机器人 其运动形式是通过一个转动和两个移动组成的运动系统来实现的,其工作空间图形为圆柱,与直角坐标型工业机器人相比,在相同的工作空间条件下,机体所占体积小,而运动范围大,其位置精度仅次于直角坐标型机器人,难与其
6、他工业机器人协调工作。 (3) 球坐标型工业机器人 又称极坐标型工业机器人,其手臂的运动由两个转动和一个直线移动(即RRP,一个回转,一个俯仰和一个伸缩运动)所组成,其工作空间为一球体,它可以作上下俯仰动作并能抓取地面上或教低位置的协调工件,其位置精度高,位置误差与臂长成正比。 (4) 多关节型工业机器人又称回转坐标型工业机器人,这种工业机器人的手臂与人一体上肢类似,其前三个关节是回转副(即RRR),该工业机器人一般由立柱和大小臂组成,立柱与大臂见形成肩关节,大臂和小臂间形成肘关节,可使大臂做回转运动和俯仰摆动,小臂做仰俯摆动。其结构最紧凑,灵活性大,占地面积最小,能与其他工业机器人协调工作,
7、但位置精度教低,有平衡问题,控制耦合,这种工业机器人应用越来越广泛。(5) 平面关节型工业机器人它采用一个移动关节和两个回转关节(即PRR),移动关节实现上下运动,而两个回转关节则控制前后、左右运动。这种形式的工业机器人又称(SCARA(Seletive Compliance Assembly Robot Arm)装配机器人。在水平方向则具有柔顺性,而在垂直方向则有教大的刚性。它结构简单,动作灵活,多用于装配作业中,特别适合小规格零件的插接装配,如在电子工业的插接、装配中应用广泛。工业机器人按驱动方式分以下几类:(1)气动式工业机器人 这类工业机器人以压缩空气来驱动操作机,其优点是空气来源方便
8、,动作迅速,结构简单造价低,无污染,缺点是空气具有可压缩性,导致工作速度的稳定性较差,又因气源压力一般只有6kPa左右,所以这类工业机器人抓举力较小,一般只有几十牛顿,最大百余牛顿。(2)液压式工业机器人 液压压力比气压压力高得多,一般为70kPa左右,故液压传动工业机器人具有较大的抓举能力,可达上千牛顿。这类工业机器人结构紧凑,传动平稳,动作灵敏,但对密封要求较高,且不宜在高温或低温环境下工作。(3) 电动式工业机器人 这是目前用得最多的一类工业机器人,不仅因为电动机品种众多,为工业机器人设计提供了多种选择,也因为它们可以运用多种灵活控制的方法。早期多采用步进电机驱动,后来发展了直流伺服驱动
9、单元,目前交流伺服驱动单元也在迅速发展。这些驱动单元或是直接驱动操作机,或是通过诸如谐波减速器的装置来减速后驱动,结构十分紧凑、简单。1.2 工业机器人控制系统1.2.1 工业机器人控制系统的特点 工业机器人的控制技术是在传统机械系统的控制技术的基础上发展起来的,因此两者之间并无根本的不同但工业机器人控制系统也有许多特殊之处。其特点如下: (1) 工业机器人有若干个关节,典型工业机器人有五六个关节,每个关节由一个伺服系统控制,多个关节的运动要求各个伺服系统协同工作。 (2)工业机器人的工作任务是要求操作机的手部进行空间点位运动或连续轨迹运动,对工业机器人的运动控制,需要进行复杂的坐标变换运算,
10、以及矩阵函数的逆运算。 (3) 工业机器人的数学模型是一个多变量、非线性和变参数的复杂模型,各变量之间还存在着耦合,因此工业机器人的控制中经常使用前馈、补偿、解耦和自适应等复杂控制技术。(4)较高级的工业机器人要求对环境条件、控制指令进行测定和分析,采用计算机建立庞大的信息库,用人工智能的方法进行控制、决策、管理和操作,按照给定的要求,自动选择最佳控制规律。工业机器人的控制系统发基本要求有: (1)实现对工业机器人的位置、速度、加速度等控制功能,对于连续轨迹运动的工业机器人还必须具有轨迹的规划与控制功能。 (2)方便的人-机交互功能,操作人员采用直接指令代码对工业机器人进行作用指示。使用工业机
11、器人具有作业知识的记忆、修正和工作程序的跳转功能。(3) 具有对外部环境(包括作业条件)的检测和感觉功能。为使工业机器人具有对外部状态变化的适应能力,工业机器人应能对诸如视觉、力觉、触觉等有关信息进行测量、识别、判断、理解等功能。在自动化生产线中,工业机器人应用与其它设备交换信息,协调工作的能力。1.2.2 工业机器人控制系统的分类:工业机器人控制系统可以从不同角度分类,如控制运动的方式不同,可为关节控制、笛卡尔空间运动控制和自适应控制;按轨迹控制方式的不同,可分为点位控制和连续轨迹控制;按速度控制方式的不同,可分为速度控制、加速度控制、力控制。程序控制系统:给每个自由度施加一定规律的控制作用
12、,机器人就可实现要求的空间轨迹。自适应控制系统:当外界条件变化时,为保证所要求的品质或为了随着经验的积累而自行改善控制品质,其过程是基于操作机的状态和伺服误差的观察,再调整非线性模型的参数,一直到误差消失为止。这种系统的结构和参数能随时间和条件自动改变。人工智能系统:事先无法编制运动程序,而是要求在运动过程中根据所获得的周围状态信息,实时确定控制作用。当外界条件变化时,为保证所要求的品质或为了随着经验的积累而自行改善控制品质,其过程是基于操作机的状态和伺服误差的观察,再调整非线性模型的参数,一直到误差消失为止。这种系统的结构和参数能随时间和条件自动改变。因而本系统是一种自适应控制系统。第二章
13、基于运动卡的控制系统的建立2.1总体系统的构建2.1.1 总体方案的确定 机器人控制系统是一种典型的多轴实时运动控制系统。传统的机器人控制系统基本上是设计者基于自己的独立结构和生产目的而开发,它采用了专用计算机、专用机器人语言、专用微处理器的封闭式体系结构。这种结构的控制器存在制造和使用成本高,开发周期长,升级换代困难,无法添加系统的新功能等一系列缺点。该系统基于TRIO运动控制卡的开放式结构机器人控制系统,采用IPC+DSP的结构来实现机器人的控制。这种机器人控制系统采用开放式硬件、软件结构,可以根据需要方便地扩展功能,具有良好的开放性和扩展性,能适应于不同类型机器人或机器人自动生产线。通过
14、运动控制卡在工业机器人控制系统中的应用,根据运动控制的相关理论和直流伺服电机的具有不易受干扰、易于用微机实现数字控制、无积累误差等特性以及其动作迅速、反映快、维护简单、可实现过载自动保护等特点作为相关背景的基础之上提出了基于TRIO运动控制卡的自动化程度和定位精度均较高的工业机器人控制系统。这种机器人控制系统的重要特点在于它采用通用个人计算机加DSP多控制回路的开放式体系结构以及它的网络控制特性。2.1.2可行性论证 目前,由于高起动转矩、大转矩、低惯量的交、直流伺服电动机在工业机器人中得到广泛应用一般负载1000N(相当100kgf)以下的工业机器人大多采用电伺服驱动系统。所采用的关节驱动电
15、动机主要是AC伺服电动机。其中,交流伺服电动机、直流伺服电动机、直流驱动电动机(DD)均采用位置闭环控制,一般应用于高精度、高速度的机器人驱动系统中。利用运动控制卡(运动控制和逻辑算法有机的结合,轻松实现多种运动形式的运动控制器)对机器人驱动系统进行控制能够有效地提高整个机器人系统的性能及开发效率。由于机器人需要精确的控制和精准的定位,采用合适的直流电机调速器和光电轴角编码器即能满足要求。PCI208是Trio Motion公司的一款基于PC的PCI总线控制的数字运动控制卡,该控制卡采用了独立的120MHZ大DSP微处理器技术,提高了电机运动和计算速度。该控制卡可以控制28 轴的伺服电机或步进
16、电机或者二者的任意结合;32-bit的33MZ,2.2版本的 PCI总线。采用100-pin的高精度屏蔽电缆与外部转接板模块连接,提高了设备的抗干扰信号的能力。提供 ActiveX可以用VB、VC、C/C+等高级语言根据设备的需要进行二次开发,还有CAN总线口,可以根据设备的需要对I/O和摸拟输入口进行扩展,能够满足要求。由于所选用的硬件设备都是市场上成熟的,综上所述,本设计题目的理论基础、整体的构想和所实施的方案是切实可行的,在老师的指导下,借鉴相关书籍,通过通过自己的学习,能够达到本次设计的要求。2.1.3系统的构成 该系统主要由个人PC、PCI208系列TRIO运动控制卡、运动卡外接线板
17、、ZK4系列直流电机调速器、光电轴角编码器、系统工作状态检测输入行程开关等组成。TRIO运动控制卡通过对直流电机调速器发出模拟电压信号对直流伺服电动机的转上速、角位移、正、反转等进行控制,从而外控制输出电机驱动;且还在系统中采用光电轴角编码器对电机的参数运行状态以及程序的运行状态进行反馈;另外还设置行程开关对电机的行程位置进行控制。2.1.4 机器人控制工作原理 机器人具有三个自由度(即:RRP大臂回旋、仰角、小臂伸缩三个运动)和一个爪开合动作,采用全电机驱动控制。机器人本体由机身、大臂、小臂、手找等组成。机身固定在机械小车上;大臂可以绕着机身在水平面内和垂直面内旋转;小臂在丝杆的传动下,可以
18、前后进行伸缩。在大臂和小臂的共同作用下,机械手的手爪能够接近要抓的物体。当物体被控制在手爪的控制范围内时,手爪夹紧物体,然后通过大臂的旋转和小臂的伸缩运动,最终将物体置于规定的位置。机器人大臂回旋运动和大臂仰角运动均采用直流电动机、谐波减速器传动,PWM脉宽调速器控制,可实现202000mm/Min无级调速控制。机器人本体结构如下图:1机械手爪 2机械手小臂 3机械手大臂 4机身手爪开合采用连杆及螺旋机构,同步电机驱动,其结构简单,无调速器,电路控制方便。由于在机械结构设计中采用了谐波减速器、滚珠丝杆、滚珠直线导轨等精密传动装置,机器人手爪定位可达到较高的精度。控制系统电气原理图如图,其工作原
19、理如下:机器人大臂回旋运动和大臂仰角运动均采用直流电动机M1和M2控制,小臂伸缩采用直流电动机M3控制,手爪的开合由单相交流电动机M4 控制,每个电动机均由两个中间继电器控制其正、反转。首先是各运动轴分别复位,电动机m1、m2、m3反转输出端口OUT11、OUT13、OUT15输出24V电压各轴正向运动。当它们踏上了各自的行程开关时外接24V分别输入到INPUT0、INPUT1、INPUT2的输入端口由运动控制卡进行判断并作为运动的原点。然后,当运动控制卡的24 V电压输出端口OUT11输出指令时,接通继电器KA4,电动机M1得点正转,机器人大臂向上仰运动,到达极限位置时撞下前限位开关ST1,
20、继电器KA4线圈断电机停止运转。当运动控制卡电压输出端口OUT12输出指令时,继电器KA5线圈得电,电动机M1得电反转机器人大臂向下仰运动,到达极限位置时撞下后限位开光ST2,继电器KA5断电,电机停止运转。电动机M1的运动控制由运动控制卡的+10/-10V模拟电压输出端口OUT0输出的指令控制。当运动控制卡电压输出端口OUT13输出指令时,继电器KA6线圈得电,电动机M2得电正转,机器人大臂向左旋运动,到达极限位置时撞下前限位开关ST3 ,继电器KA6 断电,电机停止运转。当运动控制卡电压输出端口OUT14输出指令时,继电器KA7线圈得电,电动机M2得电反转,机器人大臂向右旋运动,到达极限位
21、置时撞下后限位开关ST4,继电器KA7断电,电机停止运转,电动机M2的运转速度由运动控制卡+10/-10V模拟电压输出端口OUT1发出指令控制。当运动控制卡电压输出端口OUT15输出指令时,继电器KA8线圈得电,电动机M3得电正转,机器人小臂向前伸运动, 到达极限位置时撞下前限位开关ST5,继电器KA8线圈断电,电机停止运转,当运动控制卡输出断口OUT16输出指令时继电器KA9线圈得电,电动机M3得电反转,机器人小臂向后缩运动到过极限位置时撞下后限位开关ST6,继电器KA9断电 ,电机停止运动,电动机M3运转速度由运动控制卡+10/-10V模拟电压输出端口OUT2发出指令控制。继电器KA1和K
22、A2分别控制机器人手爪的开合当向前伸时OUTPUT8输出24V,撞到前限位开关停止运动;当OUTPUT9输出时向后伸缩撞到后限位开关停止运动。光电轴角编码器由三个编码器输入端口反馈回各轴的实际运动位置给运动控制卡。2.2 软件介绍2.2.1软件编程语言的特点TRIO Basic一种类似欲BASIC的语言,简单明了,易学易用。OCX Component在VB 、VC、Delphi、C+Builder中,直接调用运动函数PCI208的安装运行Install_TrioPCMotion_1_2_3.exe程序。该程序将a) 自动将PCI208的设备驱动文件TrioPCI.sys安装到c:windows
23、system32driver目录下;b)自动将Active控件TrioPC.ocx及其帮助文件Trio Pc Motion ActiveX.chm安装到C:ProgramFilesTrioMotionTrio PC Motion目录下。安装成功后,在“设备管理器”中可查看有关PCI208的相关信息,如下图示程序界面 在VB6.0中打开工程文件“Project1.vbp”,在编译环境中,直接运行(F5),程序操作画面及介绍如下:首先进入Form1显示“欢迎使用PCI208运动控制操作界面”,单击进入按扭便进入Form2程序界面。如果单击打开按扭TRIOPCI由红色小方块变为绿色小方框,表明PCI
24、208和OCX之间已成功建立连接。如果仍然为红色表明PCI208和OCX之间的连接未成功建立。在此程序中,可进行运动控制和轴位置及I/O状态显示等功能。运动控制主要是OUTPUT8-17的输出的开关控制,还有INPUT33-35的原点检测控制,及运动距离输出控制等方面。其中关闭按扭是关闭trio 软件的连接;运动按扭是根据输入的距离值进行运动;复位按扭是进行各轴的原点复位运动;单击退出操作便结束程序的执行。2.2.2 OCX Component向工程中添加TrioPC OCX控件如图在工程中调用函数图:程序框图界面:2.2.3指令系统(1)轴指令BASE、AXIS:指定以下运动指令所对应的轴号
25、UNITS:指定每一个编程单位所对应的指令脉冲数ATYPE:指定轴类型SPEED:指定轴运行速度ACCEL:指定轴加速度DECEL:指定轴减速度DATUM_IN:指定原点输入点OFFPOS:位置偏置MPOS:读取实际位置DPOS:读取指令位置DAC:设置模拟量输出AIN:读取模拟量输入FHOLD_IN:设置进给保持输入点FHSPEED:设置进给保持速度()运动指令MOVE:相对运动MOVEABS:绝对运动FORWARD:恒速正向运动REVERSE:恒速负向运动RAPIDSTOP:停止DATUM:回原点MOVEMODIFY:运动中改变目标位置DEFPOS:重新定义当前位置ADD_DAC:全闭环控
26、制WDOG:输出使能()输入、输出指令AIN:读取模拟量输入DAC:设置模拟量输出IN:读取开关量输入OP:设置开关量输出PSWITCH:位置比较输出PRINT:显示()程序流程控制IFTHEN.ELSE.ENDIF:条件判断FOR TO. STEPNEXT:循环控制GOTO:无条件跳转GOTOSUB:调用子程序ONGOTO:条件跳转ON.GOTOSUB:条件调用子程序REPEAT.UNTIL:重复执行控制WHILE:条件判断WAIT IDLE: 等待运动结束WAIT UNTIL:等待WA:延时()运算处理指令、算术运算:+、-、*、/、SQR、EXP2、逻辑运算:、=、 0.5 Then b
27、ok = TrioPCI.SetVariable(WDOG, 0#) End If For nAxis = 0 To gk_nAxesInUse - 1 nBases(0) = nAxis bok = TrioPCI.Base(1, nBases) If bok Then bok = TrioPCI.SetVariable(SERVO, 0#) End If If bok Then bok = TrioPCI.SetVariable(ATYPE, 0#) End If If bok Then bok = TrioPCI.SetVariable(UNITS, 100#) End If If bo
28、k Then bok = TrioPCI.SetVariable(REPDIST, 1#) End If If bok Then bok = TrioPCI.SetVariable(SPEED, 100#) End If If bok Then bok = TrioPCI.SetVariable(ACCEL, 100#) End If If bok Then bok = TrioPCI.SetVariable(DECEL, 100#) End If If bok Then bok = TrioPCI.SetVariable(FELIMIT, 1000#) End If If bok Then
29、bok = TrioPCI.SetVariable(SERVO, 1#) End If Next nAxis bok = TrioPCI.SetVariable(WDOG, 1#) End IfEnd SubPrivate Sub UpdateButtonStates() Dim bopen As Boolean bopen = TrioPCI.IsOpen(0) Command1.Enabled = Not bopen Command2.Enabled = bopen And Not (g_brunningIO Or g_brunningMove) Command3.Enabled = bo
30、pen And Not (g_brunningIO And g_brunningMove)End Sub Private Sub ReadAxisPostions() Dim nAxis As Integer Dim nAxes(gk_nMaxAxes) As Integer Dim dposition As Double Dim nMBR As Integer Dim bok As Boolean If TrioPCI.IsOpen(gk_ndefaultMode) Then For nAxis = 0 To gk_nAxesInUse - 1 nAxes(0) = nAxis If Tri
31、oPCI.Base(1, nAxes) Then bok = TrioPCI.GetVariable(DPOS, dposition) If bok Then Label(nAxis + 1).Caption = Int(dposition) Label(nAxis + 1).Refresh Else nMBR = MsgBox(error reading axis positon) nAxis = gk_nAxesInUse End If Else nMBR = MsgBox(error setting base for reading axis position) nAxis = gk_n
32、AxesInUse Next nAxis Else nMBR = MsgBox(connection not open) End IfEnd Sub Private Sub proccessStateRun() Dim bok As Boolean Dim nAxis As Integer Dim dreadval As Double Dim nIO As Integer g_brunningIO = True If g_brunningIO Then nIO = 0 Call ReadAxisPostions For nIO = 0 To 2 Call readIO If Val(Text(
33、nIO + 1).Text) 50 Then MsgBox (数据过大) Else bok = TrioPCI.Op(12 + 2 * nIO, 1#) bok = TrioPCI.MoveAbs(3, Val(Text(nIO + 1).Text), nIO) Call ReadAxisPostions bok = TrioPCI.Op(11 + 2 * nIO, 0#) nIO = nIO + 1 End If Next nIO g_brunningIO = False Call UpdateButtonStates End IfEnd Sub Private Sub readIO() D
34、im IIO As Long Dim nBit As Integer Dim nMBR As Integer Dim IBit As Integer Dim Inpt As Long If TrioPCI.IsOpen(gk_ndefaultMode) Then If TrioPCI.In(8, 17, IIO) Then For nBit = 7 To 16 If IIO 0 Then Label(nBit).Caption = on Label(nBit).ForeColor = vbBlue Else Label(nBit).Caption = off Label(nBit).ForeColor = vbRed End If Label(nBit).Refresh Next nBit Else nMBR = MsgBox(error reading IO) End If If TrioPCI.In(0, 2, Inpt) Then For IBit = 33 To 35 If Inpt 0 Then Label(IBit).Caption = on Label(nBit).ForeColor = vbBlue Else Label(nBit).Caption = off Label(nBit).ForeColor = vbRed End If Label(I