大地资源网视频在线观看新浪,日本春药精油按摩系列,成人av骚妻潮喷,国产xxxx搡xxxxx搡麻豆

您現在的位置:智能制造網>技術中心>如何簡單運用工具理解分析CAN數據流中的信號?

直播推薦

更多>

企業動態

更多>

推薦展會

更多>

如何簡單運用工具理解分析CAN數據流中的信號?

2025年06月16日 07:16:20人氣:4來源:廣州智維電子科技有限公司

對于僅偶爾分析CAN數據流中的部分信號的用戶來說,下載龐大復雜的分析軟件顯得有些麻煩,我們就此分享如何簡單地運用現有工具理解分析CAN信號,并且這對于希望深入了解CAN,以及信號如何通過CAN傳輸的學習者,頗有益處。

在過去幾年的合作中,有不少客戶表示需要分析SAE J1939數據流中比較有限的一些CAN信號。盡管很多CAN分析軟件能提供很多強大的功能,但有時我們還是需要通過現成工具來表述一個信號。在本文,我們將介紹如何通過Microsoft Excel、Notepad這些大多數人都有的工具和Kvaser網站上的免費軟件CanKing,來捕捉和分析CAN框架內的一個CAN信號。這對于僅一次性需要此類工具的學生,或是一個小公司的工程師,他們僅需要了解CAN總線上的一個信號,這種方法是有意義的。


通過使用這種方法初步分析信號,工程師或學習者能更了解CAN和J1939的內部工作原理,更好地理解.dbc文件,以及其他應用程序如何使用.dbc文件。雖然本文中以J1939信號為例,但這里使用的方法適用于任何基于信號的CAN協議,包括CANOpen、RVC、NMEA-2000等等。雖然這里使用的是Excel和Notepad,但其他Spreadsheet和文本編輯器程序可以同樣完成此類任務


本次分享的目的并不是避免使用眾多功能強大的CAN分析工具,這類工具都支持高級協議,例如J1939和CANOpen,具備的圖像和信號分析功能,包括分析巨大數據量的能力。本文主要是介紹一種方法,展示僅通過一些桌面現有的工具,工程師就能獲得他們想要的東西。該方法有很大的局限性,遠不及CAN專用軟件。在變長診斷報文、Transport Protocol幀和多路復用數據幀的情況下,這些限制將阻止或讓信號分析極為復雜化。在這些情況下,用戶都需要一個專用的CAN分析包,或通過此類專用軟件,以便正確地分析數據流中的信號。


應用此方法的必要條件:

??能夠以十六進制或十進制格式獲取原始CAN數據,或者能夠訪問需要分析的原始CAN數據,并能夠將該數據轉換到.txt文件中。這將通過Kvaser的CanKing軟件顯示,該軟件可免費下載。

??具備Microsoft Excel或類似軟件,對如何在spread sheet軟件中使用篩選功能有基本了解。

??了解你要查看什么數據,或者有一個.dbc文件或一個限定說明,顯示在CAN幀中何處查找你需要的信號,并知道該信號在報文中是如何格式化的。


以下是具體操作步驟:

1??通過CanKing獲取數據,并用Notepad保存到一個文本文件中

2??打開Excel,把數據導入Excel

3??將數據格式轉化為不同的列

4??篩選數據以找到你需要的CAN幀

5??分離要分析的數據字節

6??將數據轉換為圖形格式

7??創建一個圖表來顯示你需要的信號

1.

通過CanKing獲取和保存數據

下載Kvaser CanKing和Windows驅動程序。可以使用任何Kvaser適配器,如Kvaser Leaf Light HS v2,Kvaser USBcan,或Kvaser Memorator來獲取數據以進行分析。通過CanKing,有很多方法可以做到這一點。如果要采集J1939數據,你需要 Select Formatters(選擇格式程序)對話框,并選擇 J1939 Formatter,方法是將此格式化程序放在對話框的 Active Formatters(活躍格式程序)部分,并勾選它旁邊的小方框。這會讓數據格式化,如圖2所示。當連接到CAN總線,能看到數據時,可以通過 Log To Text File (記錄到文本文件)窗口,來啟動和停止數據記錄,然后將文件保存到項目工作目錄中。
圖片

圖 1. 保存到文本文件

( Log to Text File – CanKing的一個對話框)


圖1顯示Kvaser CanKing的 Log To Text File 對話框,可讓用戶獲取所需要分析的數據。確認已連接到CAN總線,通過選擇Kvaser CanKing主窗口中的 Start Run 鍵,在CanKing中查看數據。CanKing的 Output Window 中將顯示你所需要獲取的數據。


當你通過一個文本編輯器查看數據,如NotePad,該數據將如下所示:

WinNo P PGN SA DA Flg Len D0...1...2...3...4...5...6..D7 Time Dir

