CAN与CANOpen(五)

CAN与CANOpen(一)基本概念

CAN与CANOpen(二)报文格式

CAN与CANOpen(三)错误处理

CAN与CANOpen(四)CANOpen对象字典

CAN与CANOpen(五)PDO和SDO

CAN与CANOpen(六)网络管理和CAN FD

4.3通讯对象

CANOpen协议共有6种通讯对象,分别是:PDO、SDO、SYNC、TIME、EMCY、NMT。这6种通讯对象完成了CANOpen协议的所有通讯功能。其中我们只介绍使用较多的PDO、SDO、NMT(4.4)。

4.3.1通信对象IDCOB-ID

CANOpen协议的通讯对象主要利用了CAN协议中的数据帧和远程帧。为了区分不同的通讯对象,CANOpen协议利用数据帧/远程帧中的ID。其中第7位到第10位为功能代码。第0位到第6位为节点ID,用以区分不同节点的相同功能。这样就允许最多127个从节点与主节点通讯。

28 COB-ID的结构

下面是预定义的各通讯对象的COB-ID

3各通讯对象对应的COB-ID

其中绿色部分为广播的通讯对象,蓝色部分为点对点的通讯对象。

COB-ID的大小也决定了通讯对象的优先级,其中NMT的优先级最高,PDO的优先级高于SDO。

4.3.2Process Data Object

CANOpen中的实时数据传输是由PDO来完成的。PDO的传输采用了生产者消费者模式。共有两种PDO,TPDO和RPDO。TPDO用来传输数据,支持TPDO的节点都是PDO数据的生产者。RPDO用来接收PDO数据,支持RPDO的节点是PDO数据的消费者。从表3可以看出,一个节点最多支持4个TPDO(分别是180h+NodeID、280h
+NodeID、380h +NodeID、480h
+NodeID)和4个RPDO(分别是200h
+NodeID、300h +NodeID、400h
+NodeID、500h +NodeID)。每一个PDO都对应一些参数,包括通讯参数和映射参数。

4.3.2.1PDO的参数

PDO的参数包括两部分,通讯参数和映射参数.他们占据了对象字典中从1400到1BFF之间的位置.

4 PDO参数在对象字典中的位置

PDO的通讯参数定义了COB-ID,传输类型(同步,异步,循环,时间出发),inhibit
time(两个PDO的最小间隔)等,见表5.

表6给出了PDO的映射参数.一个PDO最多可以映射到64个对象。每一项的含义见图29。最高16位是对象字典的索引,后面8位是子索引。最低8位是数据长度。关于PDO映射的详细介绍见4.3.2.2

5 PDO通讯参数

6 PDO映射参数

29 PDO映射参数解释

4.3.2.2PDO映射

PDO的内容没有固定的形式,它的数据段可以是1到8个字节长。使用PDO的一个基本的出发点是发射端和接收端都知道PDO中的数据的含义。图30说明了具体的工作原理。PDO采用了生产者和消费者模式。生产者按照TPDO的映射参数从对象字典中抽取数据形成PDO的数据。当消费者接收到PDO的数据后,就会按照RPDO的映射关系,将PDO中的数据解析出来,填入对应的数据字典中。

图31给出了生产者生成PDO0数据的具体过程。首先生产者从[1800,01]中得到COB-ID。然后从[1A00,01]中获取第一个对象。[1A00,01]中的值为0x20000108h,那么第一个对象为[2000,01],对应值为A,在PDO中占0x8位。接着是第二个对象[2003,03],对应值为G,在PDO中占0x10位。最后是对象[2003,01],对应值F,在PDO中占0x8位。这样一个有数据A、G、F组成的,32位的PDO就形成了。

30 TPDORPDO[2]

31 PDO数据的形成

4.3.3SDO

