我的编程空间,编程开发者的网络收藏夹
学习永远不晚

CANopen之SDO,PDO

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

CANopen之SDO,PDO

一、简述

  CAN 总线是一种串行通信协议,具有较高的通信速率的和较强的抗干扰能力,可以作为现场总线应用于电磁噪声较大的场合。由于

CAN 总线本身只定义ISO/OSI 模型中的第一层(物理层)和第二层(数据链路层),通常情况下 CAN 总线网络都是独立的网络,所以

没有网络层。在实际使用中,用户还需要自己定义应用层的协议,因此在 CAN总线的发展过程中出现了各种版本的CAN应用层协议,

现阶段最流行的CAN应用层协议CANopen协议。

二、服务数据对象(SDO)

  SDO提供了直接访问CANopen设备对象字典的入口,入口条件包括数据类型及大小;任何类型的SDO传输都由客户端发起,数据

字典持有者是服务器,客户端和服务器都可以主动中止传输。

  请求读或写的节点是客户端节点;读取或写入数据的节点是服务器节点;

  读或写一个4字节或少于的数据,最简单的方法是使用SDO upload/download expedited protocol 。

SDO Upload expedited protocol 

  在服务器节点对象字典去读数据0xd0d1d2d3 。

  客户端请求:

 

 

 

 例1:数据 0xFE ,对象字典节点5 ,  索引 index 0x1400, 子索引 subindex 2 

客户端请求   : 605 40 00 14 02 00 00 00 00 

若成功,应答: 585 4F 00 14 02 FE 00 00 00

例2:数据 0x60120208 ,对象字典节点5 ,  索引 index 0x1802, 子索引 subindex 1

客户端请求   :605 40 02 18 01 00 00 00 00 

若成功,应答:585 60 02 18 01 08 02 12 60

SDO Download expedited protocol

  在服务器节点对象字典去写数据0xd0d1d2d3,(注意数据是最低有效位先写)。

  客户端发送:

 

 

 例1:数据 0xFE ,对象字典节点5 ,  索引 index 0x1400, 子索引 subindex 2 

客户端请求   : 605 2F 00 14 02 FE 00 00 00

若成功,应答: 585 60 00 14 02 00 00 00 00

 例2:数据 0x60120208 ,对象字典节点5 ,  索引 index 0x1802, 子索引 subindex 1

客户端请求   :605 23 02 18 01 08 02 12 60

若成功,应答:585 60 02 18 01 00 00 00 00

3、SDO 中止信息(SDO abort protocol )

  SDO 中止信息是主机在从机进行 SDO 通讯时,从机收到 SDO 后, 如果判断为 SDO 需要中止,就会返回中止信息给主机。

三、过程数据对象(PDO) 

  由对象字典提供PDO数据和配置的接口,数据字典中对应的映射结构决定了一个PDO的数据类型和映射关系。如果CANopen设备

支持可变映射PDO,可通过SDO实现对PDO在数据字典中对应的配置进行修改。  

Transmit - PDO (TPDO)

 i :Index 1800 + n,subindex 01 ,COB_ID(通讯对象的标识符):包含CAN-ID和附加控制位的标识符

对于TPDO来说,其通信参数中的COB-ID是自身的COB-ID,当发送TPDO时用来表明这个TPDO是谁发出的。

ii :Index 1800 + n,subindex 02, 写传输类型 t,

               t = 1 -- 0xF0:同步,时间触发模式 ,每 t 一周期

               t = FD    :收到PDO请求后

               t = FE    :事件驱动(制造商指定)

               t = FF    :事件传输,节点自发传输PDO

iii:Index 1800 + n, subindex 03,抑制时间。

  如果传输类型设置为FE和FF,它是最小的PDO传输间隔,单位100us,值为0禁用抑制时间。PDO 报文需要延时 t × 100us的

时间才发出,以此避免在多PDO 报文同时发出时,引起的时间冲突 。

