多路CAN報文實時接收的軟體實現方法與流程
2023-05-28 13:47:01 1

本發明屬於汽車電子技術領域,具體涉及一種多路can報文實時接收的軟體實現方法。
背景技術:
can總線上有多個信號幀,不同的信號幀代表不同的物理含義,每個信號幀有唯一的id。工程師在進行can總線發送接收時,需要根據can信號的不同id對其進行分類以便更好的進行can消息的解析提取工作。現有can進行接收時往往需要等待全部信息發送完成再對數據進行更新,這就造成了信息更新不及時。同時接收完全部信息後根據各個id進行分類,若是接收的信息較大又會導致處理複雜而且需要消耗大量的時間。
因此現在需要一種新的can接收方法,以便能夠快速及時的接收can消息並對其進行分類處理。
技術實現要素:
1、要解決的技術問題
為解決現有技術存在的上述缺陷,本發明提供一種can接收方法,能夠簡單快速實時地對多路的can消息進行接收並分類。
2、技術方案
為了實現上述的目的,本發明提供了以下技術手段:
一種can接收方法,包括以下步驟:
s101:創建存儲can信號的緩存區,同時創建一個全局變量作為標識位;
s102:利用can信號採集設備採集can信號;
s103:獲取每個can信號id,所述can信號為擴展幀,每個can信號id為29位;
s104:獲取id的優先級,依據優先級判斷該id對應的信號幀應存儲的緩存區;
s105:根據公式i=(sa-1)*pf_max+pf,判斷該緩存區中應當進行更新的信息,
其中,i為數組下標,sa為對應id的源地址,pf為pdu格式,pf_max為該id下的pf個數;
s106:進行數據更新,同時標識位置1。
進一步的,在所述s101中,創建3個緩存區,並依據優先級對緩存區進行分類。
進一步的,每個緩存區的大小根據實際的物理量來設計,同一個優先級的canid中的pf值按照順序排列,並在計算緩存區的大小時考慮需預留的pf。
進一步的,在所述s102中,採用中斷的方式進行can信號的接收採集。
進一步的,在所述s106中,採用輪詢的方式解析can信號,通過標識位是否置1來判斷是否有can通訊,判斷完成後將標識位清零。
3、有益效果:
與現有技術相比,本發明的一種can接收方法的有益效果在於:
本發明提供了一種can接收方法,採用接收完一幀can報文就及時對存儲can消息的緩存進行更新,以便能夠快速及時的接收can消息,同時在接收的過程中根據通訊協議對接收到的信號進行分類處理使得數據結構更加清晰,報文解析起來也更加有條理。
附圖說明
圖1為本發明實施例公開的can接收方法的流程圖;
圖2為本發明實施例公開的數據存儲結構圖;
圖3為本發明採用的協議數據單元圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整的描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護範圍。
一種can接收方法,使用can擴展幀的29為標識符,根據canid的優先級分別創建多個接收緩存,用於接收不同優先級的報文,緩存的大小由實際應用中需要使用到的物理量來決定,每一個緩存數組的下標都與該優先級下的canid一一對應,通過以下公式實現:
i=(sa-1)*pf_max+pf
其中:i為數組下標,sa為對應id的源地址,pf為pdu格式,pf_max為該id下的pf個數;
can設置為接收中斷,每接收一幀報文,利用canid的優先級和對應關係的公式對緩存的數據進行更新。
以下是本發明提供的一種具體的實施例,本實施例中以接收三個不同優先級的can信號幀為例進行說明,如圖3所示,本發明採用中斷的方法進行can信息的接收,包括以下步驟:
步驟s101:創建存儲can消息的緩存,同時創建一個全局變量作為標識位。創建的數據結構具體參考圖2,共有3個緩衝區,依據優先級的不同進行分類。每個緩存的大小需要根據實際的物理量來進行設計,需要注意的是同一個優先級的canid中的pf值應該按照順序排列下來,如有需預留的pf,在計算緩存的大小時應該將其也計算在內。
步驟s102:利用can信號採集設備採集can信號。這裡採用中斷的方式進行can信號的接收採集。
步驟s103:獲取每個can信號id。這裡的can消息為擴展幀,id共有29位。
步驟s104:獲取id的優先級,依據優先級判斷該信號幀應存儲的緩存。id的優先級由前最高的3位來表示,報文優先級可從最高0(000b)設置到最低7(111b),本實施例中取三個優先級。
步驟s105:根據公式i=(sa-1)*pf_max+pf,判斷該緩存中應當進行更新的信息。sa為源地址由8個2進位位組成,當can線上存在多個不同的設備時可以使用不同的源地址用於區分。pf則可以用來區分同一個設備中不同的物理量,取值範圍(0-239)。計算公式也是由sa和pf來進行標識。
步驟s106:數據更新同時標識位置1。更新緩存的同時也需要將標識置1以便確定是否有can報文進行更新,解析can消息的時候推薦採用輪詢的方式進行解析。如需判斷是否有can通訊則需區判斷標識是否置1,判斷完成後需將標識重新清零,以便下次的判斷。
技術特徵:
技術總結
一種CAN接收方法,使用CAN擴展幀的29為標識符,根據CAN ID的優先級分別創建多個接收緩存,用於接收不同優先級的報文,緩存的大小由實際應用中需要使用到的物理量來決定,每一個緩存數組的下標都與該優先級下的CAN ID一一對應,CAN設置為接收中斷,每接收一幀報文,利用CAN ID的優先級和對應關係的公式對緩存的數據進行更新。本發明的技術方案採用接收完一幀CAN報文就及時對存儲CAN消息的緩存進行更新,以便能夠快速及時的接收CAN消息,同時在接收的過程中根據通訊協議對接收到信號的進行分類處理使得數據結構更加清晰,報文解析起來也更加有條理。
技術研發人員:陳淑娟;陳寶龍;符小軍;陳少棠
受保護的技術使用者:龍海特爾福汽車電子研究所有限公司
技術研發日:2017.06.16
技術公布日:2017.10.10