你開車接近一座被大型車遮住視線的十字路口。
橫向來車可以持續提供自己的位置、速度與行進方向,讓本車提早知道「有一台車正在靠近」。
路側設備或其他車輛也能傳送道路事件,告訴附近道路使用者「這個位置發生了危險,而且目前仍然有效」。
這兩類資料看起來都和安全有關,回答的問題卻不一樣:
車輛狀態訊息
→ 我在哪裡?正往哪裡走?目前如何移動?
道路事件訊息
→ 哪裡發生了什麼事?影響多久?哪些道路使用者需要注意?
在 SAE J2735 生態中,前一類常見訊息是 BSM。
在 ETSI C-ITS 生態中,則會看見 CAM 與 DENM。
今天要打開這三個縮寫,回答:V2X 訊息如何描述車輛狀態與道路事件,接收端又為什麼不能只看見經緯度就直接相信?
讀完這篇文章,你應該能夠:
Day 11 比較了 IEEE 802.11 車用通訊、LTE/NR PC5 與 Uu。
這些技術負責讓資料沿著直接或網路型路徑移動,卻不會自行規定某幾個 bit 一定代表車速或道路施工。
一套可互通的 V2X 應用至少要把下面幾層分開:
| 層次 | 主要問題 | 例子 |
|---|---|---|
| 應用與訊息 | 要交換什麼語意? | BSM、CAM、DENM |
| 資料表示 | 欄位如何排列、編碼與判讀? | SAE J2735 Data Element,或 ETSI ASN.1 與 Common Data Dictionary |
| 安全服務 | 如何保護來源、完整性與權限? | IEEE 1609.2 或 ETSI TS 103 097 等安全 Profile |
| 網路與傳輸 | 訊息如何定址、散布或路由? | WAVE、GeoNetworking/BTP,或其他適用 Stack |
| Radio/Access | 資料如何經由空中介面送出? | IEEE 802.11 車用通訊、LTE PC5、NR PC5 或 Uu |
因此,兩台設備支援相同 Radio,不代表它們理解相同訊息。
反過來,同一種應用訊息也不一定永遠綁定單一 Radio。
SAE J2735 定義 V2X Message Set、Data Frame 與 Data Element,Radio 與系統效能要求還要看採用的完整 Profile。
ETSI Release 2 的 CAM/DENM 也把 Facilities Layer 訊息和特定安全及下層技術分開,讓系統可以在不同生態與通訊路徑中實作。
Radio 相容、訊息相容與信任相容,是三個不同的問題。

