PXF3003-基于-DSP的-CANopen通讯协议的实现

Shanghai Passiontech Tech, 021-51870017, sales@51Lm.cn

     
     
     

基于-DSP的-CANopen通讯协议的实现


型号: PXF3003


简介:基于 DSP的 CANopen通讯协议的实现CANopen是一个开放的、标准化的应用层协议 ,在各种控制系统中得到了广泛的应用。依靠CANopen协议的支持 ,可以对不同CAN厂商的设备通过总线进行实时通讯。本文针对自主研发的全数字电机伺服驱动系统 ,使用CANopen通讯协议实现了CAN总线数字信号处理器 (DSP)系统与上位机CAN卡...
品牌 ixxat ixxat
产地德国
型号PXF3003
折扣其他电询

 于 DSP的 CANopen通讯协议的实现

CANopen是一个开放的、标准化的应用层协议 ,在各种控制系统中得到了广泛的应用。依靠 CANopen协议的支持 ,可以对不同 CAN厂商的设备通过总线进行实时通讯。

本文针对自主研发的全数字电机伺服驱动系统 ,使用 CANopen通讯协议实现了 CAN总线数字信号处理器 (DSP)系统与上位机 CAN卡之间的通讯 ,并通过测试实验验证了信息传递的可靠性 ,保证了全数字网络化伺服驱动系统中对电机控制的快速性、准确性和实时性。

2通讯系统实现的基本原

2.1 LF240x列 DSP的 CAN控制器模块

LF240x系列 DSP的 CAN控制器模块 ,是一个完全的 CAN控制器。具有以下特性 :

(1)完全支持 CAN2.0B协议 ;

  1. 6个邮箱 ,用于接收和发送信息 ,其数据长度为 0~8个字节 ;  
  2. 可编程的中断配置 ,位定时器及 CAN总线唤醒功能 ;
  3. 当发送出现错误或仲裁丢失数据时 ,CAN控制器有自动重发功能 ;

(5)总线错误自诊断功能 ;

马艳歌 :硕士研究生中国科学院知识创新工程重大项目 (KGCX-SW-15)

(6)支持自测试模式。

2.2 CANopen

CANopen协议以 CAN芯片为硬件基础 ,有效利用 CAN芯片所提供的简单通信功能区实现工业控制网络的复杂应用层协议要求。应用中应该注意以下几个方面的内容 :

2.2.1对象字典 OD(Object Dictionary)

OD是 CANopen协议的核心概念 ,它是一个有序的对象组 ,每个对象用一个 16位的索引值和一个 8位的子索引寻址。 CANopen网络中的每个节点都有一个OD,包含了描述这个设备和它的网络行为的所有参数。

 

2.2.2 CANopen标识

CANopen定义了强制性的缺省标识符 (COB-ID)分配表。它是基于 11位的 CAN-ID,包括 4位功能段 (Function Code)和 7位地址段 (Node-ID),如图 1所示。文献中给出了 CANopen预定义主 /从连接集 CAN标识符分配情况。

表 NMT消息格


2.2.3 CANopen通讯机制

ANopen通讯模型定义了四种报文 (通讯对象 ):

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的 CANTXCANRX引脚和 CAN收发器 PCA82C250的 TXDRXD引脚相连即可。 CAN总线之间需要使用一个合适的终端电阻连接。为了进一步提高系统的抗干扰能力 ,可以在控制器和传输介质之间加接光电隔离器件 6N137。电路原理图如图 2所示。

4$

/0 1 25 //

图 CAN总线收发电

3.2 CANopen协议对象字典 OD的建立

本伺服驱动器通讯支持 CANopen通讯子协议 (DS301)和驱动设备子协议及运动控制命令 (DSP402)。在开发的过程中 ,根据应用的具体要求 ,将数字输入/输入模块、电机及驱动设备、控制器、编码器等设备类型及其相应的功能在设备描述的协议中进行了描述。建立的 OD分为三个部分 :

 

