CANopen总线

  • 一、前言
  • 二、CANopen概述
    • 2.1 CANopen网络模型
    • 2.2 CANopen常见规范
  • 三、CANopen对象字典
  • 四、CANopen通讯标识符
  • 五、CANopen协议概述
    • 5.1 CANOpen协议报文分类
    • 5.2 CANopen状态机
    • 5.3 CANopen数据帧格式
  • 六、NMT管理报文
  • 七、NODE GUARDING 节点保护报文
  • 八、HeartBeat 心跳报文
  • 九、BOOT-UP 节点启动报文
  • 十、EMCY 紧急报文
  • 十一、SDO 服务数据对象报文
  • 十二、PDO 过程数据对象报文
    • 12.1 PDO参数
    • 12.2 PDO的COB-ID
    • 12.3 PDO的传输类型
    • 12.4 PDO映射
    • 12.5 PDO报文
  • 十三、SYNC 同步报文

一、前言

前面讲解了CAN总线的一些基础内容,这里来讲解一些在CAN总线的基础上提供的CANopen协议

CAN总线协议讲解与应用:【STM32】标准库与HAL库对照学习教程十四–CAN总线


二、CANopen概述

CANopen 是在 CAL 基础上开发的,使用了 CAL 通讯和服务协议子集,提供了分布式控制系统的
一种实现方案。CANopen是CAN的一种应用层协议
CANopen 的核心概念是设备对象字典(OD:Object Dictionary),在其它现场总线(Profibus,Interbus-S)系统中也使用这种设备描述形式。

注:对象字典不是 CAL 的一部分,而是在 CANopen 中实现的。

CANopen协议是免许可证的,任何组织和个人都可以开发支持CANopen协议的设备而不用支付版税

2.1 CANopen网络模型

2.2 CANopen常见规范

  • CANopen协议是CAN-in-Automation(CiA)定义的标准之一,在欧洲,CANopen协议被认为
    是在基于CAN的工业系统中占领导地位的标准。大多数重要的设备类型,例如数字和模拟的输入输出模块、驱动设备、操作设备、控制器、可编程控制器或编码器,都在称为“设备描述”的协议中进行描述;“设备描述”定义了不同类型的标准设备及其相应的功能。
  • 依靠CANopen协议的支持,可以对不同厂商的设备通过总线进行配置。

三、CANopen对象字典

对象字典(OD)英文名Object Dictionary,你可以理解为C语言中的数据地址,或者设备的地址,CANopen网络中每个节点都有一个对象字典。对象字典包含了描述这个设备和它的网络行为的所有参数。
所有的参数、参数值和功能都是通过16位索引值(index)和8位子索引(sub-index)组成的地址来访问和存取。如下表所示。

名称 Index Sub_Index Bits 属性 含义
Controlword 6040 00 10 RW 设备状态控制字
Modes of Operation 6060 00 08 RW 工作模式
Target_position 607A 00 20 W 目标位置

每个CANopen设备都有一个对象字典,使用电子数据文档(EDS:Electronic Data Sheet文件)来记录这些参数,而不需要把这些参数记录在纸上。

对象字典中描述通讯参数部分对所有CANopen设备都是一样的。其通用结构如下图所示。


四、CANopen通讯标识符

在我们学CAN通信的时候,知道我们靠设备ID识别不同种类的设备,CANopen里对ID进行了细化与规定,CANopen中的通信标识符(ID)叫做CAN-ID,通常把 CAN-ID 称为 COB-ID(通信对象编号)。

  • 每个CANopen帧都以COB-ID开头,COB-ID是数据帧的唯一标识符。

  • COB_ID越小报文优先级别越高。CANopen的COB_ID范围从0-77F。

  • COB_ID包括功能段(FUNCTION)地址段(NODE-ID)

如下图所示:

Node-ID由系统集成商定义。Node-ID范围是1~127(0不允许被使用)


五、CANopen协议概述

