APP下载

基于CANopen协议的双轴伺服系统控制研究

2021-02-10宋朝健吴明昌赵立宏

关键词:伺服电机报文总线

宋朝健, 吴明昌, 赵立宏

(1.南华大学 机械工程学院,湖南 衡阳 421001;2.中国核动力研究设计院,四川 成都 610200;3.南华大学 核科学与技术学院,湖南 衡阳421001)

0 引 言

近年来,现场总线在工业领域的应用已趋于潮流[1-3]。控制器局域网络(controller area network,简称CAN),属于工业现场总线,是国际标准化的串行通信协议,以其高性能和可靠性被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面[4-6]。CANopen协议是基于CAN的高层通信协议,其中子协议CiA402对伺服驱动器、变频器等设备的参数和运行模式进行了规范,从而大大降低了开发难度[7-8]。伺服系统作为自动化领域的重要技术,是行业内研究设计亮点,但现场布线复杂、网络通信能力差等是传统伺服系统的突出问题[9],因此将CAN总线与伺服系统结合起来,设计了一套基于CANopen协议的双轴伺服电机控制方案。

1 CANopen协议概述

CANopen是一个基于CAN串行总线的网络传输系统的应用层协议,遵循ISO/OSI标准模型。网络中不同的设备通过对象字典或者对象来相互交换数据。CANopen协议包括设备模型,通信模式和对象字典三大部分,其中以对象字典最为重要。

1.1 设备模型

CANopen设备如图1所示,一边接应用设备的I/O数据端口,另一边接CAN总线。制造商为设备应用部分提供了相关的设备规范,为了能访问CANopen设备的对象字典,设备必须实现CANopen协议栈的相关功能[10-11]。

图1 CANopen设备模型示意图Fig.1 Schematic diagram of the CANopen device model

1.2 对象字典

每个设备都有一个对象字典。对象字典是CANopen设备的重要组成部分,描述了CANopen节点的所有参数,包括设备参数和通讯参数,并且它也是通信接口与应用程序之间的接口[12]。CANopen协议采用了带有16位索引和8位子索引的对象字典。对象字典中通讯子协议区域(如设备类型,错误寄存器,支持的PDO数量)的索引为:1000-1FFF;标准设备子协议区域的索引为:6000-9FFF。

1.3 CANopen通讯模型

CANopen协议规定了四种不同类型的通讯对象[3],分别是服务数据对象(service data objects,SDO)、过程数据对象(process data object,PDO)、网络管理对象(network management,NMT)和特殊功能对象[13]。SDO用来访问节点的对象字典和配置网络参数,建立两个CANopen设备之间的客户/服务器的关系;PDO用来传输实时数据,数据从一个创建者传到一个或多个接收者;NMT包括Boot-up消息,Heartbeat协议,基于主从通信模式,NMT用于管理和监控网络中的各个节点,主要实现三种功能:节点状态控制、错误控制和节点启动;特殊功能对象是指同步对象(synchronous object,SYNC)和紧急报文(emergency message,EMCY)等。SYNC是由CANopen主站周期性地广播到CAN总线的报文,用来实现基本的网络时钟信号,每个设备可以根据自己的配置,决定是否使用该事件来跟其他网络设备进行同步通信;EMCY是设备内部通信故障或者应用故障错误时发送的报文。

2 系统总体架构

2.1 总体方案设计或者系统结构

整个控制系统由PC机、USB-CAN适配器、CAN总线和伺服驱动设备组成,其中CANopen通讯部分由DS302协议实现,伺服控制部分由DSP402协议实现。

该方案以PC+USB-CAN作为主站,伺服驱动设备作为CANopen从站。从站负责电机的转速、位置等控制对象,它通过CAN通信接口接入CAN总线,将电机的信息反馈给上位机,上位机则根据从站的反馈信息通过USB-CAN适配器对从站实施指令控制。系统整体框图如图2所示。

图2 系统整体框图Fig.2 System overall block diagram

2.2 伺服控制模式

根据CANopen的DSP402子协议,汇川IS620P系列伺服驱动设备共分为五种控制模式,分别为轮廓位置模式、轮廓速度模式、轮廓转矩模式、原点回零模式和插补位置模式,此次着重于实现轮廓位置模式和原点回零模式两种。

轮廓位置模式是在满足一定条件下,可实时接收用户位移指令,每段位移指令的加速时间、减速时间、最大运行速度、位移可独立控制,也可实时修改段与段之间的衔接方式。轮廓位置模式多用于点到点定位运行,运行曲线由伺服驱动器自身规划。伺服驱动器内部完成位置、速度与转矩控制;原点回零模式用于寻找机械原点,并定位机械原点与机械零点的位置关系,便于伺服电机返回到起始位置。

3 系统的硬件实现

在本次设计中,USB-CAN适配器采用CANalyst-Ⅱ分析仪,伺服驱动设备采用汇川IS620P系列,配合PC机来搭建硬件平台。

