2018年3月15日 星期四

USB DIY--自學計畫_CAN Bus Application (三)--- OBD II

一般人對於 CAN Bus 的第一印象絕對是來自於車用電子系統,沒錯~CAN Bus  一開始

的確是為了車用電子系統,但後來也沒有局限它的使用環境與條件,不過,在車用電子系統

他的確發展得非常成熟與其重要角色。但是一般CAN bus 在車用系統中又要如何使用?

這又是另一門學問了。坦白講,車用電子系統不比一般 3C 電子產品,你高興怎麼搞,就

怎麼搞,沒有人會無聊的想去問你所以然。但在車用系統的話,可就不能說:你高興怎麼?

就怎麼搞?否則系統一出事情,就連不要說別人啦,連你自己要如何證明你是無辜的?

這就顯得格外重要了。所以在車用電子系統中,早在70~80 年代發展過程中,就開始引進

許多標準規範了。早期這些規範大部分都是來自於美國的SAE 標準。後來就慢慢演進成為

國際標準了,也就是所謂的ISO 規範,而標題提到的  OBD II 就是其中一項大家耳熟能詳

的規範標準。

之所以大家會聽到這個名詞是因為我們台灣機車法規在六期污染法規中,就強制引擎控制

系統中必須支援OBD II 系統。這個名詞就不用我在這裡囉嗦的解釋的老半天,有興趣的:

現在有個東西: Google 或是 Wiki 就可以解答你的疑問了。而我在這邊的要講的是很實務的

教你如何看得懂OBD II 的東西。

首先簡單的講:OBD II 就是可以透過車外的一個檢測治具,可以連結到你車上引擎控制器上

去讀取一些引擎的相關數據,主要的目的還是為了空氣汙染防制的問題。當然地既然要能

簡單容易地,而且放諸天下都可以做得到這件事的話:那就要有一定的規範標準,所以就

又得要回到 ISO/SAE 這些規範

上面這張圖要留意一點的是:他跟我們一般看網通七層的習慣有點不同,是由上往下看的。

下面的幾張圖就得回到正常由下往上看,所謂 layer 越低代表的就是硬體的東西,相反的

Layer 越高,代表的就比較偏向我們俗稱系統應用端,譬如就是人機介面的,我們一般人

第一直覺看到的東西。至於圖裡表格中為什麼還會有不同規範?那就因為我們電子科技

技術日新月異,所以一些介面的東西,也會不斷的改進。除了最右邊紅色框起來的東西

以外的,左邊三項基本上都是使用一般 MCU 單晶片裡的 UART(串列通訊)就可以完成的。

而最右邊的就是CAN Bus 的基本規範。接下來再看一張圖表:


這張圖表可以跟上圖比較一下:你就知道其中的 ISO 9141 及SAE J1850 就可以不用理它了,

因為已經落伍了。甚至我跟你說:最連在汽車應用領域裡, 2008 年後就只剩下 CAN Bus 了。

之所以留下一組 KWP2000 (ISO 14230) 那還代表MCU 還可以用 一般MCU (UART)來玩。

但如果只剩下CAN Bus 的話,那就不好意思了,你選用的MCU 就得要支援 CAN bus了。
----
另外,在上圖中還有出現一個新名詞: UDS (Unified Diagnostic Services)。這個東西就比

一般OBD 範圍多了,你可以想一想:既然我可以與引擎控制器連線通訊了,那我是不是還有

許多其他事情可以做的?答案就在這一份 UDS (ISO 14229) 規範中定義了。譬如系統調教,

或是韌體程式更新等等許多事情。所以我才跟你說:搞車用電子系統,你就不要再自己想

太多了,有很多東西人家全球早就幫你規範訂好了。話說如此,那是不是有很多系統的東西

都得攤在陽光底下,被人家看光光了?也不盡然啦:。在看下圖:


上面表格中間那一行,就是說明架在  ISO 14229 的規範之下,有許多東西是車廠自己可以

自行定義的啦。也沒有那麼容易地令人擔心的。所以不要再用小人之心去度君子之腹啊。
------------------------------------------------------------------------------------------------------------
好了,以上啦哩拉雜的扯了一堆標準規範東西,要大家靜下來K 規格對許多工程師就會