1)通讯协议对象 (Index0x1000-0x1AFF)

定义设备类型 ,错误寄存器 ,厂商指定状态寄存器,COB-ID同步信息 ,通讯循环周期 ,同步 CAN信息窗口 ,以及设备名 ,软硬件版本号等。另外 SDO的通讯参数以及 PDO的通讯和映射参数也在该部分定义。本设计中采用固定 PDO映射 ,不允许动态映射。

2)标准设备子协议对象 (Index0x6000-0x65FF)

定义三类信息 :第一类是电机及驱动器的相关设备参数 ,如类型 ,厂商信息 ,分类号等 ;第二类是命令字和状态字 ;第三类是位置、速度的相关参数。

3)厂商指定协议对象 (0x2000-0x20FF)

根据厂商需求 ,灵活定义所使用的变量。此部分的使用使 CANopen协议既保证了设备的通用性 ,又保证了系统良好的扩展性。

3.3通讯程序的设计及实现针对带 CAN控制器的 TMS320LF2407A和 PC机 CAN卡之间的通讯进行了软件设计。

TMS320LF2407A的 CAN控制器的邮箱 2配置为接收方式 ,邮箱 3配置为发送方式。都采用标准信息帧格式 (11Bit ID)。其中发送信息采用查询方式 ,接收信息采用中断方式 ,邮箱 2用低中断优先级。信息传输波特率设置为 500Kbps

采用 CANopen协议对设备进行控制的过程可以理解为用 SDO对数据字典的读写过程。检测设备对象的状态或查询设备当前信息时 ,可用 SDO读取数据字典中的对象 ;要对设备发布控制命令可利用 SDO向相应的数据字典对象写入数据。接收到信息帧时首先要将其命令字节 (byte0)读出 ,以确定下一步的读写命令处理。

信息帧的接收和发送均采用缓冲区的方式。读操作时 ,发送信息帧长度为 4字节 ,应答信息帧约定为 8字节 ;写操作时 ,发送信息帧长度约定为 8字节 ,应答信息帧为 4字节。

采用不同的发送邮箱发送数据长度不同的信息帧。本程序设计中 ,采用邮箱 4发送 4字节长度的信息帧 ,采用邮箱 5发送 8字节长度的信息帧。这种方式可以提高信息传输的效率。软件设计流程图如图 3所示。

4测试结果

为了测试 CAN总线 DSP系统与 PC机 CAN卡之间的通讯情况 ,采用 VC++编写了友好的人机界面 (见图 4)。进行通讯测试时 ,首先要选择通讯端口 ,设置通讯波特率 ,ID屏蔽位 ,信息帧格式及传输数据的格式 (十进制或十六进制 )。特别需要注意 PC端设置的通讯波特率要和 DSP端的通讯波特率保持一致。然后打开 CAN总线端口 ,选定发送 SDO的功能段及地址段 ,填写信息帧长度 (以字节为单位 )及内容 ,即可进行通讯测试。

例如 ,要将 1号地址的电机轮速期望值设为 0x3E8,电机轮速期望值在 OD中的索引为 0x606B,使用启动域下载协议 ,加速传输。则设置地址段为 1,信息帧长度为 8,信息帧内容为 2B6B60 00 E8 03 00 00。发送成功后返回应答信息帧内容为 :ID=581,

LENTH=4,DATA=60 6B60 0 0 0 0 0,说明写入操作正确 (见图 4)。

要将 1号地址的电机轮速期望值读出 ,即读出 OD中的对象 0x606B,使用启动域上传协议 ,服务器使用加速传输方式应答。则设置地址段为 1,信息帧长度为 4,信息帧内容为 40 6B60 00 00 00 00 00,发送成功后返回应答信息帧内容为 :ID=581,LENTH=8,DATA=4B6B60 0 E8 03 0 0,说明读取操作正确 (图4)。

本文用 CANoen协议实现了 CAN总线 DSP系统与上位机 CAN的通讯 ,实现了控制系统的数字化、模块化 ,并保持了系统的可扩展性 ,为提高伺服驱动系统的智能化水平奠定了坚实的基础。参考文

