SUNCAN J1939 應用 – OBD 模擬器 Linux
介紹
CAN 最初是為了
然而,就像電話系統一樣,CAN 僅僅提供 ECU 之間的通訊基礎設施——若要讓裝置彼此真正理解,仍需要更高階的語言。
由美國汽車工程師協會(SAE)制定的 SAE J1939,建立在 CAN 之上,作為網路層(第 3 層)之上的協定。它被廣泛應用於重型車輛中。
本文並不探討 J1939 協定的細節,而是著重於展示 SUNCAN 如何實現基於 J1939 的應用。
OBD 模擬器
我們將使用 OBD 模擬器來實作 J1939 應用。OBD(
這個 OBD 模擬器能讓 ECU 以 J1939 標準格式傳輸即時資料。我們將在 SUNCAN 上部署此配置,以執行符合 J1939 標準的資料傳輸。
-
接線
OBD-II 連接器的第 6 腳和第 14 腳分別定義為 CAN 的 CANH 與 CANL 線。
SUNCAN 的 DB9 連接器第 7 腳和第 2 腳分別定義為 CAN 的 CANH 與 CANL 線。
-
J1939 PGN 與 SPN
由於 PGN(參數群組號,Parameter Group Number)定義在 CAN ID 欄位中,且其長度超過 11 位元,因此 J1939 框架始終使用
擴充 格 格式傳輸。PGN 是代表特定訊息類型的程式碼 。在重型車輛領域,它通常被稱為「功能訊息」或「功能群組」。例如,根據 J1939-71,EEC1(電子引擎控制器 1,Electronic Engine Controller 1)被定義為 PGN 61444。SPN(可疑參數號,Suspect Parameter Number)則作為重型車輛實際物理參數的識別碼。它們被歸類在各自的 PGN 之下。例如,在 PGN 61444 中,引擎轉速被定義為 SPN 190,並在承載資料(payload)中以兩個位元組表示。
下圖所示的 PGN 61444 與 SPN 190,取自 SAE J1939-71。
![]() |
-
實作:解析 J1939 PGN 與 SPN
SUNCAN 設定
目前,大多數 J1939 裝置使用的位元率為 250Kbps 或 500Kbps。只有在未來 J1939-FD 被廣泛採用後,才會普遍使用高於 2Mbps 的資料位元率。
![]() |
-
原始資料
匯出模擬器的 CAN 框架會顯示在 J1939 解析之前的原始資料,這些資料必須被解碼,才能轉換為汽車技師可讀的資訊。n
-
ChatGPT 說:
- Declaring Constants – PGNs
- Declaring SPN190 resolution - Take Engine Speed as an example
- Subscribe all J1939 message on the bus
- On message callback funcation
- Resolution parser method
- Execution Results
SUNCAN J1939 應用 – OBD 模擬器 Linux
介紹
CAN 最初是為了
然而,就像電話系統一樣,CAN 僅僅提供 ECU 之間的通訊基礎設施——若要讓裝置彼此真正理解,仍需要更高階的語言。
由美國汽車工程師協會(SAE)制定的 SAE J1939,建立在 CAN 之上,作為網路層(第 3 層)之上的協定。它被廣泛應用於重型車輛中。
本文並不探討 J1939 協定的細節,而是著重於展示 SUNCAN 如何實現基於 J1939 的應用。
OBD 模擬器
我們將使用 OBD 模擬器來實作 J1939 應用。OBD(
這個 OBD 模擬器能讓 ECU 以 J1939 標準格式傳輸即時資料。我們將在 SUNCAN 上部署此配置,以執行符合 J1939 標準的資料傳輸。
-
接線
OBD-II 連接器的第 6 腳和第 14 腳分別定義為 CAN 的 CANH 與 CANL 線。
SUNCAN 的 DB9 連接器第 7 腳和第 2 腳分別定義為 CAN 的 CANH 與 CANL 線。
-
J1939 PGN 與 SPN
由於 PGN(參數群組號,Parameter Group Number)定義在 CAN ID 欄位中,且其長度超過 11 位元,因此 J1939 框架始終使用
擴充 格 格式傳輸。PGN 是代表特定訊息類型的程式碼 。在重型車輛領域,它通常被稱為「功能訊息」或「功能群組」。例如,根據 J1939-71,EEC1(電子引擎控制器 1,Electronic Engine Controller 1)被定義為 PGN 61444。SPN(可疑參數號,Suspect Parameter Number)則作為重型車輛實際物理參數的識別碼。它們被歸類在各自的 PGN 之下。例如,在 PGN 61444 中,引擎轉速被定義為 SPN 190,並在承載資料(payload)中以兩個位元組表示。
下圖所示的 PGN 61444 與 SPN 190,取自 SAE J1939-71。
![]() |
-
實作:解析 J1939 PGN 與 SPN
SUNCAN 設定
目前,大多數 J1939 裝置使用的位元率為 250Kbps 或 500Kbps。只有在未來 J1939-FD 被廣泛採用後,才會普遍使用高於 2Mbps 的資料位元率。
![]() |
-
原始資料
匯出模擬器的 CAN 框架會顯示在 J1939 解析之前的原始資料,這些資料必須被解碼,才能轉換為汽車技師可讀的資訊。n
-
ChatGPT 說:
- Declaring Constants – PGNs
- Declaring SPN190 resolution - Take Engine Speed as an example
- Subscribe all J1939 message on the bus
- On message callback funcation
- Resolution parser method
- Execution Results
SUNCAN J1939 應用 – OBD 模擬器 Linux
介紹
CAN 最初是為了
然而,就像電話系統一樣,CAN 僅僅提供 ECU 之間的通訊基礎設施——若要讓裝置彼此真正理解,仍需要更高階的語言。
由美國汽車工程師協會(SAE)制定的 SAE J1939,建立在 CAN 之上,作為網路層(第 3 層)之上的協定。它被廣泛應用於重型車輛中。
本文並不探討 J1939 協定的細節,而是著重於展示 SUNCAN 如何實現基於 J1939 的應用。
OBD 模擬器
我們將使用 OBD 模擬器來實作 J1939 應用。OBD(
這個 OBD 模擬器能讓 ECU 以 J1939 標準格式傳輸即時資料。我們將在 SUNCAN 上部署此配置,以執行符合 J1939 標準的資料傳輸。
-
接線
OBD-II 連接器的第 6 腳和第 14 腳分別定義為 CAN 的 CANH 與 CANL 線。
SUNCAN 的 DB9 連接器第 7 腳和第 2 腳分別定義為 CAN 的 CANH 與 CANL 線。
-
J1939 PGN 與 SPN
由於 PGN(參數群組號,Parameter Group Number)定義在 CAN ID 欄位中,且其長度超過 11 位元,因此 J1939 框架始終使用
擴充 格 格式傳輸。PGN 是代表特定訊息類型的程式碼 。在重型車輛領域,它通常被稱為「功能訊息」或「功能群組」。例如,根據 J1939-71,EEC1(電子引擎控制器 1,Electronic Engine Controller 1)被定義為 PGN 61444。SPN(可疑參數號,Suspect Parameter Number)則作為重型車輛實際物理參數的識別碼。它們被歸類在各自的 PGN 之下。例如,在 PGN 61444 中,引擎轉速被定義為 SPN 190,並在承載資料(payload)中以兩個位元組表示。
下圖所示的 PGN 61444 與 SPN 190,取自 SAE J1939-71。
![]() |
-
實作:解析 J1939 PGN 與 SPN
SUNCAN 設定
目前,大多數 J1939 裝置使用的位元率為 250Kbps 或 500Kbps。只有在未來 J1939-FD 被廣泛採用後,才會普遍使用高於 2Mbps 的資料位元率。
![]() |
-
原始資料
匯出模擬器的 CAN 框架會顯示在 J1939 解析之前的原始資料,這些資料必須被解碼,才能轉換為汽車技師可讀的資訊。n
-
ChatGPT 說:
- Declaring Constants – PGNs
- Declaring SPN190 resolution - Take Engine Speed as an example
- Subscribe all J1939 message on the bus
- On message callback funcation
- Resolution parser method
- Execution Results
SUNCAN J1939 應用 – OBD 模擬器 Linux
介紹
CAN 最初是為了
然而,就像電話系統一樣,CAN 僅僅提供 ECU 之間的通訊基礎設施——若要讓裝置彼此真正理解,仍需要更高階的語言。
由美國汽車工程師協會(SAE)制定的 SAE J1939,建立在 CAN 之上,作為網路層(第 3 層)之上的協定。它被廣泛應用於重型車輛中。
本文並不探討 J1939 協定的細節,而是著重於展示 SUNCAN 如何實現基於 J1939 的應用。
OBD 模擬器
我們將使用 OBD 模擬器來實作 J1939 應用。OBD(
這個 OBD 模擬器能讓 ECU 以 J1939 標準格式傳輸即時資料。我們將在 SUNCAN 上部署此配置,以執行符合 J1939 標準的資料傳輸。
-
接線
OBD-II 連接器的第 6 腳和第 14 腳分別定義為 CAN 的 CANH 與 CANL 線。
SUNCAN 的 DB9 連接器第 7 腳和第 2 腳分別定義為 CAN 的 CANH 與 CANL 線。
-
J1939 PGN 與 SPN
由於 PGN(參數群組號,Parameter Group Number)定義在 CAN ID 欄位中,且其長度超過 11 位元,因此 J1939 框架始終使用
擴充 格 格式傳輸。PGN 是代表特定訊息類型的程式碼 。在重型車輛領域,它通常被稱為「功能訊息」或「功能群組」。例如,根據 J1939-71,EEC1(電子引擎控制器 1,Electronic Engine Controller 1)被定義為 PGN 61444。SPN(可疑參數號,Suspect Parameter Number)則作為重型車輛實際物理參數的識別碼。它們被歸類在各自的 PGN 之下。例如,在 PGN 61444 中,引擎轉速被定義為 SPN 190,並在承載資料(payload)中以兩個位元組表示。
下圖所示的 PGN 61444 與 SPN 190,取自 SAE J1939-71。
![]() |
-
實作:解析 J1939 PGN 與 SPN
SUNCAN 設定
目前,大多數 J1939 裝置使用的位元率為 250Kbps 或 500Kbps。只有在未來 J1939-FD 被廣泛採用後,才會普遍使用高於 2Mbps 的資料位元率。
![]() |
-
原始資料
匯出模擬器的 CAN 框架會顯示在 J1939 解析之前的原始資料,這些資料必須被解碼,才能轉換為汽車技師可讀的資訊。n
-
ChatGPT 說:
- Declaring Constants – PGNs
- Declaring SPN190 resolution - Take Engine Speed as an example
- Subscribe all J1939 message on the bus
- On message callback funcation
- Resolution parser method
- Execution Results