圖 1:BSM 與 CAM 都能提供來源端目前的動態狀態,DENM 則用來描述具有生命週期與影響範圍的道路事件。三者屬於不同標準生態,不能只因欄位相似就直接互換
先用一張表建立基本邊界:
| 訊息 | 標準生態 | 主要回答的問題 | 典型產生方式 |
|---|---|---|---|
| BSM | SAE J2735,美國 V2X 文件常見 | 這台車目前在哪裡、如何移動及處於什麼狀態? | 依系統 Profile 頻繁提供車輛狀態 |
| CAM | ETSI C-ITS | 這個 ITS Station 目前在哪裡、如何移動及具備哪些屬性? | 週期產生,頻率會依動態與頻道狀態調整 |
| DENM | ETSI C-ITS | 哪裡發生了什麼事件、影響範圍與有效時間為何? | 由應用偵測事件後觸發,事件更新或結束時再更新狀態 |
BSM 與 CAM 的目的相近,都是建立 **Cooperative Awareness(合作感知)**的重要資料來源。
但它們不是同一個訊息的美式與歐式翻譯,也不是只換欄位名稱就能直接互通。
DENM 則屬於另一種思考方式:它不是單純重複「我現在的位置」,而是管理一個道路事件從發生、更新到結束的生命週期。
BSM 是 Basic Safety Message(基本安全訊息)。
它是 SAE J2735 V2X Communications Message Set Dictionary 中的訊息之一,常用於 V2V 安全應用,也能由基礎設施接收,協助判斷附近車輛的狀態與可能路徑。
BSM 最重要的觀念,是把車輛目前狀態整理成接收端能一致解讀的資料結構。
BSM Part I 是必要的 Core Data,包含支援安全應用的核心欄位。
可以先分成五組:
| 資料群組 | 代表內容 | 接收端可以拿來做什麼 |
|---|---|---|
| 訊息與時間 | Message Count、Temporary ID、時間標記 | 排序近期訊息,辨識資料是否可能過期或重複 |
| 位置 | 緯度、經度、高度與位置準確度 | 建立相對位置,評估資料誤差 |
| 移動狀態 | Transmission State、速度、Heading | 推估車輛正在前進、倒退或停止,以及行進方向 |
| 動態變化 | 方向盤角度、縱向/橫向/垂直加速度與 Yaw Rate | 判斷轉向、加減速及姿態變化 |
| 車輛狀態與尺寸 | 煞車系統狀態、車長與車寬 | 評估煞車行為、車體占用空間與可能碰撞關係 |
這份表格只整理概念,不是拿來取代 J2735 的欄位定義與編碼規格。
例如 speed 不只是畫面上的 48 km/h。
傳送端要依規格使用指定單位與可用值範圍,接收端也要辨識 unavailable 或 out-of-range 等狀態,不能把保留值直接當成正常數字。
BSM Part II 可以加入應用需要的 Extension,例如:
Part II 不是每一筆都一定包含所有 Extension,也不應被理解成「Part I 送一次,Part II 另外再送一包」。
它是 BSM 結構中可依規格與當下需要加入的擴充內容。
接收端若沒有取得某個 Optional Field,只能判斷這筆訊息沒有提供該資料,不能直接把它解讀成 false、關閉或沒有事件。
SAE J2735 的核心工作,是定義 V2X Message Set 與其中的資料結構。
車上系統要以何種頻率產生 BSM、使用哪一個 Radio、如何處理擁塞,以及要符合哪些效能要求,還要結合對應的系統標準與部署 Profile。
例如 SAE 文件分別有針對不同車種與無線路徑的 V2V 系統要求。
所以看到「BSM 每秒固定送十次」時,應先確認文件版本、Radio 與適用 Profile,不能把教學常見數字當成 J2735 對所有部署的唯一規則。
CAM 是 Cooperative Awareness Message(合作感知訊息)。
它由 ETSI C-ITS 的 Cooperative Awareness Service 產生、管理與處理,讓道路使用者及路側 ITS Station 交換自身位置、動態與屬性。
如果把 DENM 理解成「前方發生一件事」,CAM 比較接近:
我現在在這裡,正以這個速度與方向移動,而且這些是我目前可提供的狀態。
ETSI TS 103 900 V2.3.1 的 CAM 由共用 ITS PDU Header 與多個 Container 組成。
| CAM 結構 | 是否必要 | 概念內容 |
|---|---|---|
| ITS PDU Header | 必要 | Protocol Version、Message Type 與來源 Station ID 等共用資訊 |
| Basic Container | 必要 | 來源 ITS Station 的基本資訊,例如 Station Type 與 Reference Position |
| High Frequency Container | 必要 | 速度、Heading、加速度與車輛動態等高變化資訊,實際內容依 Station 類型 |
| Low Frequency Container | 選用 | 變化較慢或不必每次出現的資訊 |
| Special Vehicle Container | 選用 | 特定車輛角色所需資訊 |
| Extension Container | 選用 | Release 2 依車種或 Use Case 擴充的資料 |
這種 Container 設計有兩個用途。
第一,接收端可以知道哪些資料是核心內容,哪些是條件式擴充。
第二,變化較慢或只有特定角色需要的資料,不必無條件塞進每一筆訊息。
現行 Release 2 規格中,車輛感知用 CAM 的 Generation Interval 介於 100 ms 與 1,000 ms,對應 10 Hz 到 1 Hz。
真正的 Generation Frequency 會在這個範圍內,依來源 Station 的動態變化與 Radio Channel Congestion 調整。
例如車輛的 Heading、位置或速度變化達到觸發條件時,可能需要較快更新。
頻道負載升高時,系統也要配合擁塞控制,不能因為每台車都想更新,就讓頻道失去可用性。
所以更精確的說法是:
CAM 會持續建立附近節點的合作感知,但產生間隔不是一個脫離車輛動態與頻道條件的固定常數。
CAM 在直接通訊的規格路徑中由來源 Station 單跳散布,收到 CAM 的 Station 不會把同一筆 CAM 再轉送給下一跳。
這和 DENM 可以針對目的地理區域管理散布及特定轉送機制的概念不同。
既有教材與部署文件常引用 ETSI EN 302 637-2 V1.4.1,也就是 Release 1 CAM。
現行 Release 2 則使用 ETSI TS 103 900 系列,加入新的 Container 與 Common Data Dictionary 版本關係,也讓 Facilities Layer 能配合不同安全及下層技術。
兩代具有延續關係,不代表所有新增欄位與 Profile 都能被舊設備完整理解。
閱讀封包、模擬器設定或產品文件時,至少要一起記錄:
只寫「這是 CAM」仍不足以保證兩端互通。
BSM 與 CAM 都會描述來源端的時間、位置、速度、方向及車輛動態,應用目的確實有相似之處。
但兩者屬於不同標準生態:
| 比較項目 | BSM | CAM |
|---|---|---|
| 主要標準 | SAE J2735 | ETSI TS 103 900 Release 2,既有 Release 1 為 EN 302 637-2 |
| 核心結構 | Core Data + Optional Part II + Regional Extension | ITS PDU Header + Mandatory/Optional Containers |
| 典型來源 | 車輛 | Vehicle ITS-S 或 Roadside ITS-S,內容依 Station 類型 |
| 產生規則 | 由 J2735 以外的系統要求與部署 Profile 補足 | Cooperative Awareness Service 定義產生與處理規則 |
| 欄位語意 | 依 SAE Data Frame/Data Element | 依 ETSI ASN.1 與 Common Data Dictionary |
| 能否直接互解 | 不能只因概念相似就假設可以 | 需要明確 Gateway 與語意映射 |
若一座 Gateway 要在兩套生態間轉換,不能只複製經緯度與速度。
它還要處理:
無法無損轉換的資料應被明確標記或捨棄,不能憑空補成「可信的預設值」。
DENM 是 Decentralized Environmental Notification Message(分散式環境通知訊息)。
ETSI 的 DEN Service 位於 Facilities Layer,由 ITS 應用在偵測到道路危險或異常交通情況後觸發。
DENM 適合描述:
這些例子不表示只要感測器看到任何異常,就可以任意選一個 Cause Code 對外傳送。
事件觸發條件、允許的發送者、Service Specific Permission 與散布策略,仍要由應用及部署 Profile 定義。
現行 ETSI TS 103 831 V2.3.1 將 DENM Payload 分成四個固定順序的 Container:
| DENM 結構 | 主要用途 | 代表內容 |
|---|---|---|
| Management Container | 管理事件與 DENM Protocol | Action ID、Detection Time、Reference Time、Event Position、Validity Duration 與 Station Type |
| Situation Container | 描述事件本身 | Information Quality、Event Type,以及相關 Cause/Subcause |
| Location Container | 描述事件位置與偵測區域 | 接近事件的路徑、車道與區域相關資料 |
| À La Carte Container | 加入特定 Use Case 的額外資料 | 前三組沒有涵蓋的條件式資訊 |
所有 DENM 都要有 ITS PDU Header 與 Management Container。
New 或 Update DENM 需要提供 Situation 與 Location Container,À La Carte 則在 Use Case 適用時加入。
Cancellation 或 Negation DENM 用來表達事件終止時,不會再攜帶 Situation、Location 與 À La Carte Container。
DENM 不只是「送出一段事件文字」。
來源 Station 會替偵測到的事件建立 Action ID,接收端可以利用它辨識:
事件還有 Detection Time、Reference Time 與 Validity Duration。
接收端不能因為曾經收到一次道路施工 DENM,就讓警示永久留在畫面上。
當事件超過有效期間、收到較新的更新或終止狀態時,應用要更新或移除對應紀錄。