5.1 CANOpen协议报文分类

  • NMT 网络管理报文,作用是管理网络,切换节点的状态。一般由主站发送NMT网络管理报文。
  • SDO 服务数据对象报文,作用是设置设备参数,或者是一些关键数据的传输。一般由主站发起SDO报文,从站应答SDO报文。从站也可以发起SDO,主站响应,比如关键数据的传输。
  • PDO 过程数据对象报文,作用是传输一些设备的过程数据,比如传输温度,速度等等。主站和从站都会发送。
  • EMCY 紧急报文,作用是传输设备的故障信息。主站和从站都会发送。
  • SYNC 同步报文,作用是同步数据,用来同步从站的TPDO数据。一般由主站发送。比如从站的TPDO传输类型是在同步模式下,当从站收到设定次数的SYNC报文后,从站会发送TPDO。这个在后续的文章中详细阐述。
  • NODE GUARDING 节点保护报文,作用是主站请求从站的状态,主站询问,从站应答。这种模式逐渐已被淘汰,因为太占CAN总线网络带宽。
  • HeartBeat 心跳报文,作用是设备主动发送心跳,表示自己在线。主站和从站都可以发送。

5.2 CANopen状态机

CANOpen节点共包括:初始化、预操作、操作、停止这四个状态。状态机可以通过NMT服务相互切换,如下图所示。

5.3 CANopen数据帧格式

CANopen的数据帧格式如下图所示。

每个CANopen帧都以COB-ID开头,COB-ID是数据帧的唯一标识符,DLC表示传输多少个字节数据,Data表示传输的数据,最多8个字节。


六、NMT管理报文

  • 只有 NMT-Master 节点能够传送 NMT Module Control 报文。所有从节点必须支持 NMT 模块控制服务。
  • NMT Module Control 报文不需要应答。NMT 报文格式如下:

    当Node-ID=0x0000时,则所有的NMT从站设备被寻址。CS是命令字,取值及含义如下:

七、NODE GUARDING 节点保护报文

通过节点保护报文,NMT主节点可以监视每个从节点的当前状态

  • 主节点周期性的发送报文去询问从节点的状态,从节点收到主节点的问询后将自己的状态回复给主节点,在设定的时间内如果主节点没有收到从节点的信息或信息错误都会判断从节点通讯故障。
  • 主节点发送远程帧(只有COB-ID,无数据)

    Bit7为触发位,在每次节点保护应答中交替“0”和“1”,在第一次节点保护时置0。

注意:带*号的需要支持扩展BOOT-UP的节点才提供,状态0从不在节点保护中出现,因
为从节点在初始化状态中是不会应答报文的


八、HeartBeat 心跳报文

一个节点还可被配置为产生周期性的被称作心跳报文(Heartbeat)的报文,从节点周期将该报文发送给消费者,消费者可以通过报文中的状态值得知从节点的状态。结构如下图所示。

注:
1、心跳报文(HeartBeat)的消费者通常是主节点,它为每一个心跳节点设置一个超时时间,当超时是采取相应的动作。
2、一个节点不能同时使用节点保护报文和心跳报文。


九、BOOT-UP 节点启动报文

从节点(NMT-slave)发布Boot-UP报文通知主节点(NMT-Master)它已经从初始化状态(initialising)进入预准备(pre-operational)状态。如下图所示。


十、EMCY 紧急报文

紧急报文当设备内部出现的致命错误触发,以最高优先级发送到其它设备。适用于中断类型
的错误报警信号。一个紧急报文包含8个字节,报文格式如下:

Byte0-1,16 进制的应急错误代码如下表所示。应急错误代码中‘xx’部分由相应的设备子协议定义。

Byte2 错误寄存器:错误寄存器(Error Register)在设备的对象字典(索引 0x1001)中,下表说明了错误寄存器的位定义。设备可以将内部错误映射到这个状态字节中,并可以快速查看当前错误。

Bit Index
0 通用的(generic)
1 电流(current )
2 电压(voltage)
3 温度(temperature)
4 通信(communication)
5 设备配置文件特性(device profile specific)
6 Reserved(=0)
7 制造商特性(manufacturer specific )

十一、SDO 服务数据对象报文

  • 主要用来在设备之间传输低优先级的对象,典型是用来对从设备进行配置、管理,比如用来修改速度环、位置环的PID参数,PDO配置参数等。
  • 通过使用索引和子索引SDO使客户机能够访问设备对象字典中的对象。
  • 通常情况下传输的数据长度不超过4个字节,当数据长度超过4个字节是分拆成几个报文。
  • 议是确认服务类型:每个消息生成一个应答。SDO请求和应答报文总是包含8个字节。

SDO中的COB-ID定义规则如下:

