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

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

3天内不再提示

CANOpen协议的嵌入式简化分析及功能介绍

电子设计 来源:赛灵思 作者:赛灵思 2020-02-03 08:06 次阅读

CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线。CANopen 实现了OSI模型中的网络层以上(包括网络层)的协定。CANopen 标准包括寻址方案、数个小的通讯子协定及由设备子协定所定义的应用层。 CANopen 支援网络管理、设备监控及节点间的通讯,其中包括一个简易的传输层,可处理资料的分段传送及其组合。一般而言数据链结层及物理层会用CAN来实作。除了 CANopen 外,也有其他的通讯协定(如EtherCAT)实作 CANopen 的设备子协定。CANopen由非营利组织CiA(CAN in Automaion)进行标准的起草及审核工作,基本的 CANopen 设备及通讯子协定定义在 CAN in Automation (CiA) draft standard 301中。针对个别设备的子协定以 CiA 301 为基础再进行扩充。如针对 I/O 模组的 CiA401 及针对运动控制的 CiA402。

本说明是CAN上层协议CANOpen协议的嵌入式简化,较原始CANOpen版本简单易用,且更适应嵌入式模块通讯的需要,并且兼容CANOpen协议。

下面按照协议支持的功能分别进行说明:

NMT网络管理服务

网络管理状态表:

CANOpen协议的嵌入式简化分析及功能介绍

说明:一般终端主节点是指上位机,如上位用于网络管理和监控的PC机,从节点是指被管理的各模块。

如果节点ID是0表示命令会被广播至所有从节点,从节点必须执行相应的命令。

命令说明符功能见下表:

CANOpen协议的嵌入式简化分析及功能介绍

网络管理状态表:

CANOpen协议的嵌入式简化分析及功能介绍

CANOpen协议的嵌入式简化分析及功能介绍

根据节点的状态提供以下服务:

CANOpen协议的嵌入式简化分析及功能介绍

过程数据对象(PDO)服务

过程数据对象用于在节点之间传送过程数据,如I/O模块I/O状态读取和设定,模拟量采集和模拟量输出等等,本协议考虑从机硬件限制最多支持4组PDO,每组包含一个RPDO和一个TPDO,现已I/O模块为例进行说明:

设I/O模块有24输入,24输出,24输入通过TPDO传给监控终端或其他节点,24输出通过RPDO由控制节点对其进行设定,采用发送和接收PDO1组,即标识符TPDO:0x180+NODE_ID,RPDO:0x200+NODE_ID,用3个字节就可以表示24个I/O量,因此发送和接收PDO可以表示如下(假设NODE_ID=1):

CANOpen协议的嵌入式简化分析及功能介绍

如果是8通道的模拟量采集模块则需要两个TPDO来传送采集的数据,不需要RPDO,因为每个通道产生一个16位数据,一共是16字节,每个TPDO只能够传送8字节。两个TPDO标识符分别为:0x180+NODE_ID,0x280+NODE_ID。

每帧数据格式如下表(设NODE_ID=2):

CANOpen协议的嵌入式简化分析及功能介绍

I/O节点←监控终端(RPDO)

I/O节点→监控终端(TPDO)

服务数据对象(SDO)服务

服务数据对象用于读写节点的对象字典,现 只实现SDO下载和上传的全速模式,不支持正常模式也不支持块下载和上传,因为数据量不大,实现的功能足够用,SDO全速下载和上传采用应答式服务,由监控终端向节点发送服务请求,由节点返回应答。

现假设某节点NODE_ID=3,协议报文如下:

读节点OD

假设,读SDO index = 0x1018 subindex = 0x00,返回的是1字节data=0x04

监控终端→节点(终端请求)

CANOpen协议的嵌入式简化分析及功能介绍

监控终端←节点(节点应答)

COB-ID0字节1字节2字节3字节4字节5字节6字节7字节1411(0x583) 命令index subindex 数据凑够8个字节0x4F0x18 0x10 0x00 0x04 0x00 0x00 0x00

写节点OD

假设,写SDO index=0x1017,subindex=0x00,写数据为0x07D0

监控终端→节点(终端请求)

CANOpen协议的嵌入式简化分析及功能介绍

节点返回的错误代码如下:

SDO_ABORT_UNSUPPORTED 0x06010000UL 不支持该功能

SDO_ABORT_NOT_EXISTS 0x06020000UL 不存在的索引

SDO_ABORT_READONLY 0x06010002UL 只读,不可写

SDO_ABORT_TYPEMISMATCH 0x06070010UL 类型不匹配

SDO_ABORT_UNKNOWN_COMMAND 0x05040001UL 未知命令

SDO_ABORT_UNKNOWNSUB 0x06090011UL 未知子索引

注:命令字节含义请参考CANOpen协议文件DS301。

错误控制——心跳(或者叫脉动)协议(heatbeat)

错误控制用于了解总线上各节点的状态,本文只实现心跳协议,由各节点向监控终端定期发送心跳报文,报告本节点的状态,报文如下:

设节点NODE_ID=2

节点→监控终端

CANOpen协议的嵌入式简化分析及功能介绍

节点在启动之后发出BOOTUP心跳,然后按固定频率发出脉动消息帧,监控终端接收该报文用以检测该节点状态.

责任编辑:gt


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

    关注

    5046

    文章

    18844

    浏览量

    299308
  • 协议
    +关注

    关注

    2

    文章

    590

    浏览量

    39065
  • 现场总线
    +关注

    关注

    3

    文章

    518

    浏览量

    38494
