CANopen协议基础知识

  • 资料: DS301协议中文文档:https://winshton.gitbooks.io/canopen-ds301-cn/content/chapter5.html
    301_v04020005_cn_v02_ro.pdf

  • 总结文档:https://blog.csdn.net/csdn_zhang99/article/details/81251969

  • LS伺服CANopen手册(详细):
    LS伺服CANopen手册 V3.pdf

CANopen协议对CAN协议的封装关系(PDO、SDO、NMT均封装在CAN数据段):

OD(对象字典): 对象字典是通信对象和应用程序对象之间的接口。

PDO(进程数据对象):PDO 的接收不需要消费者的确认,通过DLC设置数据长度(1~8字节),发送数据帧;TPDO发送(生产者),RPDO接收(消费者)。

SDO(服务数据对象):需要应答,直接对帧ID(索引),发送远程帧,DLC无意义

NMT(网络管理对象):帧ID为0x00,D1(数据段Byte1)为CS,D2为NodeID;NMT模块控制不需要应答;NMT 节点保护需要应答;

由生产者发送的 PDO称为发送 PDO(TPDO),同样消费者接收的 PDO 称为接收 PDO(即 RPDO)

1.2.0 COB_ID帧ID

CANopen协议的帧id只有11位,即全是标准帧

COB_ID(11bits)= 功能码(4bits)+Node_ID(7bit)

1.2.1 DO对象字典

从软件的角度来说,对象字典本质就是一些数据结构的集合。可以这么理解,把对象字典看做是一本书,CANopen设备的行为准则是要参考这本书的,不管它做什么,只要它的行为要参考对象字典,就必须先查阅字典,再决定要不要做。比如它什么时候发送TPDO,这个行为是需要查询对象字典中对应于TPDO的传输类型以及Event timer。还有就是像PDO映射的原理,比如我要发送的数据,都是去查询这本书,看下它那里写的什么内容,然后我在把这部分内容以PDO的形式发送出去。
对象字典( OD: Object Dictionary)是一个有序的对象组;每个对象采用一个** 16 位的索引值**来寻址,为了允许访问数据结构中的单个元素, 同时定义了一个 8 位的子索引
对象字典存储在每个CANopen节点的EDS文件中(单片机写入flash),通过SDO服务访问。

  • 轻松掌握CANOpen最难理解的对象字典:https://wenku.baidu.com/view/dfe7551a195f312b3069a5cd.html
  • CANOpen基本对象字典:https://blog.csdn.net/bood123/article/details/49835619
  • 对象字典表示方式:
    | Index (hex) | Object (Symbolic Name) | Name | Type | Attrib. | M/O |
    |----|----|----|----|----|----|
  • index指示了对象在对象字典中的位置。其中不包含子索引;
  • Object列指示了对象的类型;
  • Name是用来表示对象作用的文本;
  • Type指定数据类型。比如Boolean, Usigned8。如果对象是一个复杂类型,比如ARRAY。就会用子索引来指定组成复杂类型的每个基本类型;
  • Attrbi指定了对象的方位类型;
  • M/O指定对象是必须的还是可选的;

分11段不同类别索引,如图

1.2.2 PDO进程数据对象

  • TPDO为生产者、RPDO为消费者。
  • 每个 PDO 在对象字典(OD)中由两个对象描述:通信参数和映射参数
    • PDO 通信参数指明使用哪个 COB-ID,传输类型,禁用时间和定时时间
    • PDO 映射参数用于设定 PDO报文中的数据的映射关系,确定要传输的数据在 CAN 报文数据域中的定位。该参数允许 PDO 的生产者和消费者知道正在传输什么信息。
  • 一个 PDO 最多可以映射 4 个对象(PDO1~PDO4);
  • 每个逻辑设备不限制 PDO 数量,一个只包含单个逻辑设备的 CANopen 设备可以有多至 512 个 PDO
  • 通用子协议 区域在对象字典中的索引为0x****1000-0x1FFF:

0x1400-0x15FF 设置**RPDO**** **通讯参数

0x1600-0x17FF 设置RPDO映射参数

0x1800-0x19FF 设置TPDO通讯参数

0x1A00-0x1BFF 设置TPDO映射参数

  • RPDO和TPDO的COB-ID

    • 对于TPDO来说,其通信参数中的COB-ID是自身的COB-ID,当发送TPDO时用来表明这个TPDO是谁发出的
    • 对于RPDO来说,其通信参数中的COB-ID是发送方的COB-ID,用来表示自己只接受某个CAN节点发过来的TPDO

RPDO映射例子:

TPDO映射例子:

1.2.3 SDO服务数据对象

SDO 主要用来访问节点的对象字典(OD),操作分成读字典操作写字典操作,CANOpen的节点至少需要支持SDO_Server。对象字典是CANOpen节点的数据组织形式,包含了 CANOpen节点的各个参数和数据,比如,心跳报文的发送频率、系统启动次数、节点的通信参数等等等等。可以说,SDO是用来设置CANOpen节点的各个运行参数的
从CANopen协议上看,最大支持127个节点

类似串口的一发一回模式,主站发送请求帧,从站回复应答帧

SDO中的COB-ID有2个,分为:

Client ==> Server

Server ==> Client

1、假如CAN节点A通过SDO去访问CAN节点B,那么A就是Client,B就是Server;

2、则在A的对象字典里,设置Client==>Server的COB-ID为B的COB-ID

3、且对于A的对象字典,其Server==>Client的COB-ID还是B的COB-ID

4、对于B来说,只有B是Client时才会用到这2个COB-ID,如果B通过SDO去访问A,那么B的Client==>Server和Server==>Client的COB-ID就是A的COB-ID了。

