ANROT 教學文件

ANROT CAN J1939 DBC 解析教學

說明 ANROT CAN J1939 的 29-bit extended frame、PGN / Source Address、DBC 匯入方式,以及 IMU、姿態、GNSS / INS 訊號解析。

最後更新 2026年4月26日 對應產品 5
  • j1939
  • can
  • dbc
  • tutorial

CAN J1939 DBC 解析教學

協議支援

協議 / frame支援狀態本教學的範圍
SAE J1939 / CAN DBC支援DBC 描述 CAN PGN/SPN 訊號,供 J1939 工具解析。
ANROT UART binary (0x91, 0x62, 0x63)不適用這些是 UART binary frame,不屬於 J1939。
CANopen不適用請改看 CANopen 教學。

本頁說明如何使用 J1939.dbc 解析 ANROT 裝置輸出的 CAN J1939 資料。DBC 適合匯入 CANdb++、CANalyzer、PCAN-View 或其他支援 DBC 的 CAN 分析工具,用來把原始 CAN frame 轉換成經緯度、速度、加速度、角速度、姿態角、四元數等物理量。

DBC 只負責資料解析,不包含裝置控制、參數設定或輸出切換指令。若需要設定裝置輸出模式、Node ID、baud rate 或 CANopen TPDO,請搭配對應設定文件與 CANopen 教學使用。

下載

J1939 frame 結構

J1939 使用 29-bit extended CAN frame。ANROT J1939 DBC 中的訊息 ID 以 DBC extended-frame 表示法儲存,因此 DBC 內 BO_ 的十進位 ID 會包含 extended flag;實際 bus 上看到的 29-bit CAN ID 需看低 29 bit。

PGN65332_FF34_Accel 為例:

項目
DBC 內 BO_ ID2365535240
DBC 內十六進位0x8CFF3408
實際 29-bit CAN ID0x0CFF3408
Priority3
PGN0xFF34
Source Address0x08

0x8CFF3408 最前面的 extended flag 是 DBC 格式用來標示 extended frame 的資訊;實際 CAN bus frame ID 是 0x0CFF3408。如果你的 CAN 工具已正確載入 DBC,通常不需要手動轉換;如果你用 raw log 或程式自行比對 ID,必須注意這個差異。

DBC 使用流程

  1. 確認 CAN adapter 支援 29-bit extended frame。
  2. 設定 CAN baud rate 與裝置輸出設定一致。
  3. 在 CAN 分析工具中匯入 J1939.dbc
  4. 開始接收 CAN frame,確認工具能看到 0x0CFFxxxx 類型的 extended ID。
  5. 依訊號名稱查看物理量,例如 Acc_XGyr_ZRollLatitude

訊息總覽

DBC 以 Source Address 0x08 建模。若裝置 Source Address 改變,實際 CAN ID 的最後一個 byte 會跟著改變,DBC 可能需要在工具中調整節點 / ID 或另存一份對應 source address 的 DBC。

DBC 訊息實際 29-bit CAN IDPGN主要資料
PGN65296_FF10_LonLat0x0CFF10080xFF10Latitude、Longitude
PGN65300_FF14_AltUnduDiffAge0x0CFF14080xFF14Altitude、Undulation、Diff Age
PGN65304_FF18_StatusSats0x0CFF18080xFF18GNSS / INS 狀態與衛星數
PGN65318_FF26_Velocity0x0CFF26080xFF26East / North / Up velocity、Ground Speed
PGN65327_FF2F_Time0x0CFF2F080xFF2FUTC 時間
PGN65332_FF34_Accel0x0CFF34080xFF34X / Y / Z 加速度
PGN65335_FF37_Gyro0x0CFF37080xFF37X / Y / Z 角速度
PGN65338_FF3A_Mag0x0CFF3A080xFF3AX / Y / Z 磁場
PGN65341_FF3D_RollPitch0x0CFF3D080xFF3DRoll、Pitch
PGN65345_FF41_YawDual0x0CFF41080xFF41Yaw 0-360、Yaw -180-180
PGN65347_FF43_TempPressure0x0CFF43080xFF43Temperature、Pressure
PGN65350_FF46_Quaternion0x0CFF46080xFF46Quaternion W / X / Y / Z
PGN65354_FF4A_Inclinometer0x0CFF4A080xFF4AInclinometer X / Y

