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的数据区,但不起作用。

以上内容来自:http://www.dndev.com/cgi-bin/forum/forums.cgi?forum=2

CANopen 基础的更多相关文章

  1. CANopen学习——感性认知

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

  2. CANopen和DeviceNet有何异同

    >> 欢迎您,客人: 登录 | 注册 | 忘记密码 | 在线 | 搜索 | 帮助   DND开发论坛 ◇ DeviceNet技术讨论区 ◇ [返回] [讨论]CANopen和DeviceN ...

  3. CANopen个人之所见,所想

    一直想写一篇关于CANopen的文章,鉴于个人知识能力没有动笔,今天做了一番思想斗争,斗胆发表一下自己对CANOPEN的肤浅认识. 计划从销售人员,技术人员角度都分析一下CANopen的优势,文章可能 ...

  4. CANOpen学习指南

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

  5. CAN 和 CANopen的区别和联系

    1.CAN与CANopen的共同点与不同点:  CAN只定义了物理层与链路层,而没有定义用户层,用户可根据自己的需要定义一些网络上的通信约定:  CANopen是在CAN的基础上定义了用户层,即规定了 ...

  6. CANopen——笔记

    1. c语言的typedef高级用法 typedef void (*post_sync_t)(CO_Data*); http://zhidao.baidu.com/link?url=_lDBGq_uk ...

  7. java基础集合经典训练题

    第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...

  8. node-webkit 环境搭建与基础demo

    首先去github上面下载(地址),具体更具自己的系统,我的是windows,这里只给出windows的做法 下载windows x64版本 下载之后解压,得到以下东西 为了方便,我们直接在这个目录中 ...

  9. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. c#操作注册表的意外

    因为要在C/S程序中使用WebBrowser控件,因为默认的IE版本很低,无法使用Html5功能,故需通过把程序名写入注册表的方法指定IE版本. 但操作的过程中出现一个问题: 1.使用代码找到相关项, ...

  2. 安装OpenLDAP步骤

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL杂记页     回到顶级页面:PostgreSQL索引页 [作者 高健@博客园  luckyjackgao@gmail. ...

  3. python基础学习1-面向对象

    #!/usr/bin/env python # -*- coding:utf-8 -*- class Foo:#定义类 def mail(self,email,message):#定义类的方法 pri ...

  4. 【转载】MSXML应用总结 开发篇(上)

    原文:http://blog.sina.com.cn/s/blog_48f93b530100ejv9.html 本篇是接前文“MSXML应用总结 概念篇”写的,主要总结一下MSXML DOM接口的应用 ...

  5. Python学习之路:MINST实战第一版

    1.项目介绍: 搭建浅层神经网络完成MNIST数字图像的识别. 2.详细步骤: (1)将二维图像转成一维,MNIST图像大小为28*28,转成一维就是784. (2)定义好神经网络的相关参数: # M ...

  6. Maven仓库 - 分发构件至远程仓库

    分发构件至远程仓库   mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库.本地Maven仓库的构件只能供当前用户使 ...

  7. python类与对象的组合与继承

    1.把类的对象实例化放到一个新的类里面叫做类的组合,组合就是指几个横向关系的类放在一起,纵向关系的类放在一起是继承,根据实际应用场景确定.简单的说,组合用于“有一个”的场景中,继承用于“是一个”的场景 ...

  8. ubuntu/linux中安装Tomcat(附图解详细步骤)

    我的linux系统使用的是ubuntu14 1.首先需要先到Tomcat官网上下载对应linux系统的压缩包,可以直接在Ubuntu系统中进行下载,下载后的默认路径为主文件夹路径下的下载文件目录下 注 ...

  9. Web服务架构

    # Web服务架构 ### Web服务模型-- 服务提供者.服务请求者.服务注册中心,服务注册中心是一个可选的角色. 现在的Web服务不仅限于WSDL,还有RESTful. - 服务提供者.即Web服 ...

  10. .NetCore mvc Ajax Post数据到后端

    在前端页面中,如果没有表单,想把复杂对象提交到后端,可使用以下方法 后端Controller中定义以下方法: [HttpPost] public int AddSolution([FromBody]S ...