CanOpen報文詳細分析

小兜兜me發表於2024-09-22

一、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位元組:傳輸的資料

相關文章