(本文参考文献如下:
《基于 CANopen 协议的交流伺服驱动器的研究---黄剑》
《基于CANopen协议的主从站伺服控制研究---陈海燕》)
CANopen的层模型如下图,包括物理层,数据链路层,和应用层。
物理层:波特率等电气特性。
数据链路层:判断总线数据优先级,监控出错点等。
应用层:使用通讯对象(COB)完成设备间的数据交换。
CANopen典型结构由通讯接口、对象字典、应用程序组成。
通讯接口:提供各种通讯对象和传输数据所需的服务???协议栈???
对象字典:应用对象、通讯对象、状态机等数据的集合体
应用程序:各设备之间的纽带,核心功能是通过访问对象字典完成控制等。
CAN 总线采用 CSMA/CD 即载波监听多路访问/冲突检测(Carrier Sense Multiple
Access/Collision Detect)的通信模式。
几个概念:
同步传输和异步传输
CANopen通信模型支持同步和异步的信息传输方式。同步传输与异步传输的区
别是:同步传输的报文必须通过一个预先定义好的同步报文来触发其发送,而异步
传输的报文则可以在任何时候发送。CANopen使用同步报文以及时间戳报文等预定
义的通信对象来实现同步功能。通过使用报文的同步传输功能,网络内的所有数据
传输,例如数据采集和驱动都可以得到很好的调节和控制。
线性表和链表
- 若线性表需要频繁查找,很少进行插入和删除操作时,宜采用顺序存储结构。若需要频繁插入和删除时,宜采用单链表结构。
- 当线性表中的元素个数变化较大或者根本不知道有多大时,最好用单链表结构,这样可以不需要考虑存储空间的大小问题。而如果事先知道线性表的大致长度,用顺序存储结构效率会高很多
协议栈中对象字典实现
选择静态结构体作为对象字典的存储结构,所有参数按照索引、子索引升序存入数组。
(静态查找有顺序查找、折半查找、差值查找三种)
还需要解决的问题是:
1,从邮箱到对象字典的映射如何处理?
2,NMT、PDO、SDO。