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

前提:需要对CAN总线有所了解,可以看CAN2.0总线的资料。
当然,对计算机系统、单片机以及编程也需要有一定的基础。

第一步:CANOpen Standard 301,这个是一切的基础,最然并不一定马上就要对所有的细节了如指掌,但至少对CANOpen总线以及各种传输控制方式以及其作用需要有一定的了解(比如:NMT、SDO、PDO、HeartBeat等等)。这里不推荐看ZLG的文档,ZLG的文档只是从301文档中,抽出的一些章节中的内容,我相信如果直接看ZLG的文档的话,大部分人是看不懂的。

第二步:最后有一个可以玩的硬件(最好是已经移植好CANOpen协议栈的),否则所有的协议只是资料中的数据格式以及操作方式而已。这样就需要有一个开发板和CAN逻辑分析仪工具。还好我在3年前就已经自己做过一块低成本的CAN的开发板(基于AT90CAN32),并且在这个开发板上实现了基于串口的CAN适配器(可以用于发送各种CAN数据),同时,也在这块板上实现了CANOpen。目前taobao上也有很多种类的CAN开发板和适配器。
在这个硬件上,测试各种CANOpen报文,包括NMT、SDO、PDO,可以远程设置HeartBeat频率,看看收到的HeartBeat报文等。这步完成后,对于CANOpen就有了一定的认识了。对于各种报文,这里要推荐一下ZLG的文档,最后部分对CANOpen的各种报文的格式做了一个总结,查看起来非常方便。

第三步:找个CANOpen的协议栈源码看看,从代码层次来理解CANOpen的各种操作的步骤以及实现方式。当然,目前协议栈也有不少了,有些是免费的,有些是收费的(估计价格还都不便宜)。

第四步:301文档只是描述了CANOpen有那些工具可以使用,但没有任何关于一个模块如何利用这些功能的信息。这样就要看一下CANOpen的各个模块的文档,比如401--I/O模块。不过,并不是所有的这些文档都是免费公开的,可能有些是需要$$才能得到的。

CANOpen学习指南的更多相关文章

  1. Civil 3D API二次开发学习指南

    Civil 3D构建于AutoCAD 和 Map 3D之上,在学习Civil 3D API二次开发之前,您至少需要了解AutoCAD API的二次开发,你可以参考AutoCAD .NET API二次开 ...

  2. 笔记——shell脚本学习指南

    <shell脚本学习指南>机械工业出版 ISBN 987-7-111-25504-8 第2章 2.4 初级陷阱 1.当今的系统,对#!这一行的长度限制从63到1024个字符都有,尽量不要超 ...

  3. 《Spring MVC学习指南》怎么样?答:书名具有很大的欺骗性

    2016年6月21日 最近,因为工作需要,我从网上买了一本<Spring MVC学习指南>,ISBN编号: 978-7-115-38639-7,定价:49.00元.此书是[美]Paul D ...

  4. [go语言学习指南]

    内部分享,根据自己的经验,收集汇总的go语言学习指南. 适合新手入门. 可以通过这里进行下载.

  5. Oracle学习指南

    Oracle学习指南 你走的那天,我决定不落泪,迎着风撑着眼帘用力不眨眼 创建数据库.创建用户.创建表空间.创建表.插入数据..... 1.用系统用户登录,任选系统用户 代码: >>sql ...

  6. 推荐10个很棒的AngularJS学习指南

    AngularJS 是非常棒的JS框架,能够创建功能强大,动态功能的Web app.AngularJS自2009发布以来,已经广泛应用于Web 开发中.但是对想要学习Angular JS 的人而言,只 ...

  7. 项目管理之道--纪我的新书《PMP项目管理认证学习指南(第4版)》出版并预祝大卖!

    新年伊始,我最新的项目管理书籍——<PMP项目管理认证学习指南(第4版)>也出版了,真是新年新气象啊!翻译英文书籍是一件任重道远的工作,除了要具备扎实的基本功,熟悉相关的领域外,还需要细致 ...

  8. Gulp学习指南之CSS合并、压缩与MD5命名及路径替换(转载)

    本文转载自: Gulp学习指南之CSS合并.压缩与MD5命名及路径替换

  9. Android Wear(手表)开发 - 学习指南

    版权声明:欢迎自由转载-非商用-非衍生-保持署名.作者:Benhero,博客地址:http://www.cnblogs.com/benhero/ Android Wear开发 - 学习指南 http: ...

随机推荐

  1. C语言数组截取常见问题

    这是一段数组截取的代码,函数功能是检查后面的'*'的数量,若多于指定输入数,则把多余的'*'删除 void fun( char *a,int n ) { char *p = a; while(*p) ...

  2. Asp调用存储过程,command.CreateParameter 参数值的类型说明

    Asp调用存储过程,command.CreateParameter 参数值的类型说明 Asp调用各种存储过程,包括带参数,无参数,输入输出参数,带返回值等. 1,调用没有参数的存储过程 <% s ...

  3. 14 [网络编程]-socket

    1.互联网协议 博客:http://www.cnblogs.com/linhaifeng/articles/6129246.html 2.socket层 Socket是应用层与TCP/IP协议族通信的 ...

  4. 2555: SubString

    2555: SubString 链接 题意: 动态在末尾加入一个字符串,询问一个字符串出现了多少次. 分析: 如果没有动态加入,那么建出SAM后,求出parent树上,每个点|Right|,然后走一遍 ...

  5. [算法]用JAVA实现快速排序

    问题描述: 实现对数组的普通快速排序与随机快速排序实验要求: (1)实现上述两个算法 (2)统计算法的运行时间 (3)分析性能差异,作出总结 代码: 一:普通快速排序 public class Qui ...

  6. P3674 小清新人渣的本愿

    P3674 小清新人渣的本愿 一道妙不可言的题啊,,, 一看就知道是个莫队 考虑求答案 1号操作就是个大bitset,动态维护当前的bitset \(S\),把能取哪些值都搞出来,只要\(S\ and ...

  7. 解决shell命令"** is not in the sudoers file..."错误

    Linux中新建的普通用户一般不会分配给root权限,每次都su root也太麻烦,可以通过在/etc/sudoers文件中添加当前用户的方式,给当前用户赋予sudo命令的使用权限. # 切换到roo ...

  8. CentOS 下 SonarQube 6.7 的下载、配置、问题排查

    CentOS 下 SonarQube 6.7 的下载.配置.问题排查 系统: CentOS 7 x86_64 SonarQube 版本: 6.7.3 Java 版本: 1.8.0_171 MySQL ...

  9. Linux 安装Nginx(使用Mac远程访问)

    阅读本文需要一定的Linux基础 一 Nginx简介 nginx是用c语言编写的一款高性能的http服务器|反向代理服务器|电子邮件(IMAP/POP3)代理服务器 由俄罗斯的程序设计师Igor Sy ...

  10. Babylon.js官方性能优化文档中文翻译

    在这里列出Babylon.js官方性能优化文档的中英文对照,并在CardSimulate项目里对其中的一些优化方法进行实践. How To 如何 Optimize your scene 优化你的场景 ...