- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于DSP的CANopen通讯协议的实现
摘要: CANopen是一种开放的应用层协议,其应用可以进一步提高系统的可靠性、通讯效率及灵活性,而且可以使产品具有很好的兼容性。本文采用CANopen通讯协议实现了CAN总线DSP系统与上位机CAN卡之间的通讯,并通过测试实验验证了信息传递的可靠性,保证了全数字网络化伺服驱动系统中对电机控制的准确性和实时性。
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所示。
4) 预定义报文或特殊功能报文
定义了三个用于同步,应急指示和时间标记的特定对象。用于配合以上三种通讯机制。
3系统通讯的软、硬件设计
3.1 CAN总线硬件设计
由于TMS320LF2407A芯片内自带了CAN总线控制器模块,使得CAN总线的电路设计变得非常简单。将TMS320LF2407A的CANTX、CANRX引脚和CAN收发器PCA82C250的TXD、RXD引脚相连即可。CAN总线之间需要使用一个合适的终端电阻连接。为了进一步提高系统的抗干扰能力,可以在控制器和传输介质之间加接光电隔离器件6N137。电路原理图如图2所示。
作者:马艳歌 贾凯 徐方 来源:微计算机信息
上一篇:CPLD设计的CCD信号发生器技术
下一篇:从RTOS移植到实时Linux