微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于DSP的CANopen通讯协议的实现

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

时间:01-18 来源:维库开发网 点击:

件设计。

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的通讯,实现了控制系统的数字化、模块化,并保持了系统的可扩展性,为提高伺服驱动系统的智能化水平奠定了坚实的基础。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top