查找资料时,发现一个很好的博客,博主剖析的通俗易懂
 

PDO定义:

过程数据对象,用来传输实时数据。因为CAN报文是8Byte数据位,所以最多传输64bite的数据。

PDO的内容:

PDO消息的内容是预定义的,或者在网络启动时配置的。

通信参数:

通信参数描述PDO的特性。

PDO的的传输方式:

  • 事件触发
当数据变化时,立刻发送出去,不需要等待主机轮训才发送,所以实时性好,而且避免重复数据占用大量总线占用资源,就像数据压缩了一样。事件驱动类型的RPDO可立即处理收到的数据。
  • 远程请求或轮询:
此方式就像485通信一样,主控主动远程请求或者轮询,子设备才发送PDO。因为市面上有一些不支持远程帧的CAN控制器,不建议使用。
  • 同步传输:
CAN总线上有一个设备作为SYNC信号的生产者,其他设备作为消费者。生产者和消费者都又SYNC计数功能,消费者计数到一定时(1~240),自动发送PDO。
  • if(同步传输&&事件触发):
顾名思义,不仅满足定时还满足事件触发,才发送PDO。
 

图1-PDO传输类型与传输方式(from周立功《CANopen协议介绍》)

 Tips:

  • 禁止时间:定义发送具有相同CAN标识符的两个PDO之间至少要间隔的时间。图1中,Event(数据变化等)一直发生时,PDO数据会一直发送,如果此值的优先级比较高,就会在总线仲裁后胜出,一直堵塞通信,所以,需要添加一个禁止时间,两个PDO发送的间隔,避免这种情况发送。
  • 事件计时器:在没有Event(数据变化等)发生时,PDO会不发送,为了让它能够发送。在第一次Event发送后,会计数,如果在计时器溢出之前,来了一个Event,此计数复位,如果一直没有Event,溢出后,也会发送PDO.

综上:这两个小东西,保证了在事件驱动发送PDO的方式下,避免出现连续发送和不发送的两种极端情况。

CANopen学习——PDO的更多相关文章

  1. CANOpen学习指南

    对于初学者,相对于其他总线的资料来说,在国内CANOpen的资料并不多.而且并不是所有资料都适合初学者看的.这里给出一些建议,对CANOpen感兴趣的,可以参考一下学习的顺序. 前提:需要对CAN总线 ...

  2. CANopen学习——同步

    在发送和接收之间必须相互协调和同步,为此,CANopen引入同步的概念. 同步报文:包含一个数据字节或者不含数据字节的CAN报文.数据字节中包含一个从1开始递增计数的同步计数器.溢出值可在参数(索引1 ...

  3. 旧文备份:CANopen协议PDO的几种传输方式

    (于2007.1.22) 由于PDO所传输的数据内容是无协议的且分配的标识符范围较SDO靠前,因此,其效率和优先级都是较高的,通常用于实时过程数据的传输. PDO是生产/消费类型的通讯方式,数据只有一 ...

  4. 学习PDO中的错误与错误处理模式

    在 PDO 的学习过程中,我们经常会在使用事务的时候加上 try...catch 来进行事务的回滚操作,但是大家有没有注意到默认情况下 PDO 是如何处理错误语句导致的数据库操作失败问题呢?今天,我们 ...

  5. CANopen学习——感性认知

    看不懂的知识硬着头皮也要看.读了当时虽然不理解,但脑子里对其相关名词.概念有印象,继续看下去,多读几遍,一定会在某个地方顿悟.  CAN总线只是定义了物理层和数据链路层,并没有定义应用层.这么优秀的总 ...

  6. CANopen学习——OSI模型复习

    CanOpen协议实现了物理层和数据链路层,OSI模型是完整的7层. OSI模型网络七层包括物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 物理层:提供信息传输的物理连接通道,包括使用的 ...

  7. [麦先生]学习PDO循序渐进使用方式

    使用方式  特点一:支持跨数据库 1:首先实例化PDO,创建PDO对象的四个必备参数:host(哪一种类型的数据库,mysql/orcal/SQLserver等);dbname(数据库的名称);cha ...

  8. 学习PDO啦

    通过查找资料对PDO有了一定的了解,PDO(PHP Data Object )为PHP数据对象,为PHP访问数据库提供了一个轻量级的借口,但PDO本生不能实现访问数据库的任何功能,只能通过数据库的PD ...

  9. CANopen学习——协议栈

    协议,是双方都提前商量好的通讯约定. 例如:发送1代表灯亮,发送0代表灯灭. 但由于只是单bit的0和1在通信时,抗干扰太弱,且多种控制时不能区分,此时扩展一下协议. 例如:  头      地址   ...

随机推荐

  1. 编写Windows服务疑问2:探索服务与安装器的关系

    首先,来弄两个服务,一个叫“飞机”,一个叫“火车”. public class FeiJiService : ServiceBase { public FeiJiService() { Service ...

  2. Dreamweaver 扩展开发:文档路径等信息的处理

    //browseFile(fieldToStoreURL){ //getFullPath(filePathURL){ //getSimpleFileName() { //fixUpPath(docUR ...

  3. awk命令简介

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...

  4. JavaScript 中对变量和函数声明的“提前”

    变量声明“被提前” JavaScript 的语法和 C .Java.C# 类似,统称为 C 类语法.有过 C 或 Java 编程经验的同学应该对“先声明.后使用”的规则很熟悉,如果使用未经声明的变量或 ...

  5. 1Z0-053 争议题目解析

    1Z0-053 争议题目解析 Summary 题目NO. 题目解析链接地址 题库答案 参考答案 考查知识点  24 http://www.cnblogs.com/jyzhao/p/5319220.ht ...

  6. 原创:去繁存简,回归本源:微信小程序公开课信息分析《一》

    以前我开过一些帖子,我们内部也做过一些讨论,我们从张小龙的碎屏图中 ,发现了重要讯息: 1:微信支付将成为重要场景: 2:这些应用与春节关系不小,很多应用在春节时,有重要的场景开启可能性: 3:春节是 ...

  7. kafka性能参数和压力测试揭秘

    转自:http://blog.csdn.net/stark_summer/article/details/50203133 上一篇文章介绍了Kafka在设计上是如何来保证高时效.大吞吐量的,主要的内容 ...

  8. 4.在MVC中使用仓储模式进行增删查改

    原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-using-the-repository-pattern-in-mvc/ 系列目录: ...

  9. STM32F746的RTC使用

    1.RTC模块采用低速晶振外接始终:32.768KHz,如下图所示 2.配置RTC模块: 其中,Fck_apre.Fck_spre始终上配置不容易理解, 如果想得到1Hz的始终频率,则需要将PERDI ...

  10. Scala快速概览

    IDEA工具安装及scala基本操作 目录 一. 1. 2. 3. 4. 二. 1. 2. 3. 三. 1. 2. 3. 4. 5. 6. 7. 四. 1. (1) (2) (3) (4) (5) ( ...