首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于CAN总线的机械手控制系统
来源:本站整理  作者:佚名  2009-09-29 10:00:58



1 引言

  机械手可在空间抓放物体,动作灵活多样,适用于可变换生产品种的中、小批量自动化生产,广泛应用于柔性自动线。我们开发的用于热处理淬火加工的物料搬运机械手,是一种按预先设定的程序进行工件分拣、搬运和淬火加工的自动化装置,可部分代替人工在高温和危险的作业区进行单调持久的作业,并可根据工件的变化以及淬火工艺的要求随时更改相关控制参数。由于目前许多商品化的工业机器人(或机械手)大都采用封闭结构的专用控制系统,一般采用专用计算机(如PUMA工业机器人使用PDP-11)作为上层主控计算机,使用专用机器人语言(如VAL)作为离线编程工具,采用专用微处理器,并将控制算法固化在EPROM中[1],这种专用系统很难进行扩展、修改或再集成外部硬件(如传感器)和软件。因此,我们自行开发了气、电混合驱动的三自由度圆柱坐标型机械手以及相应的物料分拣装置,并根据其控制要求设计了基于CAN总线的分式布开放结构机械手控制系统。

  本文重点阐述了该机械手控制系统的结构组成,并从多个方面对控制系统软件的设计方法作了进一步分析。

2 机械手基本结构

  物料搬运机械手由机械手和物料分拣两部分装置组成。如图1所示,机械手主要由机座(采用步进电机驱动旋转)、水平手臂(采用直线坐标气缸HMP-20-200)、垂直手臂(采用滑块气缸SLT-16-50)、气爪(采用平行气爪HGP-10-A)等部分组成。物料分拣装置则由三个普通气缸构成,用以将不同长度的工件送至不同的轨道中,供机械手分别抓取和搬运。


图1 物料搬运机械手结构简图

3 基于CAN总线的机械手控制系统组成

  在机械手控制系统的开发中,我们始终立足于开放结构机械手控制器的设计思想,主要体现在以下几方面:

  (1) 硬件基于标准总线结构,能实现现场设备之间、设备与各种传感器之间以及现场设备与控制室之间的数据通信。

  现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。CAN(Controller Area Network)总线是现场总线的一个分支,是应用于生产现场控制设备之间实现双向串行多节点数字通信的系统,是开放式、数字式的底层控制网络。因其具有很高的可靠性和性能价格比,已经成为国际标准,受到工业界的广泛重视,并已被公认为几种最有前途的现场总线之一。机械手控制系统建立在CAN总线网络基础上,能够更好地满足其开放性和可靠性的要求。

  如图2所示,控制系统中上位机采用PC机,在上位机的PCI总线插槽中安装了瑞隆德公司的CANPCA单口CAN总线适配卡。下位机则采用若干CAN总线智能节点,分别与气阀、步进电机驱动器、传感器、开关等相连。上、下位机间的数据通信都是通过各自的CAN总线控制器SJA1000芯片和CAN总线收发器82C250芯片来实现的。其中,SJA1000具有完成CAN总线通信协议所要求的全部特性,它与独立CAN总线控制器82C200完全兼容,并有支持CAN2.0B协议、扩展接收缓冲器、增强错误处理能力和增强验收滤波等新增功能。四个下位机智能节点各自独立完成现场数据采集和运行控制任务,并通过SJA1000实现与上位机间的数据接收和发送。而上位机则通过PCI桥和接口控制电路来访问CAN控制器,从而实现与下位机间的数据通信。


图2 物料搬运机械手CAN总线控制系统示意图

  (2)使用基于非专用计算机平台的开发系统(本控制系统中采用PC机)。

  (3)使用标准的操作系统和标准的控制语言。

  机械手控制系统监控软件采用Visual C++6.0作为开发工具,运行于Windows98平台上。VC是一种面向对象的编程语言,它提供了可视化编程环境,特别是提供了MFC类库,封装了Windows API接口函数,并建立了应用程序框架,使程序开发人员可以将主要精力集中于所要解决的具体问题上。

  另外,在机械手的水平手臂气缸伺服控制中,采用德国Festo公司的伺服定位控制器SPC200以及与之配套的内置位移传感器MLO-POT-0225、伺服定位控制连接器SPC-AIF-POT和比例方向流量阀MPYE-5-1/8-LF-010-B等装置。机械手的回转控制则采用北京凯恩帝数控公司的BD-3Y三相混和式步进电机驱动器。

4 机械手控制系统监控软件设计

  4.1 监控软件基本结构

  机械手监控软件采用VC++6.0作为开发工具,应用其提供的MFC类库和APPWizard功能生成SDI单文档界面应用程序。VC++6.0提供了现成的窗口、工具条等制作手段,大大简化了界面的开发过程,并且使得开发出的界面具有组态软件风格,使用起来方便、灵活。如图3所示,监控软件主要由系统界面、CAN总线通信、机械手监控以及运行状态显示等模块组成。下面就其中的数据通信、运行监控及动态显示部分作进一步分析。


图3 机械手监控软件功能框图

  4.2 CAN总线数据通信

  CAN总线是一种有效支持分布式控制及实时控制的多主串行总线,它具有短报文帧收发灵活、非破坏性基于优先权的总线仲裁技术等多种优越性能。在机械手控制系统中,CAN总线数据通信是通过与CANPCA适配卡一起提供Pcicandrv.LIB(CAN总线函数库)中的相关函数调用实现的[5]。为了及时准确地了解CAN总线状态,并尽可能减少故障和缩小故障范围,在控制软件中专门设计了测试程序,负责CAN总线接口及通信部分的调试、运行任务。只有在测试正常的前提下,才能进一步运用CAN总线对机械手进行控制。CAN总线数据有标准帧和扩展帧之分,它们都是由信息和数据两部分组成的,只是地址标识符的位数不同。下面是CAN总线初始化及CAN标准帧数据收发的部分代码。

  //CAN总线初始化

  void CWuLiao::InitCAN()

  {

  int retval;

  retval =CAN_Open(); //打开PCI适配卡函数

  if(retval!=1) AfxMessageBox("打开PCI卡失败!");

  ptrConfig = &Config;

  ptrStruct = &Struct; //定义CAN数据帧结构指针

  ptrConfig->timer0=0x3f;

  ptrConfig->timer1=0xff; //设置波特率为5K

  ptrConfig->workMode=0; //使用11位的CAN节点地址

  ptrStruct->card=0; //PCI适配卡卡号

  ptrConfig->accCode=0; //CAN接收码

  ptrConfig->accMask=0xff; //CAN屏蔽码

  ptrConfig->control=1; //开放中断

  ptrConfig->filterMode=0; //CAN控制器采用单滤波方式

  retval =CAN_Init(ptrStruct,ptrConfig); //调CAN初始化函数

  if(retval!=1) AfxMessageBox("初始化失败!");

  }

  //CAN数据发送

  void CWuLiao::OutputCAN(unsigned int CanID,unsigned char H8B,unsigned char L8B)

  {

  int retval;

  ptrPacket = &Packet;

  ptrStruct = &Struct;

  ptrStruct->card=0;

  ptrPacket->length=4;//发送数据长度4个字节

  ptrPacket->rtr=0;//表示发送的是数据帧,而非远程帧

  ptrPacket->CAN_ID=CanID;//定义CAN节点地址

  ptrPacket->data[0]=0x44;

  ptrPacket->data[1]=0x4f;//CAN数据发送命令字

  ptrPacket->data[2]=H8B;

  ptrPacket->data[3]=L8B;//要发送的高、低字节

 

[1] [2]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:211,566.40000 毫秒