iiii:Index 1800 + n, subindex 05,时间定时器。

  如果传输类型设置为FE和FF,它是PDO传输间隔,单位ms,值为0禁用。t =0xCB,200ms。

iiiii:Index 1A00 + n,定义映射

  subindex 0 :定义映射数量(1 byte)。值 0,映射禁用;值 01,子索引01有效;值 02,子索引01--02有效......

  subindex 1 :映射第一个参数。格式,index (2 bytes) – subindex (1 byte) – size (1 byte)

  subindex 2 :映射第二个参数。格式,index (2 bytes) – subindex (1 byte) – size (1 byte) 

一个例子:

605 2F 00 18 02 FF 00 00 00   --设置索引Index 1800,事件传输

605 2F 00 18 05 CB 00 00 00  --设置索引Index 1800,时间间隔200ms

605 2F 00 1A 00 00 00 00 00  --设置子索引禁用

605 23 00 1A 01 10 00 30 40  --0x40300010,设置映射索引0x4030,子索引00,大小0x10(16位)

605 23 00 1A 02 20 00 10 20  --0x20100020,设置映射索引0x2010,子索引00,大小0x20(32位)

605 2F 00 1A 00 02 00 00 00  --设置映射数量,用多少设多少,这里用了01--02

注意:定义映射时,先设置子索引禁用;再设置相应映射;然后设置映射数量

Receive - PDO (RPDO)

 i :Index 1400 + n, subindex 01 ,COB_ID(通讯对象的标识符)

对于RPDO来说,其通信参数的COB-ID是发送方的COB-ID,用来表示自己只接受某个CAN节点发过来的TPDO。

 ii :Index 1400 + n, subindex 02,写传输类型 t,              

               t = 1 -- 0xF0:同步,时间触发模式 ,每 t 一周期

               t = FD    :收到PDO请求后

               t = FE    :事件驱动(制造商指定)

               t = FF    :事件传输,节点自发传输PDO

iii:Index 1600 + n,定义映射

  subindex 0 :定义映射数量(1 byte)。值 0,映射禁用;值 01,子索引01有效;值 02,子索引01--02有效......

  subindex 1 :映射第一个参数。格式,index (2 bytes) – subindex (1 byte) – size (1 byte)

  subindex 2 :映射第二个参数。格式,index (2 bytes) – subindex (1 byte) – size (1 byte) 

一个例子:

605 2F 00 14 02 FF 00 00 00    --设置索引Index 1400,事件传输

605 2F 00 16 00 00 00 00 00  --设置子索引禁用

605 23 00 16 01 10 00 30 40  --设置映射索引0x4030,子索引00,大小0x10(16位)

605 2F 00 16 00 01 00 00 00  --设置映射数量,用多少设多少,这里用了01

注意:定义映射时,先设置子索引禁用;再设置相应映射;然后设置映射数量

来源地址:https://blog.csdn.net/delphigbg/article/details/127976518

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

CANopen之SDO,PDO

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP数据库之PDO怎么使用

这篇文章主要介绍“PHP数据库之PDO怎么使用”,在日常操作中,相信很多人在PHP数据库之PDO怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP数据库之PDO怎么使用”的疑惑有所帮助!接下来,请跟
2023-07-05

PHP数据库抽象层之PDO(二)——连接与连接管理

连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。构造函数接收用于指定数据库源(所谓的 DSN)以及可能还包括用户名和密码(如果有的话)的参数。 Example #1 连接到 MySQL
2022-05-23

PHP数据库学习之如何设置与获取PDO属性

本篇内容主要讲解“PHP数据库学习之如何设置与获取PDO属性”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP数据库学习之如何设置与获取PDO属性”吧!接下来就来了解一下怎样设置与获取PDO属
2023-06-25

PHP数据库学习之如何使用PDO执行SQL语句

这篇文章主要讲解了“PHP数据库学习之如何使用PDO执行SQL语句”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP数据库学习之如何使用PDO执行SQL语句”吧!exec() 方法在我们执
2023-06-25

编程热搜

目录