CAN 1 6 0F009 0B->* 8 7D 7A 60 83 7D 4F 7D 7D 217.088350 R


CAN 1 3 0F004 00->* 8 60 7D 84 50 14 00 F0 84 217.093810 R


CAN 1 6 0F009 0B->* 8 7D 7A 60 83 7D 4F 7D 7D 217.097340 R


CAN 1 3 0F004 00->* 8 60 7D 84 50 14 00 F0 84 217.104820 R


CAN 1 6 0F009 0B->* 8 7D 7A 60 83 7D 4F 7D 7D 217.107600 R


CAN 1 6 0FEF1 31->* 8 F7 FF FF CF FF FF FF FF 217.111110 R


CAN 1 7 0FF05 8A->* 8 00 FF FF FF FF FF FF FF 217.113450 R


CAN 1 3 0F004 00->* 8 60 7D 84 54 14 00 F0 84 217.114870 R


CAN 1 6 0FEE0 27->* 8 FF FF FF FF AC A8 06 00 217.115440 R


CAN 1 7 0FEC3 27->* 8 FF FC FF FF FF FF FF FF 217.116020 R


CAN 1 6 0FF6F 8A->* 8 E2 14 E0 15 A0 12 FF 5E 217.116570 R


CAN 1 6 0F009 0B->* 8 7D 7A 60 83 7D 47 7D 7D 217.117580 R


CAN 1 3 0F004 00->* 8 60 7D 84 54 14 00 F0 84 217.126930 R


CAN 1 6 0F009 0B->* 8 7D 7A 60 83 7D 47 7D 7D 217.127770 R


CAN 1 6 0FF60 4D->* 8 00 00 00 FF FF FF FF FF 217.131710 R

圖 2. 通過CanKing獲取的范例 J1939 數據


在這個簡單的例子中,所有的CAN幀都有8個數據字節。我要分析的信號是一個10ms的周期性信號,并用圖表繪制幾秒鐘時長的數據。此時,你應該將要分析的數據流保存在電腦工作目錄中的一個.txt文件中。

2.

把數據導入Excel

這一步的目的是把數據導入Excel,然后就可以用篩選功能來處理它們,并分離出要分析的數據。如果其他電子表格程序具有類似于Excel的篩選器、函數和繪圖能力,也可以用于此任務。你可以自己決定選用其他的應用程序是否對你最合適,并找到類似的功能來完成此轉換。


以一個空白工作表打開Microsoft Excel,然后選擇 File, Open 和 Browse。在導航框的右下角,必須選擇 All Files (*.*)(所有文件),以打開.txt文件。搜索工作目錄,找到并選擇在上面的步驟1中創建的.txt文件。顯示屏將基本如下圖所示:

圖片

圖 3. 選擇一個.txt 文件以在Excel內打開


選擇在步驟1中創建的那個.txt文件并打開。

3.

將數據格式轉化為不同的列

當選擇了.txt文件并嘗試在Excel里打開它,你將看到圖4所示的Text Import Wizard(文本導入向導)。使用此文本導入向導,有多種方法將CAN數據導入Excel,其中許多方法在一定程度上都能起作用。無論采取哪種方法,你很有可能需要編輯數據和/或標題,以讓它們正確圖形化。


圖片

圖 4. 將文本導入向導


這個向導能幫助你快速地把.txt數據轉為Excel格式。根據下面步驟來轉換數據:


1??在Choose the file type that best describes your data(選擇的數據的文件類型)下面:選擇 Delimited(已定界限)。

2??在Start import at row (開始導入行)一行旁邊:選擇包含CAN數據的行;在我的這個范例中是第二行。有些數據監測器加上了眉頭,僅需濾掉這些眉頭,后面可以通過Excel再恢復眉頭。

3??點擊 Next >.

4??在 Delimiters 下面的第二個方框內選擇 Space.

5??點擊 Next >.

6??點擊 Finish.


現在應該有一個Excel工作表打開,并以多列顯示CAN幀,分別顯示標識符、Flag、DLC和數據字節,還有時間列和方向列。如果讓每列的標題位于數據上方,請確保列標題與數據正確對應。有時在轉換過程中,列標題會錯位1-2列。如果沒有保持列標題在數據上方,應該把它們加上。我使用的列標題是 Type, Ch, Pri, PGN, SA/DA, DLC, D1, D2, D3, D4, D5, D6, D7, D8, Time, 和 Dir。下面是添加列標題后,我的工作表的前幾行:

圖片

圖 5. 當前的工作表


我的數據僅包含8個字節的幀,因此所有數據都在我填寫的行標題下排列有序。如果你的數據中有一些幀帶有不同的DLC數據鏈路連接器,那么你的數據就不會顯示得這么整齊。不用擔心,因為你一次只繪制一個PGN,在這個水平上,一個給定的PGN有一個固定的DLC,幾乎總是8個字節。

