工业机器人控制系统_第1页
工业机器人控制系统_第2页
工业机器人控制系统_第3页
工业机器人控制系统_第4页
工业机器人控制系统_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

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

文档简介

1、更多论文请加 QQ 1634189238492186520第一章 绪论1.1工业机器人的发展及分类1.1.1工业机器人的发展工业机器人的发展通常可规划分为三代:第一代工业机器人:通常是指目前国际上商品化与使用化的 “可编程的工业 机器人”,乂称“示教再现工业机器人”,即为了让工业机器人完成某项作业,首 先由操作者将完成该作业所需要的各种知识(如运动轨迹、作业条件、作业顺序 和作业时间等),通过直接或间接手段,对工业机器人进行“示教”,工业机器人 将这些知识记忆下来后,即可根据“再现”指令,在一定精度范围内,忠实的重 复再现各种被示教的动作。1962年美国万能自动化公司的第一台 Unimate工

2、业 机器人在美国通用汽车公司投入使用,标志着第一代工业机器人的诞生。第二代工业机器人:通常是指具有某种智能(如触觉、力觉、视觉等)功能 的“智能机器人”。即有传感器得到触觉、力觉和视觉等信息计算机处理后,控 制机器人的操作机完成相应的适当操作。1982年美国通用汽车在装配线上为工 业机器人装备了视觉系统,从而宣布了新一代智能工业机器人的问世。第三代工业机器人:即所谓的“只治式工业机器人”。它不仅具有感知功能, 而且还有一定的决策及规划能力。第一代工业机器人目前仍处在实验室研究阶 段。工业机器人经历了诞生-成长-成熟期后,已成为制造业中不可缺少的核心 装备,世界上有约75万台工业机器人正与工人朋

3、友并肩战斗在个条生产线上, 特种机器人作为机器人家族的后起之秀,由于其用途广泛而大有后来居上之势, 仿人机器人、农业机器人、服务机器人、水下机器人、医疗机器人、军用机器人、 娱乐机器人等各种用途发特种机器人纷纷面世,而且正以飞快的速度向实用化迈 进。我国的工业机器人从80年代“七五”科技攻关开始起步,在国家的支持下, 通过“七五”、“八五”科技攻关,目前已基本掌握了机器人的操作机的设计制造 技术、控制系统硬件和软件设计技术、运动学和轨迹规划技术、生产了部分机器 人的关键元器件,开发出喷漆、焊弧、点焊、装配、搬运等机器人;其中有 130 多台配套喷漆机器人在二十与家企业的近30条自动喷漆生产线上

4、获得规模应用,弧焊机器人已应用在汽车制造厂的焊装线上。但总的来看,我国的工业机器人技术及其工程应用水平和国外比还有一定的 距离,如:可靠性低于国外产品;机器人应工程起步较晚,应用领域窄,生产线 系统技术与国外比有差距;在应用规模上,我国已安装的国产工业机器人约200台,约占全球已安装台数的万分之四。 以上原因主要是没有形成机器人产业, 当 前我国的机器人生产都是应用户的要求,“一客户,一次重新设计”,品种规格多、 批量小、零部件通用化程度低、供货周期长、成本也不低,而且质量、可靠性不 稳定。因此迫切需要解决产业化前期的关键技术,对产品进行全面规划,搞好系列化、通用化、模化设计,积极推进产业化进

5、程。1.1.2工业机器人的分类工业机器人按不同的方法可分下述类型工业机器人按操作机坐标形式分以下几类:(坐标形式是指操作机的手臂在 运动时所取的参考坐标系的形式。)(1) 直角坐标型工业机器人其运动部分由三个相互垂直的直线移动(即 PPP)组成,其工作空间图形为 长方形。它在各个轴向的移动距离,可在各个坐标轴上直接读出,直观性强,易 于位置和姿态的编程计算,定位精度高,控制无耦合,结构简单,但机体所占空 间体积大,动作范围小,灵活性差,难与其他工业机器人协调工作。(2) 圆柱坐标型工业机器人其运动形式是通过一个转动和两个移动组成的运动系统来实现的, 其工作空 问图形为圆柱,与直角坐标型工业机器

6、人相比,在相同的工作空间条件下,机体 所占体积小,而运动范围大,其位置精度仅次于直角坐标型机器人, 难与其他工 业机器人协调工作。(3) 球坐标型工业机器人乂称极坐标型工业机器人,其手臂的运动由两个转动和一个直线移动(即 RRP厂个回转,一个俯仰和一个伸缩运动)所组成,其工作空间为一球体,它可 以作上下俯仰动作并能抓取地面上或教低位置的协调工件,其位置精度高,位置误差与臂长成正比。(4) 多关节型工业机器人乂称回转坐标型工业机器人,这种工业机器人的手臂与人一体上肢类似,其前三个关节是回转副(即RRR),该工业机器人一般由立柱和大小臂组成,立柱 与大臂见形成肩关节,大臂和小臂间形成肘关节,可使大

