虛擬CAN車用系統符合車輛診斷系統傳輸格式,可以產生OBD2 PID查詢與回應的CAN訊息。並且結合OBD2連接器的功能,使虛擬CAN車用系統可以與電腦、手機等外部連接。
控制區域網路(Controller Area Network, CAN)是常見的車用通訊協定,隨著車載技術的進步會愈來愈重要。車輛診斷系統模擬器是學習與開發車用系統好用的輔助工具,但市售的車輛診斷系統模擬器,價格昂貴且要與電腦端做連接需另外購買OBD2連接器,才能連接上車輛診斷系統軟體。上述所提及的車輛診斷系統模擬器與OBD2連接器,它們都具有CAN介面。
想學習車輛的車用診斷系統(OBD2),需觀察車輛資料的輸出,並通過車輛診斷系統的協議進行分析與研究,然而車輛的對外接口為標準SAE J1962接頭,其符合所有法定OBD2通訊協議。SAE J1962接頭的通訊協議種類多樣,有符合SAE J1850 (PWM/VPW)、ISO 9141-2、ISO 14230-4(KWP2000)與ISO 15765-4 (CAN 250/500 kbps, 11/29 bit)等通訊協定。若想將車輛與電腦、手機等外部設備做連接來分析學習,則需要再另外接上OBD2連接器。
由於微控制器(Microcontroller, MCU)HT66F3370H內包含一般標準MCU HT66F2390架構及Bosch公司所授權的CAN Core模組功能,因此只要加接上一個CAN收發器(Transceiver),例如MCP2551,即能組成一個實用的具有MCU 控制的CAN模組。
首先,依OBD2標準利用此CAN模組,來設計CAN通訊協定車用模擬系統,並且可以模擬車輛正常狀態運作的車輛資訊。由於市售抬頭顯示器可透過OBD介面來讀取車輛的CAN通訊資訊,因此可透過與抬頭顯示器連接,來測試與驗證車用模擬系統。
再來,為了方便用電腦對車用系統做開發與測試,需要一套可以將車用系統與電腦做連接的連接器。設計一套OBD2連接器,它可以執行OBD2介面微控制器ELM327指令與查詢車輛診斷系統代碼。
最後將上述兩系統整合在一個CAN模組裡,組成虛擬CAN車用系統。它符合車輛診斷系統傳輸格式,可以產生OBD2 PID查詢與回應的CAN訊息。並且結合OBD2連接器的功能,使虛擬CAN車用系統可以與電腦、手機等外部連接。外部設備只需透過UART對虛擬CAN車用系統發送OBD2 PID指令,它便會使用UART傳送OBD2 PID回應,並在CAN網路輸出相對應的OBD2 PID查詢與回應。同時此虛擬CAN系統架構,方便在此架構建立新的車輛控制模組來測試,自定義車輛控制ECU,CAN ID為711h。
此外,本產品利用指紋辨識模組,辨識感應的指紋是否為註冊過的用戶。如果辨識成功,WiFi模組會透過LINE告知用戶,並啟動車用系統。如果辨識失敗,WiFi模組會透過LINE告知用戶指紋辨識失敗,並且車用系統將無法使用。團隊也針對此系統設計App,App包含兩大介面,一個為指紋介面,另一個為車輛控制介面。
指紋介面可以看到所有已註冊的指紋,並且可以新增與刪除指紋。指紋訊息與MySQL資料庫同步,避免出現不確定指紋是否註冊過的情形。車輛控制介面有兩個Switch開關,一個為車燈開關Switch,另一個為門鎖開關Switch,可以透過車輛控制介面遠端遙控虛擬CAN系統。
本產品使用微控制器作為虛擬CAN系統的主控,模擬車內的電子控制單元(ECU),並依照OBD2,在CAN上實現車內電子實際的通訊情況。此虛擬CAN系統有兩個對外通訊介面:UART傳輸介面和CAN觀測介面。虛擬CAN車用系統模擬OBD2介面微控制器ELM327指令,並依據指令執行相對應的動作與回應。因此它可以透過UART介面接收OBD2指令。而當UART介面接收到OBD2指令,虛擬CAN車用系統會透過CAN介面輸出相對應的OBD2 PID查詢與回應。透過觀察CAN介面的輸出,來分析OBD2的傳輸格式與資料內容。
此車用系統利用指紋辨識模組,搭配自行開發的手機App,打造一輛屬於使用者的虛擬車輛。可以透過手機App來新增或刪除指紋,並將已註冊的指紋存入MySQL資料庫中。
在指紋辨識失敗時,WiFi模組會透過LINE發出通知來告知用戶,直到指紋辨識成功才能啟動虛擬CAN系統。App內具有車輛控制介面,透過App的Switch開關來控制車輛的車燈與門鎖。當MCU收到車輛控制的指令後,它會執行相對應的動作,並且透過CAN介面輸出相對應的CAN訊號。
工作原理
圖1為虛擬CAN系統結構圖,本產品使用MCU做為主控,搭配CAN收發器MCP2551組成一個CAN節點,具有指紋辨識模組、WiFi模組、LED、電控鎖。
首先利用指紋辨識模組,辨識感應的指紋是否為註冊過的用戶,如果辨識成功,會啟動車用系統,如果辨識失敗,系統將無法使用。MCU作為虛擬CAN系統的主控,模擬了車內的電子控制單元。其對外的通訊介面有兩個:UART傳輸介面和CAN觀測介面。CAN觀測介面的傳輸速度為500kbps,訊息的ID長度為11-bit。UART介面的傳輸速度為38400bps,電腦可以透過UART介面直接與虛擬CAN系統做連接。虛擬CAN系統可以透過UART介面接收ELM327指令,並依據指令執行相對應的動作與回應。它還可以透過UART介面接收OBD2 PID指令,並給予相對應的OBD2 PID回應;當UART介面接收到OBD2 PID指令,虛擬CAN系統會透過CAN介面輸出相對應的OBD2 PID查詢與回應。
App的車輛控制介面具有車燈與門鎖控制開關。按下開關後,App會傳送控制指令,透過WiFi模組傳送給MCU,MCU再執行相對應的車輛控制,並會透過CAN觀測介面輸出車控ECU的控制訊號。
產品結構
指紋辨識系統設計
圖2為指紋辨識系統的軟體流程,要啟動車用系統需先通過指紋辨識,若是指紋辨識失敗,則會透過Wi-Fi IoT控制晶片向LINE發送指紋辨識失敗訊息。若是指紋辨識成功,則會透過IoT控制晶片向LINE發送指紋辨識成功訊息,並會啟動車用系統模式。
車用模擬系統設計
車用系統使用MCU實現ECU模擬器與OBD2連接器的功能。首先,設計一套ECU模擬器,它符合OBD2標準,並且模擬了車內的主引擎控制器、傳輸控制模組、防鎖死剎車系統。其CAN ID分別為7E8h、7E9h、7EAh。模擬的OBD2模式有01與09。其他模式都為故障診斷與元件測試等功能,這些功能一般是給車廠做測試與維修檢測使用,在車輛狀態沒有異常,不需要診斷與測試時,不需要讀取其他模式。
圖3為ECU模擬器的軟體流程圖。在使用MCU的CAN功能前,需先設置CAN接腳、CAN鮑率500kbps、訊息物件的接收傳送分配。MCU接腳為多工,透過軟體程式來規劃接腳功能。
MCU的訊息記憶體總共有32個訊息物件。為了避免CPU讀取訊息記憶體和CAN訊息接收與傳送發生衝突,MCU有兩個介面控制暫存器來緩衝資料傳輸,將其分別用於傳送與接收。將訊息傳輸方向、資料長度、遮罩ID、訊息ID等設置透過介面控制暫存器寫入訊息物件裡,將訊息物件1~31設置為接收,訊息物件32設置為傳送。
當接收到CAN資料後會先判斷CAN ID是否為廣播位置。因有些設備會使用CAN 29位元的查詢格式查詢,因此設計為11位元的7DF與29位元的18DB33F1的CAN ID都可接受,若不是廣播位置的CAN ID則忽略資料繼續讀取CAN網路。若是,則會判斷模式與PID(圖4)。
團隊設計的ECU只有模擬OBD2 PID中的模式 01與模式 09,模式01為車輛當前狀態,模式09為車輛資訊。模式01模擬了22種,其中包括引擎負載、引擎溫度、引擎轉速、車速、燃油調整等。模式09模擬了5種,其中包括車輛識別碼、校正ID、校正驗證碼、ECU名稱。如果接收到的OBD2 PID查詢不是支援的模式,與PID則忽略資料繼續讀取CAN網路。若是則回應相對應的OBD2 PID回應資料。
由於市售抬頭顯示器可透過OBD介面來讀取車輛之CAN通訊資訊,因此可透過與抬頭顯示器連接,來測試與驗證車用模擬系統,圖5分別為測試引擎溫度與引擎轉速畫面。
虛擬CAN系統力助車輛診斷 整合通訊模擬/App介面(1)