1. TPDO和RPDO都是针对从站来说的,协议上没有有讲任何一个关于主站的概念,协议就只是定义从站,没有定义主站任何东西。

TPDO:从站->主站

RPDO:主站->从站

2. PDO的COB-ID是用来唯一标识一个PDO报文的,不同的PDO设置不同的COB-ID。

3. 主站和从站的通信过程基本是这样的:

a.主站检测从站是否在线;

b.在线的话开始通过SDO配置从站;

c.配置成功,则发送一个NMT start remote node指令让从站进入Operation状态,开始PDO的通信。

4. CANopen所定义的所有Object都是要在从站上实现的,只是数值是由主站在开始PDO传输前通过SDO写入的。

5.  标识符正如其名,是CAN帧的一个标识,CANopen使用了这个标识符,并且把它定义为COB-ID,规定了高四位为功能码,低7位为节点ID,但是,CANopen并没有规定每个节点发出的所有帧都必须带上自己的ID,也没有规定接收的帧都必须跟自己的ID匹配,所以从根上说,COB-ID还是标识符的作用,它只是被规划了一下含义,举两个例子:PDO,COB-ID的组成即可以是发送方ID也可以是接收方ID,看你方便和具体使用规律;SDO,规定了使用server的ID来沟通。CANopen的预定义连接集是比较纠结,描述的不够清晰。

6. Heartbeat并不分主站和从站,仅是一种断线检测机制,主站可以发给从站,从站也可以发给主站,看用户的需求,一般的主站配置软件都可以设置主站或从站是否要监控对方的在线状态。

支持heartbeat的从站,都有1016和1017两个参数,1017的数值表示从站送出heartbeat报文的间隔时间,1016表示从站监控主站或其它从站的超时时间(如果从站支持,可以同时监控主站或其它从站的在线状态,根据应用需求而定),所以1016是一个数组型的参数。

当主站在consumer的时间内没有收到从站的Heartbeat(producer时间间隔发送),那么认为从站掉线。

7. 实现CANOPEN的步骤:

① CANopen 协议体系的实现;

② CANopen 相应开发和配置工具的实现。

第2 阶段主要完成CANopen 标准开发工具的开发,开发过程可以分为 2 个步骤:第1 个步骤是EDS 和DCF 配置工具的开发;第2 个步骤是开发实现对象字典的工具。

实现对象字典的过程是:将EDS和DCF用“文件转化工具”转化为“内部实现描述(XML)”,再用“目标配置代码工具”从而实现对象字典。

EDS就是提供从站的一些默认的参数值给主站的组态软件,供用户配置从站的时候使用,EDS不是必须的,但大多数的主站配置软件都需要,有些主站软件也不需要EDS文件,比如Bechkoff的主站就不需要从站提供EDS文件。

8. 一般每个节点既可以作为server又可以作为client,server向client开放自己的OD供访问,两者的parameter都存放在设备唯一的OD中。

9. 不同的传输类型支持几种不同的数据传输方式:

① 同步触发,由同步帧触发,以同步整个网络数据,不同的数据频率通过设置不同的同步数实现。

② 事件触发。

③ 内部定时触发(也可以归到事件触发) 。

10. 同步PDO的实际意义与应用场合

应用程序刷进对象字典时间和频率都是由编程人员自行确定的,你可以根据PDO的类型自行确定,比如每隔5个sync的时间刷新一次对象内容,这样数据的新鲜程度是5个sync,如果要求更进一步的新鲜程度,你可以在刷新对象内容后直接触发一帧PDO。

同步PDO在实际应用中的优势:很多,提供一致的系统节拍,使得总线的数据尽量保证新鲜程度的同时,能够减少通讯量,合理的规划总线占用率。比如总线分布式的控制回路,怎样保证控制周期的准确性和数据的有效性呢?

同步传输的最重要应用是多轴同步控制,沒有这种同步机制,多轴传动功能是沒有办法实现的。