SDO(Service Data Object)使用Client-Server模式建立起点到点的通讯并实现了对对象字典中条目的读写。其中被访问的对象字典的所在设备作为Server,访问对象字典的设备作为client。参考下图。SDO采用的请求应答模式,每次SDO访问都会有2条CAN的数据帧对应。一条是请求,一条是应答。

32 client-server模式

SDO主要提供3种服务:段传输,块传输,中止传输。下面分别来介绍这三种服务是如何实现的。

4.3.3.1段传输

下面是SDO段传输Download过程中的示意图。首先由client端发起,然后Server端应答。这样一来一回。知道把数据传输完毕。当传输的数据长度小于4时,一次应答就可把数据传输完毕。

33SDO段下载时的clientserver端数据应答

34初始化SDO下载的命令字

35SDO段下载的命令字

图34、35标出了在SDO段下载的初始化和数据传输阶段的命令字。其中:

  • ccs: client命令标识符

    • 0:段下载请求
    • 1:初始化下载请求
    • 2:初始化上传请求
    • 3:段上传请求
  • scs: server命令表示符

    • 0:段上传响应
    • 1:段下载相应
    • 2:初始化上传响应
    • 3初始化下载响应
  • n:指示不含数据的字节数.
  • e:传输类型

    • 0:普通传输
    • 1:快速传输(输出长度<=4)
  • s:大小指示器
  • m:指示数据的索引和子索引.
  • d:数据
  • X:总是0
  • reserved:预留,总是0
  • c:指示是否还有数据需要下载/上传
  • t:触发位。这个位没发送一次数据会反转一下。

SDO段上传的过程与段下载的过程类似,只是命令字不同。可参考图36图37

36初始化SDO上传命令字

37SDO段上传命令字

4.3.3.2块传输

块传输的主要目的是为了提高传输效率。它与段传输的主要区别在于:块传输时,可以传输多次数据之后,才会有一次应答,如图38。CANOpen将数据分为多个block,每个block又由1-127个segment组成。在传输完一个block的数据之后,才会有一次的应答。

38块传输时的client,server数据应答

4.3.3.3中止传输

无论CAN设备处于段传输还是块传输中,都可以使用中止传输协议(图39)来中止传输。

39中止SDO传输命令字

协议的命令字解释如下:

  • cs:命令标识符
    • 4:中止传输请求
  • X:总是0
  • m:标识索引和子索引.
  • d:中止码(表7中止码表).

下表是对各中止码的解释

7中止码表

时间: 2024-11-26 13:40:16

CAN与CANOpen(五)的相关文章

(笔记)CanOpen协议【CanFestival】移植方法 支持VC、QT、STM32

转自http://bbs.21ic.com/icview-878522-1-1.html 前段时间学习了CanOpen协议,到网上下载的CanFestival3-10源码,移植到VC.QT.STM32等平台,由于网上的资源较少,走了不少弯路,移植好使用过程中才逐渐暴露出各种问题,比如OD字符串传输.心跳时间不准确等等,现在已经解决了遇到的所有问题,移植出来的工程能够完好支持CanOpen协议,花了点时间,整理出一个简单易用的移植方法说明,也写了一些比较实用的调试工具,本来还想整理SDO.PDO.

【转】(笔记)CanOpen协议【CanFestival】移植方法

一.背景 CAN组网就必须得要应用层协议,原因就在于 * 便于网络管理与控制 * 确认数据的收发 * 发送大于8个字节的数据块(CAN每帧数据传输大小为8字节) * 为不同节点分配不同的报文标识符 * 定义帧报文的内容及含义(这在我看来是最主要的原因) * 网络的监控,节点故障的诊断与标识 CAN上层协议有许多,用大家都公认的,便于产品的兼容,因此,CANOpen成为备选项. CANOpen有个开源协议栈[CANFestival],同时有一位大神已经做了移植并记录,在此就厚着脸皮转载过来以做备份

CAN与CANOpen(二)

