CanOpen紧急对象的厂商特定错误字段是否有对应通信行规?
结论
你需要读取的CanOpen紧急报文(EMCY)第3-7字节的厂商特定错误字段,无法通过标准CanOpen通信行规的对象字典直接访问,具体说明如下:
相关对象字典说明
0x1001h(标准错误寄存器):仅映射EMCY报文的第2字节内容,是唯一和EMCY载荷直接关联的标准通用对象,你已经可以正常读取该字段。0x1002h(制造商状态寄存器):为厂商自定义的全局32位状态值,和EMCY报文中的厂商特定字段没有标准映射关系,因此你读取该对象无法获得目标内容。0x1003h(标准错误历史队列):仅存储历史EMCY报文的16位标准错误码+0x1001h错误寄存器值,不会记录后面5字节的厂商自定义内容,因此也无法通过该对象获取目标字段。
可行获取方案
- 通用标准方案:直接监听COB-ID为
0x80 + 节点ID的EMCY报文原始CAN数据,提取偏移2到偏移6的字节(对应你所说的第3到第7字节)即可,该方式兼容性最好,不受厂商实现差异影响。 - 厂商扩展方案:部分厂商会在自定义对象字典区间(
0x2000h~0x5FFFh)额外实现最近一次EMCY报文的厂商特定字段镜像,你可以查阅手头的厂商数据手册的自定义对象字典部分确认是否存在对应条目,如果有则可以通过SDO直接读取,该方式属于厂商自定义扩展,不在标准通信行规的强制要求范围内。
内容的提问来源于stack exchange,提问作者tomatoeshift
相关产品推荐
相关产品推荐