PDO只是个载体,或者说它好比一辆货车,车厢里装什么货,是可以配置的,这些由PDO映射来完成,PDO映射用来指定把对象字典的那些对象装进PDO,或者从接收的PDO中将数据放到那些对象中。

SYNC周期是恒定的,它基本上就是系统通信部分的节拍了,节拍乱了,一切都是浮云了。

11.http://blog.ednchina.com/whicun/99861/message.aspxCAN及CANOPEN通讯协议大全

12. 移植canfestival到ARM上的步骤:

1)在学习移植CANopen之前要先熟悉CAN,能够使用CAN进行节点间的通信设计。

2)熟悉CAnopen协议,通读一遍301协议,并且结合国内的一些介绍性资料了解一下CAnopen的结构、定位和工作方式。

3)结合一些较简单的协议栈代码,比如置顶的两套小代码,能够读懂一个,明白运行过程,最好能移植到你的硬件上试一下,毕竟它的代码量较之CANFestival要小的多。

4)准备移植CANFestival,先在你熟悉和有条件实验的平台下,比如x86的windows下试着编译运行CANFestival(我记得有window的vc工程可以编译的)。熟悉和理解CANFestival,最后再把CANFestival移植到你的目标平台,可能会需要编写硬件接口驱动的。

13.  心跳报文是单向的,一般的主站都可以提供配置的方法,你可以让主站监控从站是否断线,也可以让从站监控主站是否断线,或者两个一起互相监控。

14. 一般的主站都需要一个配套的配置软件,我们习惯叫网络组态软件(Configuration tool software),让用户可以根据自己的需求来对网络进行配置。

15. 同步和异步,是针对不同的应用需求定义的方式,如果你的控制在各个从站间不需要配合,其实异步是比较科学的方式,一般同步都是运动控制中使用。

16. EDS文件只是一个具有可读性的设备对象字典的描述,设备实际的对象字典,是对它的软件实现,即设备实现了这个EDS所描述的对象字典,如果从站资料里面EDS文件支持读写,而实际访问却不可写,要么是从站没按照这个对象字典实现,要么是有其它的条件开启写入功能,比如物理开关或者参数开关。最好还是详细阅读一下从站的资料,也可以咨询该设备的供应商。

17.  dummy在CANOPEN里原本的意思是空的,没有意义的对象,用来占用PDO的数据,以达到调整PDO数据结构的目的。你基本上可以理解它的作用是会占用PDO的数据区,但不起作用。

