• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 基于DSP的CANopen通讯协议的实现

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

录入:edatop.com     点击:

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

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

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

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

2) 标准设备子协议对象(Index 0x6000-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,信息帧内容为2B 6B 60 00 E8 03 00 00。发送成功后返回应答信息帧内容为:ID=581,LENTH=4,DATA=60 6B 60 0 0 0 0 0,说明写入操作正确(见图4)。

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

5 结束语

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

作者:马艳歌 贾凯 徐方 来源:微计算机信息

上一篇:CPLD设计的CCD信号发生器技术
下一篇:从RTOS移植到实时Linux

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图