4.

篩選數據,查找有意義的CAN幀

在這里,你有必要知道你需要查找的數據,以及這些數據在CAN幀中的位置。在J1939以及其他基于CAN的協議中,CAN幀的數據部分通常用于傳輸多個信號。不同的協議以不同的方式命名報文和信號。我將盡可能使用J1939術語,并盡量保持一致。在J1939通訊中,信號是對SP或可疑參數的非正式稱呼。要識別一個信號,可使用Suspect Parameter Number(可疑參數號),即SPN。一組信號構成一個Parameter Group(參數組),即PG,而一個PG由一個Parameter Group Number(參數組號) 標識,即PGN。在我們將要使用的示例中,一個PG將被放進一個CAN幀中。CAN幀并不總是如此,有時通過使用傳輸協議,一個PG在多個CAN幀之間傳輸,本文不會贅述,在之后的技術文章內會專門分享這部分內容。


在我的示例中,我們將分析一個名稱為Engine Speed( 發動機轉速)的信號。此信號的詳細信息可在SAE J1939DA 的數字附件(即Digital Annex)中看到。Engine Speed 標識為SPN 190,下面圖表顯示數字附件中的一些詳細信息:


圖片

圖表1. 從 SAE J1939DA 說明里獲取的信息


圖片

圖6. Excel 工作表,已選擇數據篩選,并顯示所有數據


如果未在Excel中使用過Filters (篩選),請單擊Excel頂部的Data tap,然后找到Filter。突出顯示數據的行(標題行),然后選擇篩選功能,你將看到工作表每一列的行都有小方框,每個方框里都有一個向下的箭頭。選擇PGN列上的箭頭,將看到一個方框,如圖7所示。


不要選擇Select All(全選框),然后只選擇你要篩選的報文,在本例中為0F004 。選擇OK,對要查看的數據進行篩選。現在工作表僅顯示你繪制圖表所需CAN幀 – 它們包含SPN 190,發動機轉速信息的報文。


圖片

圖 7. Excel 工作表

已選篩選功能,僅顯示 Engine Speed PGN

5.

剝離出需要分析的數據字節

我們的工作表僅顯示包含所需數據的CAN幀,所以現在該剝離出我們需要的信號。
圖片

圖 8


返回到表1,可以看到 Engine Speed 是在位置4和位置5的雙字節信號,或者以標題名表述,即D4列和D5列。由于這是雙字節信號,在對此數據進行任何運算之前,必須考慮字節順序。圖8顯示了我們篩選出的數據的一個截面,D4和D5以黃色突出顯示。只要看一下這些數據,就很容易看出字節順序。可以看到,有效字節在D4中,并且被首先傳輸。之所以知道這一點,是因為它是變化的字節,而且我們可以看到,當它變化時,它將D5推高了1。


如果我們查看圖8中的行數據,并看到 Engine Speed 作為單位數,則可以將發動機轉速的十六進制值寫為0x1466。現在已經從在CAN總線上采集的數據中剝離出PN 190。這已經顯示在D4和D5列中,即PGN 0x0F004或PGN 61444。


有些SPN小于一個字節,在某些情況下,它們與同一字節中的其他SPN組合在一起。如果這是我們需要的SPN,這將需要更多的Excel功能,如屏蔽和移位。工作表提供了許多數學函數,可通過許多個性化的方法應用到數據處理上。需要找到適合你的應用方法,來通過這些數學函數來獲取你繪圖需要的具體數據。

6.

將數據轉換為圖表模式

在繪制圖表之前,有關這個信號,還要考慮的只剩下分辨率和偏移量。Resolution (分辨率)是SAE J1939DA中使用的術語,是指要用于一個信號表述的比例因素,以可理解的方式顯示。如果你使用的是 Kvaser Database Editor 3 軟件,要從一個.dbc文件中提取此信息,使用的術語是 Factor 。圖表1顯示分辨率等于0.125rpm/位,偏移量等于零。按以下步驟,用傳輸的初始數據以RPM計算發動機轉速:


1??將兩個字節的SPN 190轉換為一個十進制數,如 0x1466 = 5,222。

2??這個數字乘以分辨率 – 或者我稱之為縮放比例: (5,222 bits) x (0.125 rpm/bit) = 652.75 rpm

3??加上偏移量,這里偏移量為零,所以結果值為652.75 rpm


利用工作表的強大功能,可以很容易地統計我們要繪制的所有信號樣本。首先要做的是在D5列的右側添加一個空白列。有了此列,就可以通過上述步驟,用它來計算RPM。如果不清楚這一點,你需要了解Excel的函數功能,方法是去一個空白單元格并鍵入“=”,然后單擊菜單欄的fx。我的數據在J和K列中,所以我要在標題行下新列的個小方框中輸入函數:


=HEX2DEC(CONCAT(K3,J3))*0.125


這一行將以正確的順序連接兩個字節的數據(首先是K3,然后是J3),從十六進制轉換為十進制,然后乘以縮放值,所有這些都在一個簡單的等式中。


通過使用Excel中的auto fill(自動填充)功能,把我們制作圖表所需要的所有數據填充到新列里,來執行此計算。如果之前沒有使用自動填充,則可去Excel的“幫助”菜單,了解如何使用。當通過自動填充填滿所有需要繪制的單元格后,在工作表中會有一個可繪制的 Engine Speed數字–工作表中的一列,供繪制使用。

7.

創建圖表顯示我們感興趣的數據

從這個意義上說,我們只需要使用Excel的繪圖函數來繪制一列數據。要繪制圖形的列是使用concatenate (CONCAT)函數和十六進制到十進制(HEX2DEC)轉換函數創建的列。你可以選擇在上面步驟6中創建的整個列,也可以只選擇其中的一部分。接下來,從菜單欄中選擇 Insert (插入),以Insert Line or Area Chart (插入折線圖或面積圖),這將為你選取的信號提供繪圖。以我的一部分數據生成的圖表如圖9所示。
圖片

圖 9. 我的數據所顯示的發動機轉速


我稱此圖為SPN 190,在通過Insert Line or Area Cart創建此圖之后,沒有做任何其他事情。此工作表應提供許多極為有效的函數和方法創建圖形,以多種不同的方式顯示不同的信號,這些步驟幫助工程師或技師,通過這些函數,分析CAN總線上的大多數數據,前提是他們有一個具體特性或.dbc文件,顯示數據的位置和格式。


本文旨在展示一種使用非專門軟件工具,來輔助理解CAN數據流中信號的方法。每一步驟都需要本文在此有限篇幅內所能說明內容以外的知識,但有意義的并不是各個步驟。無論是在此范例應用中介紹的方法還是使用其他軟件,我們希望通過此方法,能對想要更深入了解CAN以及信號如何通過CAN傳輸的讀者有所獲益。
關鍵詞:CAN連接器
全年征稿/資訊合作 聯系郵箱:1271141964@qq.com

免責聲明

  • 凡本網注明"來源:智能制造網"的所有作品,版權均屬于智能制造網,轉載請必須注明智能制造網,http://www.xashilian.com。違反者本網將追究相關法律責任。
  • 企業發布的公司新聞、技術文章、資料下載等內容,如涉及侵權、違規遭投訴的,一律由發布企業自行承擔責任,本網有權刪除內容并追溯責任。
  • 本網轉載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網站或個人從本網轉載時,必須保留本網注明的作品來源,并自負版權等法律責任。
  • 如涉及作品內容、版權等問題,請在作品發表之日起一周內與本網聯系,否則視為放棄相關權利。

<
更多 >

工控網機器人儀器儀表物聯網3D打印工業軟件金屬加工機械包裝機械印刷機械農業機械食品加工設備制藥設備倉儲物流環保設備造紙機械工程機械紡織機械化工設備電子加工設備水泥設備海洋水利裝備礦冶設備新能源設備服裝機械印染機械制鞋機械玻璃機械陶瓷設備橡塑設備船舶設備電子元器件電氣設備


我要投稿
  • 投稿請發送郵件至:(郵件標題請備注“投稿”)1271141964.qq.com
  • 聯系電話0571-89719789
工業4.0時代智能制造領域“互聯網+”服務平臺
智能制造網APP

功能豐富 實時交流

智能制造網小程序

訂閱獲取更多服務

微信公眾號

關注我們

抖音

智能制造網

抖音號:gkzhan

打開抖音 搜索頁掃一掃

視頻號

智能制造網

公眾號:智能制造網

打開微信掃碼關注視頻號

快手

智能制造網

快手ID:gkzhan2006

打開快手 掃一掃關注
意見反饋
關閉
企業未開通此功能
詳詢客服 : 0571-87858618
主站蜘蛛池模板: 长岭县| 十堰市| 芷江| 股票| 鞍山市| 寿光市| 和硕县| 兴城市| 七台河市| 钟祥市| 南澳县| 隆昌县| 肇庆市| 成都市| 色达县| 云浮市| 洞口县| 灵宝市| 平原县| 休宁县| 漳浦县| 塔河县| 青铜峡市| 石嘴山市| 泸州市| 嘉善县| 和林格尔县| 淳安县| 汽车| 宾阳县| 新巴尔虎左旗| 吴川市| 永嘉县| 韩城市| 兴山县| 大宁县| 侯马市| 武冈市| 积石山| 新兴县| 和平区|