CanOpen报文详细分析

一、SYNC

同步帧,由同步生产者定期广播同步帧,为网络提供基本的同步机制。

image

  • CAN-ID:0x80(功能码)
  • 帧类型:标准数据帧
  • DLC:0
  • 数据域:无

二、Error Control

1. 节点守护(node guard)

NMT主机定期向NMT从机发送节点守护请求报文,NMT从机返回自己当前的NMT状态。

image

NMT主机:

  • CAN-ID:0x700(功能码) + Node-ID
  • 帧类型:标准远程帧
  • DLC:0
  • 数据域:无

NMT从机:

  • CAN-ID:0x700(功能码) + Node-ID
  • 帧类型:标准数据帧
  • DLC:1
  • 数据域:
    • 最高位(bit 7):翻转位,首次是0
    • 低7位 [6, 0]:心跳生产者的状态

2. 心跳(heartbeat)

心跳生产者周期性的发送心跳报文到CAN总线上,由对应的心跳消费者接收,心跳生产者在字典0x1017配置,心跳消费者在字典0x1016配置(低16位周期,高16位节点ID)

image

  • CAN-ID:0x700(功能码) + Node-ID
  • 帧类型:标准数据帧
  • DLC:1
  • 数据域:
    • 最高位(bit 7):保留
    • 低7位 [6, 0]:心跳生产者的状态

三、PDO

报文分析的话就按触发方式来区分吧。大概可以分为以下几种:

  1. 无外部报文触发
    • 定时触发(设置事件定时器)
    • 发生改变触发
  2. 同步帧触发
  3. 远程帧触发

1.无外部报文触发

image

  • CAN-ID:功能码(见下表) + Node-ID
  • 帧类型:标准数据帧
  • DLC:数据大小
  • 数据域:dlc个8bit数据

2.同步帧触发

image
image
image

请求方:发送同步帧,详见同步帧

响应方:

  • CAN-ID:功能码(见下表) + Node-ID
  • 帧类型:标准数据帧
  • DLC:数据大小
  • 数据域:dlc个8bit数据

3.远程帧触发

image
image
image

请求方:

  • CAN-ID:功能码(见下表)+ Node-ID
  • 帧类型:标准远程帧
  • DLC: 0
  • 数据域:无

响应方:

  • CAN-ID:功能码(见下表) + Node-ID
  • 帧类型:标准数据帧
  • DLC:数据大小
  • 数据域:dlc个8bit数据

功能码表

COB 功能码值
NMT 0x0
SYNC 0x80
TPDO1 0x180
TPDO2 0x280
TPDO3 0x380
TPDO4 0x480
SDO(tx) 0x580
RPDO1 0x200
RPDO2 0x300
RPDO3 0x400
RPDO4 0x500
SDO(rx) 0x600
HeartBeat 0x700

四、SDO

SDO的download和upload是相对于对象字典(OD)作为参照物的。

SDO启动报文数据域格式:

  1. 第一字节:CS
  2. 第二字节:OD索引低8位
  3. 第三字节:OD索引高8位
  4. 第四字节:OD子索引

1. Fast SDO

Fast SDO旨在用一次报文来完成数据的传输,SDO的第一个报文为启动报文,Fast SDO就是利用启动报文只用了4个字节的数据域来与其他设备建立SDO连接,利用剩下的四个空余字节来传输数据,从而达到一帧完成建立SDO连接 + 数据传输的目的。

client cs 快速取值

取值的不同是因为cs中第三位和第二位表示的是不带数据的字节数,改变第三位和第二位的值就可以指定要传输多少字节的数据。

数据规模 download upload
不指定字节 必须指定字节数 0x40
1字节 0x2F 0x4F
2字节 0x2B 0x4B
3字节 0x27 0x47
4字节 0x23 0x43
应答 0x60 字节数对应的upload值
download

用于修改OD的配置信息

image
image

客户端:

  • CAN-ID:0x600+ Node-ID
  • 帧类型:标准数据帧
  • DLC: 8
  • 数据域:
    • 第一字节:cs(见SDO initiate)
    • 第二字节:OD索引低8位
    • 第三字节:OD索引高8位
    • 第四字节:OD子索引
    • 第5~8字节:传输的数据

服务器:

  • CAN-ID:0x580 + Node-ID
  • 帧类型:标准数据帧
  • DLC:8
  • 数据域:
    • 第一字节:cs(见SDO initiate)
    • 第二字节:OD索引低8位
    • 第三字节:OD索引高8位
    • 第四字节:OD子索引
    • 第5~8字节:全为0(不使用但要有)
upload

用于读取OD的配置信息

image
image

客户端:

  • CAN-ID:0x600+ Node-ID
  • 帧类型:标准数据帧
  • DLC: 8 (不能是4)
  • 数据域:
    • 第一字节:cs(见SDO initiate)
    • 第二字节:OD索引低8位
    • 第三字节:OD索引高8位
    • 第四字节:OD子索引
    • 第5~8字节:全为0(不使用但要有)

服务器:

  • CAN-ID:0x580 + Node-ID
  • 帧类型:标准数据帧
  • DLC:8
  • 数据域:
    • 第一字节:cs(见SDO initiate)
    • 第二字节:OD索引低8位
    • 第三字节:OD索引高8位
    • 第四字节:OD子索引
    • 第5~8字节:传输的数据
posted @ 2024-09-22 12:06  小兜兜me  阅读(532)  评论(0编辑  收藏  举报