[1]H.Boterenbrood. CANopen:high-level protocol for CAN-bus.

[2]Elmo Motion Control CANopen DS 301 Implementation Guide. ElmoMotion Control. 2003.9

[3]Elmo Motion Control CANopen DSP 402 Implementation Guide. ElmoMotion Control. 2003.9

[4]孙一波等 .大规模视频会议中的多人桌面共郭系统的设计与实现 [J],微计算机信息 ,2005,8-3:139-141作者简介 :马艳歌 (1981-),女,汉,硕士研究生。研究

方向为伺服电机驱动、智能控制 ;E-mail:yangezi@sia. cn;凯 (1964-),男,汉,副研究员 ,研究方向是 :伺服电机驱动、智能控制、智能机械、机器人 ;徐方 (1962-),男,汉,研究员 ,研究方向 :智能控制 ,机器人技术。 Author Introduction:Ma Yange(1981-) Female, Han Nationality, Master, Research Field: Servo Driver, Intelligent System;Jia Kai(1964-) Male, Han nationality, Associate Professor, Research Field: Servo Driver, Intelligent Control, Intelligent Mechanism, Robotics;Xu Fang (1962-) Male, Han Nationality, Professor, Research Field:Intelligent Control, Robotics.

测试传进扫描链里 ,所以对于结果的观察就没有问题。但是在改进后的方法中 ,输出结果要怎样观察将是一个问题。

如果输出的向量只有一位就不会有这样的问题 ,因为我们现在要产生一个新的测试向量所需要的时间只有一个时钟周期 ,所以时间刚刚好。但是一般而言,待测电路的输出向量都会超过一位 ,所以我们在观察电路输出结果这个步骤上就会有问题。为了解决这个问题 ,需要对传统的基于扫描的测试电路做些修改。在待测电路的输出部分 ,可以用 MISR来取代原来的扫描链电路 ,也就是将输出送到 MISR做特征分析 ,如图 6所示。

但是由于电路越来越复杂 ,电路的主要输入与输出的个数就会很多 ,如果对这样的待测电路加测试电路,将会出现外加电路面积过大的问题。所以我们针对 MISR的部分提出一个方法 ,使得因测试而增加得 MISR可以尽量地缩小。

缩小 MISR的大小最直接的想法是将主要输出经组合电路压缩变小 ,但是这样会使错误覆盖率降低 ,使测试向量变多 ,这些问题在文献中谈到了。造成错误覆盖率降低的原因是如果我们将有共同输入向量的两个主要输出通过组合电路合并的话 ,将可能会造成原本可以测试到的错误 ,在合并后就测试不到了 ,所以造成了错误覆盖率的降低。

为了避免这个情况的发生 ,我们在向量压缩的过程中 ,只有将没有共同输入向量的主要输出合并在一起,就不会有问题出现了。如图 6所示 ,两个不同的待测电路的主要输出经过合并以后输出到 MISR,这样用一个与门代替了一个寄存器以便减少面积 ,而错误覆盖率则因为两两合并的主要输出端都没有相同的主要输出资料 ,所以就没有错误覆盖率降低的问题存在,即原来可以被侦测到的错误 ,在经过主要输出端合并之后仍然可以被侦测到。

4结论

经过改进后的基于扫描的测试架构 ,用向量压缩来减少测试时间 ,并且将 Test-Per-Scan的测试方式改成了 Test-Per-Clock的测试方式 ,加快了测试的速度 ;在不影响故障覆盖率的前提下将 MISR缩小 ,减少了硬件消耗 ,满足了对大型电路进行测试的需要。


url: http://www.51lm.cn/p/templates/cn/show.php?cid=0&aid=3003

 

电话400-878-1895, 传真:021-51561359 邮箱:sales@51LM.cn
sales@51LM.cn 上海徐汇区斜土路2601号嘉汇广场T1-11B