收藏 人收藏

    评论

    相关推荐

    SIP协议嵌入式Linux中的实现

    嵌入式系统由于本身资源的限制,现有的SIP协议直接应用于嵌入式便携设备还有困难。为满足SIP协议嵌入式系统中的商用要求,设计出一个
    发表于 10-12 12:22 2179次阅读
    SIP<b class='flag-5'>协议</b>在<b class='flag-5'>嵌入式</b>Linux中的实现

    CAN上层协议CANOpen协议嵌入式简化说明

    CANopen是一种架构在控制局域网路(Controller Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一种现场总线
    的头像 发表于 12-23 10:11 3764次阅读
    CAN上层<b class='flag-5'>协议</b><b class='flag-5'>CANOpen</b><b class='flag-5'>协议</b>的<b class='flag-5'>嵌入式</b><b class='flag-5'>简化</b>说明

    Profinet协议转换为CanOpen协议来连接CanOpen伺服驱动器的应用

    局域网(CAN)网络的通信协议,被广泛应用于汽车和其他嵌入式系统中。对于将Profinet协议转换为CanOpen协议以链接台达B3系列伺服
    发表于 01-10 10:29

    CANopen嵌入式模块的应用

    CANopen嵌入式模块的应用CANopen嵌入式模块中实现了标准的CANopen固件,可以实现数字输入/输出及模拟输入的应用。通过模块上的
    发表于 11-27 09:07

    介绍嵌入式网络协议栈基础知识

    第2章 嵌入式网络协议栈基础知识本章教程为大家介绍嵌入式网络协议栈基础知识,本章先让大家有一个全面的认识,后面章节中会为大家逐一讲解用到的
    发表于 08-03 06:58

    介绍嵌入式网络协议栈基础知识

    第2章 嵌入式网络协议栈基础知识本章教程为大家介绍嵌入式网络协议栈基础知识,本章先让大家有一个全面的认识,后面章节中会为大家逐一讲解用到的
    发表于 08-04 08:17

    OEM嵌入式通讯模块介绍

    1OEM嵌入式通讯模块介绍OEM嵌入式通讯模块是一款适用于工业以太网和现场总线协议嵌入式IC模块,利用该模块可快速又轻松地把您的设备集成到
    发表于 12-20 07:19

    主流的小型嵌入式网络协议

    新产品、新技术也是层出不穷,本章节就为大家介绍当前主流的小型嵌入式网络协议栈。目录第1章 当前主流的小型嵌入式网络协议栈1.1 当前主流的
    发表于 12-23 06:18

    嵌入式TCPIP协议分析与研究

    嵌入式系统中大量存在的是8/16 位低速处理器,在进行Internet 接入时,由于本身 资源的限制,很难实现完整的TCP/IP 协议。文章阐述了嵌入式系统接入Internet 的方法,
    发表于 06-13 11:46 9次下载

    CANopen通讯协议介绍

      总述   CANopen是一种架构在控制局域网路(Control Area Network, CAN)上的高层通讯协定,包括通讯子协定及设备子协定常在嵌入式系统中使用,也是工业控制常用到的一
    发表于 08-05 16:07 5023次阅读

    TCP协议与基于Nagle算法的嵌入式介绍

    本文提出了一种适用于8/ 16 位低速处理器的简化TCP 协议。对其性能进行分析发现,在嵌入式网络大量使用小数据包,造成网络带宽利用率低下并且容易造成网络阻塞。 因此在
    发表于 09-30 14:16 3次下载
    TCP<b class='flag-5'>协议</b>与基于Nagle算法的<b class='flag-5'>嵌入式</b><b class='flag-5'>介绍</b>

    如何简化嵌入式开发项目

    如何简化嵌入式开发项目
    发表于 10-24 10:16 13次下载
    如何<b class='flag-5'>简化</b><b class='flag-5'>嵌入式</b>开发项目

    一种适用于Nagle算法的简化嵌入式TCP协议浅析

    实现TCP/ IP 协议簇, TCP 协议的机制比较复杂,对8/ 16 位嵌入式处理器的存储能力和运算能力要求较高,必须进行简化
    发表于 11-16 17:40 1104次阅读
    一种适用于Nagle算法的<b class='flag-5'>简化</b><b class='flag-5'>嵌入式</b>TCP<b class='flag-5'>协议</b>浅析

    虹科干货 | CANopen协议基础知识——LSS服务

    CANopen协议概述CANopen是一种架构在CAN串行总线系统上的高层通讯协议,常被用于嵌入式系统与工业控制领域,包括电机控制、机器人制
    的头像 发表于 01-11 16:45 3146次阅读
    虹科干货 | <b class='flag-5'>CANopen</b><b class='flag-5'>协议</b>基础知识——LSS服务

    虹科方案 | 轻松实现CANopen设备开发:虹科CANopen嵌入式通讯模块与CANopen芯片

    CANopen协议CANopenProtocolCANopen是一种架构在控制局域网络(ControllerAreaNetwork,CAN)上的高层通信协议,包括通信子协议及设备子
    的头像 发表于 05-05 09:42 1190次阅读
    虹科方案 | 轻松实现<b class='flag-5'>CANopen</b>设备开发:虹科<b class='flag-5'>CANopen</b><b class='flag-5'>嵌入式</b>通讯模块与<b class='flag-5'>CANopen</b>芯片