基于CANopen协议的机械手的实现
2015-06-22李向如俞建定汪沁
李向如,俞建定,汪沁
(宁波大学信息科学与工程学院,浙江宁波315211)
基于CANopen协议的机械手的实现
李向如,俞建定,汪沁
(宁波大学信息科学与工程学院,浙江宁波315211)
CANopen协议是由CAN-in-Automation(CiA)定义的标准,并且在以CAN为基础的工业系统领域中占着主导地位。本文以五轴机械手的设计实现为背景,结合CANopen协议在汽车电子和工业控制领域中的广泛应用,实现了对多电机系统的实时控制。文中提供的以CAN总线控制多个伺服电机的设计方法,使得硬件电路的设计得到很大简化,同时也使得通信效率和可靠性得到大幅提升。本方案在实际运行中已经得到充分的验证,对工业控制领域有着实际的应用指导意义。
CAN;CANopen;多电机系统控制;现场总线
0 引言
CAN(Controller Area Network,控制器局域网)总线是由德国Bosch公司设计的,是一种技术先进、可靠性高、成本低的网络通信控制方式。它在离散控制领域得到了广泛应用,是唯一成为国际标准的现场总线[1]。由于CAN只定义了OSI网络模型中的第一层(物理层)和第二层(数据链路层),没有应用层,所以需要高层协议来具体定义CAN报文的使用。CANopen协议是基于CAL协议的扩展,是目前基于CAN的高层通信协议的一种。CANopen是由CAN-in-Automation(CiA)定义的标准,并且在以CAN为基础的工业系统领域中占着主导地位[2]。CANopen专门为不同的接口设备应用子协议定义了行规(DSP4),其中CiA402是针对驱动装置和运动控制装置的设备规范。本文就是根据CANopen协议在伺服驱动设备上的应用进行展开讨论的。
1 CANopen通信协议简析
CANopen的参考模型如图1所示。由此图可以看出CANopen是以CAN为基础的,CAN数据链路层提供具有标示符的报文的广播服务,所以报文不是发送到某一个远程节点的特定的应用程序。实际上,每个应用程序只需要根据报文的标示符决定是否接受通信对象所携带的数据,这种特性决定了CAN网络是一种基于报文的协议,而CANopen协议中的服务对象就是CAN网络中传输的CAN报文。
CANopen的设备模型如图2所示。从图中可以看出,一个CAN设备主要分为三部分:通信接口、对象字典、应用程序。通信接口主要定义了四种不同种类的通信对象:服务数据对象、过程数据对象、网络管理对象和特殊功能对象,用来实现通信、网络管理和紧急情况处理等功能[3]。这四类通信对象(COB)都是由一个或多个报文实现的。过程数据对象(PDO消息)用来传输实时的数据;服务数据对象(SDO服务器消息和SDO客户端消息)用来配置网络参数和访问节点的对象字典,建立两个CANopen设备之间的客户/服务器的关系;网络管理对象(NMT)负责网络的启动和监控设备;特殊功能对象是指同步(SYNC)、时间标记对象、紧急事件、节点保护。
图2 CANopen设备模型
CANopen对象字典(Object Dictionary,OD)是CANopen协议最为核心的概念。对象字典就是通过网络读取一组提前定义好的对象,相当于一个参数列表,每一个对象是用一个16位的索引和8位的子索引来定位。为了允许访问数据结构中的单个元素,同时也定义了一个8位的子索引。对象字典是所有数据结构的集合,这些数据结构涉及设备的应用程序、通信以及状态机,也是通信接口与应用程序之间的接口。
CANopen由一系列称为子协议的文档组成,这些子协议主要分为3类,分别是通信子协议、制造商自定义子协议和设备子协议。子协议描述对象字典中的每个对象的功能、名字、索引、子索引、数据类型、读写属性,以及这个对象是否必须等待,从而保证不同制造商的同类设备能够相互兼容。根据这些协议生产CANopen设备能够实现不同厂商产品之间的互操作,大大降低了系统通信的开发难度[4-6]。
2 机械手的实现
机械手主要有三部分组成:手部、运动机构、控制系统。手部是指用来抓取物体的部件;运动机构使手部完成各种规定动作;控制系统通过对各个电机的控制来完成所需要的规定动作,同时通过接收反馈的信息形成闭环控制。控制系统是机械手实现的关键部分,本文主要设计实现的是控制系统。
由图3可以看出,该系统主要由4部分组成:手持
随着现场总线在工业控制领域中越来越广泛的应用,以及控制系统向着网络化、开放性的方向发展,所以本文也采用总线的方式进行设计。控制系统与外部设备的通信分别采用以太网总线和CAN总线。本文设计的系统结构如图3所示。器、控制电路、电机驱动器及电机。其运行过程大致是手持器通过以太网接口把相应的动作指令发给控制电路,该过程采用LWIP协议;然后控制电路在接收到指令之后,开始解析指令,再通过CAN接口给伺服电机驱动器发送指令,该过程采用CANopen协议;伺服驱动器在得到指令后开始驱动电机,在电机到达指定位置后停止。整个系统运行过程中,如何实现对5个电机的实时控制是整个系统的关键。为保证数据在传输过程中的可靠性和实时性,系统在设计时采用了CAN接口和以太网接口[7]。
3 机械手CANopen通信的设计与实现
3.1 CANopen通信的硬件设计
由图3可以看出,CANopen通信是在控制电路和电机驱动器之间实现的。CANopen只是一个应用层的规范协议,与具体总线的物理实现无关。由图1 CANopen的参考模型可以看出,CANopen是以CAN为基础的,所以CANopen的硬件实现实际是CAN总线的设计实现。电机驱动器自身支持CANopen协议,所以硬件实现的关键是控制电路能符合CANopen协议。CAN的硬件实现包括两个部分:与OSI模型中数据链路层和物理层分别对应的CAN控制器和CAN收发器的实现。本文采用基于Cortex-M4内核的STM32系列芯片作为控制电路的MCU,该芯片内有CAN控制器,并且完全支持CAN协议2.0。CAN收发器选用CTM1050T,其内部集成了CAN隔离及收发器件,将CAN控制器的逻辑电平转换为CAN总线的差分电平,同时具有隔离功能机ESD保护作用。CAN通信硬件结构如图4所示[8]。
图4 CAN通信硬件结构示意图
3.2 CANopen通信程序设计
CAN通信硬件设计完成后能够实现设备之间的报文通信,但是仍需对传输的数据内容进行定义,主要包括数据内容的传输格式以及数据读取规则。本部分主要介绍控制电路与伺服电机驱动器之间CAN通信程序的设计,程序采用CANopen协议中的服务数据对象SDO(Service Data Object)数据传输机制。采用该机制是因为SDO为每个消息都生成一个应答,这样可以保证数据传输的准确性。同时通过每5 ms查询一次的方式来确保数据传输的实时性。CANopen通信程序设计流程图如图5所示。首先对控制电路的CAN接口进行配置,选择波特率,完成CAN接口的初始化。电机驱动器节点的配置是通过驱动器的面板进行设定,把各节点配置为可操作模式,然后再根据传送过来的数据对伺服驱动器进行相应的配置。在整个通信过程中,由于伺服电机驱动器内部集成标准的CANopen协议,所以控制电路所发的数据要按照CANopen协议中的规定发送才能被伺服电机驱动器识别。同时这也简化了控制电路关于CANopen协议方面的程序设计,使得研发周期大大缩短。
图5 CANopen通信程序流程图
4 结束语
CANopen是一个应用层的规范协议,与具体总线的物理实现无关。CANopen已经发展成具有高度灵活性的标准化嵌入式网络,基于它提出和实现的对象字典、设备规范等概念对现场总线技术的发展起到了重要作用。本文主要设计实现了基于CANopen协议的五轴机械手控制系统,为CANopen协议在多电机控制系统的设计提供了一种方案,对工业控制领域具有实际的应用意义。
[1]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996.
[2]李澄,赵辉,聂保钱.基于CANopen协议实现多电机系统实时控制[J].微电机,2009,42(9):53-56.
[3]吕京建,张宏韬.CAN总线的浅析-CANopen协议[J].电子产品世界,2002(17):25-27.
[4]CAN in Automation.Application Layer and Communication Profile[S].CiA Draft Standard 301 Version 4.02,2002.
[5]王峰.基于嵌入式系统的CANopen协议分析研究[D].天津:天津理工大学,2010.
[6]夏勇,叶晓东,赵江海.基于CANopen协议的数字伺服控制[J].电气自动化,2014,36(1):57-59.
[7]赵建光,杨建武,孙树文.基于CANopen协议的I/O从站的开发与应用[J].微计算机信息,2007,23(8):9-11.
[8]史久根,张培仁,陈真勇.CAN现场总线系统设计技术[M].北京:国防工业出版社,2004.
The realization of robot based on CANopen protocol
Li Xiangru,Yu Jianding,Wang Qin
(Information Science and Engineering Institute,Ningbo University,Ningbo 315211,China)
CANopen protocol is a standard defined by CAN-in-Automation(CiA),and occupies a leading position in the CAN-based industrial sector.In this paper,based on design and implemention of five-axis robot,combined with the widely applications of CANopen protocol in the field of automotive electronics and industrial control,the real-time control of multi-motor system is achieved.CAN bus design method provided herein controlling multiple servo motors,making the hardware design is greatly simplified,and also making the efficiency and reliability of communication increased dramatically.The provided scheme in the actual operation has been fully validated for industrial control applications with practical guidance.
CAN;CANopen;multi-motor system control;fieldbus
TN919
A
1674-7720(2015)13-0007-02
2015-03-31)
李向如(1989-),男,硕士研究生,主要研究方向:嵌入式系统与应用。
俞建定(1968-),男,高级实验师,主要研究方向:嵌入式系统与应用、通信与通信系统。