7、臂做回转运动和俯仰摆 动,小臂做仰俯摆动。其结构最紧凑,灵活性大,占地面积最小,能与其他工业 机器人协调工作,但位置精度教低,有平衡问题,控制耦合,这种工业机器人应 用越来越广泛。(5) 平面关节型工业机器人它采用一个移动关节和两个回转关节(即 PRR),移动关节实现上下运动, 而两个回转关节则控制前后、左右运动。这种形式的工业机器人乂称 (SCARA(Seletive Compliance Assembly Robot Arm)装配机器人。在水平 方向则具有柔顺性,而在垂直方向则有教大的刚性。它结构简单,动作灵活,多 用于装配作业中,特别适合小规格零件的插接装配,如在电子工业的插接、装配 中

8、应用广泛。工业机器人按驱动方式分以下几类:(1) 气动式工业机器人 这类工业机器人以压缩空气来驱动操作机,其优点 是空气来源方便,动作迅速,结构简单造价低,无污染,缺点是空气具有可压缩性,导致工作速度的稳定性较差,乂因气源压力一般只有6kPa左右,所以这类工业机器人抓举力较小,一般只有几十牛顿,最大白余牛顿。(2) 液压式工业机器人液压压力比气压压力高得多,一般为70kPa左右, 故液压传动工业机器人具有较大的抓举能力,可达上千牛顿。这类工业机器人结 构紧凑,传动平稳,动作灵敏,但对密封要求较高,且不宜在高温或低温环境下 工作。(3) 电动式工业机器人 这是目前用得最多的一类工业机器人,不仅因

9、为 电动机品种众多,为工业机器人设计提供了多种选择,也因为它们可以运用多种 灵活控制的方法。早期多采用步进电机驱动,后来发展了直流伺服驱动单元,目 前交流伺服驱动单元也在迅速发展。这些驱动单元或是直接驱动操作机,或是通 过诸如谐波减速器的装置来减速后驱动,结构十分紧凑、简单。1.2工业机器人控制系统1.2.1工业机器人控制系统的特点工业机器人的控制技术是在传统机械系统的控制技术的基础上发展起来的, 因此两者之间并无根本的不同但工业机器人控制系统也有许多特殊之处。其特点如下:(1) 工业机器人有若十个关节,典型工业机器人有五六个关节,每个关节由 一个伺服系统控制,多个关节的运动要求各个伺服系统协

10、同工作。(2) 工业机器人的工作任务是要求操作机的手部进行空间点位运动或连续轨 迹运动,对工业机器人的运动控制,需要进行复杂的坐标变换运算, 以及矩阵函 数的逆运算。(3) 工业机器人的数学模型是一个多变量、非线性和变参数的复杂模型,各变量之间还存在着耦合,因此工业机器人的控制中经常使用前馈、补偿、解耦和自适应等复杂控制技术。(4) 较高级的工业机器人要求对环境条件、控制指令进行测定和分析,采用 计算机建立庞大的信息库,用人工智能的方法进行控制、决策、管理和操作,按 照给定的要求,自动选择最佳控制规律。工业机器人的控制系统发基本要求有:(1) 实现对工业机器人的位置、速度、加速度等控制功能,对

11、于连续轨迹运 动的工业机器人还必须具有轨迹的规划与控制功能。(2) 方便的人-机交互功能,操作人员采用直接指令代码对工业机器人进行 作用指示。使用工业机器人具有作业知识的记忆、修正和工作程序的跳转功能。(3) 具有对外部环境(包括作业条件)的检测和感觉功能。为使工业机器人 具有对外部状态变化的适应能力,工业机器人应能对诸如视觉、力觉、触觉等有 关信息进行测量、识别、判断、理解等功能。在自动化生产线中,工业机器人应 用与其它设备交换信息,协调工作的能力。1.2.2工业机器人控制系统的分类:工业机器人控制系统可以从不同角度分类, 如控制运动的方式不同,可为关 节控制、笛卡尔空间运动控制和自适应控制

12、; 按轨迹控制方式的不同,可分为点 位控制和连续轨迹控制;按速度控制方式的不同,可分为速度控制、加速度控制、 力控制。程序控制系统:给每个自由度施加一定规律的控制作用, 机器人就可实现要 求的空间轨迹。自适应控制系统:当外界条件变化时,为保证所要求的品质或为了随着经验 的积累而自行改善控制品质,其过程是基于操作机的状态和伺服误差的观察, 再 调整非线性模型的参数,一直到误差消失为止。这种系统的结构和参数能随时间 和条件自动改变。人工智能系统:事先无法编制运动程序,而是要求在运动过程中根据所获得 的周围状态信息,实时确定控制作用。当外界条件变化时,为保证所要求的品质 或为了随着经验的积累而自行改

13、善控制品质, 其过程是基于操作机的状态和伺服 误差的观察,再调整非线性模型的参数,一直到误差消失为止。这种系统的结构 和参数能随时间和条件自动改变。因而本系统是一种自适应控制系统。第二章基于运动卡的控制系统的建立2.1总体系统的构建2.1.1总体方案的确定机器人控制系统是一种典型的多轴实时运动控制系统。传统的机器人控制系统基本上是设计者基于自己的独立结构和生产目的而开发,它采用了专用计算 机、专用机器人语言、专用微处理器的封闭式体系结构。 这种结构的控制器存在 制造和使用成本高,开发周期长,升级换代困难,无法添加系统的新功能等一系 列缺点。该系统基于 TRIO运动控制卡的开放式结构机器人控制系

14、统,采用 IPC+DSP的结构来实现机器人的控制。这种机器人控制系统采用开放式硬件、 软件结构,可以根据需要方便地扩展功能,具有良好的开放性和扩展性,能适应 于不同类型机器人或机器人自动生产线。通过运动控制卡在工业机器人控制系统 中的应用,根据运动控制的相关理论和直流伺服电机的具有不易受十扰、易于用微机实现数字控制、无积累误差等特性以及其动作迅速、反映快、维护简单、可 实现过载自动保护等特点作为相关背景的基础之上提出了基于TRIO运动控制卡的自动化程度和定位精度均较高的工业机器人控制系统。这种机器人控制系统的 重要特点在于它采用通用个人计算机加DSP 一多控制回路的开放式体系结构以及它的网络控

15、制特性。2.1.2可行性论证目前,由于高起动转矩、大转矩、低惯量的交、直流伺服电动机在工业机器 人中得到广泛应用一般负载1000N(相当100kgf)以下的工业机器人大多采用电 伺服驱动系统。所采用的关节驱动电动机主要是 AC伺服电动机。其中,交流伺 服电动机、直流伺服电动机、直流驱动电动机( DD)均采用位置闭环控制,一 股应用于高精度、高速度的机器人驱动系统中。利用运动控制卡(运动控制和逻 辑算法有机的结合,轻松实现多种运动形式的运动控制器)对机器人驱动系统进 行控制能够有效地提高整个机器人系统的性能及开发效率。由于机器人需要精确的控制和精准的定位,采用合适的直流电机调速器和光电轴角编码器

16、即能满足要 求。PCI208是Trio Motion公司的一款基于PC的PCI总线控制的数字运动控 制卡,该控制卡采用了独立的120MHZ大DSP微处理器技术,提高了电机运动 和计算速度。该控制卡可以控制2 8轴的伺服电机或步进电机或者二者的任意 结合;32-bit的33MZ, 2.2版本的PCI总线。采用100-pin的高精度屏蔽电缆与 外部转接板模块连接,提高了设备的抗十扰信号的能力。提供ActiveX可以用VB、VC C/C+玲高级语言根据设备的需要进行二次开发,还有CAN总线口,可以根据设备的需要对I/O和摸拟输入口进行扩展,能够满足要求。由于所选用的硬件设备都是市场上成熟的,综上所述

17、,本设计题目的理论基 础、整体的构想和所实施的方案是切实可行的, 在老师的指导下,借鉴相关书籍, 通过通过自己的学习,能够达到本次设计的要求。2.1.3系统的构成该系统主要由个人PC PCI 208系列TRIO运动控制卡、运动卡外接线板、 ZK4系列直流电机调速器、光电轴角编码器、系统工作状态检测输入行程开关等 组成。TRIO运动控制卡通过对直流电机调速器发出模拟电压信号对直流伺服电 动机的转上速、角位移、正、反转等进行控制,从而外控制输出电机驱动;且还 在系统中采用光电轴角编码器对电机的参数运行状态以及程序的运行状态进行 反馈;另外还设置行程开关对电机的行程位置进行控制。2.1.4机器人控制

18、工作原理机器人具有三个自由度(即:RRP-大臂回旋、仰角、小臂伸缩三个运动) 和一个爪开合动作,采用全电机驱动控制。机器人本体由机身、大臂、小臂、手 找等组成。机身固定在机械小车上;大臂可以绕着机身在水平面内和垂直面内旋 转;小臂在丝杆的传动下,可以前后进行伸缩。在大臂和小臂的共同作用下,机 械手的手爪能够接近要抓的物体。当物体被控制在手爪的控制范围内时, 手爪火 紧物体,然后通过大臂的旋转和小臂的伸缩运动,最终将物体置丁规定的位置。机器人大臂回旋运动和大臂仰角运动均采用直流电动机、谐波减速器传动, PWF#宽调速器控制,可实现20-2000mm/Mi优级调速控制。机器人本体结构如下图:1机械

19、手爪 2 机械手小臂3 机械手大臂4 机身手爪开合采用连杆及螺旋机构,同步电机驱动,其结构简单,无调速器,电 路控制方便。由丁在机械结构设计中采用了谐波减速器、滚珠丝杆、滚珠直线导轨等精密传动装置,机器人手爪定位可达到较高的精度。控制系统电气原理图如图,其工作原理如下:机器人大臂回旋运动和大臂仰角运动均采用直流电动机M1和m2空制,小臂伸缩采用直流电动机 M3控制,手爪的开合由单相交流电动机 M4控制,每个电 动机均由两个中间继电器控制其正、反转。首先是各运动轴分别复位,电动机 ml、m2 m3反转输出端口 OUT11 OUT13 OUT1骊出24V电压各轴正向运动。 当它们踏上了各自的行程开

20、关时外接 24V分别输入到INPUT0 INPUT1 INPUT2 的输入端口由运动控制卡进行判断并作为运动的原点。然后,当运动控制卡的 24 V电压输出端口 OUT11 俞出指令时,接通继电器 KA4,电动机M1得点正转, 机器人大臂向上仰运动,到达极限位置时撞下前限位开关ST1,继电器KA4线圈断电机停止运转。当运动控制卡电压输出端口OUT12输出指令时,继电器 KA5线圈得电,电动机M1得电反转机器人大臂向下仰运动,到达极限位置时撞下后 限位开光ST2,继电器KA5断电,电机停止运转。电动机 M1的运动控制由运动 控制卡的+10/-10V模拟电压输出端口 OUT0俞出的指令控制。当运动控

21、制卡电压 输出端口 OUT13俞出指令时,继电器KA6线圈得电,电动机M2得电正转,机器 人大臂向左旋运动,到达极限位置时撞下前限位开关ST3,继电器KA6断电,电机停止运转。当运动控制卡电压输出端口 OUT14俞出指令时,继电器KA7线圈得 电,电动机M2得电反转,机器人大臂向右旋运动,到达极限位置时撞下后限位 开关ST4,继电器KA7断电,电机停止运转,电动机 M2的运转速度由运动控制 卡+10/-10V模拟电压输出端口 OUT佐出指令控制。当运动控制卡电压输出端口 OUT1骊出指令时,继电器KA8线圈得电,电动机 M3得电正转,机器人小臂向 前伸运动, 到达极限位置时撞下前限位开关 ST

22、5,继电器KA8线圈断电,电机 停止运转,当运动控制卡输出断口 OUT1晰出指令时继电器KA9线圈得电,电动 机M3得电反转,机器人小臂向后缩运动到过极限位置时撞下后限位开关ST6,继电器KA9断电,电机停止运动,电动机 M3运转速度由运动控制卡+10/-10V 模拟电压输出端口 OUT没出指令控制。继电器 KA1和KA2分别控制机器人手爪 的开合当向前伸时OUTPUT帖出24V,撞到前限位开关停止运动;当 OUTPUT9 出时向后伸缩撞到后限位开关停止运动。 光电轴角编码器由三个编码器输入端口 反馈回各轴的实际运动位置给运动控制卡。2.2软件介绍2.2.1软件编程语言的特点TRIO Basi

23、c一种类似欲BASIC的语言,简单明了,易学易用。OCX Component在VB、VC Delphi、C+Builder中,直接调用运动函数 PCI208的安装 运行 Install_TrioPCMotion_1_2_3.exe 程序。该程序将a)自斯将 PCI208而设备驱动文件 TrioPCI.sys 安装到目录下;b)自动将 Active 控件 TrioPC.ocx 及其帮助文件 Trio Pc MotionActiveX.chm 安装到 C:ProgramFilesTrioMotionTrio PC目录下。安装成功后,在“设备管理器”中可查看有关 PCI208的相关信息,如下图示程序