linux canopen软件,CANopen学习笔记相关推荐

  1. 九十分钟极速入门Linux——Linux Guide for Developments 学习笔记

    转载自: 九十分钟极速入门Linux--Linux Guide for Developments 学习笔记 http://mp.weixin.qq.com/s?__biz=MzAwNTMxMzg1MA ...

  2. 【软考中级】软件设计师学习笔记

    软件设计师学习笔记 计算机系统知识 程序语言设计 数据结构 操作系统 软件工程基础知识 结构化开发方法 创建型设计模式 行为型设计模式 结构型设计模式: 算法设计与分析 数据库技术基础 网络与信息安全 ...

  3. 《鸟哥的Linux私房菜》学习笔记

    <鸟哥的Linux私房菜>学习笔记 这是一份学习<鸟哥的Linux私房菜>的学习笔记,记笔记的原则是,感觉平时可能会用到的 就记录的详细一些,感觉暂时用不上的,只需要知道要解决 ...

  4. Linux性能优化实战学习笔记:第十讲==中断

    Linux性能优化实战学习笔记:第十讲 一.坏境准备 1.拓扑图 2.安装包 在第9节的基础上 在VM2上安装hping3依奈包 ? 1 2 3 4 5 6 7 wget http://www.tcp ...

  5. 【嵌入式环境下linux内核及驱动学习笔记-(16)linux总线、设备、驱动模型之input框架】

    目录 1.Linux内核输入子系统概念导入 1.1 输入设备工作机制 1.2 运行框架 1.3 分层思想 2.驱动开发步骤 2.1 在init()或probe()函数中 2.2 在exit()或rem ...

  6. 三代组装软件canu学习笔记

    三代组装软件canu学习笔记 (2017-08-07 14:17:43) 转载▼   分类: 三代 1:这个组装软件起源于PBcR包含在Celera Assembler中(http://wgs-ass ...

  7. 软件调试学习笔记(七)—— 单步步入单步步过

    软件调试学习笔记(七)-- 单步步入&单步步过 单步步入 设置单步异常 处理单步异常 实验1:单步异常的设置与处理 单步步过 实现思路 实验2:实现单步步过 单步步入 描述: 单步步入的实现依 ...

  8. 软件调试学习笔记(六)—— 硬件断点

    软件调试学习笔记(六)-- 硬件断点 硬件断点 设置硬件断点 触发硬件断点 处理硬件断点 实验:硬件断点的设置与处理 硬件断点 描述: 与软件断点与内存断点不同,硬件断点不依赖被调试程序,而是依赖于C ...

  9. 软件调试学习笔记(五)—— 软件断点内存断点

    软件调试学习笔记(五)-- 软件断点&内存断点 调试的本质 软件断点 软件断点的执行流程 分析INT 3执行流程 实验:处理软件断点 内存断点 内存断点的执行流程 实验:处理内存断点 调试的本 ...

  10. 软件调试学习笔记(四)—— 异常的处理流程

    软件调试学习笔记(四)-- 异常的处理流程 要点回顾 异常的处理流程 实验1:理解调试器与异常的关系 未处理异常:最后一道防线 实验2:理解UnhandledExceptionFilter执行流程 实 ...

最新文章

  1. Java知识系列 -- 反射
  2. Linux 解压缩tar经历,Linux命令 -- tar解压缩命令
  3. WCF系列(二) -- 使用配置文件构建和使用WCF服务
  4. (z) 什么是好的硬件工程师
  5. mysql安装、导入数据脚本
  6. Linux服务器安装宝塔面板,Linux服务器安装宝塔服务器管理控制面板
  7. linux部署moodle
  8. php数组 是什么意思,php数组是什么意思 - php完全自学手册 - php中文网手册
  9. 小米手机微信指纹支付上传服务器吗,小米MIUI支持微信指纹支付吗 小米MIUI微信指纹支付【图文】...
  10. Codeforces Round #531 F. Elongated Matrix (状压dp)
  11. PECompact 2.79 Beta D by Sonny27
  12. 团队作业8----第二次项目冲刺(Beta阶段) 第三天
  13. emui 4.1 基于android 6.0,【荣耀V8评测】基于Android 6.0的EMUI 4.1_荣耀 V8_手机评测-中关村在线...
  14. Matlab Bitwise Operator模块
  15. 支付宝/小钱袋H5支付通道
  16. 为什么iPhone手机微信信息老是出现延误?原来是这5大原因搞的鬼
  17. 火爆的keychron机械键盘,你还没有入手?【重点:附键盘选购建议】
  18. MySQL insert ignore/ update ignore 不只用来忽略id重复
  19. z490 linux raid,PC硬件与外设 篇二十三:光威弈系列Pro Z490平台装机评测(含raid模式)...
  20. 【蓝桥】 历届试题 分考场(DFS,回溯,剪枝,无向图染色问题)

热门文章

  1. 因担心5G电磁辐射 这个地方的居民试图阻止5G基站扩张
  2. 十大笔记本品牌型号命名规则【联想】
  3. c如何接收java指令_java指令和javac指令总结
  4. java tts引擎_让Java说话-用Java实现语音引擎
  5. YUV格式学习:NV12和YUV420P格式互换
  6. Linux内存带宽的一些测试笔记
  7. Hibernate无法自动建表的缘故
  8. 【Flink】Could not connect to BlobServer at address
  9. 【Elasticsearch】使用Elasticsearch 7.8 快速搭建食谱搜索系统
  10. 95-10-020-启动-初始化ZK