CANalyst-Ⅱ分析仪通过USB接口上与PC机相连,向下通过屏蔽双绞线与伺服驱动设备的CANopen通信接口相连。待线路连接完成后需将分析仪的120 Ω电阻拨码开关拨到ON位置,同时将通信网络中后置的伺服驱动设备的120 Ω末端电阻用导线短接,这样一个基本的CAN通信网络搭建完成。上位机能够通过适配器对伺服驱动设备下发数据指令,从而控制电机运动;伺服驱动设备也能将电机的相关控制信息反馈给上位机界面,实现双向通信过程。

在总线两端分别加入终端电阻的目的是防止节点在网络上发送的信号在到达电缆末端时发生反射。在连接过程中,需要注意的是CAN通信网络的连接方式为总连接方式,各个CAN收发设备挂接在总线上,每个分支长度要小于0.3 m。否则会引起反射,造成通信问题,并且在CAN设备长距离通信时,须将不同CAN电路的公共地接口相互连接,以保证不同通信设备之间参考电位相等。

4 系统软件设计

Visual Studio是微软公司开发的一个开发工具集,支持C#、VB、ASP、C/C++等语言开发。在Visual Studio 2010软件平台上通过C++语言采用MFC(microsoft foundation classes)编写一个可以控制基于CANopen的伺服从站的监控软件,支持64位Windows。Visual Studio 2010的编程环境如图3所示。

为了能够完成监控软件的设计,调用了USB-CAN模块中USBCAN.DLL动态链接库,CAN数据帧的接收和发送分别由动态链接库中的VCI_Receive、VCI_Transmit两个函数执行,在发送函数VCI_Transmit和接收函数VCI_Receive中,被用来传送CAN信息帧的是VCI_CAN_OBJ结构体,一个结构体表示一个帧的数据结构。

接收函数VCI_Receive,用于从指定的设备CAN通道的接收缓冲区中读取数据,其中pReceive参数是用来接收的帧结构体VCI_CAN_OBJ数组的首指针,返回值为实际读取的帧数,当返回值为-1表示USB-CAN设备不存在或USB掉线;发送函数VCI_Transmit,pSend参数是要发送的帧结构体VCI_CAN_OBJ数组的首指针,返回指为实际发送的帧数,返回值为-1时表示USB-CAN设备不存在或USB掉线。

图3 Visual Studio 2010的编程环境Fig.3 Programming environment of the Visual Studio 2010

4.1 通信流程

具体的通信流程如图4所示。

图4 通信流程图Fig.4 Communication flow chart

4.2 SDO通信配置

SDO传输方式遵循客户端-服务器模式,即一应一答方式。由CAN总线网络中的SDO客户端发起,SDO服务器作出应答。因此,SDO之间的数据交换至少需要两个CAN报文才能实现,而且两个CAN报文的CAN标识符不一样。

SDO的传输分为不高于4个字节和高于4个字节的对象数据传输。不高于4个字节采用加速SDO传输方式,高于4个字节采用分段传输或块传输方式,此次采用加速SDO传输方式。

SDO传输报文由COB-ID和数据段组成,数据段采用小端模式,即低位在前,高位在后排列。所有的SDO报文数据段都必须是8个字节。SDO传输报文格式如表1所示,其中,命令代码指明了该段SDO的传输类型和传输数据长度,索引和子索引是对象在列表的位置,数据是该对象的数值。

表1 SDO传输报文格式说明Table 1 Description of the SDO transmission message format

SDO主要实现轮廓位置模式和原点回零模式的参数初始化设置和PDO配置。轮廓位置模式的每一段位移曲线规划都包括目标位置607Ah、轮廓速度6081h、轮廓加速度6083h、轮廓减速度6084h四个参数;原点回零模式下的参数有原点回零模式6098h、回零速度6099-1h和6099-2h、回零加速度609Ah四个参数。

轮廓位置模式的控制报文和原点回零模式的控制报文分别如表2、表3所示。

表2 轮廓位置模式控制报文Table 2 Outline position mode control message

表3 原点回零模式控制报文Table 3 Origin zero mode control message

两种控制模式的报文操作都是先读写伺服控制模式,然后通过控制字6040h给伺服驱动器使能,最后根据控制模式写入相关参数,即可完成相应模式的控制。伺服驱动设备有两个,即有两个从站,二号从站的报文格式除了COB-ID不同,其他与一号从站基本相同,因此不再赘述。

4.3 PDO通信配置

PDO(过程数据对象)用来传输实时的数据,是CANopen中最主要的数据传输方式。PDO的传输遵循的是生产者消费者模型,即CAN总线网络中生产者产生的TPDO可根据COB-ID由网络上一个或者多个消费者RPDO接收。此次采用点对点的PDO传输方式。

按照接收与发送的不同,PDO可分为RPDO和TPDO。采用的IS620P伺服驱动器使用4个RPDO和4个TPDO来实现PDO的传输,相关对象列表如表4所示。

PDO由通信参数和映射参数共同决定最终传输的方式及内容。

PDO通信参数包括CAN标识符、PDO传输类型、禁止时间和事件计时器。PDO的CAN标识符即PDO的COB-ID,包含控制位和标识数据,确定该PDO的总线优先级。COB-ID位于图7所示的通信参数的子索引01上,最高位决定该PDO是否有效;PDO的传输类型位于通信参数的子索引02上,决定该PDO遵循何种传输方式,具体对应关系如表5所示。