覺得頭大又頭痛了。所以接下來我就簡單地做幾個實驗來教大家馬上懂 OBD II 的東西如何

跟我們玩車有甚麼息息相關的:

首先在許多網路購物平台上:大家都可以花個幾百塊就可以賣到以下照片中的東西:

ELM327 。(他有USB PC 連線方式,也有藍芽連線方式(右邊小藍盒子)。


這個東西就是支援標準 OBD II 系統的東西。藍芽的是讓你可以用手機就可以很容易看到

結果的。至於我們這一種生來喜歡搞東搞西的無聊工程師就會買CAN Bus 的模組,自己看著

規格書搞自己的玩意。(這部分以後有機會再聊了)

這個東西是做甚麼用的?很簡單:只要是 2008 年後出廠的汽車裡,依照法規要求,車上必須

留有OBD II 的接口,你只要把這個東西接到你車上這個 OBD II 接口上,然後就打開相關應

用程式:類似這個:


你大概就不一定非得要看平常只看到車上儀表板上所顯示的東西了:


-----


很好玩吧。

甚至還可以當賽車一般地記錄所有開車過程中的相關數據:


---
嫌用電腦太麻煩?也沒關係,你也可以買個所謂的 支援 OBD 的儀表:


一樣的接線到OBD II 接口上也是可以的:


-----

----
你也可以買藍芽版本的,然後再去下載相關APP 之後,你的手機也可以當車用儀錶板用了。

很好玩吧。搞車用電子系統很難嗎?不會嘛!

但重點還是回到說:這樣的東西不管是網路賣家或是對岸淘寶網已經賣到見骨見血了。

更好笑的是:這一個 ELM327 一開始人家還以為是專屬IC 做的產品,結果還是被對岸破解

出是用 Microchip MCU 寫出來的。結果就是眼前這一片血流成河的景象。

其實,真正車用系統比較難的還是在於我上面所提到的 UDS系統部分,因為這一部分才是

這些車用電子系統開發者所掌握的東西。所有車用電子系統發展至今:幾乎都已經經由

這樣子的架構在發展相關系統產品:不管是電動車輛或是車聯網:


不相信的人,也可以去網路搜尋:UDS + AUTOSAR。

所以你不要以為只有在 3C 產業中只有 Intel 、Microsoft 或是高通等這些大廠在綁系統

規格而已,其實在車用電子系統中,也是有一大堆規範標準要你遵守的。要不然,

未來車上一大堆車用電子系統,你要如何與別人的系統連結?

OBD II 也不過人家放出來的一個小小的小玩意兒,但就可以讓許多玩車人士,玩得不亦樂乎

了。

---
結論:這一部分就先簡單的介紹到這裡,以後還有機會再跟各位慢慢地介紹許多在這些規範

標準中,可以透過MCU 控制系統可以進行許多車用電子系統開發的故事。

最後就在隨便在扯一個路邊的小道消息。你說汽車搞個OBD II ,人家早在N 年前,

(能在 2008 年就全面採用CAN BUS OBD II 系統,往前推,你大概就知道了多早了)

但要在機車上面推同樣的東西,除非人家的系統是從汽車上轉下來的,否則,你要從一開始

從這些規範標準中一一的完善這些東西,也不是件容易的事,所以據說:國內許多機車

ECU控制器原廠很早就完善此功能的,還是汽車老牌公司方案。

另外一點要提到一點的是:當你的 ECU 要支援 OBD II 系統之後,你ECU 裡的邏輯數學

運算就不再能隨隨便便的湊答案了。譬如以 MODE 01/PID 04 的 Calculated engine load

就可以隨隨便便給個答案了吧?也就不用再提其他的:引擎運轉中所參考的許多熱力學上

的許多數據參數了吧,因為也只有真正這些參數數據,才能真正追蹤到燃燒所產生的

汙染與引擎操作效率吧。而這些也都將在 ODB II 系統監控下,一一不可遁形的。

(待續)

PS :至於你問我說,人家未來都要全面禁行汽油車輛了,那這套系統還有得搞嗎?

這個更不用你擔心了,在現有OBD II 系統也早就準備好了:

OBD II 的Mode 01/PID 0x51 :Fuel Type Coding






沒有留言:

張貼留言