訊號與縮放

所有多位元組訊號皆以 little-endian 解析。DBC 已內建 scale / offset;使用 CAN 分析工具載入 DBC 後,工具會自動把 raw value 轉成物理量。

GNSS / INS 位置與狀態

PGN訊號型別縮放單位
0xFF10Latitudesigned 32-bit1e-7deg
0xFF10Longitudesigned 32-bit1e-7deg
0xFF14Altitudesigned 32-bit0.01m
0xFF14Undulationsigned 16-bit0.01m
0xFF14Diff_Agesigned 16-bit0.01s
0xFF18GNSS_Pos_Qualityunsigned 8-bit1-
0xFF18GNSS_Heading_Qualityunsigned 8-bit1-
0xFF18Sat_Pos_Countunsigned 8-bit1-
0xFF18Sat_Heading_Countunsigned 8-bit1-
0xFF18INS_Statusunsigned 8-bit1-

速度與時間

PGN訊號型別縮放單位
0xFF26Vel_Eastsigned 16-bit0.01m/s
0xFF26Vel_Northsigned 16-bit0.01m/s
0xFF26Vel_Upsigned 16-bit0.01m/s
0xFF26Ground_Speedsigned 16-bit0.01m/s
0xFF2FUTC_Year / UTC_Month / UTC_Dayunsigned 8-bit1-
0xFF2FUTC_Hour / UTC_Minute / UTC_Secondunsigned 8-bit1-
0xFF2FUTC_Millisecondunsigned 16-bit1ms

IMU 與姿態

PGN訊號型別縮放單位
0xFF34Acc_X / Acc_Y / Acc_Zsigned 16-bit0.00048828G
0xFF37Gyr_X / Gyr_Y / Gyr_Zsigned 16-bit0.061035deg/s
0xFF3AMag_X / Mag_Y / Mag_Zsigned 16-bit0.030517uT
0xFF3DRoll / Pitchsigned 32-bit0.001deg
0xFF41Yaw_360unsigned 32-bit0.001deg
0xFF41Yaw_pm180signed 32-bit0.001deg
0xFF43Temperaturesigned 16-bit0.01degC
0xFF43Pressuresigned 32-bit0.01Pa
0xFF46Quat_W / Quat_X / Quat_Y / Quat_Zsigned 16-bit0.0001-
0xFF4AIncli_X / Incli_Ysigned 32-bit0.001deg

手動解析範例

如果不透過 DBC 工具,而是用程式自行解析,公式為:

physical value = raw value * scale + offset

例如 PGN65332_FF34_AccelAcc_X 位於 byte 0-1,signed 16-bit little-endian,scale 為 0.00048828 G。若 raw bytes 為 00 08,little-endian raw value 為 0x0800 = 2048

2048 * 0.00048828 = 0.99999744 G

因此 Acc_X 約為 1.0 G

與 CANopen DBC 的差異

項目J1939 DBCCANopen DBC
CAN frame29-bit extended frame11-bit standard frame
主要識別方式PGN + Source AddressTPDO frame ID + Node ID
用途IMU、姿態、INS / GNSS 資料解析CANopen TPDO 資料解析
控制 / 設定不包含DBC 不包含,設定需用 SDO / NMT
常見 ID 範例0x0CFF34080x188

若工具沒有顯示解析後的物理量,先確認匯入的是 J1939 DBC,且 CAN log 中的 frame 是 extended frame。把 J1939 extended frame 當成 standard CAN frame 解析,通常會完全對不上。

排查

現象優先檢查
完全收不到 frameCAN baud rate、接線、終端電阻、裝置是否已啟用 CAN J1939 輸出
收得到 frame 但 DBC 不解析是否為 29-bit extended frame、DBC 是否已正確匯入、Source Address 是否仍為 0x08
只有部分訊號沒有值該 PGN 可能未輸出,或目前裝置型號 / 設定不包含該資料
物理量明顯不合理檢查 endian、signed / unsigned、scale,以及工具是否使用 raw ID 而非 DBC extended ID
改過 Source Address 後無法解析DBC 以 SA 0x08 建模,需要調整工具對應 ID 或產生新的 DBC