表5 PDO传输类型Table 5 The PDO transport type

当TPDO的传输类型为0时,如果映射数据发生改变,且接收到一个同步帧,则发送该TPDO;当TPDO的传输类型为1~240时,接收到相应个数的同步帧时,发送该TPDO。当TPDO的传输类型是254或255时,映射数据发生改变或者事件计时器到达则发送该TPDO。当RPDO的传输类型为0~240时,只要接收到一个同步帧则将该RPDO最新的数据更新到应用;当RPDO的传输类型为254或者255时,将接收到的数据直接更新到应用。

针对TPDO设置了禁止时间,存放在通信参数的子索引03上,防止CAN网络被优先级较低的PDO持续占有;针对异步传输的TPDO,定义事件计时器,位于通信参数的子索引05上。事件计时器也可以看做是一种触发事件,它也会触发相应的TPDO传输。如果在计时器运行周期内出现了数据改变等其他事件,TPDO也会触发,且事件计数器会被立即复位。

PDO映射参数包含索引、子索引及映射对象长度。每个PDO数据长度最多可达8个字节,可同时映射一个或者多个对象。其中子索引0记录该PDO具体映射的对象个数,子索引1-8则是映射内容。PDO映射参数的定义如表6所示。

表6 PDO映射参数内容定义Table 6 Content definition of the PDO map parameters

索引和子索引共同决定对象在对象字典中的位置,对象长度指明该对象的具体位长,用十六进制表示,即当对象位长分别为8位、16位和32位时,相应的映射参数的对象长度为08h、10h和20h。

PDO通信的实现流程具体如下:首先配置从站中RPDO1的通信参数,并将6040映射到RPDO1,然后禁用TPDO2~TPDO4,将6064(用户位置反馈)和606c(用户速度反馈)映射到TPDO1中,最后配置TPDO1的通信参数即完成了PDO的通信配置。相关报文如表7所示。

配置完成后如果要使配置生效,需要采用NMT管理复位远程节点通讯。待节点通讯启动后,即可采用PDO通信报文实时修改当前运行模式的相关参数-。NMT 报文COB-ID固定是“0x000”。数据区由两个字节组成:第一个字节是命令字,第二个字节CANopen节点地址,当其为“0”时为广播消息,网络中的所有从设备均有效。NMT报文格式如表8所示,复位节点通讯的NMT报文如表9所示。

表7 PDO通信配置报文Table 7 The PDO communication configuration message

表8 NMT报文格式Tbale 8 The NMT message format

表9 复位节点通讯NMT报文Table 9 Reset the node communication NMT message

4.4 软件界面

最终软件界面实现如图5所示。独立测试时,在每一段位移开始之前,可以修改当前路伺服电机的移动距离和移动速度两个参数,用以控制单路伺服电机的运动轨迹;同步测试时,同步移动的距离和运动速度也能进行设置修改,用以控制两路伺服电机的同步运动过程。单路回零和同步回零都是为了让伺服电机更好地回到机械原点。并且从上位机软件界面可实时获得电机的反馈信息,对伺服电机进行监控。

图5 软件界面实现Fig.5 Software interface implementation

5 结 论

在搭建的实验平台上进行实验验证,最终结果表明轮廓位置模式和原点回零模式在实验平台上能够准确实现,基于CANopen协议的伺服系统控制是完全可行的。国内许多学者也做过类似的研究,王晓洁学者[14]将CANopen协议应用于某电动伺服系统,最终实现了控制器作为主站,通过CANopen协议实现了对从站的控制,系统运行稳定,并将其推广到了导弹发射架;靳剑兵学者[14]设计了双机驱动协同控制系统,采用CANopen协议通信,最终测试结果表明,系统可靠性较高,且数据传输快速准确,并将其应用到了矿用刮板输送机;施磊学者[16]将CANopen通信协议的程序移植到伺服控制驱动程序中去,并针对伺服驱动状态中的状态机和DSP402状态机设计了接口功能,实现了两者间的通信,达到了预期效果;李志嘉学者[16]设计了一套CAN总线同步控制双轴伺服电机的系统,进行了两个不同运动轨迹试验,控制精度达到两百反馈脉冲,验证了基于CANopen的多轴伺服电机同步控制的可行性[17]。因此所研究的基于CANopen协议的伺服系统控制方法,系统运行稳定可靠、数据准确、实时性好,CANopen协议易植入,在现场只需两条双绞线即可完成CAN通信网络的搭建,用户通过上位机界面发送报文控制伺服电机,同时也能通过电机的反馈信息随时监控电机的当前参数,该方法可以进一步扩展适用于更多场景,工程应用广泛。

猜你喜欢

伺服电机报文总线
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
关于CAN总线的地铁屏蔽门控制思路论述
基于报文类型的限速值动态调整
人形辅助锻炼 助力机器人
浅析反驳类报文要点
可编程自助取物机械臂
奥迪A6L空调不出风
Q&A热线
PCI9030及其PCI总线接口电路设计