SDO读报文如下:

命令字:0x40


SDO写报文如下:



SDO通讯失败,从站回复报文如下:

后4个字节是被称为是中止代码,通过中止代码能得知出错的原因。中止代码如下:


十二、PDO 过程数据对象报文

  • 用来传输实时数据,数据从一个生产者传到一个或多个消费者。1个PDO1次最多传输8个字节的数据
  • 每个PDO在对象字典中用2个对象描述:
    • PDO通讯参数:包含COB_ID,传输类型,禁止时间,定时器周期。
    • PDO映射参数:包含对象字典中对象列表,这些对象映射到PDO里,包含数据长度。生产者和消费者根据映射的地址解释PDO内容。
  • 报文内容是预定义的(或者在网络启动时由主配置)

12.1 PDO参数

  • 发送PDO通讯参数(1800h-19FFh)和接收PDO通讯参数(1400h-15FFh)
  • PDO通讯参数说明了PDO的基本特性,如COB-ID、传输类型、禁止时间和事件定时器等,它决定了PDO是以何种方式发送和接收数据
  • PDO禁止时间:两个连续PDO传输的最小间隔时间,避免由于高优先级信息的数据量太大,始终占据总线,而使其它优先级较低的数据无力竞争总线的问题。禁止时间由16位无符号整数定义,单位为1ms
  • PDO定时周期:当超过定时时间后一个PDO可以被触发,周期有16位无符号数定义,单位1ms

12.2 PDO的COB-ID

12.3 PDO的传输类型

  • 同步(通过接收SYNC对象实现同步)

    • 非周期:由远程帧预触发传送,或者由设备子协议规定中的对象特定事件预触发传送
    • 周期:传送在每1到240个SYNC消息后触发。
  • 异步
    由设备协议中规定的对象特定事件触发传送。

图表如下:

12.4 PDO映射

  • 说明了PDO中所包含的通讯对象,决定了发送或接收的数据内容
  • 传输映射(1A00h-1BFFh)
  • 接收映射(1600h-17FFh)

12.5 PDO报文


十三、SYNC 同步报文

同步报文的CAN-ID固定是0x80,数据长度是0或1。同步报文是生产者消费者模型,由主站发出,同步从站的TPDO。

  • 通讯循环周期:索引1006h,规定了同步帧的循环周期
  • 同步窗口时间:索引1007h,约束了同步帧发送后从节点发送PDO的时效,即在这个时间内发送的PDO才有效超过时间的PDO将被丢弃

同步报文的数据帧如下:

同步报文的作用:

  • 同步报文用于控制TPDO(如实际位置,状态字)的发送;
  • 同步报文用于控制RPDO(如目标位置)的激活;
  • 同步报文用于同步各个节点的时钟。

传输类型:

  • 0非循环
  • 1-240的传输类型就是指经过多少个同步报文后,发送TPDO

    伺服周期性同步位置模式(CSP)原理:
  • 伺服工作在7号插补模式,上位控制器完成位置指令规划,然后将规划好的目标位置607A以周期性同步的方式发送给伺服驱动器。控制器发送目标位置的周期必须是伺服驱动器位置环周期的整数倍。
  • 控制器周期性的发送同步报文,比如1mS,2mS或者4mS等,驱动器主动通过微调自身控制环频率将控制环(电流环、速度环、位置环)和同步信号同步,从而实现多个驱动器同步工作。
  • 控制器发送RPDO给各个驱动器,比如目标位置,在下一个同步报文到来后,驱动器将指令
    激活,所有的驱动器同时更新指令,从而实现同步。
  • 在运行同步工作模式的时候,SDO和TPDO也是允许的,但是发送的时机是需要检测的。因
    为RPDO是最重要的数据,必须优先保证RPDO的接收,然后在空闲时间才可以发送SDO和
    TPDO。一个比较合理的排列是:同步周期里面,前半时间用于SDO以及TPDO的发送,后
    半时间用于RPDO的接收。
  • 驱动器接收到设定位置后与当前位置比较,并依据控制器的周期与伺服位置环周期的倍数进行线性或非线性插值,将插值作为每个位置环周期的“设定位置”。

