近期小编开发了【跟我学CANopen】系列课程,会陆陆续续连载更新完毕,相关目录如下(由于内容较多导致文字太小,下图请放大后查看)。
对象字典索引区域定义中,0x1000h~0x9FFFh是通信对象子协议区和制造商特定子协议区。
01、通讯对象子协议区
通讯对象子协议区(Communication profile area)定义了所有和通信有关的对象参数。如下图所示。
标绿色底纹的索引范围1000h ~1029h为通用通讯对象,所有CANopen节点都必须具备这些索引,否则将无法加入CANopen网络。其他索引根据实际情况进行分配与定义。
02、用于时间报文和紧急报文的参数(索引1012h、1013h、1014h和1015h)
要想通过时间报文发送网络时间,就必须给时间报文分配一个CAN标识符。该CAN标识符记录在COB标识符参数(索引1012h)中,如下图所示。该参数还包含接收(第31位=1)/发送(第30位=1)时间报文的信息。第29 位表示使用的CAN 标识符的位数,为0表示使用11位CAN标识符,为1表示使用29位CAN标识符。
第29位和第30位都是无法修改的,这取决于设备的功能。如果对其进行写操作,则可用SDO异常中止消息来应答。
如果要支持高分辨率时间,可在参数1013h(高分辨率时间)中写入一个32位时间值(单位为us)。该值可打包在PDO中,供高精度同步设备使用。
与时间报文相似,在对象字典1014h (COB-ID紧急报文)中同样也给紧急报文设定一个CAN标识符。但COB-ID紧急报文参数中的第30位是不可用的,且固定为0。
为了避免总线因持续发送高优先级的紧急报文而无法进行通信,可以在对象字典1015h(禁止时间紧急报文)中设定一个禁止发送紧急报文的时间,该时间为100us的倍数。仅当禁止时间结束之后,才允许重新发送紧急报文。
03、用于SDO服务器和SDO客户端的参数(索引1200h~127Fh、1280h~12FFh)
SDO服务器和SDO客户端的参数( 索引1200h〜127Fh或1280h〜12FFh)的对象类型均为复杂数据类型( 索引0022h)。子索引01h包含客户端发往服务器报文的COB标识符,子索引02h包含服务器发往客户端报文的COB 标识符。这2 个标识符必须在2个方向的SDO通道中使用。如下图所示。
有效位v表示SDO消息以及COB标识符参数中所含的CAN标识符是否有效,0表示有效,1表示无效。只有2个方向都使用CAN标识符,SDO通道才有效。
第30位表示SDO的设置类型,0表示静态设置的SDO,1表示动态设置的SDO。设备复位后第31位和第30位又变为无效。SDO管理器可以利用dyn位识别预置的SDO连接以及在运行期间生成的连接。
子索引03h为可选项,包含服务器或客户端的节点ID。
默认SDO服务器的SDO参数集(索引1200h)为可选项。在索引1201h以后用于其他SDO通道的所有条目可读/写,这些SDO通道通常默认为禁止的。
成功没有捷径,只有通过不断的学习、学习再学习才能离成功更近一点点;想要学习的同学欢迎加入我们的技术交流群,共同学习,共同成长,让我们离成功更近一步;
欢迎转发
每篇原创内容都是我们用心血换来的知识精华,如果您觉得本文有价值,欢迎转载分享;
欢迎加入
如果您对单片机及嵌入式设计感兴趣,欢迎加入我们的辩论探讨,加我微信【xyzn3333】