CAN与CANOpen(一)基本概念 CAN与CANOpen(二)报文格式 CAN与CANOpen(三)错误处理 CAN与CANOpen(四)CANOpen对象字典 CAN与CANOpen(五)PDO和SDO CAN与CANOpen(六)网络管理和CAN FD 3.3帧 CAN协议的报文传输主要由下面的4种帧来实现: 数据帧:从发射端携带数据到接收端. 远程帧:总线单元发出远程帧,请求发送具有同一识别符的数据帧. 错误帧:任何单元检测到一总线错误就发出错误帧. 过载帧:过载帧用以在先行的和后续的

聚焦新相亲时代:女孩在京有五六套房哭着想嫁富2代

2017-09-20 07:31:00 来源: 中国青年报(北京)        举报 6984 分享到: 易信 微信 QQ空间 微博 更多 用微信扫码二维码 分享至好友和朋友圈 T + - (原标题:中青报聚焦新相亲时代:2亿人及其背后家庭组成的"擂台") 石家庄某相亲角.视觉中国 资料 平均算下来,每一分钟里,国内有22对新人拿着户口本走向民政局,进入婚姻生活:同时,8对夫妻在另外一个窗口签下离婚协议. 根据民政部公布的数字,中国的结婚率和离婚率曲线渐渐逼近一个闭合的大于号.婚姻的

今年黑科技趋势最具的五个看点

CES 2017年人工智能引爆全球最火黑科技盛会 CES 2017 1月5日-8日在美国拉斯维加斯举行,数千家企业.几十万人将参与到这次科技的狂欢秀中.本文为埃森哲技术总监带来的关于本年度CES 的5大看点.他认为:人工智能将统治本年度的CES,变得无处不在.另外,他还分析了智能助理.物联网安全.虚拟现实等多个领域在本届大会上的表现. 2017 年国际消费电子展(CES 2017)将于1月5号拉开帷幕,在这个荒漠之城举办为期5天的展会,保守估计会吸引超过177000名参会者. 这也是一年之中唯一

(十五)PL/SQL事务

数据库事务是一个工作的原子单元,其可以由一个或多个相关的SQL语句组成.所谓的原子性就是数据库的修改所带来的构成事务的SQL语句可以集体被提交,即永久到数据库或从数据库中(撤消)回滚.一个成功执行的SQL语句和提交的事务不一样.即使一个SQL语句执行成功,除非包含该语句的事务被提交,但也可以回滚和声明(S)的所有更改可以撤消. 一.开始事务事务都有开始和结束.事务开始时有下列事件之一:  连接到数据库后执行的第一个SQL语句.  在事务完成之后发出每一个新的SQL语句完成. 二.提交事务事务是通

每周进度条(第十五周)

第十五周进度条   第十五周 所花时间 1h 代码量(行)  100 博客量(篇)  1 学到的知识 对图片的处理 在Android程序中加入图片

201405644 嵌入式程序设计第五周学习总结

嵌入式课程设计第五周学习总结 标准 I/O 编程 标准 I/O 提供流缓冲的目的是尽可能减少使用 read()和 write()等系统调用的数量.标准 I/O 提供了 3 种类型 的缓冲存储.全缓冲.行缓冲.不带缓冲. 打开文件 打开文件有三个标准函数,分别为:fopen().fdopen()和 freopen().其中 fopen()可以指定打开文件的路径和模式,fdopen()可以指定打开的文件描述符和模式,而 freopen() 除可指定打开的文件.模式外,还可指定特定的 I/O 流. f

第五次作业+164+张增进

开发人员代码:http://www.cnblogs.com/wangkunhuang/p/6794401.html 1)被测项目界面. 2)测试用例设计表 等价类 输入条件 有效等价类 编号 无效等价类 编号 年 1912≤year≤2050 ① year<1912 ② Year>2050 ③ 非数字 月 Month= 1,3,5,7,8,10,12 ④ Month<1 ⑤ Month= 4,6,9,11 month>12 ⑥ Month= 2 非数字 日 1≤ day ≤31 ⑦