1 引言
CANopen是一个开放的、标准化的应用层协议,在各种控制系统中得到了广泛的应用。依靠CANopen协议的支持,可以对不同CAN厂商的设备通过总线进行实时通讯。
本文针对自主研发的全数字电机伺服驱动系统,使用CANopen通讯协议实现了CAN总线数字信号处理器(DSP)系统与上位机CAN卡之间的通讯,并通过测试实验验证了信息传递的可靠性,保证了全数字网络化伺服驱动系统中对电机控制的快速性、准确性和实时性。
2 通讯系统实现的基本原理
2.1 LF240x系列DSP的CAN控制器模块
LF240x系列DSP的CAN控制器模块,是一个完全的CAN控制器。具有以下特性[6]:
(1)完全支持CAN2.0B协议;
(2)对象有6个邮箱,用于接收和发送信息,其数据长度为0~8个字节;
(3)可编程的中断配置,位定时器及CAN总线唤醒功能;
(4)当发送出现错误或仲裁丢失数据时,CAN控制器有自动重发功能;
(5)总线错误自诊断功能;
(6)支持自测试模式。
2.2 CANopen协议
CANopen协议以CAN芯片为硬件基础,有效利用CAN芯片所提供的简单通信功能区实现工业控制网络的复杂应用层协议要求。应用中应该注意以下几个方面的内容:
2.2.1 对象字典OD(Object Dictionary)
OD是CANopen协议的核心概念[1],它是一个有序的对象组,每个对象用一个16位的索引值和一个8位的子索引寻址。CANopen网络中的每个节点都有一个OD,包含了描述这个设备和它的网络行为的所有参数。
2.2.2 CANopen 标识符
CANopen定义了强制性的缺省标识符(COB-ID)分配表。它是基于11位的CAN-ID,包括4位功能段(Function Code)和7位地址段(Node-ID),如图1所示。文献[1]中给出了CANopen预定义主/从连接集CAN标识符分配情况。
2.2.3 CANopen通讯机制
CANopen通讯模型定义了四种报文(通讯对象)[1]:
1) 管理报文NMT(Network Management)
用于网络中主节点对从节点监控和管理。此消息不需要应答。NMT消息格式如表1所示。
2)服务数据对象SDO(Service Data Object)
SDO通过使用索引和子索引来访问一个设备的OD。协议属于确认服务类型。根据传送数据的长度不同,有两种传送机制:加速传送(最多4字节)和分段传送(大于4字节)。发送和应答报文总是包含8字节信息,基本结构如表2所示:
3) 过程数据对象PDO(Process Data Object)
用于传输正常网络操作中的实时数据。每个PDO在OD中用2个对象描述:PDO通讯参数和PDO映射参数。在此举例说明PDO的使用方法。假设第二个发送PDO映射如表3所示,如果这个报文被发送,则由3字节组成,报文结构如表4所示。