TWI718008B - 控制器區域網路資料壓縮/解壓縮之方法與裝置 - Google Patents

控制器區域網路資料壓縮/解壓縮之方法與裝置 Download PDF

Info

Publication number
TWI718008B
TWI718008B TW109105627A TW109105627A TWI718008B TW I718008 B TWI718008 B TW I718008B TW 109105627 A TW109105627 A TW 109105627A TW 109105627 A TW109105627 A TW 109105627A TW I718008 B TWI718008 B TW I718008B
Authority
TW
Taiwan
Prior art keywords
data
block
area network
field
file
Prior art date
Application number
TW109105627A
Other languages
English (en)
Other versions
TW202133589A (zh
Inventor
許晉嘉
Original Assignee
宏碁股份有限公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 宏碁股份有限公司 filed Critical 宏碁股份有限公司
Priority to TW109105627A priority Critical patent/TWI718008B/zh
Application granted granted Critical
Publication of TWI718008B publication Critical patent/TWI718008B/zh
Publication of TW202133589A publication Critical patent/TW202133589A/zh

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本發明揭露一種控制器區域網路(Controller Area Network, CAN)資料壓縮/解壓縮之方法與裝置。該控制器區域網路資料壓縮/解壓縮裝置係透過該控制器區域網路資料壓縮/解壓縮方法,俾使記錄CAN匯流排上的資料得以在無失真之前提下,所需之儲存空間被極小化。

Description

控制器區域網路資料壓縮/解壓縮之方法與裝置
本發明係關於一種壓縮/解壓縮之方法與裝置,特別係有關於一種控制器區域網路(Controller Area Network, CAN)資料壓縮/解壓縮之方法與裝置。
現今,交通工具(例如汽車)具有許多用來控制的子系統,例如變速器、安全氣囊、防鎖死煞車系統(Anti-lock Braking System, ABS)、定速巡航、動力方向盤、音響系統、動力車窗、車門、後視鏡調整、電池以及混合動力電動汽車的充電系統等裝置的嵌入式系統,該等嵌入式系統被稱為「電子控制器」(Electronic Control Unit, ECU)。其中,有些該等電子控制器是獨立的子系統,有些則需要跟其他子系統進行通訊。關於該等電子控制器彼此之間的內部通訊,有別於傳統上採用電纜直連的作法而導致高昂的成本與複雜的布線,應運而生的一種匯流排標準—控制器區域網路(Controller Area Network, CAN)被設計用在不需要主機(host computer)的情況下,允許網路上的電子控制器相互通信,不僅安全、經濟,也十分便利。
記錄交通工具數據的技術已被使用數十載,最被大眾所熟知的,應屬運用在飛機上的「黑盒子」,其記錄的數據可在飛機故障或失事等意外後,協助調查人員還原意外發生時的狀況。這種所謂的事件記錄器(Event Data Recorder, EDR)在近幾年亦被運用在汽車等陸上交通工具,對該交通工具的CAN匯流排數據進行長時間記錄,以協助進行故障診斷分析。除此之外,隨著物聯網與自動駕駛車相關技術的蓬勃發展,網路安全(cyber security)的問題亦備受重視。如同一般所熟知電腦被駭客入侵的狀況,車上的各個ECU亦有被透過網路從遠端進行滲透與攻擊的風險。能夠即時偵測網路攻擊並且應對之,自然是終極目標;但在事後對CAN資料進行線下非即時的分析,其分析結果不僅可作為法庭上的呈堂證供,亦可協助開發人員了解該攻擊是如何運作的,藉此改善產品的網路安全性。
上一段落所述之該等CAN資料應用,理想上會需要對CAN匯流排上的資料進行長時間連續且完整的記錄,所需之儲存空間與成本相當可觀。除此之外,大量地寫入資料對於儲存體(例如SD卡或SSD)的壽命亦有負面之影響。因此,如何對CAN資料進行壓縮以提升儲存空間的運用效率並減少對儲存體的損耗,係一重要課題。另外,由於存在對CAN資料進行分析之需求,壓縮的方法必須係屬於無失真資料壓縮(lossless compression),亦即編碼後的資料能在被解碼後還原成與原始資料一致。目前所被熟知的無失真資料壓縮技術,例如zip或rar,皆係在低階的位元組流(byte stream)上對資料進行操作,被認為係屬於「句法壓縮」(syntactic compression)。相較之下,本發明所揭露的CAN資料壓縮方法,則係對資料的語意(semantic)進行理解後,在不改變該語意的前提下去精簡該語意被表述的方式,這樣的作法被認為係屬於「語意壓縮」(semantic compression)。由於句法壓縮及語意壓縮係在不同的層級對資料進行操作,故兩種作法互不衝突,可以被同時採用。
[先前技術文獻] "Efficient lossless compression of CAN traffic logs"; 2017 25th International Conference on Software, Telecommunications and Computer Networks (SoftCOM). IEEE, 2017; Gazdag, András, Levente Buttyán, and Zsolt Szalay.
在記錄CAN資料時,除了每一筆CAN資料本身的資料段(data field)之外,最關鍵的資訊莫過於接收到該筆資料的時間。前述先前技術文獻提出了一種無失真的CAN資料語意壓縮方法,該方法係利用實務上來自某些特定ECU的CAN資料一般而言不會經常變動的特性,並預設該等特定ECU具有週期性傳輸CAN資料的本質,在每次接收到一筆資料時,若該筆資料之資料段相較於前一筆資料並沒有變動,則不記錄該筆資料完整的時間戳記(time stamp),僅記錄實際接收到該筆資料之時間與預期接收到該筆資料之時間之間的時間差,而該時間差之資料長度相較於該筆資料完整的時間戳記之資料長度明顯較短,藉此省下所需之儲存空間。
前述先前技術文獻所提出的方法,其對於CAN資料之壓縮效果係建立在每一筆CAN資料的資料段之間幾乎完全沒有變動的前提之下。CAN資料變動的越頻繁,該方法之壓縮效果越低。因為在執行該方法的過程中,每次接收到一筆資料時,若該筆資料的資料段相較於上一筆資料存在有變動,即使僅僅是些微的變動(例如僅其中某一兩個位元組有變動),仍需要記錄該筆資料完整的資料段。此外,該方法係預設某些特定ECU具有週期性傳輸CAN資料的本質,而實際接收到資料的時間係受同時傳輸的多筆資料之間的優先順序影響而可能產生偏移。若存在有些ECU本身並非係以固定之頻率傳輸CAN資料,該方法便不適用。
有鑑於此,本發明擬提供一種控制器區域網路資料壓縮/解壓縮之方法與裝置,透過一種CAN資料壓縮與解壓縮方法,俾使記錄CAN匯流排上的資料得以在無失真之前提下,所需之儲存空間被極小化。
本發明之實施例揭露一種控制器區域網路資料壓縮方法,包括:按時間先後從CAN匯流排逐筆接收CAN資料;將接收到之第一筆該CAN資料,依一第一資料結構寫入至一第一原始檔案;對於在接收到該第一筆該CAN資料後之一指定期間內所接收到與該第一筆該CAN資料具有相同識別碼(ID)的每一筆該CAN資料,得出其與具有該相同ID的前一筆該CAN資料兩者之間的資料變化資訊,並將該變化資訊依一第二資料結構寫入至一第一遞增檔案。
本發明之實施例中所運用之控制器區域網路資料壓縮方法包括:對於在接收到該第一筆該CAN資料後超出該指定期間所接收到與該第一筆該CAN資料具有該相同ID的另一第一筆該CAN資料,依該第一資料結構寫入至一第二原始檔案;對於在接收到該另一第一筆該CAN資料後之該指定期間內所接收到與該第一筆該CAN資料具有該相同ID的每一筆該CAN資料,得出其與具有該相同ID的前一筆該CAN資料兩者之間的資料變化資訊,並將該變化資訊依該第二資料結構寫入至一第二遞增檔案。
本發明之實施例所運用之控制器區域網路資料壓縮方法更包括:將該第一原始檔案、該第一遞增檔案、該第二原始檔案、該第二遞增檔案組合成為與該相同ID相關聯的一目錄。
本發明之實施例所運用之控制器區域網路資料壓縮方法,其中該第一資料結構包括:一第一欄位,作為循環冗餘校驗(Cyclic redundancy check, CRC)欄位,用於確保資料正確性;一第二欄位,作為CAN時間戳,用於紀錄該接收到該筆CAN資料之時間;一第三欄位,作為CAN資料段,用於紀錄該筆CAN資料之資料段。
本發明之實施例所運用之控制器區域網路資料壓縮方法,其中該第二資料結構包括:一第四欄位,作為CRC欄位,用於確保資料正確性;一第五欄位,用於表示該筆CAN資料之CAN資料段與具有相同ID的前一筆CAN資料之資料段相比,是否有變更;一第六欄位,用於表示接收到該筆CAN資料與接收到具有相同ID的前一筆CAN資料之間的時間間隔之位元組數;一第七欄位,用於記錄接收到該筆CAN資料與接收到具有相同ID的前一筆CAN資料之間的時間間隔;一第八欄位,用於表示該筆CAN資料之資料段與具有相同ID的前一筆CAN資料之資料段相比,有變更的位元組之位置;一第九欄位,用於記錄該筆CAN資料之資料段與具有相同ID的前一筆CAN資料之資料段相比,有變更的部分資料段。
本發明之實施例中所運用之控制器區域網路資料解壓縮方法包括:讀取藉由上述控制器區域網路資料壓縮方法而得的該第一原始檔案,並擷取其內容資料,以還原對應於該第一原始檔案之CAN資料內容;若檢測到存在有藉由上述控制器區域網路資料壓縮方法而得的該第一遞增檔案,則擷取其內容;利用該第一遞增檔案內的該資料變化資訊,配合該第一原始檔案的內容資料,以還原對應於該第一遞增檔案之CAN資料內容。
本發明之實施例中所運用之控制器區域網路資料解壓縮方法,其中,該第一原始檔案的該第一資料結構包括有一第一循環冗餘校驗(CRC)欄位;讀取該第一原始檔案時,更利用該第一CRC欄位檢驗資料正確性。
本發明之實施例中所運用之控制器區域網路資料解壓縮方法,其中,該第一遞增檔案的該第二資料結構包括有一第二循環冗餘校驗(CRC)欄位;讀取該第一遞增檔案時,利用該第二CRC欄位檢驗資料正確性。
本發明之實施例揭露一種控制器區域網路資料壓縮裝置,包括:一第一控制器,運行一程式以執行上述控制器區域網路資料壓縮方法。
本發明之實施例揭露一種控制器區域網路資料解壓縮裝置,包括:一第二控制器,從上述控制器區域網路資料壓縮裝置接收檔案,並運行一程式,以執行上述控制器區域網路資料解壓縮方法。
本發明所列舉之較佳實施方式,目的在於說明本發明之精神而非用以限定本發明之保護範圍,本發明之保護範圍當視後附之申請專利範圍所界定者為準。
根據本發明之實施例,第1圖係一種CAN資料壓縮裝置100與一種CAN資料解壓縮裝置110之示意圖。如第1圖所示,該控制器區域網路資料壓縮裝置100包括一控制器101,該控制器101運行一程式,以執行一CAN資料壓縮方法200;該CAN資料解壓縮裝置110包括一控制器111,以執行一CAN資料解壓縮方法500。
在某些實施例中,控制器區域網路資料壓縮裝置100可例如為一車載電腦、一車載CAN-bus數據記錄儀,或者一車上嵌入式系統。
在某些實施例中,控制器101具有至少一個頻道,並透過各該等頻道獨立地接收來自CAN匯流排102之CAN資料,以作為執行CAN資料壓縮方法200所需之輸入資料。其中,各頻道所接收到的各筆CAN資料皆具有特定範圍之識別碼(ID),該識別碼指示各筆CAN資料係源自哪個ECU(電子控制器)。換句話說,控制器101係透過各筆CAN資料源自哪個ECU來決定透過哪個頻道接收該筆CAN資料。
在某些實施例中,控制器101可在CAN資料壓縮方法200執行完成(例如車輛停入車庫或保養廠)後,將執行CAN資料壓縮方法200之過程中所產生的所有紀錄檔案透過一有線或無線的方式傳輸至控制器111。控制器111從控制器101接收檔案,並在需要時(例如發生事故後需藉由分析CAN資料以協助釐清事故發生原因時)以該等檔案作為輸入資料運行一程式,以執行CAN資料解壓縮方法500。
在某些滿足網路環境穩定之前提的實施例中,控制器101亦可在執行CAN資料壓縮方法200之過程中,每完成寫入一檔案時便立即將該檔案透過網路傳輸至控制器111。這樣的作法,相較於待CAN資料壓縮方法200執行完成後才傳送所有紀錄檔案之作法,不但可以更節省控制器101所需之儲存空間,亦可節省傳輸資料所需之頻寬,更可以俾利在CAN資料解壓縮裝置110上進行即時的資料監控或分析。
根據本發明之實施例,第2A~2C圖係一種CAN資料壓縮方法200之流程圖,包括201-215等區塊,每一區塊代表一實施步驟或一判斷條件。
根據本發明之實施例,第2A圖之區塊201代表開始記錄CAN資料之指令被觸發,隨即進入第2A圖之區塊202。
根據本發明之實施例,於第2A圖之區塊202,控制器101從CAN匯流排接收CAN資料。當接收到一筆CAN資料,即進入第2A圖之區塊203。
根據本發明之實施例,於第2A圖之區塊203,判斷是否已存在以該筆CAN資料的ID為名稱所建立之目錄。若是,即進入第2B圖之區塊206;若否,則進入第2A圖之區塊204。
根據本發明之實施例,於第2A圖之區塊204,以該筆CAN資料之ID為名稱建立一目錄,然後進入第2A圖之區塊205。
根據本發明之實施例,第3圖係於區塊204所建立之目錄的目錄格式300之示意圖。如第3圖所示,該目錄格式300包括一行開始紀錄時間301、至少一行頻道序號302,以及位於每行頻道序號302下方之零到複數行CAN ID 303。
在某些實施例中,開始紀錄時間301之格式可例如為「YYYYMMDD.HHmmSS.sss」。其中YYYY代表年份,MM代表月份,DD代表日期,HH代表小時, mm代表分鐘,SS代表秒,sss代表毫秒。因此,若開始紀錄CAN資料之時間為2019年6月13日11點58分12秒又836毫秒,則開始紀錄時間301可以係例如為「20190613.115812.836」。
在某些實施例中,頻道序號302之格式可例如為「channel_0」、「channel_1」、「channel_2」…依此類推。
在某些實施例中,CAN ID 303係將該筆CAN資料之ID以十六進位表示,例如為「0x202」、「0xC8」…。
依據CAN的開發者勞勃·博世公司(Robert Bosch GmbH) 所規範的版本CAN 2.0,CAN訊息存在兩種格式,使用11位ID的CAN裝置一般被稱作CAN 2.0A,而使用29位ID的CAN裝置通常稱為CAN 2.0B。因此,在某些實施例中,於第2A圖之區塊204,於建立該目錄後,可在該目錄下建立一例如名為”Info”的檔案,該例如名為”Info”的檔案記載該筆CAN資料的ID之格式。
回到第2A圖。根據本發明之實施例,於第2A圖之區塊204以該筆CAN資料之ID為名稱建立目錄後,進入第2A圖之區塊205;於第2A圖之區塊205,將一第一計數器之值設為0,然後進入第2B圖之區塊206。其中,該第一計數器對應該筆CAN資料之ID;也就是說,不同的ID會對應到不同的計數器。
根據本發明之實施例,於第2B圖之區塊206,判斷當下是否存在一對應到該第一計數器之值(例如以該第一計數器之值為檔名)之原始檔案。若是,即進入第2B圖之區塊208;若否,則進入第2B圖之區塊207。
根據本發明之實施例,一原始檔案主要係用於紀錄一指定期間內所接收到的第一筆CAN資料之資料段(data field)與接收到該第一筆CAN資料之時間。
根據本發明之實施例,於第2B圖之區塊207,建立一對應到該第一計數器之值之原始檔案,並將該筆CAN資料擷取出必要資訊,依一第一資料結構寫入至該對應到該第一計數器之值之原始檔案。寫入該對應到該第一計數器之值之原始檔案完成後,進入第2B圖之區塊214。其中,該第一資料結構,包括一第一欄位、一第二欄位與一第三欄位,該等欄位之長度與用途如下表一所列。 [表一]
名稱 長度 用途
第一欄位 1 Byte 作為CRC欄位,用於確保資料正確性
第二欄位 4 Bytes 作為CAN時間戳,用於紀錄該接收到該筆CAN資料之時間
第三欄位 0-8 Bytes 作為CAN資料段,用於紀錄該筆CAN資料之資料段
根據本發明之實施例,於第2B圖之區塊208,判斷當下是否存在對應到該第一計數器之值之遞增檔案。若是,即進入第2B圖之區塊211;若否,則進入第2C圖之區塊209。
根據本發明之實施例,一遞增檔案主要係用於紀錄接收到的一筆CAN資料與具有相同ID之前一筆CAN資料兩者之間的資料變化資訊。
根據本發明之實施例,於第2C圖之區塊209,判斷當下距離寫入對應到該第一計數器之值之原始檔案是否已超出一指定期間。若是,即進入第2B圖之區塊213;若否,則進入第2C圖之區塊210。在較佳之實施例中,該指定期間為五分鐘。
根據本發明之實施例,於第2C圖之區塊210,得出該筆CAN資料與具有相同ID的前一筆CAN資料兩者之間的資料變化資訊,建立一對應到該第一計數器之值之遞增檔案,並將該變化資訊依一第二資料結構寫入該對應到該第一計數器之值之遞增檔案。寫入該對應到該第一計數器之值之遞增檔案完成後,進入第2B圖之區塊214。其中,該第二資料結構包括一第四欄位、一第五欄位、一第六欄位、一第七欄位、一第八欄位與一第九欄位,該等欄位之長度與用途如下表二所列。 [表二]
名稱 長度 用途
第四欄位 5 Bits 作為CRC欄位,用於確保資料正確性
第五欄位 1 Bit 用於表示該筆CAN資料之CAN資料段與具有相同ID的前一筆CAN資料之資料段相比,是否有變更
第六欄位 2 Bits 用於表示接收到該筆CAN資料與接收到具有相同ID的前一筆CAN資料之間的時間間隔之位元組數
第七欄位 0-3 Bytes 用於記錄接收到該筆CAN資料與接收到具有相同ID的前一筆CAN資料之間的時間間隔
第八欄位 0-1 Bytes 用於表示該筆CAN資料之資料段與具有相同ID的前一筆CAN資料之資料段相比,有變更的位元組之位置
第九欄位 0-8 Bytes 用於記錄該筆CAN資料之資料段與具有相同ID的前一筆CAN資料之資料段相比,有變更的部分資料段
在某些實施例中,第六欄位之值與第七欄位之值兩者之間的對應關係如下表三所示。從下表可推知,若該筆CAN資料與接收到具有相同ID的前一筆CAN資料之間的時間間隔值在255毫秒(含)以內,則第七欄位之長度為1 Byte,故第六欄位之值為「01」;若該時間間隔值超過255毫秒,而又在1分5秒又535毫秒(含)以內,則第七欄位之長度為2 Bytes,故第六欄位之值為「10」;若該時間間隔值超過1分5秒又535毫秒,而又在4小時39分37秒又215毫秒(含)以內,則第七欄位之長度為3 Bytes,故第六欄位之值為「11」。
[表三]
Figure 109105627-A0305-02-0016-1
舉例而言,在12:00:00:000(即十二點整)所接收到的一筆CAN資料之資料段為「00 11 22 33 44 55 66 77」,過了二十毫秒後於12:00:00:020接收到具有相同ID之下一筆CAN資料之資料段為「00 11 20 33 44 15 66 77」。此時,寫入對應到該第一計數器之值遞增檔案之第五欄位之值為「1」,表示12:00:00:020所接收到的CAN資料之資料段與12:00:00:000所接收到的CAN資料之資料段相比,確實有變更;寫入對應到該第一計數器之值遞增檔案之第七欄位之值為「20」,表示接收到該兩筆CAN資料之間的時間間隔為20毫秒;寫入對應到該第一計數器之值遞增檔案之第六欄位之值為「01」,因為「20」轉換為十六進位表示後為「F4」,長度為1byte,再將「1」轉換為二進位表示即為「01」;寫入對應到該第一計數器之值遞增檔案之第八欄位之值為「00100100」,由左而右數來第三位與第六位為「1」,表示12:00:00:020所接收到的CAN資料之資料段與12:00:00:000所接收到的CAN資料之資料段相比,有變更的位元組之位置係在由左而右數來第三位(12:00:00:000時之值為22,12:00:00:020時之值為20)與第六位(12:00:00:000時之值為55,12:00:00:020時之值為15);寫入對應到該第一計數器之值之遞增檔案之第九欄位之值為「20 15」,表示相較於12:00:00:000時所接收到的CAN資料之資料段,12:00:00:020所接收到的CAN資料之資料段有變更的部分資料段,由左而右為「20 15」。
以另一個例子而言,在12:00:00:000(即十二點整)所接收到的一筆CAN資料之資料段為「00 11 22 33 44 55 66 77」,過了二十一毫秒後於12:00:00:021接收到具有相同ID之下一筆CAN資料之資料段並無變更,仍然為「00 11 22 33 44 55 66 77」。此時,寫入對應到該第一計數器之值之遞增檔案之第五欄位之值為「0」,表示12:00:00:021所接收到的CAN資料之資料段與12:00:00:000所接收到的CAN資料之資料段相比,並無變更;寫入對應到該第一計數器之值之遞增檔案之第七欄位之值為「21」,表示接收到該兩筆CAN資料之間的時間間隔為21毫秒;寫入對應到該第一計數器之值之遞增檔案之第六欄位之值為「01」,因為「21」轉換為十六進位表示後為「F5」,長度為1byte,再將1轉換為二進位即為「01」;由於資料段並無變更,寫入對應到該第一計數器之值遞增檔案之第八欄位與第九欄位皆毋須存在,因此節省了儲存空間。
回到第2B圖。根據本發明之實施例,若於第2B圖之區塊208中未存在對應到該第一計數器之值之遞增檔案則進入第2B圖之區塊211;於第2B圖之區塊211,判斷當下距離寫入對應到該第一計數器之值之原始檔案是否已超出一指定期間。若是,即進入第2B圖之區塊213;若否,則進入第2C圖之區塊212。在較佳之實施例中,該指定期間為五分鐘。
根據本發明之實施例,於第2C圖之區塊212,得出該筆CAN資料與具有相同ID的前一筆CAN資料兩者之間的資料變化資訊,並將該變化資訊依第二資料結構累加地寫入對應到該第一計數器之值之遞增檔案。寫入對應到該第一計數器之值之遞增檔案完成後,進入第2B圖之區塊214。
根據本發明之實施例,於第2B圖之區塊213,將第一計數器之值加1,然後進入第2B圖之區塊207。
根據本發明之實施例,於第2B圖之區塊214,根據控制器101是否接收到結束紀錄CAN資料之指令,判斷是否結束紀錄CAN資料。若是,即進入第2B圖之區塊215;若否,則回到區塊第2A圖之202。
根據本發明之實施例,第4圖描繪了某種一系列具有相同ID之CAN資料被接收的一種典型的狀況。其中,該橫軸代表一時間維度,該橫軸下方的P則代表一指定期間;該橫軸最左方之起始時間點T START相當於在第2A圖中進入區塊201之時間點,由左而右依序出現的T 1、T 2、T 3則分別代表於T START之後所接收到的第一筆CAN資料、第二筆CAN資料與第三筆CAN資料之時間點,T k、T k+1、T k+2則分別代表T START之後所接收到第k筆CAN資料、第k+1筆CAN資料與第k+2筆CAN資料之時間點,T 3與T k之間的「…」則代表在T 3與T k之間接收到各筆CAN資料之時間點,T k+2之後的「…」則代表在T k+2之後接收到各筆CAN資料之時間點。其中,在時間點T k所接收到的第k筆CAN資料則係自時間點T 1起算超出指定期間P(即時間點T 1+P)之後首先接收到的一筆CAN資料。值得注意的是,為說明簡便起見,在此係假設該橫軸上任一時間點所接收到的各筆CAN資料皆具有相同之ID,但是並非限定於此。此外,該橫軸上的T 1+P與T k+P僅分別代表一具有指標作用之時間點,於該等時間點T 1+P與T k+P當下不一定有接收到CAN資料。
以下內容將以第4圖所描繪之狀況為例,說明該圖中的各個時間點接收到CAN資料後,對照第2A~2C圖(即CAN資料壓縮方法200之流程圖)所實際進行之細部流程。請在閱讀以下內容時,將第2A~2C圖與第4圖互相對照參閱。
首先,於第4圖中之時間點T START,對照第2A圖進入區塊201,並隨即進入區塊202;於第2A圖之區塊202,開始從CAN匯流排接收資料,直到在第4圖之時間點T 1接收到第一筆CAN資料。
當在第4圖之時間點T 1接收到第一筆CAN資料時,對照第2A圖進入區塊203;於第2A圖之區塊203,由於當下尚未存在以該第一筆CAN資料之ID為名稱所建立之目錄,因此依序進入第2A圖之區塊204與第2A圖之區塊205,即以該第一筆CAN資料之ID(例如為#id1)為名稱建立一目錄,並將一第一計數器之值設為0,之後進入第2B圖之區塊206;於第2B圖之區塊206,由於尚未存在對應到該第一計數器之值(當下第一計數器之值為0)之原始檔案,故進入第2B圖之區塊207;於第2B圖之區塊207,以第一計數器之值(當下第一計數器之值為0)為檔案名稱建立一第一原始檔案(亦即該第一原始檔案之檔案名稱為「0」),並將該第一筆CAN資料寫入該第一原始檔案;寫入完成後進入第2B圖之區塊214,由於尚未結束紀錄,故隨即回到區塊第2A圖之202;於第2A圖之區塊202,繼續從CAN匯流排接收資料,直到在第4圖之時間點T 2接收到第二筆CAN資料。
當在第4圖之時間點T 2接收到第二筆CAN資料時,對照第2A圖進入區塊203;於第2A圖之區塊203,由於第二筆CAN資料的ID與第一筆CAN資料的ID相同(例如為#id1),並且在時間點T 1已建立過名稱例如為#id1之目錄,故跳過第2A圖之區塊204與區塊205,直接進入第2B圖之區塊206;於第2B圖之區塊206,由於在時間點T 1已建立過第一原始檔案,故進入第2B圖之區塊208;於第2B圖之區塊208,由於至此才接收到第二筆CAN資料,目前尚未存在對應到該第一計數器之值(當下第一計數器之值為0)之第一遞增檔案,故進入第2C圖之區塊209;於第2C圖之區塊209,由於時間點T 2距離時間點T 1尚未超過指定期間P,故進入第2C圖之區塊210;於第2C圖之區塊210,得出該第二筆CAN資料與第一筆CAN資料兩者之間的資料變化資訊,以第一計數器之值(當下第一計數器之值為0)再加上字元「_」為檔案名稱建立一第一遞增檔案(亦即該第一遞增檔案之檔案名稱為「0_」),並將該變化資訊寫入該第一遞增檔案;寫入完成後進入第2B圖之區塊214,由於尚未結束紀錄,故隨即回到區塊第2A圖之202;於第2A圖之區塊202,繼續從CAN匯流排接收資料,直到在第4圖之時間點T 3接收到第三筆CAN資料。
當在第4圖之時間點T 3接收到第三筆CAN資料時,對照第2A圖進入區塊203;於第2A圖之區塊203,由於第三筆CAN資料的ID與第一筆CAN資料的ID相同(例如為#id1),並且在時間點T 1已建立過名稱例如為#id1之目錄,故跳過第2A圖之區塊204與區塊205,直接進入第2B圖之區塊206;於第2B圖之區塊206,由於在時間點T 1已建立過第一原始檔案,故進入第2B圖之區塊208;於第2B圖之區塊208,由於在時間點T 2已建立過第一遞增檔案,故進入第2B圖之區塊211;於第2B圖之區塊211,由於時間點T 3距離時間點T 1尚未超過指定期間P,故進入第2C圖之區塊212;於第2C圖之區塊212,得出第三筆CAN資料與第二筆CAN資料兩者之間的資料變化資訊,並將該變化資訊累加地寫入第一遞增檔案;寫入完成後進入第2B圖之區塊214,由於尚未結束紀錄,故又隨即回到區塊第2A圖之202;於第2A圖之區塊202,繼續從CAN匯流排接收資料,直到接收到下一筆CAN資料。
在第4圖之時間點T 3之後,從時間點T 1起算未超過指定期間P的任一時間點接收到一筆CAN資料時(亦即在時間點T 1+P之前),對照第2A圖進入區塊203;於第2A圖之區塊203,由於該筆CAN資料的ID與第一筆CAN資料的ID相同(例如為#id1),並且在時間點T 1已建立過目錄,故跳過第2A圖之區塊204與區塊205,直接進入第2B圖之區塊206;於第2B圖之區塊206,由於在時間點T 1已建立過第一原始檔案,故進入第2B圖之區塊208;於第2B圖之區塊208,由於在時間點T 2已建立過第一遞增檔案,故進入第2B圖之區塊211;於第2B圖之區塊211,由於當下時間點距離時間點T 1尚未超過指定期間P,故進入第2C圖之區塊212;於第2C圖之區塊212,得出各該筆CAN資料與前一筆CAN資料兩者之間的資料變化資訊,並將該變化資訊累加地寫入第一遞增檔案;寫入完成後進入第2B圖之區塊214,由於尚未結束紀錄,故隨即回到第2A圖之區塊202;於第2A圖之區塊202,繼續從CAN匯流排接收資料;不斷重複本段落所述之流程,直到從第4圖之時間點T 1起算超過指定期間P(亦即在時間點T 1+P之後),於時間點T k收到第k筆CAN資料。
當在第4圖之時間點T k接收到第k筆CAN資料時,對照第2A圖進入區塊203;於第2A圖之區塊203,由於第k筆CAN資料的ID與第一筆CAN資料的ID相同(例如為#id1),並且在時間點T 1已建立過名稱例如為#id1之目錄,故跳過第2A圖之區塊204與區塊205,直接進入第2B圖之區塊206;於第2B圖之區塊206,由於在時間點T 1已建立過第一原始檔案,故進入第2B圖之區塊208;於第2B圖之區塊208,由於在時間點T 2已建立過第一遞增檔案,故進入第2B圖之區塊211;於第2B圖之區塊211,由於時間點T k距離時間點T 1已超過P,故進入第2B圖之區塊213;於第2B圖之區塊213,將第一計數器之值加1,進入第2B圖之區塊207;於第2B圖之區塊207,以第一計數器之值(當下第一計數器之值為1)為檔案名稱建立一第二原始檔案(亦即該第二原始檔案之檔案名稱為「1」)並將第k筆CAN資料寫入該第二原始檔案;寫入完成後進入第2B圖之區塊214,由於尚未結束紀錄,故隨即回到第2A圖之區塊202;於第2A圖之區塊202,繼續從CAN匯流排接收資料,直到在第4圖之時間點T k+1接收到第k+1筆CAN資料。
當在第4圖之時間點T k+1接收到第k+1筆CAN資料時,對照第2A圖進入區塊203;於第2A圖之區塊203,由於第k+1筆CAN資料的ID與第一筆CAN資料的ID相同(例如為#id1),並且在時間點T 1已建立過目錄,故跳過第2A圖之區塊204與區塊205,直接進入第2B圖之區塊206;於第2B圖之區塊206,由於在時間點T k已建立過第二原始檔案,故進入第2B圖之區塊208;於第2B圖之區塊208,由於尚未存在對應到該第一計數器之值(當下第一計數器之值為1)之第二遞增檔案,故進入第2C圖之區塊209;於第2C圖之區塊209,由於時間點T k+1距離時間點T k尚未超過制定期間P,故進入第2C圖之區塊210;於第2C圖之區塊210,得出該第k+1筆CAN資料與第k筆CAN資料兩者之間的資料變化資訊,以第一計數器之值(當下第一計數器之值為1)再加上字元「_」為檔案名稱建立一第二遞增檔案(亦即該第二遞增檔案之檔案名稱為「1_」),並將該變化資訊寫入該第二遞增檔案;寫入完成後進入第2B圖之區塊214,由於尚未結束紀錄,故隨即回到第2A圖之區塊202;於第2A圖之區塊202,繼續從CAN匯流排接收資料,直到在第4圖之時間點T k+2接收到第k+2筆CAN資料。
當在第4圖之時間點T k+2接收到第k+2筆CAN資料時,對照第2A圖進入區塊203;於第2A圖之區塊203,由於第k+2筆CAN資料的ID與第一筆CAN資料的ID相同(例如為#id1),並且在時間點T 1已建立過目錄,故跳過第2A圖之區塊204與區塊205,直接進入第2B圖之區塊206;於第2B圖之區塊206,由於在時間點T k已建立過第二原始檔案,故進入第2B圖之區塊208;於第2B圖之區塊208,由於在時間點T k+1已建立過第二遞增檔案,故進入第2B圖之區塊211;於第2B圖之區塊211,由於時間點T k+2距離時間點T k尚未超過指定期間P,故進入第2C圖之區塊212;於第2C圖之區塊212,得出該第k+2筆CAN資料與第k+1筆CAN資料兩者之間的資料變化資訊,並將該變化資訊累加地寫入第二遞增檔案;寫入完成後進入第2B圖之區塊214,由於尚未結束紀錄,故隨即回到第2A圖之區塊202;於第2A圖之區塊202,繼續從CAN匯流排接收資料;不斷重複本段落所述之流程,直到從第4圖之時間點T k起算超過P(即時間點在T k+P之後),然後又再收到一筆CAN資料。
依此類推,在第4圖之T k+P之後接收到每一筆CAN資料的處理方式,作法亦參考前述內容如法炮製地建立與寫入一組組的原始檔案與遞增檔案,直到接收到結束紀錄CAN資料之指令。
根據本發明之實施例,第5A、5B圖係一種CAN資料解壓縮方法500之流程圖,包括501-513等區塊,每一區塊代表一實施步驟或一判斷條件。
根據本發明之實施例,第5A圖之區塊501代表開始讀取CAN資料之指令被觸發,隨即進入第5A圖之區塊502。
根據本發明之實施例,於第5A圖之區塊502,若尚未存在一目標ID,從所有目錄之ID清單中擇其一作為該目標ID,讀取以該目標ID為名稱之目錄,然後進入第5A圖之區塊503;若已存在一目標ID,則直接讀取以該目標ID為名稱之目錄,然後進入第5A圖之區塊503。
根據本發明之實施例,於第5A圖之區塊503,將該目標ID所對應到的第二計數器之值設為0,然後進入第5A圖之區塊504。
根據本發明之實施例,於第5A圖之區塊504,判斷是否存在對應到該第二計數器之值之原始檔案。若是,即進入第5A圖之區塊505;若否,則表示以該目標ID為名稱之目錄下的所有原始檔案或遞增檔案已被讀取完畢,進入第5A圖之區塊511。
根據本發明之實施例,於第5A圖之區塊505,讀取對應到該第二計數器之值之原始檔案,利用其中之第一欄位 (以下稱「第一CRC欄位」)檢驗資料正確性。若該對應到該第二計數器之值之原始檔案之第一CRC欄位檢驗結果為正確,即進入第5B圖之區塊506;若該對應到該第二計數器之值之原始檔案之第一CRC欄位檢驗結果不正確,則進入第5B圖之區塊510。
根據本發明之實施例,於第5B圖之區塊506,擷取對應到該第二計數器之值之原始檔案的內容,然後進入第5B圖之區塊507。
根據本發明之實施例,於第5B圖之區塊507,判斷是否存在對應到該第二計數器之值遞增檔案。若是,即進入第5B圖之區塊508;若否,則進入第5B圖之區塊510。
根據本發明之實施例,於第5B圖之區塊508,擷取對應到該第二計數器之值之遞增檔案中之第四欄位 (以下稱「第二CRC欄位」)檢驗結果為正確的部分內容。具體而言,例如該對應到該第二計數器之值遞增檔案具有五行資料,每行資料各自代表某一時間點所接收到的CAN資料與前一時間點所接收到的CAN資料兩者之間的資料變化資訊。若其中第一行至第三行資料之第二CRC欄位檢驗結果為正確,第四行資料之第二CRC欄位檢驗結果不正確,則僅擷取該對應到該第二計數器之值遞增檔案之第一行至第三行資料的內容,而不擷取第四行之後的資料。擷取內容完畢後,進入第5B圖之區塊509。
根據本發明之實施例,於第5B圖之區塊509,基於在第5B圖之區塊506與區塊508所擷取之內容,透過一雜湊表(hash table)演算法計算並還原各時間點接收到之CAN資料。然後,進入第5B圖之區塊510。
根據本發明之實施例,於第5B圖之區塊510,將第二計數器之值加1,然後進入第5A圖之區塊504。
根據本發明之實施例,於第5A圖之區塊511,判斷是否存在其他尚未被讀取之目錄。若是,即進入第5A圖之區塊512;若否,則進入第5A圖之區塊513。
根據本發明之實施例,於第5A圖之區塊512,將該目標ID更新為某一個尚未被讀取之目錄的名稱,然後進入第5A圖之區塊502。
下列表四展示在本發明之一實施例中,運用CAN資料壓縮方法200對一紀錄長度為56分03秒的CAN檔案進行壓縮之效果。如下表所示,運用本發明揭露之CAN資料壓縮方法200可將該CAN檔案之檔案大小縮小至壓縮前的約15.5%。若再搭配使用7-Zip對採用本發明揭露之壓縮方法壓縮後的檔案進行句法壓縮,則更可將該CAN檔案之檔案大小縮小至壓縮前的約3.5%。 [表四]
內容 檔案大小(Byte數) 相較於壓縮前的檔案佔比(%)
壓縮前的檔案 195,121,152 100
僅採用7-Zip 21,146,132 10.8374350
僅採用本發明之壓縮方法 30,279,555 15.5183355
採用本發明之壓縮方法再搭配使用7-Zip 6,803,662 3.4868910
在本說明書中以及申請專利範圍中的序號,例如「第一」、「第二」等等,僅係為了方便說明,彼此之間並沒有順序上的先後關係。
以上段落使用多種層面描述。顯然的,本文的教示可以多種方式實現,而在範例中揭露之任何特定架構或功能僅為一代表性之狀況。根據本文之教示,任何熟知此技藝之人士應理解在本文揭露之各層面可獨立實作或兩種以上之層面可以合併實作。
雖然本揭露已以實施例揭露如上,然其並非用以限定本揭露,任何熟習此技藝者,在不脫離本揭露之精神和範圍內,當可作些許之更動與潤飾,因此發明之保護範圍當視後附之申請專利範圍所界定者為準。
100:CAN資料壓縮裝置 101:控制器 102:CAN匯流排 110:CAN資料解壓縮裝置 111:控制器 200:CAN資料壓縮方法 201-215:流程圖之區塊 300:目錄格式 301:開始紀錄時間 302:頻道序號 303:CAN ID 500:CAN資料解壓縮方法 501-513:流程圖之區塊
第1圖係一種CAN資料壓縮裝置100與一種CAN資料解壓縮裝置110之示意圖。 第2A~2C圖係一種CAN資料壓縮方法200之流程圖。 第3圖係於區塊204所建立之目錄的目錄格式300之示意圖。 第4圖描繪了一系列具有相同ID之CAN資料被接收的一種典型的狀況。 第5A、5B圖係一種CAN資料解壓縮方法500之流程圖。
200:CAN資料壓縮方法
201-215:流程圖之區塊

Claims (10)

  1. 一種控制器區域網路(Controller Area Network,CAN)資料壓縮方法,包括:按時間先後從CAN匯流排逐筆接收CAN資料;將接收到之第一筆該CAN資料,依一第一資料結構寫入至一第一原始檔案;對於在接收到該第一筆該CAN資料後之一指定期間內所接收到與該第一筆該CAN資料具有相同識別碼(ID)的每一筆該CAN資料,得出其與具有該相同ID的前一筆該CAN資料兩者之間的資料變化資訊,並將該變化資訊依一第二資料結構寫入至一第一遞增檔案。
  2. 如請求項1所述之控制器區域網路資料壓縮方法,更包括:對於在接收到該第一筆該CAN資料後超出該指定期間所接收到與該第一筆該CAN資料具有該相同ID的另一第一筆該CAN資料,依該第一資料結構寫入至一第二原始檔案;對於在接收到該另一第一筆該CAN資料後之該指定期間內所接收到與該第一筆該CAN資料具有該相同ID的每一筆該CAN資料,得出其與具有該相同ID的前一筆該CAN資料兩者之間的資料變化資訊,並將該變化資訊依該第二資料結構寫入至一第二遞增檔案。
  3. 如請求項2所述之控制器區域網路資料壓縮方法,更包括:將該第一原始檔案、該第一遞增檔案、該第二原始檔案、該 第二遞增檔案組合成為與該相同ID相關聯的一目錄。
  4. 如請求項1、請求項2或請求項3任一項所述之控制器區域網路資料壓縮方法,其中該第一資料結構包括:一第一欄位,作為循環冗餘校驗(Cyclic redundancy check,CRC)欄位,用於確保資料正確性;一第二欄位,作為CAN時間戳,用於紀錄該接收到第一筆該CAN資料資料之時間;一第三欄位,作為CAN資料段,用於紀錄第一筆該CAN資料之資料段。
  5. 如請求項1、請求項2或請求項3任一項所述之控制器區域網路資料壓縮方法,其中該第二資料結構包括:一第四欄位,作為CRC欄位,用於確保資料正確性;一第五欄位,用於表示每一筆該CAN資料之CAN資料段與具有相同ID的前一筆該CAN資料之資料段相比,是否有變更;一第六欄位,用於表示接收到每一筆該CAN資料與接收到具有相同ID的前一筆該CAN資料之間的時間間隔之位元組數;一第七欄位,用於記錄接收到每一筆該CAN資料與接收到具有相同ID的前一筆該CAN資料之間的時間間隔;一第八欄位,用於表示每一筆該CAN資料之資料段與具有相同ID的前一筆該CAN資料之資料段相比,有變更的位元組之位置;一第九欄位,用於記錄每一筆該CAN資料之資料段與具有相同ID的前一筆該CAN資料之資料段相比,有變更的部分資料段。
  6. 一種控制器區域網路資料解壓縮方法,包括: 讀取藉由請求項1所述之方法而得的該第一原始檔案,並擷取其內容資料,以還原對應於該第一遞增檔案之CAN資料內容;若檢測到存在有藉由請求項1所述之方法而得的該第一遞增檔案,則擷取其內容;利用該第一遞增檔案內的該資料變化資訊,配合該第一原始檔案的內容資料,以還原對應於該第一遞增檔案之CAN資料內容。
  7. 如請求項6所述之控制器區域網路資料解壓縮方法,其中,該第一原始檔案的該第一資料結構包括有一第一循環冗餘校驗(CRC)欄位;讀取該第一原始檔案時,更利用該第一CRC欄位檢驗資料正確性。
  8. 如請求項6所述之控制器區域網路資料解壓縮方法,其中,該第一遞增檔案的該第二資料結構包括有一第二循環冗餘校驗(CRC)欄位;讀取該第一遞增檔案時,利用該第二CRC欄位檢驗資料正確性。
  9. 一種控制器區域網路資料壓縮裝置,包括:一第一控制器,運行一程式以執行請求項1所述之控制器區域網路資料壓縮方法。
  10. 一種控制器區域網路資料解壓縮裝置,包括:一第二控制器,運行一程式以執行請求項6所述之控制器區域網路資料解壓縮方法。
TW109105627A 2020-02-21 2020-02-21 控制器區域網路資料壓縮/解壓縮之方法與裝置 TWI718008B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
TW109105627A TWI718008B (zh) 2020-02-21 2020-02-21 控制器區域網路資料壓縮/解壓縮之方法與裝置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW109105627A TWI718008B (zh) 2020-02-21 2020-02-21 控制器區域網路資料壓縮/解壓縮之方法與裝置

Publications (2)

Publication Number Publication Date
TWI718008B true TWI718008B (zh) 2021-02-01
TW202133589A TW202133589A (zh) 2021-09-01

Family

ID=75745701

Family Applications (1)

Application Number Title Priority Date Filing Date
TW109105627A TWI718008B (zh) 2020-02-21 2020-02-21 控制器區域網路資料壓縮/解壓縮之方法與裝置

Country Status (1)

Country Link
TW (1) TWI718008B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150033016A1 (en) * 2013-07-23 2015-01-29 Battelle Memorial Institute Systems and methods for securing real-time messages
TW201605182A (zh) * 2014-07-28 2016-02-01 麥勒普斯股份有限公司 收發報機模組以及用於在一控制器區域網路匯流排(CAN bus)上啟動及設置該收發報機模組的存取模組
US20160344552A1 (en) * 2015-05-22 2016-11-24 Nxp B.V. Configurable cryptographic controller area network (can) device
EP3148154A1 (en) * 2015-09-28 2017-03-29 Nxp B.V. Controller area network (can) device and method for controlling can traffic
WO2018214487A1 (zh) * 2017-05-25 2018-11-29 华为技术有限公司 一种控制器区域网总线安全通信方法、装置及系统
CN108965218A (zh) * 2017-05-25 2018-12-07 华为技术有限公司 一种控制器区域网总线安全通信方法、装置及系统
US20190217869A1 (en) * 2018-01-12 2019-07-18 Panasonic Intellectual Property Management Co., Ltd. Control apparatus, control method, and program

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150033016A1 (en) * 2013-07-23 2015-01-29 Battelle Memorial Institute Systems and methods for securing real-time messages
TW201605182A (zh) * 2014-07-28 2016-02-01 麥勒普斯股份有限公司 收發報機模組以及用於在一控制器區域網路匯流排(CAN bus)上啟動及設置該收發報機模組的存取模組
US20160344552A1 (en) * 2015-05-22 2016-11-24 Nxp B.V. Configurable cryptographic controller area network (can) device
EP3148154A1 (en) * 2015-09-28 2017-03-29 Nxp B.V. Controller area network (can) device and method for controlling can traffic
WO2018214487A1 (zh) * 2017-05-25 2018-11-29 华为技术有限公司 一种控制器区域网总线安全通信方法、装置及系统
CN108965218A (zh) * 2017-05-25 2018-12-07 华为技术有限公司 一种控制器区域网总线安全通信方法、装置及系统
US20190217869A1 (en) * 2018-01-12 2019-07-18 Panasonic Intellectual Property Management Co., Ltd. Control apparatus, control method, and program

Also Published As

Publication number Publication date
TW202133589A (zh) 2021-09-01

Similar Documents

Publication Publication Date Title
US20050071052A1 (en) Apparatus, system, and method for exchanging vehicle identification data
DE112010003503T5 (de) Vorrichtung und verfahren zum sicherstellen derintegrität von echtzeit-fahrzeugdaten und entsprechendesfahrzeugblackboxsystem
CN111694341A (zh) 一种故障数据存储方法、装置、车载设备及存储介质
US20220286277A1 (en) Unmanned driving information storage and playback method, device and storage medium
WO2022078353A1 (zh) 车辆行使状态判断方法、装置、计算机设备及存储介质
TWI718008B (zh) 控制器區域網路資料壓縮/解壓縮之方法與裝置
EP4292837A1 (en) Tire pressure sensor information processing method and apparatus, and device
CN114355789A (zh) 一种基于路试数据的仿真场景重构方法、系统及计算机可读存储介质
CN113037750B (zh) 一种车辆检测数据增强训练方法、系统、车辆及存储介质
CN111161448B (zh) 数据存储方法、数据校验方法、装置、设备及存储介质
CN114550342B (zh) 基于黑匣子的无人车事故责任判定方法、装置及电子设备
CN116506702A (zh) 一种数据处理和同步方法、系统、设备及存储介质
CN111638874B (zh) 基于Matlab软件的汽车控制器编码信息写入和读取方法
US20220303362A1 (en) Method for compressing can-bus data
CN117762695B (zh) 对Hyper-V的无代理CDP方法、系统及存储介质
US20220101660A1 (en) Improvements in or relating to storage of accelerometer data
KR20180009900A (ko) 차량 데이터 처리 방법
Yang ACRE: An Advanced CAN Signal Reverse Engineering Scheme
CN113343448B (zh) 控制效果评估方法、装置、电子设备及存储介质
Yan-Xun et al. Automotive Ethernet-Based Black Box System
CN115690943A (zh) 一种大车行驶记录仪数据深度恢复方法、装置及存储介质
CN115586991A (zh) 一种新能源汽车t-box数据的恢复方法和装置
CN117194114A (zh) 一种基于云电脑的无人机远传数据备份方法、系统和介质
CN117456635A (zh) 数据采集上传系统及其方法
Tan et al. Design of Intelligent Detection and Alarm System for Accident Anti-collision Based on ARM Technology