【CANopen】CANopen总线讲解相关推荐

  1. CANopen | 拓展知识 - CANopen,CAN总线与OSI模型的关系

    一.前言 CAN总线定义OSI模型的物理层与数据链路层. CANopen协议使用了OSI模型的应用层与传输层. 二.CANopen and the OSI reference model 国外原文的地 ...

  2. canopen服务器协议,CANopen协议详情讲解.docx

    精品文档 精品文档 PAGE PAGE #欢迎下载 精品文档 精品文档 PAGE PAGE #欢迎下载 根据DS301的内容进行介绍 1.CAN总线 45二爺 45二爺 CAN标准报文 CAN 标准报 ...

  3. 【CANopen】CAN总线的高级协议详解

    目录 简介 CAL(CAN Application layer) CANopen CANopen对象字典(CANopen Object Dictionary) CANopen communicatio ...

  4. CANopen总线的高级协议详解

    目录 简介 CAL(CAN Application layer) CANopen CANopen对象字典(CANopen Object Dictionary) CANopen communicatio ...

  5. CANopen总线的协议详解

    目录 简介 CAL(CAN Application layer) CANopen CANopen对象字典(CANopen Object Dictionary) CANopen communicatio ...

  6. canopen服务器协议,CANopen

    CAN應用層和CANopen CANopen 概述 CANopen是附加了一套设备子协议的高层(第7层)CAN通信协议.作为一种标准化.高度可配置的嵌入式网络解决方案,它广泛应用于实时工业应用.机器人 ...

  7. 嵌入式CANopen协议从入门到落地产品(更新2021.9.8)

    一.前言 我写CANopen系列博文的初衷是分享如何使用STM32单片机开发一款CANopen产品,所谓实战为主,理论为辅.只看CANopen协议的理论是很枯燥,而且根本看不会.我认为掌握CANope ...

  8. CANOpen系列教程01_初识CAN与CANOpen及相关内容

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!https://www.cnblogs.com/captainbed 正文: CANOpen ...

  9. powerlink(一)——上层协议canopen

    本文档是基于书<开源实时以太网>进行的总结.实在在这个站没看到有意义的干货,我就爆个肝为后人栽树. 上层协议是canopen,canopen有三层逻辑:PDO过程数据对象,SDO服务数据对 ...

最新文章

  1. leangoo大讲堂:scrum敏捷开发实战——深圳站
  2. 基本算法系列15天速成
  3. linux 网络管理   防火墙 iptables
  4. java web的动静分离_Apache结合Tomcat实现动静分离的方法
  5. display属性_Numpy知识点(1)讲解实操安装/属性/数组创建/运算
  6. 软技能-代码之外的生存指南-读书笔记(持续更新中)
  7. 我的世界java种子 要塞,我的世界:稀奇种子,恐龙骨架出现在要塞,你绝对没见过...
  8. android ijk 播放器,ijkplayer 播放器:在Android端进行native调试
  9. Mac 常用的 20 款效率神器推荐
  10. 飞猪订房显示服务器出错,消费者在飞猪平台全款预订酒店后无法办理入住
  11. java实现物体下落效果_android仿微信表情雨下落效果的实现方法
  12. ShuipFCMS -- 简单强大内容管理系统
  13. 计算机算法可以用自然语言来描述吗,算法可以用自然语言描述吗
  14. zen cart产品页面伪静态后-c-.html,zencart .htaccess伪静态文件规则
  15. wwbizsrv.exe-应用程序错误
  16. java 笔记本i7 i5_笔记本i7低压cpu性能抵不过i5标压cpu,为什么还叫i7
  17. Blob类型存储中文
  18. 什么是Linux 的xxd
  19. 名校高考模拟试卷(试题)汇总(陆续更新)
  20. 谷歌语音识别官方speech_commands(audio_recognition)的使用指南

热门文章

  1. 【Hackathon】基于RKNPU2给FastDeploy仓库贡献代码
  2. 每日一句:day04——From Zero To Hero
  3. pandas行/列删除
  4. 两个onCreate()方法
  5. 《水经注地图服务》图层管理介绍
  6. 一种基于柔性压力传感器的机械手驱动系统
  7. D3.js的v5版本入门教程(第一章)—— 如何在项目中使用D3.js
  8. 在RMD使用过程中,右侧不生成图片的问题
  9. Linux中修改localhost
  10. android 电池续航时间,如何提高安卓手机电池续航能力 这份省电指南拿好