0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于CANoen协议实现DSP系统与上位机CAN的通讯

电子设计 来源:郭婷 作者:电子设计 2019-07-10 08:08 次阅读

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标识符分配情况。

基于CANoen协议实现DSP系统与上位机CAN的通讯

2.2.3 CANopen通讯机制

CANopen通讯模型定义了四种报文(通讯对象)[1]:

1) 管理报文NMT(Network Management)

用于网络中主节点对从节点监控和管理。此消息不需要应答。NMT消息格式如表1所示。

基于CANoen协议实现DSP系统与上位机CAN的通讯

2)服务数据对象SDO(Service Data Object)

SDO通过使用索引和子索引来访问一个设备的OD。协议属于确认服务类型。根据传送数据的长度不同,有两种传送机制:加速传送(最多4字节)和分段传送(大于4字节)。发送和应答报文总是包含8字节信息,基本结构如表2所示:

基于CANoen协议实现DSP系统与上位机CAN的通讯

3) 过程数据对象PDO(Process Data Object)

用于传输正常网络操作中的实时数据。每个PDO在OD中用2个对象描述:PDO通讯参数和PDO映射参数。在此举例说明PDO的使用方法。假设第二个发送PDO映射如表3所示,如果这个报文被发送,则由3字节组成,报文结构如表4所示。

基于CANoen协议实现DSP系统与上位机CAN的通讯

4) 预定义报文或特殊功能报文

定义了三个用于同步,应急指示和时间标记的特定对象。用于配合以上三种通讯机制。

3、系统通讯的软、硬件设计

3.1 CAN总线硬件设计

由于TMS320LF2407A芯片内自带了CAN总线控制器模块,使得CAN总线的电路设计变得非常简单。将TMS320LF2407A的CANTX、CANRX引脚和CAN收发器PCA82C250的TXD、RXD引脚相连即可。CAN总线之间需要使用一个合适的终端电阻连接。为了进一步提高系统的抗干扰能力,可以在控制器和传输介质之间加接光电隔离器件6N137。电路原理图如图2所示。

基于CANoen协议实现DSP系统与上位机CAN的通讯

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所示。

基于CANoen协议实现DSP系统与上位机CAN的通讯

4 、测试结果

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

基于CANoen协议实现DSP系统与上位机CAN的通讯

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


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    544

    文章

    7686

    浏览量

    344376
  • CAN总线
    +关注

    关注

    145

    文章

    1812

    浏览量

    129600
  • 电机
    +关注

    关注

    139

    文章

    8315

    浏览量

    142114
收藏 人收藏

    评论

    相关推荐

    【TL6748 DSP申请】DSP基于Labview的上位开发

    配套使用的底层通讯程序。项目描述:DSP是数字信号处理,本人想要基于这一点做一个上位。成功开发过基于DSP TMS320F28335底层芯
    发表于 11-06 09:54

    FPGA与上位通过CAN通讯的程序代码

    以Xilinx FPGA(Sparten 6系列)为主控制器,外接SJA1000 CAN控制器,试图通过CAN 通讯建立与上位的联系,跪求
    发表于 03-09 13:40

    需要开发一个上位和单片的双向通讯协议

    需要开发一个上位和单片的双向通讯协议,现在上位给单片
    发表于 04-08 15:39

    采用USB协议实现DSP高速上位接口设计

    0 引言ADI公司的DSP器件(ADSP-TS101)具有浮点实时处理能力强、并行性好等优点,从而广泛被弹载信号处理系统选用。其作为弹载主处理器,在导弹的系统试验中,需要利用上位
    发表于 05-31 05:00

    常见的通讯协议有哪几种

    通讯载体目前实验设备中通讯方式有串口通讯CAN通讯、以太网通讯。常见的
    发表于 08-18 07:27

    DSP28035的CAN通讯程序 精选资料推荐

    、TJA1050芯片是属于物理层芯片,将TTL电平信号转换为符合CAN规范的差分信号,从而实现CAN通讯。因此,上位
    发表于 08-20 08:07

    上位通信协议控制电机上位C++实现上位6

    常见的上位通信协议控制电机上位C++实现上位
    发表于 09-16 06:22

    通讯C#编程上位语言和PLC是如何实现通讯

    ABPLC通讯协议过程是怎样的?通讯C#编程上位语言和PLC是如何实现
    发表于 09-29 06:57

    如何对基于stm32f103zet6的CAN上位进行通讯实验

    CAN协议是通过哪几种类型的帧进行的?如何对基于stm32f103zet6的CAN上位进行通讯
    发表于 11-09 07:22

    单片上位通讯协议是什么?

    单片上位通讯协议是什么
    发表于 10-10 07:40

    基于DSP的CANopen通讯协议实现

    CANopen 是一种开放的应用层协议,其应用可以进一步提高系统的可靠性、通讯效率及灵活性,而且可以使产品具有很好的兼容性。本文采用CANopen 通讯
    发表于 09-03 09:19 17次下载

    交流伺服系统DSP上位机的通讯实现

    本文介绍了基于DSP的盘流伺服系统上位机的通讯.详细升绍了DsP串行通讯的硬件接口电路.寄存器
    发表于 10-12 15:40 73次下载
    交流伺服<b class='flag-5'>系统</b>中<b class='flag-5'>DSP</b>与<b class='flag-5'>上位</b>机的<b class='flag-5'>通讯实现</b>

    CAN总线DSP系统上位CAN通讯

    字电机伺服驱动系统,使用CANopen通讯协议实现CAN总线数字信号处理器(DSP
    发表于 10-31 11:00 16次下载
    <b class='flag-5'>CAN</b>总线<b class='flag-5'>DSP</b><b class='flag-5'>系统</b>与<b class='flag-5'>上位</b>机<b class='flag-5'>CAN</b>的<b class='flag-5'>通讯</b>

    基于DSP的CANopen通讯协议的解析

    字电机伺服驱动系统,使用CANopen通讯协议实现CAN总线数字信号处理器(DSP
    发表于 11-01 16:19 9次下载
    基于<b class='flag-5'>DSP</b>的CANopen<b class='flag-5'>通讯</b><b class='flag-5'>协议</b>的解析

    DSP28035的CAN通讯程序

    、TJA1050芯片是属于物理层芯片,将TTL电平信号转换为符合CAN规范的差分信号,从而实现CAN通讯。因此,上位机与
    发表于 12-05 17:36 39次下载
    <b class='flag-5'>DSP</b>28035的<b class='flag-5'>CAN</b><b class='flag-5'>通讯</b>程序