24、界面在VB6.0中打开工程文件“ Project1.vbp ”,在编译环境中,直接运行(F5),程序操作画面及介绍如下:首先进入Forml显示“欢迎使用PCI208运动控制操作界面”,单击进入按扭 便进入Form2程序界面。如果单击打开按ffl TRIOPCI由红色小方块变为绿色小方 框,表明PCI208和OCX之间已成功建立连接。如果仍然为红色表明PCI208和OC次间的连接未成功建立。在此程序中,可进行运动控制和轴位置及I/O状态显示等功能。运动控制主要是 OUTPUT8-1的输出的开关控制,还有INPUT33-35 的原点检测控制,及运动距离输出控制等方面。其中关闭按扭是关闭trio 软

25、件的连接;运动按扭是根据输入的距离值进行运动;复位按扭是进行各轴的原点复位运动;单击退出操作便结束程序的执行。2.2.2 OCX Component7ED虫 iiliillll BH 序nFrr0ORF启匿) /prjauar)X-甫胜(!> 口骂力出温罟邺O)苜工(D曲 ®哦最 海尝 ()m 顷卫渤 M工(圉祉(需鲫 却尊r园LO ©F E匪1溟qe|I彳尊皓今:图诲园田副中部工丑fflw+iaxoo OdOUi叫业中部工回51Tf i vat* C witn uidl _C1 h dk 0立件更)遍揖I百 投图俗 工程心 格式钮)词信勤 津仃® Si4C

26、U)图晟 工旦中 外技程序® 窗口电1帮助如A商GMUfr ifeX IJI固30进入Din "bopwin M Bocilehnrr l »FCI. Ho e LAd«s-E = $k_sD4 f-aul LHs t/kd.d±- ax.eTr i rfCI Baud = fik.nUtfftiltPciB«rdboj>43i 二 Tr I aPCI. Qpah tk_EiiD4f a.u! tLa Eik g>_TLdd fultHoda.) C«ll Up d*t<tBTLtt obS toilesR

