对于初学者,相对于其余总线的资料来讲,在国内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模块。不过,并非全部的这些文档都是免费公开的,可能有些是须要$$才能获得的。编程