CANopen协议报文处理

原创 2015年11月18日 20:38:09

       CAN 报文由 7 个不同的位域组成,而 CANopen 就是规定其中的仲裁域(11 位标识符) 和数据域(8 字节数据) 的使用情况,11 位标识符和 8 字节数据在 CAN 帧中的位置如下图所示:


图1.1 CANopen的标识符和数据在CAN帧中的位置


       CANopen 协议中的各种通讯对象通过 11 位标识符中的功能码部分(10-7 位) 进行分别,比如主节点发送 NMT 控制命令功能码为 0000,SDO 的功能码为 1011(发送) 和 1100(接收) 。CAN 网络中各个从节点的 ID 用节点 ID(6-0 位) 表示,最多可以有127 个从节点。

不同通讯对象对 字节数据的使用及各字节代表的意义不同。

(1) 过程数据对象(PDO) :8 个字节全部用来传输实时数据。

(2) 服务数据对象(SDO) :使用 8 个字节,各字节表示的意义如表 1-1。

表1-1 SDO对象数据字节的使用

字节0

字节1~2

字节3

字节4~7

SDO命令字

对象索引

对象子索引

数据值

 

(3) 网络管理对象(NMT) :NMT 对象使用 2 字节数据,心跳报文使用 1 字节数

据,表示的意义如表1-2 和1-3。

表1-2 NMT对象数据字节的使用

标识符

字节0

字节1

0x000

命令字

从节点ID

 

表1-3 心跳报文数据字节的使用

标识符

字节0

0x700+Node_ID

从节点状态


       CANopen 协议作为 CAN 总线的应用层协议,主要对 CAN 报文中可用于报文控制的 11/29 位 CAN-ID 和 8 字节数据进行定义,实现应用层功能。

CANopen 协议使用 11/29 位 CAN-ID 对报文进行分类,协议支持的报文有以下几类:

1. SDO(服务数据对象)报文。SDO 报文的主要用途是主从节点的数据交互。使用 SDO 报文进行通信时,接收报文的节点需要回送报文进行应答,因此 SDO报文实现的是一种面向连接的可靠性通信。关于 SDO 报文通信的详细定义和处理流程将在后面讨论

2. PDO(过程数据对象)报文。PDO 报文的主要用途与 SDO 报文类似,也是用于主从节点数据交互。与 SDO 报文的主要区别在于,使用 PDO 报文通信时,接收报文的节点不需要回送应答;另外 PDO 报文对数据的访问方式与 SDO 报文不同,PDO 报文的数据访问效率比 SDO 报文更高,因此 PDO 报文常用于需要频繁操作的数据,以及需要高效率传输的数据。PDO 报文可采用同步方式或者异步方式进行传输。当需要同步传输 PDO 报文时,设备的对象字典需要支持同步周期字典项(索引值 0x1006)。

3. NMT(网络管理)报文。该报文的主要功能是进行网络管理,CANopen 主节点通过发送 NMT 报文控制从节点的启动,停止,运行等状态切换,从节点通过NMT 报文(具体来说是心跳报文)来通知主节点自己上线或者下线。

4. 特殊功能报文,主要包括同步报文,紧急事件报文,时间邮戳报文等。

版权声明:本文为博主原创文章,未经博主允许不得转载。

can协议解析字符串的原理

这里的数据使用的是标准的can设备产生的can信号(扩展帧发送数据ID=0x11121181 Data=0x06 0x08) 信号的波形如图1所示,这里示波器的探头接的是CAN_H,探头的夹子接的是C...
  • sinat_28222763
  • sinat_28222763
  • 2015年08月18日 09:27
  • 2509

解析CAN的J1939协议PDU报文

PF用来确定PDU格式:0——239表示PDU1格式;240——255表示格式2。 PDU1格式报文表示向特定或全局地址发送 PDU2格式报文表示向全局地址发送 PS由PF决定其含义 ...
  • lx2385623371
  • lx2385623371
  • 2017年12月15日 15:35
  • 180

CAN总线开发实例

下面通过实例来说明CAN总线接口的使用方法。在本例中,有两个进程,其中一个进程负责报文的发送(标识符为0x11和0x22),另一个进程负责报文的接收和过滤(只接收标识符为0x11的报文)。 /* 1...
  • king16304
  • king16304
  • 2016年08月22日 11:37
  • 1905

CANOpen报文类型

         canopen资料、主站/从站移植模板、源码注释下载链接:http://download.csdn.net/detail/lushoumin/9811717 ...
  • lushoumin
  • lushoumin
  • 2017年04月17日 13:23
  • 856

CANopen通信之PDO通信

过程数据对象(Process Data Object,PDO)是用来传输实时数据的,提供对设备应用对象的直接访问通道,它用来传输实时短帧数据,具有较高的优先权。PDO 传输的数据必须少于或等于 8 个...
  • iamplane
  • iamplane
  • 2015年11月19日 17:59
  • 10739

CANopen协议介绍

1.CANopen协议简介         从OSI 网络模型的角度来看,CAN总线只定义了OSI网络模型的第一层(物理层) 和第二层(数据链路层),而在实际设计中,这两层完全由硬件实现,设计人员无...
  • Double_qiang
  • Double_qiang
  • 2017年06月14日 16:48
  • 2054

CAN与CANOpen(五)

4.3通讯对象 CANOpen协议共有 6种通讯对象,分别是: PDO、 SDO、 SYNC、 TIME、 EMCY、 NMT。这 6种通讯对象完成了 CANOpen协议的所有通讯功能。其中我们只介...
  • maifansnet
  • maifansnet
  • 2016年05月15日 17:16
  • 8305

CAN总线与CANOPEN协议

1. 什么是CAN总线协议CAN总线协议最早是为了统一汽车车载设备间通信的标准而开发的协议,后来由于其高速、稳定、可靠的特点,已经被ISO标准化并广泛应用于工控、医疗等领域,目前依然是欧洲汽车网络的标...
  • plc_jianghao
  • plc_jianghao
  • 2017年09月03日 18:06
  • 751

CAN与CANOpen(一)

CAN(Controller Area Network, 控制器局域网络)是由博世开发的一种现场总线,首先应用在汽车领域。由于它的低成本和可靠性,现在被广泛应用在工业测控和工业自动化领域。由于工作的关...
  • maifansnet
  • maifansnet
  • 2015年10月07日 17:39
  • 8934

CANopen协议学习笔记一

最近在学习CANopen协议,遇到一些小知识点,查阅后记录在此,方便以后查询,算是读书笔记吧。 CANopen协议中SYNC功能和使用; CANopen协议PDO的几种传输方式; CANopen...
  • amy0428
  • amy0428
  • 2011年02月14日 14:45
  • 11433
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:CANopen协议报文处理
举报原因:
原因补充:

(最多只允许输入30个字)