SAE J1939 深度解析:PGN 與 SPN 拆解
-
前言
1990 年代初期 – 重型產業的標準化需求:
1986 年,Bosch 在美國汽車工程師協會(SAE)正式發表 CAN 通訊協定。然而,相較於乘用車,重型卡車、公車及農業機械往往涉及多家製造商,因此需要一套共通的高層通訊協定,讓不同廠商的 ECU(電子控制單元)能夠在同一條 CAN 總線上互通。大約在 1994–1998 年間,SAE(美國汽車工程師協會)制定了 J1939,作為基於 CAN 的高層通訊協定。J1939 定義了高層的通訊規則,例如訊息格式、位址分配與資料編碼,以支援重型車輛、農業機械、船舶及工業設備之間的 ECU 通訊與診斷。本文將針對 J1939 訊息格式進行更深入的分析。
CAN / J1939 與 OSI 七層模型
-
PGN – Parameter Group Number(參數群組號碼)
PGN 是一個 18 位元識別碼,包含在 CAN ID 當中,因此 J1939 訊息必須使用延伸幀(Extended Frame, 29 位元 CAN ID)。
J1939 的 CAN ID 欄位結構如下所示:
| 29bits CAN-ID | ||
| Bit positions with the CAN-ID | ||
| 28...26 | 25…8 | 7…0 |
| Priority | PGN | SA(Source Address) |
- PGN Format
| PGN | |||
| 25 | 24 | 23…16 | 15…8 |
| EDP(Ext. Data Page) | DP(Data Page) | PF(PDU Format) | PS(PDU Specific) |
| 1 bit | 1 bit | 8 bits | 8 bits |
PDU(協定資料單元)
PDU Format (PF) 與 PDU Specific (PS) 合稱為 PDU(Protocol Data Unit,協定資料單元)。
根據 J1939-21,PDU 可分為兩種類型:
-
PDU1
-
當 PF < 240(範圍 0x00 ~ 0xEF)時,PS 被視為 DA(Destination Address,目的位址)。
-
如果 DA = 0xFF,則稱為 Global Destination Address(全域目的位址),表示網路上的所有節點都必須接收並回應此訊息。
-
-
PDU2
-
當 PF ≥ 240(範圍 0xF0 ~ 0xFF)時,PS 被定義為 GE(Group Extension,群組
擴充 )。
-
- PDU1
| PDU1 Format | |
| PF(PDU Format) | PS(PDU Specific) |
| 0x00~0xEF | DA(Destination Address) |
| 8bits | 8 bits |
- PDU2
| PDU2 Format | |
| PF(PDU Format) | PS(PDU Specific) |
| 0x00~0xEF | GE(Group Extension) |
| 8bits | 8bits |
-
SPN – Suspect Parameter Number(可疑參數號碼)
SPN 用來標識重型車輛中的實際物理參數,並依照各自所屬的 PGN 進行分組。
例如:在 PGN 61444 中,引擎轉速(Engine Speed) 被定義為 SPN 190,並且在資料負載(Payload)中以 兩個位元組表示。下方圖示所示的 PGN 61444 與 SPN 190,取自 SAE J1939-71。
|
|
根據 SAE J1939-71 的 SPN 定義
在 SAE J1939-71 中,SPN(Suspect Parameter Number) 定義了幾個重要的參數屬性:
-
Data Length(資料長度)
-
Resolution(解析度)
-
Data Range(資料範圍)
-
Type(資料型別)
透過這些定義,工程師可以將所獲取的原始資料(raw data)轉換成使用者能理解的實際數值,例如:在車輛儀錶板上顯示的引擎轉速(Engine Speed)
專業文章
技術解析
-
了解 SocketCAN CAN 網路的 Linux 統一介面
-
卷積運算範例
-
CNN 池化操作範例
-
卷積神經網路(Convolutional Neural Network, CNN)簡介
-
J1939 新世代:基於 CAN FD 的 J1939
-
SAE J1939 深度解析:PGN 與 SPN 拆解
-
SUNCAN CAN FD 實作展示:實際效能評估 Linux
-
CAN FD 協議深入解析
-
為什麼 CAN FD 很重要:超越傳統的CAN
-
Hailo AI 處理器在個人電腦上的應用
-
訪問控制與身份管理
-
智慧交通系統
-
周圍環境防護
-
Hailo AI 處理器應用於AOI 自動光學檢測
-
針對ADAS和AD的Hailo人工智慧處理器
-
你知道CAN-FD協議有多少? by 程式人生
-
STM32-12 CANBus概念介紹 by IT邦幫忙
-
CAN/CAN FD 简介 by 大大通
-
CAN bus 通訊協定介紹 by 大大通
-
CAN总线的升级版-CAN FD简介 by 知乎
-
NXP LPC54018的CAN-FD by 大聯大控股
-
掌握非對稱延遲變數 CAN收發器提高資料傳輸率 by 新通訊 / Magnus-Maria Hell
-
什么是CAN-BUS? by 汽车之家 百科
-
邁向電動車的美好未來 by 電子工程專輯/ 孔敏,莫仕(Molex)中國區汽車事業部高級銷售總監
-
全新車載技術讓中低階車款實現高階音視訊體驗 by 電子工程專輯/STMicroelectronics
SAE J1939 深度解析:PGN 與 SPN 拆解
-
前言
1990 年代初期 – 重型產業的標準化需求:
1986 年,Bosch 在美國汽車工程師協會(SAE)正式發表 CAN 通訊協定。然而,相較於乘用車,重型卡車、公車及農業機械往往涉及多家製造商,因此需要一套共通的高層通訊協定,讓不同廠商的 ECU(電子控制單元)能夠在同一條 CAN 總線上互通。大約在 1994–1998 年間,SAE(美國汽車工程師協會)制定了 J1939,作為基於 CAN 的高層通訊協定。J1939 定義了高層的通訊規則,例如訊息格式、位址分配與資料編碼,以支援重型車輛、農業機械、船舶及工業設備之間的 ECU 通訊與診斷。本文將針對 J1939 訊息格式進行更深入的分析。
CAN / J1939 與 OSI 七層模型
-
PGN – Parameter Group Number(參數群組號碼)
PGN 是一個 18 位元識別碼,包含在 CAN ID 當中,因此 J1939 訊息必須使用延伸幀(Extended Frame, 29 位元 CAN ID)。
J1939 的 CAN ID 欄位結構如下所示:
| 29bits CAN-ID | ||
| Bit positions with the CAN-ID | ||
| 28...26 | 25…8 | 7…0 |
| Priority | PGN | SA(Source Address) |
- PGN Format
| PGN | |||
| 25 | 24 | 23…16 | 15…8 |
| EDP(Ext. Data Page) | DP(Data Page) | PF(PDU Format) | PS(PDU Specific) |
| 1 bit | 1 bit | 8 bits | 8 bits |
PDU(協定資料單元)
PDU Format (PF) 與 PDU Specific (PS) 合稱為 PDU(Protocol Data Unit,協定資料單元)。
根據 J1939-21,PDU 可分為兩種類型:
-
PDU1
-
當 PF < 240(範圍 0x00 ~ 0xEF)時,PS 被視為 DA(Destination Address,目的位址)。
-
如果 DA = 0xFF,則稱為 Global Destination Address(全域目的位址),表示網路上的所有節點都必須接收並回應此訊息。
-
-
PDU2
-
當 PF ≥ 240(範圍 0xF0 ~ 0xFF)時,PS 被定義為 GE(Group Extension,群組
擴充 )。
-
- PDU1
| PDU1 Format | |
| PF(PDU Format) | PS(PDU Specific) |
| 0x00~0xEF | DA(Destination Address) |
| 8bits | 8 bits |
- PDU2
| PDU2 Format | |
| PF(PDU Format) | PS(PDU Specific) |
| 0x00~0xEF | GE(Group Extension) |
| 8bits | 8bits |
-
SPN – Suspect Parameter Number(可疑參數號碼)
SPN 用來標識重型車輛中的實際物理參數,並依照各自所屬的 PGN 進行分組。
例如:在 PGN 61444 中,引擎轉速(Engine Speed) 被定義為 SPN 190,並且在資料負載(Payload)中以 兩個位元組表示。下方圖示所示的 PGN 61444 與 SPN 190,取自 SAE J1939-71。
|
|
根據 SAE J1939-71 的 SPN 定義
在 SAE J1939-71 中,SPN(Suspect Parameter Number) 定義了幾個重要的參數屬性:
-
Data Length(資料長度)
-
Resolution(解析度)
-
Data Range(資料範圍)
-
Type(資料型別)
透過這些定義,工程師可以將所獲取的原始資料(raw data)轉換成使用者能理解的實際數值,例如:在車輛儀錶板上顯示的引擎轉速(Engine Speed)
專業文章
技術解析
-
了解 SocketCAN CAN 網路的 Linux 統一介面
-
卷積運算範例
-
CNN 池化操作範例
-
卷積神經網路(Convolutional Neural Network, CNN)簡介
-
J1939 新世代:基於 CAN FD 的 J1939
-
SAE J1939 深度解析:PGN 與 SPN 拆解
-
SUNCAN CAN FD 實作展示:實際效能評估 Linux
-
CAN FD 協議深入解析
-
為什麼 CAN FD 很重要:超越傳統的CAN
-
Hailo AI 處理器在個人電腦上的應用
-
訪問控制與身份管理
-
智慧交通系統
-
周圍環境防護
-
Hailo AI 處理器應用於AOI 自動光學檢測
-
針對ADAS和AD的Hailo人工智慧處理器
-
你知道CAN-FD協議有多少? by 程式人生
-
STM32-12 CANBus概念介紹 by IT邦幫忙
-
CAN/CAN FD 简介 by 大大通
-
CAN bus 通訊協定介紹 by 大大通
-
CAN总线的升级版-CAN FD简介 by 知乎
-
NXP LPC54018的CAN-FD by 大聯大控股
-
掌握非對稱延遲變數 CAN收發器提高資料傳輸率 by 新通訊 / Magnus-Maria Hell
-
什么是CAN-BUS? by 汽车之家 百科
-
邁向電動車的美好未來 by 電子工程專輯/ 孔敏,莫仕(Molex)中國區汽車事業部高級銷售總監
-
全新車載技術讓中低階車款實現高階音視訊體驗 by 電子工程專輯/STMicroelectronics
SAE J1939 深度解析:PGN 與 SPN 拆解
-
前言
1990 年代初期 – 重型產業的標準化需求:
1986 年,Bosch 在美國汽車工程師協會(SAE)正式發表 CAN 通訊協定。然而,相較於乘用車,重型卡車、公車及農業機械往往涉及多家製造商,因此需要一套共通的高層通訊協定,讓不同廠商的 ECU(電子控制單元)能夠在同一條 CAN 總線上互通。大約在 1994–1998 年間,SAE(美國汽車工程師協會)制定了 J1939,作為基於 CAN 的高層通訊協定。J1939 定義了高層的通訊規則,例如訊息格式、位址分配與資料編碼,以支援重型車輛、農業機械、船舶及工業設備之間的 ECU 通訊與診斷。本文將針對 J1939 訊息格式進行更深入的分析。
CAN / J1939 與 OSI 七層模型
-
PGN – Parameter Group Number(參數群組號碼)
PGN 是一個 18 位元識別碼,包含在 CAN ID 當中,因此 J1939 訊息必須使用延伸幀(Extended Frame, 29 位元 CAN ID)。
J1939 的 CAN ID 欄位結構如下所示:
| 29bits CAN-ID | ||
| Bit positions with the CAN-ID | ||
| 28...26 | 25…8 | 7…0 |
| Priority | PGN | SA(Source Address) |
- PGN Format
| PGN | |||
| 25 | 24 | 23…16 | 15…8 |
| EDP(Ext. Data Page) | DP(Data Page) | PF(PDU Format) | PS(PDU Specific) |
| 1 bit | 1 bit | 8 bits | 8 bits |
PDU(協定資料單元)
PDU Format (PF) 與 PDU Specific (PS) 合稱為 PDU(Protocol Data Unit,協定資料單元)。
根據 J1939-21,PDU 可分為兩種類型:
-
PDU1
-
當 PF < 240(範圍 0x00 ~ 0xEF)時,PS 被視為 DA(Destination Address,目的位址)。
-
如果 DA = 0xFF,則稱為 Global Destination Address(全域目的位址),表示網路上的所有節點都必須接收並回應此訊息。
-
-
PDU2
-
當 PF ≥ 240(範圍 0xF0 ~ 0xFF)時,PS 被定義為 GE(Group Extension,群組
擴充 )。
-
- PDU1
| PDU1 Format | |
| PF(PDU Format) | PS(PDU Specific) |
| 0x00~0xEF | DA(Destination Address) |
| 8bits | 8 bits |
- PDU2
| PDU2 Format | |
| PF(PDU Format) | PS(PDU Specific) |
| 0x00~0xEF | GE(Group Extension) |
| 8bits | 8bits |
-
SPN – Suspect Parameter Number(可疑參數號碼)
SPN 用來標識重型車輛中的實際物理參數,並依照各自所屬的 PGN 進行分組。
例如:在 PGN 61444 中,引擎轉速(Engine Speed) 被定義為 SPN 190,並且在資料負載(Payload)中以 兩個位元組表示。下方圖示所示的 PGN 61444 與 SPN 190,取自 SAE J1939-71。
|
|
根據 SAE J1939-71 的 SPN 定義
在 SAE J1939-71 中,SPN(Suspect Parameter Number) 定義了幾個重要的參數屬性:
-
Data Length(資料長度)
-
Resolution(解析度)
-
Data Range(資料範圍)
-
Type(資料型別)
透過這些定義,工程師可以將所獲取的原始資料(raw data)轉換成使用者能理解的實際數值,例如:在車輛儀錶板上顯示的引擎轉速(Engine Speed)
專業文章
技術解析
-
了解 SocketCAN CAN 網路的 Linux 統一介面
-
卷積運算範例
-
CNN 池化操作範例
-
卷積神經網路(Convolutional Neural Network, CNN)簡介
-
J1939 新世代:基於 CAN FD 的 J1939
-
SAE J1939 深度解析:PGN 與 SPN 拆解
-
SUNCAN CAN FD 實作展示:實際效能評估 Linux
-
CAN FD 協議深入解析
-
為什麼 CAN FD 很重要:超越傳統的CAN
-
Hailo AI 處理器在個人電腦上的應用
-
訪問控制與身份管理
-
智慧交通系統
-
周圍環境防護
-
Hailo AI 處理器應用於AOI 自動光學檢測
-
針對ADAS和AD的Hailo人工智慧處理器
-
你知道CAN-FD協議有多少? by 程式人生
-
STM32-12 CANBus概念介紹 by IT邦幫忙
-
CAN/CAN FD 简介 by 大大通
-
CAN bus 通訊協定介紹 by 大大通
-
CAN总线的升级版-CAN FD简介 by 知乎
-
NXP LPC54018的CAN-FD by 大聯大控股
-
掌握非對稱延遲變數 CAN收發器提高資料傳輸率 by 新通訊 / Magnus-Maria Hell
-
什么是CAN-BUS? by 汽车之家 百科
-
邁向電動車的美好未來 by 電子工程專輯/ 孔敏,莫仕(Molex)中國區汽車事業部高級銷售總監
-
全新車載技術讓中低階車款實現高階音視訊體驗 by 電子工程專輯/STMicroelectronics
SAE J1939 深度解析:PGN 與 SPN 拆解
-
前言
1990 年代初期 – 重型產業的標準化需求:
1986 年,Bosch 在美國汽車工程師協會(SAE)正式發表 CAN 通訊協定。然而,相較於乘用車,重型卡車、公車及農業機械往往涉及多家製造商,因此需要一套共通的高層通訊協定,讓不同廠商的 ECU(電子控制單元)能夠在同一條 CAN 總線上互通。大約在 1994–1998 年間,SAE(美國汽車工程師協會)制定了 J1939,作為基於 CAN 的高層通訊協定。J1939 定義了高層的通訊規則,例如訊息格式、位址分配與資料編碼,以支援重型車輛、農業機械、船舶及工業設備之間的 ECU 通訊與診斷。本文將針對 J1939 訊息格式進行更深入的分析。
CAN / J1939 與 OSI 七層模型
-
PGN – Parameter Group Number(參數群組號碼)
PGN 是一個 18 位元識別碼,包含在 CAN ID 當中,因此 J1939 訊息必須使用延伸幀(Extended Frame, 29 位元 CAN ID)。
J1939 的 CAN ID 欄位結構如下所示:
| 29bits CAN-ID | ||
| Bit positions with the CAN-ID | ||
| 28...26 | 25…8 | 7…0 |
| Priority | PGN | SA(Source Address) |
- PGN Format
| PGN | |||
| 25 | 24 | 23…16 | 15…8 |
| EDP(Ext. Data Page) | DP(Data Page) | PF(PDU Format) | PS(PDU Specific) |
| 1 bit | 1 bit | 8 bits | 8 bits |
PDU(協定資料單元)
PDU Format (PF) 與 PDU Specific (PS) 合稱為 PDU(Protocol Data Unit,協定資料單元)。
根據 J1939-21,PDU 可分為兩種類型:
-
PDU1
-
當 PF < 240(範圍 0x00 ~ 0xEF)時,PS 被視為 DA(Destination Address,目的位址)。
-
如果 DA = 0xFF,則稱為 Global Destination Address(全域目的位址),表示網路上的所有節點都必須接收並回應此訊息。
-
-
PDU2
-
當 PF ≥ 240(範圍 0xF0 ~ 0xFF)時,PS 被定義為 GE(Group Extension,群組
擴充 )。
-
- PDU1
| PDU1 Format | |
| PF(PDU Format) | PS(PDU Specific) |
| 0x00~0xEF | DA(Destination Address) |
| 8bits | 8 bits |
- PDU2
| PDU2 Format | |
| PF(PDU Format) | PS(PDU Specific) |
| 0x00~0xEF | GE(Group Extension) |
| 8bits | 8bits |
-
SPN – Suspect Parameter Number(可疑參數號碼)
SPN 用來標識重型車輛中的實際物理參數,並依照各自所屬的 PGN 進行分組。
例如:在 PGN 61444 中,引擎轉速(Engine Speed) 被定義為 SPN 190,並且在資料負載(Payload)中以 兩個位元組表示。下方圖示所示的 PGN 61444 與 SPN 190,取自 SAE J1939-71。
|
|
根據 SAE J1939-71 的 SPN 定義
在 SAE J1939-71 中,SPN(Suspect Parameter Number) 定義了幾個重要的參數屬性:
-
Data Length(資料長度)
-
Resolution(解析度)
-
Data Range(資料範圍)
-
Type(資料型別)
透過這些定義,工程師可以將所獲取的原始資料(raw data)轉換成使用者能理解的實際數值,例如:在車輛儀錶板上顯示的引擎轉速(Engine Speed)
專業文章
技術解析
-
了解 SocketCAN CAN 網路的 Linux 統一介面
-
卷積運算範例
-
CNN 池化操作範例
-
卷積神經網路(Convolutional Neural Network, CNN)簡介
-
J1939 新世代:基於 CAN FD 的 J1939
-
SAE J1939 深度解析:PGN 與 SPN 拆解
-
SUNCAN CAN FD 實作展示:實際效能評估 Linux
-
CAN FD 協議深入解析
-
為什麼 CAN FD 很重要:超越傳統的CAN
-
Hailo AI 處理器在個人電腦上的應用
-
訪問控制與身份管理
-
智慧交通系統
-
周圍環境防護
-
Hailo AI 處理器應用於AOI 自動光學檢測
-
針對ADAS和AD的Hailo人工智慧處理器
-
你知道CAN-FD協議有多少? by 程式人生
-
STM32-12 CANBus概念介紹 by IT邦幫忙
-
CAN/CAN FD 简介 by 大大通
-
CAN bus 通訊協定介紹 by 大大通
-
CAN总线的升级版-CAN FD简介 by 知乎
-
NXP LPC54018的CAN-FD by 大聯大控股
-
掌握非對稱延遲變數 CAN收發器提高資料傳輸率 by 新通訊 / Magnus-Maria Hell
-
什么是CAN-BUS? by 汽车之家 百科
-
邁向電動車的美好未來 by 電子工程專輯/ 孔敏,莫仕(Molex)中國區汽車事業部高級銷售總監
-
全新車載技術讓中低階車款實現高階音視訊體驗 by 電子工程專輯/STMicroelectronics


