国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種CAN信號封裝和數(shù)據(jù)解析方法與流程

      文檔序號:40405516發(fā)布日期:2024-12-20 12:29閱讀:7來源:國知局
      一種CAN信號封裝和數(shù)據(jù)解析方法與流程

      本發(fā)明涉及can總線,特別是涉及一種can信號封裝和數(shù)據(jù)解析方法。


      背景技術(shù):

      1、can通訊是汽車行業(yè)的首選通訊方式,新能源車動力系統(tǒng)的電機(jī)控制器也采用can的通訊方式,在電機(jī)臺架測試中需要對電機(jī)實(shí)施控制,就要用軟件根據(jù)can協(xié)議編寫上位機(jī)。dbc格式的can協(xié)議是目前最為廣泛的通用協(xié)議格式,對象是can?signal,提供的信息對象為startbit、length、offset、factor。通過startbit、length可以得出can?signal在64bit排列中的位置,并可以看出每個can?signal的h-byte、l-byte在8個byte中的起始位和終點(diǎn)位置。

      2、can通訊分為發(fā)送和接收,分別對應(yīng)封裝和解析兩個過程。針對多can?signal的應(yīng)用場景,現(xiàn)有封裝技術(shù)編寫兩個輸入控制can?signal到data的運(yùn)算輸入過程,can?signal1和can?signal2在dbc中的位置及程序運(yùn)算邏輯如下:

      3、(can?signal1-offset1)/factor1/16=iq1(商)......r1(余數(shù));

      4、iq1=can?signal1?h_byte;

      5、r1=can?signal1?l_byte;

      6、(can?signal2-offset2)/factor2/8=iq2(商)......r2(余數(shù));

      7、iq2=can?signal2?h_byte;

      8、r2=can?signal2?l_byte;

      9、所以:byte2=iq1

      10、byte3=r1*16+iq2

      11、byte4=r2*8

      12、要將byte0-byte7按協(xié)議采用同樣的運(yùn)算運(yùn)算完,再將8個byte合并成數(shù)組data與id、msg?type、length捆綁后輸出結(jié)果output?cluster(輸出簇)。而接收解析是相反的運(yùn)算過程,將接收的output?cluster解綁,拆分成id、msg?type、length和data,對data根據(jù)dbc協(xié)議提供的對象位置,解析需要顯示的can?signal。此運(yùn)算過程極其繁瑣,并且每更換一次dbc協(xié)議都要根據(jù)協(xié)議重新進(jìn)行運(yùn)算,運(yùn)算過程交錯復(fù)雜,出錯風(fēng)險較高,運(yùn)算導(dǎo)致消耗大量的時間,且沒有通用性。


      技術(shù)實(shí)現(xiàn)思路

      1、本發(fā)明所要解決的技術(shù)問題是提供一種can信號封裝和數(shù)據(jù)解析方法,能夠簡化運(yùn)算過程,節(jié)省運(yùn)算時間,且通用性較高。

      2、本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:提供一種can信號封裝方法,包括以下步驟:

      3、s0.獲取待封裝can信號的起始位、長度、物理值、偏移量和轉(zhuǎn)移因子;

      4、s1.創(chuàng)建一個輸入數(shù)組作為第一數(shù)組,所述第一數(shù)組為設(shè)定大小的布爾數(shù)組;

      5、s2.建立一個條件結(jié)構(gòu),以根據(jù)布爾運(yùn)算邏輯將所述待封裝can信號的起始位在所述第一數(shù)組中重新定位;

      6、s3.將所述條件結(jié)構(gòu)的輸出結(jié)果減去所述待封裝can信號的長度后再加1,獲得所述待封裝can信號在所述第一數(shù)組中的起始位作為目標(biāo)位置;

      7、s4.根據(jù)所述待封裝can信號的物理值、偏移量和轉(zhuǎn)移因子計算其原始值,并將計算得到的原始值轉(zhuǎn)換為布爾數(shù)組,獲得第二數(shù)組;

      8、s5.以所述待封裝can信號的長度為索引,調(diào)用刪除數(shù)組元素函數(shù)對所述第二數(shù)組進(jìn)行刪除操作,并對獲得的刪除部分的布爾數(shù)組進(jìn)行反轉(zhuǎn)后得到第三數(shù)組;

      9、s6.以所述第一數(shù)組為總數(shù)組,以所述目標(biāo)位置為索引,以所述第三數(shù)組為子數(shù)組,調(diào)用替換數(shù)組子集函數(shù)生成第四數(shù)組;

      10、s7.將所述第四數(shù)組轉(zhuǎn)換為所述待封裝can信號的幀數(shù)據(jù)。

      11、進(jìn)一步的,還包括將步驟s0至步驟s7封裝成子vi的步驟;所述子vi的輸入包括所述待封裝can信號的起始位、長度、物理值、偏移量和轉(zhuǎn)移因子,所述子vi的輸出包括所述待封裝can信號的幀數(shù)據(jù)。

      12、進(jìn)一步的,還包括:

      13、若所述待封裝can信號不止一個,則將相應(yīng)數(shù)量的所述子vi串聯(lián),并初始化一個布爾數(shù)組作為首個所述子vi的輸入數(shù)組,并將其它所述子vi的輸入數(shù)組設(shè)為前一個所述子vi的輸出,獲得所述待封裝can信號的幀數(shù)據(jù)為末個所述子vi的輸出。

      14、進(jìn)一步的,所述將所述第四數(shù)組轉(zhuǎn)換為所述待封裝can信號的幀數(shù)據(jù),包括:

      15、將所述第四數(shù)組以8個元素為一組依次劃分出多個子集;

      16、對每個所述子集分別進(jìn)行反轉(zhuǎn),并根據(jù)布爾運(yùn)算邏輯將反轉(zhuǎn)后的每個所述子集分別轉(zhuǎn)換成數(shù)值字節(jié),獲得所述待封裝can信號的幀數(shù)據(jù)。

      17、進(jìn)一步的,所述第二數(shù)組與所述第一數(shù)組的大小相等。

      18、進(jìn)一步的,所述待封裝can信號的原始值通過以下公式計算得到:

      19、

      20、本發(fā)明還提供一種can數(shù)據(jù)解析方法,包括以下步驟:

      21、s0.獲取待解析can信號的幀數(shù)據(jù)、起始位、長度、偏移量和轉(zhuǎn)移因子;

      22、s1.根據(jù)布爾運(yùn)算邏輯將所述待解析can信號的幀數(shù)據(jù)的每個數(shù)值字節(jié)轉(zhuǎn)換為數(shù)組,并對轉(zhuǎn)換獲得的每個數(shù)組進(jìn)行反轉(zhuǎn)后得到第一數(shù)組,所述第一數(shù)組為設(shè)定大小的二維數(shù)組;

      23、s2.調(diào)用重排數(shù)組維數(shù)函數(shù)對所述二維數(shù)組進(jìn)行重排,獲得一維的第二數(shù)組;

      24、s3.建立一個條件結(jié)構(gòu),以根據(jù)布爾運(yùn)算邏輯將所述待解析can信號的起始位在所述第二數(shù)組中重新定位;

      25、s4.將所述條件結(jié)構(gòu)的輸出結(jié)果減去所述待解析can信號的長度后再加1,獲得所述待解析can信號在所述第二數(shù)組中的起始位作為目標(biāo)位置;

      26、s5.以所述目標(biāo)位置為索引,調(diào)用數(shù)組子集函數(shù)從所述第二數(shù)組中截取大小與所述待解析can信號的長度相等的子集獲得第三數(shù)組;

      27、s6.對所述第三數(shù)組進(jìn)行反轉(zhuǎn)獲得第四數(shù)組,進(jìn)而根據(jù)布爾運(yùn)算邏輯將所述第四數(shù)組轉(zhuǎn)換為數(shù)值,獲得所述待解析can信號的原始值;

      28、s7.根據(jù)所述待解析can信號的原始值、偏移量和轉(zhuǎn)移因子計算獲得其物理值。

      29、進(jìn)一步的,所述待解析can信號的物理值通過以下公式計算得到:

      30、

      31、進(jìn)一步的,還包括將步驟s0至步驟s7封裝成子vi的步驟;所述子vi的輸入包括所述待解析can信號的幀數(shù)據(jù)、起始位、長度、偏移量和轉(zhuǎn)移因子,所述子vi的輸出包括所述待解析can信號的物理值。

      32、進(jìn)一步的,還包括:

      33、若所述待解析can信號不止一個,則將相應(yīng)數(shù)量的所述子vi并聯(lián),獲得每個所述待解析can信號的物理值為對應(yīng)所述子vi的輸出。

      34、由于采用了上述的技術(shù)方案,本發(fā)明與現(xiàn)有技術(shù)相比,具有以下的優(yōu)點(diǎn)和積極效果:本發(fā)明通過對接收到的can信號其進(jìn)行基于布爾運(yùn)算邏輯處理后生成對應(yīng)的幀數(shù)據(jù),并將整個處理過程封裝成子vi,只需將can信號對應(yīng)的起始位、長度、偏移量和轉(zhuǎn)移因子輸入,就可以得出需要的幀數(shù)據(jù);如果需要多個can信號,只需將多個子vi串聯(lián)起來,最終輸出一個8幀數(shù)據(jù),將其捆綁后得到需要的輸出簇,避免了多個變量運(yùn)算出錯的風(fēng)險及耗時嚴(yán)重的情況,同時節(jié)省了運(yùn)算的時間,提高了封裝效率,并且針對dbc協(xié)議通用,即使更換其它協(xié)議,也不需要重新一一進(jìn)行運(yùn)算;將整個處理步驟封裝成子vi后在程序框圖上也簡潔很多,針對諸如labview這類圖形化編程環(huán)境,此公式適用于所有硬件的運(yùn)算,在硬件上也有了更高的通用性。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1