文献标识码: B
文章编号: 0258-7998(2011)07-0054-03
在灾后救援现场,为实现废墟环境下的灵活移动,增强对各种复杂地形的适应性,机器人需要具有多个关节,并且各关节需要独立运动。在搜索和救援过程中,为了能在诸如陡坡、楼梯、管道及废墟等复杂环境下自由移动,要求机器人具备多种运动姿态并且能迅速改变姿态以满足不同环境的需求。因此要求机器人的各关节具有良好的运动特性。
关节运动性能的好坏决定了机器人能否适应在复杂环境中灵活运动的要求,是评价救援机器人性能的一个重要指标。为了对机器人各关节运动性能进行测评,通过建立与机器人各关节控制器相连的运动控制主站,实现对关节控制器的组态与监视,并通过分析机器人运动关节反馈回的数据优化控制参数,使得运动关节控制性能得以提高。针对运动控制中对各关节电机控制实时性与同步性以及结构灵活性的要求,提出了一种基于CANopen协议的救援机器人调试系统。
CANopen为基于CAN的高层协议,是最初由BOSCH公司提出的一种串行数据通信总线。其具有可靠性高、抗干扰性强、开发简单、造价低廉及其短帧传输和无破坏仲裁技术等特点,应用极为广泛。CANopen是一个基于CAL的子协议,采用面向对象的思想设计,具有很好的模块化特性和很高的适应性,通过扩展可以适用于大量的应用领域[1]。
1 方案设计
图1所示为救援机器人调试系统框图,包含电机控制器、基于CAN总线的网络构架和PC机上的调试系统。
电机驱动器控制方法采用了三个基本控制环,即位置环、转速环和转矩环,各闭环采用PID算法控制,以便更加精确地控制电机;同时建立了CANopen从站,通过CAN总线将各电机驱动器和PC机上的调试软件之间进行数据交换;PC机则通过PCI-CAN卡实现了CANopen主站,从而方便对电机驱动器上的电机数据进行监测和处理,并发送调试系统所发出的命令;采用NI公司的Labview调试系统上位机的程序编写。
2 CANopen从站设计
2.1 硬件设计
电机控制器用来对救援机器人关节进行精确控制,是系统的关键。控制器采用MC56F8322微控制器作为控制核心,图2为系统框图。
电机控制器采集速度、电流、电压三种参数,各路采用PID闭环对电机进行精确控制。CAN总线部分采用MC56F8322内置MSCAN模块,实现了现场总线控制系统的构架;CAN总线收发器与控制器之间采用高速光电隔离器件6N137实现信号隔离;同时采用隔离型DC-DC变换器实现电源隔离,从而提高了现场抗干扰能力。除了以上主要部分以外,还有CPU监控器、功能选择开关以及LED指示部分。LED分别用于电源指示、CAN接口当前的收发状态指示以及接口的通信故障(如总线关闭)指示。
2.2 软件设计
CANopen从站移植了CANopen协议的开源代码CanFestival,该开源代码实现了CANopen协议的全部内容。在系统软件设计时,只需完成CAN的硬件设置、对象字典的定义以及canDispatch()函数的调用即可。
CANopen协议的核心部分是对象字典(Object Dictionary),通过对象字典对设备功能进行描述。CANopen对象字典是一个有序的对象组,每个对象采用一个16位的索引来寻址,其范围在0x1000~0x9FFF之间。为了允许访问数据结构中的单个元素,定义了一个8 bit的子索引。CANopen设备的功能及特性用电子数据表单(EDS)的形式描述,实际的设备设置通过设备配置文件(DCF)进行描述[1]。系统中电机的速度、电流、电压是最重要的监控信息,故将其定义在如下结构体中:
typedef struct{
float voltage; //电压
float Current; //电流
float velocity; //速度
}MotorPara;
本系统的电机控制器是以非标准设备设计的,根据对象字典结构应定义在制造商特定规范区域2000h~5FFFh之间。如表1所示。
3 CANopen主站设计
CANopen协议采用对象字典(OD)、电子数据文档(EDS)等概念来描述设备和协议的相关信息,还规定了网络管理(NMT)、服务数据对象(SDO)、过程数据对象PDO等多种通信机制[1]。在CANopen主站中,利用LabVIEW实现了NMT、SDO和PDO等功能。
3.1 NMT
NMT是提供对网络上所有节点的状态和行为的控制及监测机制,在CANopen网络中只允许一个NMT主节点处于激活状态。只有NMT主节点能够传送NMT模块控制报文,所有从设备必须支持NMT模块控制服务[1]。
通过NMT消息可以对节点状态进行操作,LabVIEW中的具体实现如图3所示。首先根据NMT消息格式通过数组函数将COB-ID、RTR、LEN、Node-ID及STATUS捆绑为U8数组,由于VISA仅支持U8字符串发送数据,因此需要将U8数组转换为U8字符串。然后调用VISA Write函数实现USB的数据发送。
3.2 SDO
SDO采用客户(Client)/服务器(Server)通信方式, 通过索引和子索引向应用程序提供访问对象字典的客户接口。SDO是一种需要请求和应答的点对点通信方式, 允许任意长度的数据通信[1]。PC机上管理控制系统采用SDO方式对通用温度和整流器控制器参数进行配置, 完成控制器工艺参数的配置和控制模式的切换等。
CANopen协议规定SDO消息为8 B长度,第1个字节为命令码,第2、3个字节为索引,第4个字节为子索引,其余字节为消息所携带的数据。与NMT消息处理类似,SDO消息也是先通过数组函数根据SDO的消息格式创建一个U8数组,之后将数组转换为U8字符串,最后通过USB发送。具体实现如图4所示。
在CANopen通信机制中,服务器收到SDO信息后必将应答,所以主站必须处理服务器返回的SDO消息。消息的处理过程为,首先根据COB-ID携带的功能码判断是否为SDO消息,然后判断SDO消息中的命令字字节,根据不同的命令字做出相应的处理。
3.3 PDO
PDO采用生产者/消费者通信方式, 数据从一个生产者传到一个或多个消费者,数据长度限制在8个字节之内。PDO 通信没有协议规定, PDO报文的内容是预定义或者在网络启动时配置,因此多用于实时数据传输,工艺过程中工艺参数的传送由PDO实现。CANopen中定义的PDO消息与正常的CAN帧格式相同, LabVIEW下实现方法可参考NMT及SDO。
调试系统上位机可以监视在不同的PID参数控制时电机的响应特性,从而为控制参数优化提供直观的依据。由此可见,基于CANopen网络的救援机器人调试系统成功地实现了对运动关节各项参数的实时监控和控制,并且可以对电机控制参数进行在线配置,对救援机器人的稳定运行提供了极大的保障。
参考文献
[1] Boterenbrood H.CANopen high-level protocol for CAN-bus[C].N IKHFF Internal Documentation,2000(9).
[2] 王俊波,胥布工.CANopen协议分析与实现[J].微计算机信息,2006,22(6-2):104-106.