27、AEr A-diEndL Sub Fi*也L* Sub Ci ek 0If Tri aFCI. I sDp tri7ik_ndef 4«j1J Th皿TridFCI.CLdE* 面槌ulL机如End If tLl UjiLlitvlR<&«:shEfij,Frivt# Sub C wm Mid3_Cl i ck 0Cull ZnitAjEfEIf Tri oFCI. I =>p (c_nd&f aul tllod*) Ihn till pr47*3vtEnd. IfEnd SwbFri V4t* Sub C wvn uli!4C1 i ck QD

28、an s Ae IntecerDin lok As Baola&tl Dan dresdv«l As Double If Tri ciFCI. I sDp «n (cndAf 4«j1Thru- TrueI f g_brhmjLLiLMov4 Thm For Wku = 0 To 2b«k = TriioJTi.opaa + 2 *:加服.ujACCEL:旨定轴加速度DATUM_lNf定原点输入点MPOS如实际位置DAC设置模拟量输出FHOLD_INS置进给保持输入点(2 )运动指令MOVES目对运动FORWAR匝速正向运动RAPIDSTOP亭止

29、MOVEMODIFY动中改变目标位置ADD_DACr闭环控制(3 )输入、输出指令AIN:读取模拟量输入IN:读取开关量输入PSWITCHft置比较输出(4 )程序流程控制IF, THEN ELSE .ENDIF:条件判断GOTCffi条件跳转ON GOT软件跳转REPEAT.UNTIL重复执行控制WAIT IDLE:等待运动结束WA:延时2.2.3指W系统(1)轴指令BASE AXIS:指定以下运动指令所对应的轴号 UNITS:指定每一个编程单位所对应的指令脉冲数ATYPE指定轴类型SPEED:指定轴运行速度DECELJ旨定轴减速度OFFPO:S位置偏置DPOSW取指令位置AIN:读取模拟量

30、输入FHSPEE改置进给保持速度MOVEABS:对运动REVERSE!速负向运动 DATUMU原点DEFPOSt新定义当前位置 wdog:出使能DAC设置模拟量输出OP:设置开关量输出PRINT:显示FOR TO. STEP NEXT循环控制GOTOSUffi用子程序ON.GOTOSU杂件调用子程序 WHILE条件判断 WAIT UNTIL:等待(5 )运算处理指令1、 算术运算:+、-、*、/、SQR EXP2、 逻辑运算:=、=、=、AND NOT、OR XOR2.2.4运动控制程序如下:Private Sub Command1_Click()Form2.ShowUnload Form1E

31、nd SubPrivate Sub Form_Load()Label1.Caption ="欢迎使用 PCI208运动控制界面"Label1.FontSize = 18Label1.Font = 楷体 _GB2312Form1.BackColor = &HFFFF80End SubOption ExplicitDim g_brunningIO As BooleanDim g_brunningMove As BooleanDim g_nIOCount As IntegerDim g_nMoveNo As IntegerConst gk_sDefaultHostAddr

32、ess As String = "192.168.0.250”Const gk_nDefaultPciBoard As Integer = 0Const gk_nDefaultLink As Integer = 0Const gk_ndefaultMode As Integer = 0Const gk_nMaxAxes As Integer = 8Const gk_nAxesInUse As Integer = 3Private Sub Command1_Click()Dim bopen As BooleanTrioPCI.HostAddress = gk_sDefaultHostA

33、ddressTrioPCI.Board = gk_nDefaultPciBoardbopen = TrioPCI.Open(gk_nDefaultLink, gk_ndefaultMode)Call UpdateButtonStatesRefreshEnd SubPrivate Sub Command2_Click()If TrioPCI.IsOpen(gk_ndefaultMode) ThenTrioPCI.Close (gk_ndefaultMode)End IfCall UpdateButtonStatesRefreshEnd SubPrivate Sub Command3_Click(

34、)Call InitAxesIf TrioPCI.IsOpen(gk_ndefaultMode) ThenCall proccessStateRunEnd IfEnd SubPrivate Sub Command4_Click()Dim Axis As IntegerDim bok As BooleanDim dreadval As DoubleIf TrioPCI.IsOpen(gk_ndefaultMode) Then g_brunningMove = TrueIf g_brunningMove ThenFor Axis = 0 To 2bok = TrioPCI.Op(12 + 2 *

35、Axis, 1#)Do Until Label(33 + Axis).Caption = "on' Call readIOLoopIf Label(33 + Axis).Caption = "on" Then bok = TrioPCI.Op(12 + 2 * Axis, 0#)End IfCall ReadAxisPostionsNext nAxisg_brunningMove = FalseCall UpdateButtonStatesEnd IfEnd IfEnd SubPrivate Sub Command5_Click()EndEnd SubPr

36、ivate Sub Form2_Load()g_brunningIO = Falseg_brunningMove = FalsetimUpdate.Enabled = Trueg_nIOCount = 0g_nMoveNo = 0UpdateButtonStateEnd SubPrivate Sub Form_Load()Label27.Caption ="运动距离的输入:"Label27.FontSize = 15Label31.Caption ="轴位置显示:"Label31.FontSize = 15Label32.Caption = "

37、I/O 状态显示:"Label32.FontSize = 15Form2.BackColor = &HC0FFC0End SubPrivate Sub Form_Unload(Cancel As Integer)If TrioPCI.IsOpen(gk_ndefaultMode) Then axTrioPC.Close (gk_ndefaultMode)End IfEnd SubOption ExplicitPrivate Sub InitAxes()Dim bok As BooleanDim nAxise As IntegerDim nBases(gk_nAxesInUse

38、) As IntegerDim dreadval As DoubleIf TrioPCI.IsOpen(gk_ndefaultMode) Then bok = TrioPCI.GetVariable("WDOG”, dreadval) If dreadval > 0.5 Thenbok = TrioPCI.SetVariable("WDOG”, 0#)End IfFor nAxis = 0 To gk_nAxesInUse - 1nBases(0) = nAxisbok = TrioPCI.Base(1, nBases)If bok Thenbok = TrioPCI

39、.SetVariable("SERVO”, 0#)End IfIf bok Thenbok = TrioPCI.SetVariable("ATYPE”, 0#)End IfIf bok Thenbok = TrioPCI.SetVariable("UNITS”, 100#)End IfIf bok Thenbok = TrioPCI.SetVariable("REPDIST”, 1#)End IfIf bok Thenbok = TrioPCI.SetVariable("SPEED”, 100#)End IfIf bok Thenbok = T

40、rioPCI.SetVariable("ACCEL”, 100#)End IfIf bok Thenbok = TrioPCI.SetVariable("DECEL”, 100#)End IfIf bok Thenbok = TrioPCI.SetVariable("FELIMIT”, 1000#)End IfIf bok Then bok = TrioPCI.SetVariable("SERVO”, 1#)End IfNext nAxisbok = TrioPCI.SetV ariable("WDOG”, 1#)End IfEnd SubPr

41、ivate Sub UpdateButtonStates()Dim bopen As Booleanbopen = TrioPCI.IsOpen(0)Command1.Enabled = Not bopenCommand2.Enabled = bopen And Not (g_brunningIO Or g_brunningMove)Command3.Enabled = bopen And Not (g_brunningIO And g_brunningMove)End SubPrivate Sub ReadAxisPostions()Dim nAxis As IntegerDim nAxes

42、(gk_nMaxAxes) As IntegerDim dposition As DoubleDim nMBR As IntegerDim bok As BooleanIf TrioPCI.IsOpen(gk_ndefaultMode) ThenFor nAxis = 0 To gk_nAxesInUse - 1nAxes(0) = nAxisIf TrioPCI.Base(1, nAxes) Thenbok = TrioPCI.GetVariable("DPOS", dposition)If bok ThenLabel(nAxis + 1).Caption = Int(d

43、position)Label(nAxis + 1).RefreshElsenMBR = MsgBox("error reading axis positon")nAxis = gk_nAxesInUseEnd IfElsenMBR = MsgBox("error setting base for reading axis position") nAxis = gk_nAxesInUseNext nAxisElsenMBR = MsgBox("connection not open")End IfEnd SubPrivate Sub p

44、roccessStateRun()Dim bok As BooleanDim nAxis As IntegerDim dreadval As DoubleDim nIO As Integerg_brunningIO = TrueIf g_brunningIO ThennIO = 0Call ReadAxisPostionsFor nIO = 0 To 2Call readIOIf Val(Text(nIO + 1).Text) > 50 Then MsgBox ("数据过大")Elsebok = TrioPCI.Op(12 + 2 * nIO, 1#)bok = Tr

45、ioPCI.MoveAbs(3, Val(Text(nIO + 1).Text), nIO)Call ReadAxisPostionsbok = TrioPCI.Op(11 + 2 * nIO, 0#)nIO = nIO + 1End IfNext nIOg_brunningIO = FalseCall UpdateButtonStatesEnd IfEnd SubPrivate Sub readIO()Dim IIO As LongDim nBit As IntegerDim nMBR As IntegerDim 旧 it As IntegerDim Inpt As LongIf TrioP

46、CI.IsOpen(gk_ndefaultMode) ThenIf TrioPCI.In(8, 17, IIO) ThenFor nBit = 7 To 16If IIO <> 0 ThenLabel(nBit).Caption = "on"Label(nBit).ForeColor = vbBlueElseLabel(nBit).Caption = "off"Label(nBit).ForeColor = vbRedEnd IfLabel(nBit).RefreshNext nBitElsenMBR = MsgBox("error

47、 reading IO")End IfIf TrioPCI.In(0, 2, Inpt) ThenFor I Bit = 33 To 35If Inpt <> 0 ThenLabel (I Bit).Caption = "on"Label(nBit).ForeColor = vbBlue ElseLabel(nBit).Caption = "off"Label(nBit).ForeColor = vbRedEnd IfLabel( I Bit).Refresh Next nBitElsenMBR = MsgBox("err

48、or reading IO") End IfElsenMBR = MsgBox("connection not open")End IfEnd Sub2.2.5运动控制程序运行过程的简介:当程序运行时,自动进入窗体一(Forml)点击进入按扭通过调用窗体显示程 序进入窗体二(Form2)。进入后首先应该通过控件打开 VB与Motion Perfect软 件的连接,这个可通过界面的打开按扭运用OPENt令即可打开与软件的连接,并通过调用子程序UpdateButtonStates更新其状态。打开了软件连接后,机器人 各轴的位置应该回到初始状态,这个功能的实现了是通过复

49、位程序来实现的。当点击复位按扭时就运行复位程序复位,在程序运行之前还要通过子程序InitAxes() 进行各轴的参数进行设置,而设置参数是通过连接命令SetVariable来分别进行设置的。设置完后而复位过程就通过循环来复位,即当各轴进行复位时分别通过控件连接的命令OP (即OUTPUT)输出电动机的反转电信号(24V电压)这时 在软件中相应的输出角状态变为ON。在各轴的复位运行过程中通过子程序readIO分别循环检测各轴的原点开关输入信号(24V电压)的状态是否为ON并 显示各输入输出的状态,而该状态的读取是通过控件连接命令IN输入的。如果为该状态就退出循环通过 OP命令来输出OFF来关断反

50、转电信号即该轴就回到 了原点,随后再通过子程序 ReadAxisPostions显示编码器反馈回的各轴的位置, 该数据的读取是读取轴参数 DPOS的值并通过连接命令 GetVariable进行获取到 变量postions通过赋值显示并把该位置做为一个相对原点坐标这样整个复位程序 运行完成了。各轴复位完成以后,我们要进行运动数据的输入,即该轴要运动的 距离。由于各轴运动的距离有限,所以在每次运行时都要进行文本框距离数据的 判断,假如距离值超过了设定值即要显示一个对话框显示数据过大。如果数据在正常的范围之内,就通过控件 OP命令分别输出各电动机的正转运动信号,并通 过控件连接命令MoveAbs相对

51、与反馈位置点运动一断相对距离,运动完成后再 通过ReadAxisPostions子程序进行位置显示和readIO子程序进行输出状态显示, 同样通过GetVariable命令来获取反馈值之后再通过 OP输出OFF关闭各轴的运 动电信号,这些运动的实现是在子程序 proccessStateRun庞成的。当点击运动按 扭时就调用该子程序实现整个运动的过程。这样各轴的运动距离通过循环运行子 程序就到了预定的运动位置。最后在运动过程完成以后就要通过控件连接命令 Close关闭与软件的连接,并调用子程序UpdateButtonStates刷新按扭的状态,通 过点击退出按扭便退出操作就这样整个程序的循环与检

52、测再运行过程就结束了第三章TRIO BASIC指令系统编程3.1运动及轴命令说明或编程ACC类型:轴指令语法:ACC(acc率)注意:这个指令用来和旧的Trio控制器兼容。加速度率和减速度率可用 ACCEL 和DECEL轴参数设定。说明:同时设定加速度率和减速度率参数:acc率:参数单位决定于单位轴参数。加速度因子从UNITS/SEC/SEC输入。应用:ACC(100)AXIS类型:修改指令语法:AXIS (轴数)说明:AXIS修改设置单轴运动指令或单轴参数读写。AXIS参数在命令行或程序行特别有效。使用BASE指令改变基本轴。参数:轴数任何有效的BASIC表达式特定轴数。注意:AXIS指令可

53、用于修改以下指令的轴参数: ADDAX , CAM , CAMBOX , CANCEL , CONNECT , DATUM , DEFPOS, FORWARD, MOVEABS , MOVECIRC , MOVELINK , MOVE , MOVEMODIFY , REVERSE, REGIST, WAIT IDLE , WAIT LOADED。参阅:BASE()应用:例子1PRINT MPOS AXIS (3)例子2MOVE (300) AXIS (2)例子3REPDIST AXIS (3) =100BASE类型:运动控制指令语法:BASE (轴1,轴2,轴3)BASE参数:BA (轴1,轴

54、2,轴3)BA说明:BASE指令用于导向下一个运动指令轴的参数读/写入特定轴或轴组,设 置的缺省值依次为:0, 1, 2-每一个过程有其自己的BASE基本轴组,每个程序能单独赋值。Trio Basic程序与控制轴运动的运动发生器分开。每个轴的运动发生器有 其独立的功能,因此每个轴能以自己的速度、加速度等进行编程,单独运动,或 者通过插补或链接运动链接在一起。AXIS ()命令只要应用正在进行的单命令可以重新导向不同的轴。而BASE()指令除非规定轴号,否则导向接下来的所有指令。参数:轴号:轴号或轴组号成为新的基准轴排列,即轴号或轴组发送运动指令 给多轴指令里的第一个轴。基本轴的轴数和顺序轴在轴

55、组用于多轴运动。应用:例子1每轴可以有自己的速度,加速度和其它参数。BASE (1),设置轴1的转换因子。,设置轴1的速度,设置轴1的加速度UNITS=2000SPEED=100ACCEL=5000BASE (2),设置轴2的转换因子,设置轴2的速度,设置轴2的加速度UNITS=2000SPEED=125ACCEL=10000CANCEL类型:运动控制指令语法:CANCEL/ CANCEL (1)备选:CA说明:CANCEL指令取消轴插补轴组的当前运动。速度轨迹(FORWARD,REVERSE, MOVE , MOVEABS , MOVECIRC )将会以 DECEL 参数减速直至U 停止。其

56、它运动会立即停止。CANCEL (1)指令取消已缓存的运动而不影响正在执行的运动,CANCEL工作在缺省轴,除非使用 AXIS参数定义临时基本轴。注意:1.CANCEL只能取消当前执行的运动。如果在缓存中还有运动,它会继续 被加载。2. 在当前运动的减速过程中,另外的 CANCELS会被忽略。3. CANCEL (1)只取消当前缓存中的运动。存储在任务缓存中的运动由PMOVE参数定义,可以被加载到缓存一旦缓存运动被取消。参阅:AXIS , MTYPE , NTYPE, PMOVE, RAPIDSTOP应用:例子1FORWARDWA (10000)CANCEL例子2MOVE (1000)MOVE

57、ABS (3000)CANCEL,取消运动到3000,而运动到4000。MOVEABS (4000)注意MOVEMODIFY是修改运动结束点最好方法。DATUMDATUM原点搜寻类型:运动控制指令语法:DATUM (sequence说明:DATUM指令执行6种方法中的一种搜寻原点位置,其为绝对位置同时 可以重置跟随误差。伺服驱动器机构原点搜寻用于轴0。轴1用于MC控制单元机构。DATUM使用CREEP速度和目标速度用于原点搜寻。伺服驱动器用于轴0。爬行速度用CREEP参数设定。目标速度用SPEED参数设定。原点搜寻输入数由 DATUM_IN参数决定,用于3或7中。DATUM (0)用于轴出错时重新启动系统,

温馨提示

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

评论

0/150

提交评论