圖 2:BSM/CAM 透過近期狀態快照更新周圍節點的合作感知。DENM 則以 Action ID 管理新事件、更新、重複散布與終止,接收端也要在 Validity Duration 到期後停止採用過期事件
DENM 可以把訊息散布到特定 Destination Area,內容也能描述 Awareness Area、Relevance Zone、Traffic Direction 與接近事件的路徑。
這些地理概念不能只剩下一個圓形半徑。
假設事故發生在高速公路北向車道,位於相同經緯度附近的南向車輛,未必需要相同等級的警示。
接收端還要結合:
地理上「很近」和交通情境上「與我相關」,不是同一個判斷。
可以用三個問題判斷:
| 情境 | 較接近的訊息概念 | 原因 |
|---|---|---|
| 車輛持續提供位置、速度與 Heading | BSM 或 CAM,依部署生態 | 描述來源端近期的動態快照 |
| 車輛在短時間內急遽減速 | BSM/CAM 的動態資料可支援判斷,適用 Profile 也可能搭配事件資訊 | 先看車輛自身狀態,是否形成事件則由應用與 Profile 決定 |
| 前方道路施工持續二十分鐘 | DENM | 需要事件類型、位置、有效期間與後續終止 |
| RSU 提供路口幾何與號誌相位 | MAP/SPaT 或 MAPEM/SPATEM 等專用訊息 | 不是用 BSM/CAM/DENM 包辦所有基礎設施資料 |
最後一列特別重要。
V2X 不只有今天的三種訊息。
北美 SAE 生態還有 MAP、SPaT、TIM 與 PSM 等訊息,ETSI 生態也有 MAPEM、SPATEM、IVIM 與 VAM 等對應用途。
選擇訊息時應看標準定義與 Use Case,不能因為 DENM 能描述事件,就把號誌相位、完整地圖與所有道路使用者狀態都塞進 DENM。
V2X 應用收到一組位置資料後,至少要同時看五件事。
經緯度對應的是訊息定義中的 Reference Position,不一定是車頭、GNSS 天線的安裝點或車輛幾何中心。
接收端要依規格與車輛尺寸理解占用空間,不能把一個地理點當成整台車。
位置和速度一定要配合產生時間解讀。
一台以 72 km/h 行駛的車每秒移動約 20 公尺,過期一秒的位置可能已經無法代表現在的碰撞關係。
定位結果不是絕對真值。
訊息中的 Accuracy/Confidence 或 Information Quality,可以協助接收端理解不確定性,但仍要確認數值如何產生,以及來源端是否真的具備宣告的量測能力。
Latitude、Longitude、Heading、Speed 與 Acceleration 都有自己的單位、解析度與特殊值。
解碼器必須依正確版本處理,不能把 unavailable 值當成極端但有效的物理量。
接收端可以把訊息和數位地圖、本車感測器及其他 V2X 資訊交叉比對:
這些是 Plausibility Check(合理性檢查),不是用來取代簽章驗證。
兩者處理的是不同問題。
假設一筆 CAM 通過安全驗證。
我們可以提高對以下事情的信心:
但仍不能直接證明:
可以把接收端處理拆成六道檢查:
格式與版本
→ 能否依正確 ASN.1/Data Dictionary 解碼?
安全驗證
→ 簽章、憑證、權限與信任鏈是否符合 Profile?
新鮮度
→ 時間、序列與事件版本是否仍有效?
資料品質
→ Accuracy、Confidence 與 unavailable 狀態為何?
合理性
→ 位置、速度、事件及移動軌跡是否符合其他觀察?
相關性
→ 這筆資料是否會影響本車目前路徑與應用?
只通過其中一層,不代表後面五層可以省略。
BSM 與 CAM 必須提供足以支援附近安全應用的位置與動態資訊。
這也代表被動觀察者可能嘗試把多筆訊息串成行駛軌跡。
系統可以使用暫時性或假名身分降低長期關聯風險,但只更換 ID 不一定能切斷追蹤:
所以隱私保護還要結合憑證與識別碼生命週期、資料最小化、保存期限、存取控制與監管政策。
「訊息沒有放車牌」不等於位置資料不具個人可識別風險。
下面不是實際 ASN.1,也不是可直接送上 Radio 的 Payload。
它只是把本文主線情境整理成人類容易閱讀的概念欄位:
訊息 A:BSM 概念
temporaryId = Car-A
position = 路口東側 55 m
speed = 48 km/h
heading = 向西
brakes = 未宣告煞車
dataAge = 80 ms
訊息 B:CAM 概念
stationId = Car-B
position = 路口南側 40 m
speed = 36 km/h
heading = 向北
acceleration= 正在減速
dataAge = 120 ms
訊息 C:DENM 概念
actionId = Roadside-7 / Event-23
eventType = 道路施工
eventPosition = 路口西側車道
validityDuration = 尚餘 15 分鐘
trafficDirection = 西向
接收端不能只把三筆資料畫在地圖上。
它還要問:
| 檢查 | 訊息 A/B | 訊息 C |
|---|---|---|
| 版本與格式 | BSM 與 CAM 分別使用哪個版本及 Profile? | DENM Release、Dictionary 與 Cause Code Profile 為何? |
| 時間 | 位置與動態資料現在還有多新? | Detection/Reference Time 與 Validity 是否仍有效? |
| 準確度 | 位置誤差是否足以分辨車道與碰撞路徑? | Event Position 與影響區域是否清楚? |
| 合理性 | 前後訊息能否形成連續軌跡? | 其他車輛、RSU 或感測器是否觀察到相同事件? |
| 相關性 | 本車路徑是否會和 Car-A/Car-B 相交? | 本車是否會進入西向施工車道? |
這個案例也顯示,BSM、CAM 與 DENM 不一定會同時出現在同一套實際部署。
把它們放在一起,是為了比較訊息語意與接收端判斷方式,不是宣稱一座路口會混用所有標準生態。
下面有四段教學用敘述:
A. 一台車每隔短時間提供自己的位置、速度、Heading 與煞車狀態
B. RSU 宣告西向第二車道施工,事件預計持續十五分鐘
C. 車輛收到一筆簽章有效的位置訊息,但該位置落在建築物內
D. 接收端看見同一個道路事件的新版本,Reference Time 比本機紀錄更新
請先回答:
先停在這裡,不要急著往下滑!
請先把「格式、安全、新鮮度、資料品質、合理性、相關性」寫成六欄,再往下對照作者的示範答案。
| 敘述 | 作者的判斷 |
|---|---|
| A | 屬於來源端狀態快照。SAE 生態會想到 BSM,ETSI 生態則會想到 CAM,但不能因此把兩種 Wire Format 當成相同 |
| B | 施工需要 Event Type、Event Position、Validity 與更新/終止狀態,ETSI 生態中較適合由 DENM 管理 |
| C | 簽章有效表示安全驗證通過,位置落在建築物內則讓地圖與情境合理性檢查產生疑問 |
| D | 若來源與 Action ID 對應同一事件,而且版本及時間關係有效,接收端應更新既有事件紀錄,不要當成無關的新事件 |
A 仍要確認 BSM/CAM 的版本、Profile、資料時間及定位準確度。
B 則要確認 RSU 是否獲准發布該 Event Type、事件位置對應哪一個方向與車道,以及有效期間結束後如何送出終止或讓紀錄到期。
C 不能立刻判定為攻擊。
定位多路徑、地圖誤差、座標轉換或裝置故障也可能造成不合理位置,接收端應降低信任、蒐集其他證據,再依系統設計決定是否忽略或限制使用。
D 還要防止舊版訊息覆蓋新版狀態,也要在事件終止或 Validity Duration 到期後清除紀錄。
這份練習只示範訊息分類與信任判斷,不代表任何特定車款、RSU 或道路部署採用相同資料與規則。
安全與法律提醒: V2X 封包傳送、事件注入與 Radio 測試只應在模擬器、隔離測試台或明確取得授權且符合頻譜法規的場域進行。
不要對道路車輛、RSU、行動網路或公共交通設施傳送未授權訊息。
今天我們知道 V2X 裝置會交換車輛狀態與道路事件,也看見每一筆訊息都離不開位置及時間。
Day 13 將進入 SUMO,先用軟體建立道路、路口、Route 與 Vehicle,讓這些位置與速度資料不再只是紙上的欄位,而是來自一座真正會跑車的模擬城市。