• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于無(wú)鎖FIFO 隊(duì)列的CAN 總線數(shù)據(jù)采集系統(tǒng)

      2023-01-08 16:49:16郭健忠田瀟寒杜新寶胡文龍
      電子設(shè)計(jì)工程 2023年1期
      關(guān)鍵詞:實(shí)車數(shù)據(jù)量隊(duì)列

      郭健忠,田瀟寒,謝 斌,杜新寶,胡文龍

      (1.武漢科技大學(xué)汽車與交通工程學(xué)院,湖北武漢 430065;2.武漢保華顯示科技有限公司,湖北 武漢 430082)

      CAN(Controller Area Network)總線作為目前唯一具有國(guó)際標(biāo)準(zhǔn)的現(xiàn)場(chǎng)總線,其以數(shù)據(jù)在通信過(guò)程中突出的可靠性、實(shí)時(shí)性和靈活性,被作為車載控制器之間的主要通信網(wǎng)絡(luò)[1]。CAN 總線上的報(bào)文數(shù)據(jù)不僅記錄了汽車的實(shí)時(shí)運(yùn)行狀態(tài),而且可以反映出汽車行駛過(guò)程中的各種問(wèn)題[2]。采集和使用好實(shí)車數(shù)據(jù),可以給車輛檢測(cè)、故障診斷與汽車相關(guān)產(chǎn)品開(kāi)發(fā)等帶來(lái)正面影響,其中完整的實(shí)車數(shù)據(jù)可為車輛檢測(cè)與故障診斷提供全面客觀的數(shù)據(jù)依據(jù),同時(shí)運(yùn)用完整的實(shí)車數(shù)據(jù)可以在開(kāi)發(fā)過(guò)程中對(duì)車載電子嵌入式設(shè)備進(jìn)行多工況模擬測(cè)試[3],模擬汽車真實(shí)運(yùn)行環(huán)境,發(fā)現(xiàn)車載電子嵌入式設(shè)備開(kāi)發(fā)設(shè)計(jì)中的不足,提出改進(jìn)思路,形成分析-改進(jìn)-分析的閉環(huán)設(shè)計(jì)過(guò)程[4]。針對(duì)目前CAN 總線數(shù)據(jù)記錄儀在CAN 總線數(shù)據(jù)量大的應(yīng)用場(chǎng)景下存在數(shù)據(jù)丟幀,所采集的數(shù)據(jù)內(nèi)容無(wú)法為車輛檢測(cè)與車載電子嵌入式開(kāi)發(fā)提供完整可靠的數(shù)據(jù)支持,以及人工操作PC 搭配CAN 分析儀采集實(shí)車數(shù)據(jù)流程繁瑣的問(wèn)題[5-6],有必要設(shè)計(jì)一種可以完整采集總線實(shí)車數(shù)據(jù)、操作簡(jiǎn)單的CAN總線數(shù)據(jù)采集方案。

      1 系統(tǒng)方案整體設(shè)計(jì)

      1.1 系統(tǒng)主要功能

      文中所設(shè)計(jì)開(kāi)發(fā)的系統(tǒng)主要實(shí)現(xiàn)數(shù)據(jù)采集和數(shù)據(jù)存儲(chǔ)兩種功能[7]。

      1)CAN 總線報(bào)文數(shù)據(jù)采集:車載設(shè)備產(chǎn)生的數(shù)據(jù)信息通過(guò)CAN 總線進(jìn)行通信,設(shè)計(jì)的系統(tǒng)將采集監(jiān)聽(tīng)到的總線數(shù)據(jù)信息。

      2)采集數(shù)據(jù)固定格式存儲(chǔ):系統(tǒng)主控芯片將采集到的CAN 總線數(shù)據(jù)以既定格式寫入Micro SD 卡中進(jìn)行存儲(chǔ)。

      1.2 系統(tǒng)工作原理

      文中的CAN 總線數(shù)據(jù)采集系統(tǒng)以CAN 節(jié)點(diǎn)的形式加入車載CAN 總線中,并對(duì)總線中產(chǎn)生的CAN報(bào)文數(shù)據(jù)進(jìn)行監(jiān)聽(tīng)、采集與記錄。當(dāng)采集系統(tǒng)監(jiān)聽(tīng)到總線上有CAN 報(bào)文數(shù)據(jù)時(shí),自動(dòng)觸發(fā)系統(tǒng)中斷,并將實(shí)時(shí)采集的數(shù)據(jù)暫存在無(wú)鎖FIFO 隊(duì)列中,隊(duì)列依據(jù)數(shù)據(jù)量的多少自動(dòng)調(diào)節(jié)隊(duì)列大小,在保證總線數(shù)據(jù)存儲(chǔ)無(wú)誤的同時(shí)改變系統(tǒng)資源占用。系統(tǒng)控制單元將隊(duì)列內(nèi)的數(shù)據(jù)依次取出并將其以標(biāo)準(zhǔn)CANLog 格式存儲(chǔ)到Micro SD 卡中。最終從Micro SD 卡中導(dǎo)出相應(yīng)數(shù)據(jù),為車載電子嵌入式開(kāi)發(fā)、測(cè)試等提供實(shí)車數(shù)據(jù)支持。

      1.3 無(wú)鎖FIFO隊(duì)列算法

      無(wú)鎖FIFO 隊(duì)列作為一種受限制線性表,具有只允許在隊(duì)列的前端進(jìn)行刪除操作,而在隊(duì)列的后端進(jìn)行插入操作的特殊性。也是因?yàn)榇颂匦裕钤邕M(jìn)入隊(duì)列的元素才能最先從隊(duì)列中刪除,即先進(jìn)先出[8]。由于隊(duì)列只有一端可以進(jìn)行插入操作,故隊(duì)列中的每一個(gè)元素都是按照先后順序排列的。根據(jù)以上特點(diǎn),無(wú)鎖FIFO 隊(duì)列在實(shí)際應(yīng)用中常用于流量削峰、日志處理場(chǎng)等景中[9]。文中所設(shè)計(jì)的CAN 總線數(shù)據(jù)采集系統(tǒng)屬于單生產(chǎn)者單消費(fèi)者問(wèn)題,不涉及多生產(chǎn)者多消費(fèi)者情況,可避免多生產(chǎn)者多消費(fèi)者隊(duì)列中ABA 問(wèn)題帶來(lái)的不利影響[10]。

      2 系統(tǒng)硬件設(shè)計(jì)

      系統(tǒng)硬件主要由核心板和功能擴(kuò)展板兩部分組成,功能口展板搭載CAN 數(shù)據(jù)采集模塊與數(shù)據(jù)存儲(chǔ)模塊。CAN 總線數(shù)據(jù)采集系統(tǒng)工作時(shí)作為CAN 節(jié)點(diǎn)接入總線中,對(duì)車輛CAN 總線上的電子設(shè)備進(jìn)行監(jiān)聽(tīng)并采集存儲(chǔ)車輛在運(yùn)行過(guò)程中所產(chǎn)生的數(shù)據(jù)信息。系統(tǒng)中的Micro SD 卡可隨時(shí)取出,用于PC 端讀取數(shù)據(jù)。系統(tǒng)硬件總體設(shè)計(jì)框圖如圖1 所示。

      圖1 系統(tǒng)硬件總體設(shè)計(jì)框圖

      2.1 核心板主控芯片選型

      邏輯控制單元作為整個(gè)系統(tǒng)的核心,控制協(xié)調(diào)著系統(tǒng)中各個(gè)模塊之間的關(guān)系與系統(tǒng)運(yùn)行的穩(wěn)定。因此,選擇合適的主控芯片至關(guān)重要。通過(guò)對(duì)比調(diào)研,針對(duì)該系統(tǒng)功能明確、所用外設(shè)資源少的特點(diǎn),綜合各種因素,最終選擇STM32F103ZET6 芯片作為主控芯片,其性能可以保證邏輯程序的流暢性。該系列外設(shè)類型、數(shù)量豐富,具有良好的擴(kuò)展能力。其中,CAN 接口是ST 公司為汽車領(lǐng)域應(yīng)用專門增加的汽車總線接口,支持CAN2.0B 接口標(biāo)準(zhǔn)。

      2.2 功能擴(kuò)展板設(shè)計(jì)

      1)CAN 數(shù)據(jù)采集模塊

      主控設(shè)備采集到的CAN 信號(hào)通過(guò)外部CAN 收發(fā)器將電壓差動(dòng)信號(hào)轉(zhuǎn)化為數(shù)字信號(hào)之后,將CAN報(bào)文以數(shù)字信號(hào)的形式存在到指定的郵箱內(nèi)[11]。TJA1042 作為一款高速CAN 收發(fā)器,可為CAN 控制器提供差動(dòng)發(fā)送與接收功能,最高傳輸輸出達(dá)1 Mbit/s,完全符合ISO 11898-2 標(biāo)準(zhǔn)。

      根據(jù)CAN 節(jié)點(diǎn)組成關(guān)系,CAN 數(shù)據(jù)采集單元電路設(shè)計(jì)如圖2 所示。為保證通信過(guò)程中的信號(hào)穩(wěn)定性,采用在電路中加上較小電容的共模電感L3來(lái)抑制干擾。電阻R42、R43、R342為CAN 總線在高速通信時(shí)提供一個(gè)阻抗以避免回?fù)芨蓴_。

      圖2 CAN數(shù)據(jù)采集單元電路圖

      2)數(shù)據(jù)存儲(chǔ)模塊

      由于CAN 總線上數(shù)據(jù)傳輸量大、傳輸速率快,在對(duì)接收到的CAN 總線數(shù)據(jù)進(jìn)行存儲(chǔ)時(shí)采用Micro SD 卡作為外部設(shè)存儲(chǔ)設(shè)備,Micro SD 卡支持兩種讀寫方式,即SPI 模式與SDIO 模式。在SPI 模式下,主從機(jī)之間只有一條數(shù)據(jù)線用于數(shù)據(jù)傳輸,其傳輸速率為1~2 MB/s。但SDIO 模式允許四線的高速數(shù)據(jù)傳輸,單線傳輸速率可達(dá)到2 MB/s。文中設(shè)計(jì)選擇采用SDIO 模式四線高速數(shù)據(jù)傳輸方式[12]。

      3 系統(tǒng)軟件開(kāi)發(fā)

      3.1 CAN數(shù)據(jù)采集功能開(kāi)發(fā)

      CAN 數(shù)據(jù)采集功能的實(shí)現(xiàn)需要完成對(duì)主控芯片內(nèi)部CAN 控制器初始化、CAN 中斷接收進(jìn)行相應(yīng)的程序設(shè)計(jì)。

      1)CAN 控制器初始化

      CAN 控制器初始化通過(guò)功能配置函數(shù)操作CAN控制器寄存器、CAN 郵箱寄存器、CAN 篩選器等三大類寄存器,對(duì)CAN 總線工作模式、波特率及濾波器等進(jìn)行配置,為CAN 總線數(shù)據(jù)接收工作準(zhǔn)備好環(huán)境。具體流程圖如圖3 所示。

      圖3 CAN控制器初始化流程圖

      由于CAN 總線網(wǎng)絡(luò)上掛載的節(jié)點(diǎn)數(shù)量多、總線數(shù)據(jù)傳輸量大。為了保證數(shù)據(jù)在采集時(shí)不丟失,無(wú)關(guān)信息對(duì)采集產(chǎn)生干擾,在接收方面CAN 控制器具有兩個(gè)三級(jí)FIFO 緩沖結(jié)構(gòu)。此外,在CAN 控制器中包含時(shí)間觸發(fā)機(jī)制,可以為采集到的數(shù)據(jù)提供時(shí)間戳信息。

      2)CAN 接收中斷處理

      從CAN 總線上接收到的數(shù)據(jù)幀經(jīng)過(guò)篩選器篩選,通過(guò)FIFO 觸發(fā)接收中斷進(jìn)入中斷函數(shù),在中斷服務(wù)中識(shí)別產(chǎn)生中斷的FIFO,讀取相應(yīng)的數(shù)據(jù),再將接收到的CAN 報(bào)文數(shù)據(jù)存入到已經(jīng)初始化的數(shù)據(jù)結(jié)構(gòu)體當(dāng)中。

      3.2 數(shù)據(jù)存儲(chǔ)功能開(kāi)發(fā)

      CAN 總線數(shù)據(jù)的存儲(chǔ)功能主要基于FatFS 文件系統(tǒng)進(jìn)行開(kāi)發(fā),與常規(guī)的裸機(jī)直接操作Micro SD 卡相比,利用FatFS 文件系統(tǒng)模塊可以對(duì)Micro SD 的物理地址進(jìn)行高效統(tǒng)一的管理,所存儲(chǔ)的文件可以隨時(shí)在PC 端使用。而裸機(jī)程序操作Micro SD 卡直接將數(shù)據(jù)寫入物理內(nèi)存,查找困難,電腦等其他設(shè)備也無(wú)法讀取所存儲(chǔ)的信息。

      1)Micro SD 卡

      Micro SD 卡與主控芯片之間的命令交互需要通過(guò)CMD 引腳實(shí)現(xiàn)。在對(duì)Micro SD 卡進(jìn)行讀寫操作之前,需要對(duì)其進(jìn)行初始化,完成各項(xiàng)參數(shù)配置。Micro SD 介入后,自動(dòng)進(jìn)入等待電壓穩(wěn)定需上電延時(shí)至少74 個(gè)時(shí)鐘周期[13]。Micro SD 卡初始化完成之后,對(duì)其進(jìn)行讀寫操作,將采集到的CAN 總線數(shù)據(jù)寫入到Micro SD 卡中。

      2)FatFS 文件系統(tǒng)移植

      FatFS 文件系統(tǒng)在移植的過(guò)程中需要用到六個(gè)文件:diskio.c、dickio.h、ff.c、ff.h、integer.h 與ffconf.h[14],其中,integer.h 中定義了FatFS 所使用的各種數(shù)據(jù)類型;ffcinf.h 是關(guān)于FatFS 文件系統(tǒng)模塊的相關(guān)配置;diskio.c 與dickio.h 包含了FatFS 所規(guī)定的標(biāo)準(zhǔn)函數(shù)接口;ff.c 與ff.h 為標(biāo)準(zhǔn)文件,為應(yīng)用程序提供標(biāo)準(zhǔn)文件操作接口,使用時(shí)只需調(diào)用相關(guān)接口即可。在移植時(shí),只需要根據(jù)具體需求更改diskio.c 與ffconf.h 兩個(gè)文件。其移植主要分為以下三個(gè)步驟:

      1)在integer.h 文件內(nèi)根據(jù)需求對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行定義;

      2)根據(jù)具體功能需求,通過(guò)ffconf.h 配置FatFS文件系統(tǒng)相關(guān)模塊;

      3)調(diào)用diskio.c 中六個(gè)函數(shù)接口,進(jìn)行底層驅(qū)動(dòng)編寫,完成相關(guān)功能函數(shù)編寫。

      通過(guò)上述三步完成FatFS 文件系統(tǒng)移植。FatFS文件系統(tǒng)完成移植后,只需要根據(jù)具體需求調(diào)用相關(guān)函數(shù)即可實(shí)現(xiàn)相關(guān)功能。

      3.3 算法實(shí)現(xiàn)

      在應(yīng)用文中設(shè)計(jì)的系統(tǒng)時(shí),CAN 數(shù)據(jù)報(bào)文最終以CANlog 格式存儲(chǔ),在采集、存儲(chǔ)數(shù)據(jù)報(bào)文時(shí),需要對(duì)報(bào)文信息進(jìn)行逐條處理,廣義上屬于日志處理范疇[15-16]。同時(shí),當(dāng)CAN 總線上的報(bào)文數(shù)據(jù)量激增時(shí),系統(tǒng)需具備處理大流量數(shù)據(jù)的能力。結(jié)合FIFO 隊(duì)列自身特點(diǎn)與應(yīng)用場(chǎng)景大數(shù)據(jù)量的特性,在設(shè)計(jì)開(kāi)發(fā)時(shí)將FIFO 隊(duì)列融入到數(shù)據(jù)采集、存儲(chǔ)功能當(dāng)中,并對(duì)其進(jìn)行適應(yīng)性改進(jìn),提出了無(wú)鎖FIFO 隊(duì)列。當(dāng)總線數(shù)據(jù)量較小時(shí),自適應(yīng)地減小隊(duì)列大小,以減少系統(tǒng)資源占用;當(dāng)總線數(shù)據(jù)量激增時(shí),則自適應(yīng)地增加隊(duì)列大小,以避免數(shù)據(jù)丟失。無(wú)鎖FIFO 隊(duì)列算法原理如圖4 所示。

      圖4 無(wú)鎖FIFO隊(duì)列算法原理

      系統(tǒng)采集到CAN 總線上產(chǎn)生的報(bào)文數(shù)據(jù)之后,觸發(fā)硬件外部中斷,報(bào)文數(shù)據(jù)作為隊(duì)列元素臨時(shí)存入到無(wú)鎖FIFO 隊(duì)列當(dāng)中,完成入隊(duì)操作,此過(guò)程通過(guò)系統(tǒng)硬件設(shè)備采集數(shù)據(jù)來(lái)激活系統(tǒng)軟件功能。隊(duì)列中被臨時(shí)存入數(shù)據(jù)時(shí),系統(tǒng)會(huì)自動(dòng)將隊(duì)列中臨時(shí)存儲(chǔ)的數(shù)據(jù)通過(guò)FatFs 文件系統(tǒng)以標(biāo)準(zhǔn)CANLog 格式寫入到Micro SD 卡中,完成出隊(duì)與存儲(chǔ)操作。在入隊(duì)、出隊(duì)操作時(shí),系統(tǒng)會(huì)根據(jù)數(shù)據(jù)量的大小自動(dòng)調(diào)整隊(duì)列大小,其數(shù)據(jù)存儲(chǔ)流程如圖5 所示。

      圖5 數(shù)據(jù)存儲(chǔ)流程圖

      4 實(shí)驗(yàn)測(cè)試與驗(yàn)證

      文中將對(duì)所開(kāi)發(fā)的CAN 總線數(shù)據(jù)采集系統(tǒng)進(jìn)行相應(yīng)功能驗(yàn)證,主要以室內(nèi)實(shí)驗(yàn)為主,以此對(duì)該系統(tǒng)進(jìn)行初步功能驗(yàn)證。此方法也是設(shè)備研究開(kāi)發(fā)過(guò)程中的主要測(cè)試方法,避免試車測(cè)試過(guò)程中繁瑣的安裝流程,提高開(kāi)發(fā)效率。

      在CAN 總線數(shù)據(jù)采集系統(tǒng)功能驗(yàn)證實(shí)驗(yàn)中,模擬發(fā)送不同ID 的實(shí)車數(shù)據(jù)報(bào)文,發(fā)送周期為100 ms,表2 為PC 端模擬發(fā)送數(shù)據(jù),圖6 為Micro SD 卡中讀取數(shù)據(jù)。通過(guò)對(duì)比表2 與圖6 中的報(bào)文主要信息可知,CAN 總線數(shù)據(jù)采集系統(tǒng)所存儲(chǔ)的數(shù)據(jù)完全正確,且無(wú)數(shù)據(jù)丟失現(xiàn)象。

      圖6 存儲(chǔ)數(shù)據(jù)讀取

      表2 實(shí)車模擬數(shù)據(jù)報(bào)文

      通過(guò)在測(cè)試實(shí)驗(yàn)中加入對(duì)無(wú)鎖FIFO 隊(duì)列的功能驗(yàn)證,進(jìn)一步證明無(wú)鎖FIFO 隊(duì)列可避免數(shù)據(jù)丟失問(wèn)題。在所有實(shí)驗(yàn)條件不變的情況下,分別使用有、無(wú)鎖FIFO 隊(duì)列系統(tǒng)進(jìn)行模擬實(shí)車數(shù)據(jù)采集,所采集的數(shù)據(jù)對(duì)比如圖7 所示。以第一輪采集到所有模擬發(fā)送的不同ID 實(shí)車數(shù)據(jù)報(bào)文為例,使用無(wú)鎖FIFO 隊(duì)列的系統(tǒng)采集到全部ID 的報(bào)文,沒(méi)有使用無(wú)鎖FIFO隊(duì)列的系統(tǒng)存在丟幀現(xiàn)象,說(shuō)明CAN 總線數(shù)據(jù)采集系統(tǒng)具有一定可行性。

      圖7 存儲(chǔ)數(shù)據(jù)對(duì)比

      5 結(jié)束語(yǔ)

      文中結(jié)合無(wú)鎖FIFO 隊(duì)列,針對(duì)CAN 總線數(shù)據(jù)量大的特點(diǎn),設(shè)計(jì)開(kāi)發(fā)了基于無(wú)鎖FIFO 隊(duì)列的CAN 總線數(shù)據(jù)采集系統(tǒng)。其具有以下優(yōu)勢(shì):

      1)系統(tǒng)運(yùn)用無(wú)鎖FIFO 隊(duì)列算法,可根據(jù)CAN 總線上數(shù)據(jù)量的大小自適應(yīng)地調(diào)整隊(duì)列緩沖區(qū)的大小,可避免在實(shí)車數(shù)據(jù)采集過(guò)程中的丟幀現(xiàn)象,完成采集總線實(shí)車數(shù)據(jù)。

      2)該系統(tǒng)無(wú)需人工跟車操作,實(shí)現(xiàn)脫離PC 端獨(dú)立采集實(shí)車數(shù)據(jù),簡(jiǎn)化數(shù)據(jù)采集流程。系統(tǒng)中搭載FatFs 文件系統(tǒng),將總線數(shù)據(jù)以標(biāo)準(zhǔn)格式存儲(chǔ)于Micro SD 卡,生成的文件具有一定通用性,可在PC端相關(guān)軟件中直接讀取。

      猜你喜歡
      實(shí)車數(shù)據(jù)量隊(duì)列
      以絕版“恐龍”自嘲 保時(shí)捷357概念車實(shí)車靜態(tài)體驗(yàn)
      車主之友(2023年2期)2023-05-22 02:50:34
      實(shí)車碰撞試驗(yàn)牽引系統(tǒng)鋼絲繩疲勞損傷問(wèn)題分析
      基于手機(jī)藍(lán)牙的奧迪A4L發(fā)動(dòng)機(jī)故障設(shè)置系統(tǒng)設(shè)計(jì)
      基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
      計(jì)算Lyapunov指數(shù)的模糊C均值聚類小數(shù)據(jù)量法
      高刷新率不容易顯示器需求與接口標(biāo)準(zhǔn)帶寬
      基于WiFi的奧迪A4L發(fā)動(dòng)機(jī)故障設(shè)置系統(tǒng)
      隊(duì)列里的小秘密
      基于多隊(duì)列切換的SDN擁塞控制*
      軟件(2020年3期)2020-04-20 00:58:44
      寬帶信號(hào)采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計(jì)與研究
      電子制作(2019年13期)2020-01-14 03:15:18
      利津县| 偏关县| 星子县| 加查县| 噶尔县| 南乐县| 漳州市| 西平县| 香港| 嘉峪关市| 乌兰浩特市| 临海市| 石城县| 连城县| 都昌县| 英吉沙县| 连南| 拉孜县| 岐山县| 黄冈市| 萍乡市| 平和县| 积石山| 杂多县| 临夏市| 望谟县| 北流市| 即墨市| 托克逊县| 易门县| 潢川县| 北宁市| 凤庆县| 丹江口市| 苏尼特右旗| 沅陵县| 定安县| 太仆寺旗| 凯里市| 南木林县| 凉城县|