例子:(11位帧ID段(功能码+节点ID)+8字节数据段)

SDO通讯具体过程分解:

1.2.4 NMT状态机

  • 帧ID为0x000。(仲裁时最高优先级)
  • NMT详解:https://blog.csdn.net/iamplane/article/details/49925185

LS低压伺服驱动器CANopen 状态机 20191101pdf.pdf

1)NMT 模块控制( NMT Module Control)

只有 NMT-Master 节点能够传送 NMT Module Control 报文。 所有从设备必须支持 NMT 模块控制服务。NMT Module Control 消息不需要应答

NMT帧cs字节定义:

#define NMT_Start_Node 0x01

#define NMT_Stop_Node 0x02

#define NMT_Enter_PreOperational 0x80

#define NMT_Reset_Node 0x81

#define NMT_Reset_Comunication 0x82

2) NMT 节点保护( NMT Node Guarding)

通过节点保护服务, NMT 主节点可以检查每个节点的当前状态, 当这些节点没有数据传送时这种服务尤其有意义。

状态决定

CANopen协议基础知识相关推荐

  1. 虹科分享 | CANopen协议基础知识——LSS服务

    CANopen是一种架构在CAN串行总线系统上的高层通讯协议,常被用于嵌入式系统与工业控制领域,包括电机控制.机器人制造.医疗.汽车等多个行业领域.本篇文章将主要介绍CANopen的LSS服务. 一. ...

  2. eip协议通信_工业通讯 | EtherNET/IP协议基础知识(Part 3)||附视频讲解

    点击蓝字 关注我们 相关阅读: EtherNet/IP OSI参考模型及其物理层.数据链路层与网络层的功能特点: EtherNET/IP协议基础知识(Part 1)||附视频讲解 Encapsulat ...

  3. IOS Socket 01-网络协议基础知识

    IOS Socket 01-网络协议基础知识 1. 网络参考模型 OSI参考模型                                          TCP/IP参考模型 2. 七层简述 ...

  4. HTTP协议基础知识

    简介 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使网络传输减少.它不仅保 ...

  5. 标定协议之CCP协议基础知识介绍

    上一篇<标定协议基础知识介绍>中对标定协议进行了初步的介绍,从这一篇文章开始对CCP标定协议进行相关介绍,本篇将对CCP标定协议相关指令进行介绍. CCP通讯报文定义 CCP标定协议标准中 ...

  6. 标定协议基础知识介绍

    在上一篇<如何实现标定>中介绍了标定工具通过标定协议与控制器进行通讯从而实现标定.在二十世纪九十年代由Audi.BMW.Mercedes-Benz.Volkswagen等相关企业成立了AS ...

  7. 你需要了解的 http 协议基础知识

    本文对 http 协议中一些基础知识的概括和总结: WWW由三项技术组成 HTML(超文本标记语言) HTTP(文档传输协议) URL(统一资源定位符) URI与URL URI(Uniform Res ...

  8. 计算机网络协议第一章,网络协议基础知识

    序    我计划开发一个系列专栏,将自己在网络方面的积累完善成一个系列知识,让读者的监督和拍砖督促自己并提高自己.如果在读本人的系列文章得到些许收获,那对我来说是更大的收获.    本系列的阅读应该不 ...

  9. 一文打败TCP/IP五层协议基础知识

    注意: 文章如有抄袭部分,请私信我. 未经允许,不得转载,如需转载,可以私信我. 前言 在很久之前,计算机刚刚被研究出来,当时的计算机还不能上网,玩游戏等,它只用于科学家,并没有给普通人使用. 后来, ...

最新文章

  1. 《OpenCV3编程入门》学习笔记7 图像变换(五 )直方图均衡化
  2. 判断文件是否损坏_判断Excel文件是否已打开
  3. Practice:在2008 core上部署和管理DHCP服务器
  4. OpenGL实现齿轮gears联动
  5. 实验详解——DNS网关服务器的分离解析
  6. offsetTop、offsetLeft、offsetWidth、offsetHeight、style中的样式
  7. 算法设计与分析——递归与分治策略——快速排序
  8. matlab几种循环,Matlab for 多个变量循环能不能这样啊 ,求教高手!!!!
  9. Selenium爬虫
  10. Python入门系列(1):如何使用Sublime text开发Python
  11. 网卡流量监控工具vnstat的使用
  12. RGB颜色与十六进制颜色码
  13. U3D_Shader编程(第一篇:快速入门篇)
  14. 小学三年级计算机导学案,小学三年级下册科学导学案
  15. 完美解决Win10 X64非原装版系统打不开CHM文件
  16. 前端学习之浏览器从输入URL到页面加载的全过程
  17. One-Error多标签分类_多分类及多标签分类算法
  18. Python——> 一二维数据的格式化和处理
  19. 华为起诉美国政府,曝其服务器曾被美国政府入侵
  20. MYsql---添加自增字段

热门文章

  1. H3C-2620AP配置日志
  2. 【转】详解4G内存与CPU,BIOS和操作系统之间的牵绊
  3. 玩转Spring Cloud Security OAuth2身份认证扩展——电话号码+验证码认证
  4. 微波电路中的线性和非线性
  5. 鸿蒙升级后桌面背景底纹怎么弄,ps添加背景怎么弄
  6. html5开发wp8,WP7几则消息(HTML5,Sliverlight,WP8)
  7. iif在mysql能用不_在写SQL语句时,你们会经常用IIF(ISNULL(字段))吗
  8. 零基础该怎样开始学编程?
  9. 带掩码的自编码器MAE在各领域中的应用总结
  10. PV-1033/PV-1233/EVP-M33插装式压力补偿流量阀比例放大器