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)
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)
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)
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)