亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Simulink自動代碼生成技術(shù)的CAN底層模塊庫設(shè)計

        2020-08-03 08:26:04莫官旭謝勇波王文明
        控制與信息技術(shù) 2020年3期
        關(guān)鍵詞:控制板底層報文

        汪 偉,莫官旭,申 健,謝勇波,王文明

        (長沙中車智馭新能源科技有限公司, 湖南 長沙 410036)

        0 引言

        汽車控制器之間的通信主要通過CAN(controller area network)總線實現(xiàn)。隨著汽車功能的不斷豐富,控制器數(shù)量逐漸增多,CAN報文信息交互頻繁,所需處理的數(shù)據(jù)越來越多;而傳統(tǒng)軟件開發(fā)方式存在開發(fā)時間長、代碼量大、易出錯和不易擴展的不足。另外,在基于模型設(shè)計[1-2]的軟件開發(fā)中,模型生成代碼的變量不便與CAN底層函數(shù)的參數(shù)關(guān)聯(lián),需將模型生成代碼中的變量一一賦值至手寫代碼的底層函數(shù)中使用。

        基于模型的設(shè)計是嵌入式軟件快速開發(fā)的一種方式,在Simulink環(huán)境下使用模塊庫搭建控制策略模型,使用RTW(real-time workshop)將模型生成代碼,再編譯燒寫到嵌入式控制器中運行。相比編輯C代碼的嵌入式軟件開發(fā)方式,基于模型的設(shè)計可視性更高、移植性更強,并且可在Simulink上對邏輯進行仿真,簡化測試工作。若通過Simulink模塊實現(xiàn)CAN報文收發(fā)、裝載與解析功能,則能有效提高開發(fā)效率和代碼可靠性,增強軟件移植性[3-4]。據(jù)此,本文使用Simulink的S函數(shù)(S-Function)并編寫相應(yīng)的M語言腳本和由目標(biāo)語言編譯器(target language compiler, TLC)轉(zhuǎn)換的TLC文件,設(shè)計了一種基于自動代碼生成技術(shù)的CAN底層模塊庫,用于實現(xiàn)控制器的CAN通道初始化和CAN報文的接收與發(fā)送、解析與裝載。

        1 模塊功能設(shè)計

        在Simulink環(huán)境中,需要設(shè)計S-Function和與之關(guān)聯(lián)的TLC文件,以達(dá)到生成自定義格式代碼的目的[5-7]。首先,在Matlab中編輯M語言腳本并在模塊中調(diào)用,用于處理傳入模塊的數(shù)據(jù)和設(shè)置顯示在模塊上的字符;然后,在TLC文件中對這些數(shù)據(jù)如何生成代碼以及所需包含的頭文件進行描述,從而在生成的C代碼中調(diào)用控制器底層函數(shù),其原理如圖1所示。

        圖1 S-Function生成自定義代碼原理圖Fig. 1 Principle diagram of S-Function custom code

        本文使用的TC21x芯片平臺控制板的CAN通信C語言底層函數(shù)包含的功能有:硬件CAN通道設(shè)置、發(fā)送CAN報文及配置接收報文,函數(shù)名和所需設(shè)置的形參如圖2所示。

        圖2 C語言底層函數(shù)Fig. 2 C language underlying functions

        根據(jù)C語言的底層函數(shù)和Matlab支持讀取DBC(database for CAN)文件的功能,將CAN底層模塊庫劃分為CAN初始化、CAN報文數(shù)據(jù)裝載與發(fā)送、CAN報文數(shù)據(jù)接收與解析這3種功能S-Function模塊。CAN初始化模塊用于設(shè)置波特率和工作模式,其他兩個模塊用于讀取導(dǎo)入模型的DBC文件信息,并調(diào)用CAN報文收發(fā)底層函數(shù)來實現(xiàn)對報文數(shù)據(jù)的處理與收發(fā)。根據(jù)底層函數(shù)所需傳入的參數(shù)類型,3個模塊的功能結(jié)構(gòu)設(shè)計如圖3所示。

        圖3 自建CAN底層模塊庫功能結(jié)構(gòu)Fig. 3 Functional structure of self-building CAN communication library

        2 功能實現(xiàn)

        CAN底層模塊庫的各個模型均需圖形用戶界面(graphical user interface, GUI)與數(shù)據(jù)處理功能。在GUI的設(shè)計上,Matlab/Simulink提供了便捷的Mask Editor和GUIDE工具供使用者對Simulink模型進行封裝,可將各模塊所需傳入的參數(shù)類型作為模塊對話框的輸入項,并為GUI上的控件添加回調(diào)函數(shù),對輸入數(shù)據(jù)進行處理,最終傳入S-Function參數(shù)用于生成代碼。

        CAN初始化所需輸入的參數(shù)信息較少,可使用Mask Editor對硬件CAN通道編號,將波特率和工作模式設(shè)置為彈出式下拉菜單,并為每個控件對應(yīng)的Name屬性命名,以此作為S-Function中S-function parameters的輸入?yún)?shù)名稱。實現(xiàn)CAN初始化模塊同名的TLC文件后,可生成代碼。所設(shè)計的對話框和所生成的代碼如圖4所示。

        圖4 CAN初始化模塊的對話框界面與所生成的代碼Fig. 4 Dialog interface and generated code of CAN initial block

        CAN報文裝載與發(fā)送、CAN報文接收與解析輸入模塊參數(shù)較多,用GUIDE設(shè)計對話框界面可以顯示更豐富的內(nèi)容。為了方便觀察模塊所使用的CAN報文中每個信號的信息,用GUIDE將CAN報文信息的變量名、起始位、信號數(shù)據(jù)長度、比例系數(shù)及偏移量根據(jù)起始位置排序,并以表格形式在模塊的對話框中顯示。報文信息來源于DBC文件,因此需為GUI的Browse和Message list編輯框?qū)?yīng)的控件設(shè)置回調(diào)函數(shù),用于選擇指定路徑的DBC文件,并在選擇所需報文ID后對協(xié)議內(nèi)容進行讀取與處理,之后再寫入到模塊參數(shù)中。以EEC1(ID為0x0CF00400)報文中的發(fā)動機轉(zhuǎn)速信號為例,CAN報文裝載與發(fā)送模塊對話框與所生成的代碼如圖5所示。

        圖5 CAN報文裝載與發(fā)送模塊的界面與代碼Fig. 5 Dialog and generated code of CAN message loading and sending block

        為了便于在同一模型工程中對不同設(shè)置參數(shù)的模塊進行區(qū)分,可通過 Mask Editor中的Icon drawing commands設(shè)置模塊外觀顯示的符號與文字。將CAN接收與解析模塊進一步細(xì)分為帶回調(diào)函數(shù)功能的模塊和不帶回調(diào)函數(shù)功能的模塊,以滿足不同需求。CAN底層模塊庫各模塊封裝效果如圖6所示,從左至右、從上至下分別為CAN初始化模塊、CAN報文裝載與發(fā)送模塊、CAN報文接收與解析模塊以及帶回調(diào)功能的CAN報文接收與解析模塊。

        圖6 CAN底層模塊庫各模塊封裝效果Fig. 6 Encapsulation effect of each block in the CAN underlying module library

        完成各模塊的功能實現(xiàn)、封裝和屬性設(shè)置后,可將各模塊集成為Simulink模塊庫。編寫與模塊庫對應(yīng)的slblocks.m文件,將該文件與模塊庫文件所在路徑添加到Matlab的工作路徑列表中。在Simulink Library Browser中執(zhí)行Refresh操作,CAN通信模塊庫可顯示在Simulink庫瀏覽菜單中,以便查找和使用,效果如圖7所示。搭建模型時,只需在CAN底層模塊庫中將相應(yīng)功能的模塊拖入到.mdl或.slx模型文件中即可。每個在工程中使用的模塊與CAN底層模塊庫中的父模塊存在關(guān)聯(lián)關(guān)系;在后期軟件維護時,只需對模塊庫中的父模塊功能進行修改,即可改變整個模型文件中各CAN模塊的功能與生成代碼的格式。

        圖7 CAN通信模塊在Simulink Library Browser中顯示效果Fig. 7 Display effect of CAN communication block in Simulink Library Browser

        3 功能驗證

        在完成了CAN通信模塊庫的功能設(shè)計與封裝后,為了驗證CAN模塊是否能在硬件平臺上正常運行,本文在Infineon的TC21x系列控制板上試驗CAN報文的發(fā)送與接收功能。試驗環(huán)境結(jié)構(gòu)如圖8所示。

        圖8 試驗環(huán)境組成Fig. 8 Test environment composition

        本次試驗分別用EEC1報文中的發(fā)動機轉(zhuǎn)速值和TCO1(ID為0x0CFE6CEE)報文中的整車車速值作為報文接收解析和報文數(shù)據(jù)裝載與發(fā)送的測試對象。其中,發(fā)動機轉(zhuǎn)速值在EEC1的BYTE4和BYTE5位置,分辨率為0.125 (r/min)/bit;整車車速值在TCO1的BYTE7和BYTE8位置,分辨率為1/256 (km/h)/bit。搭建如圖9所示測試模型,其中,CAN初始化模塊和CAN報文裝載與發(fā)送模塊分別被置于Simulink的原子子系統(tǒng),用于指定函數(shù)名、生成單獨的C函數(shù)以區(qū)分不同的模塊功能,方便調(diào)用。使用Simulink編譯模型驗證了使用模塊庫所搭建的模型能成功生成代碼,各子系統(tǒng)內(nèi)部如圖10所示。

        圖9 測試模型Fig. 9 Test model

        圖10 測試模型子系統(tǒng)內(nèi)部Fig. 10 Inner of the test model subsystem

        將生成的C代碼函數(shù)加入整個軟件工程中調(diào)用,編譯后燒寫到控制器內(nèi);使用上位機軟件CANTest對TCO1的報文情況進行采集,模型中車速的設(shè)置值為45,報文發(fā)送值為0x2D00(對應(yīng)的十進制值為11520),如圖11所示,根據(jù)協(xié)議解析可得實際值為45 km/h。

        圖11 報文采集結(jié)果Fig. 11 Result of message collecting

        在CANTest的基本操作欄中,設(shè)置報文幀ID和數(shù)據(jù)值發(fā)送給控制板,如圖12所示。本文設(shè)置EEC1的發(fā)動機轉(zhuǎn)速報文原始值為0x1450(十進制值為5200,根據(jù)協(xié)議,解析值為650 r/min),通過控制板的上位機監(jiān)控板可得所接收的內(nèi)容為650,如圖13所示。

        圖12 模擬發(fā)送報文Fig. 12 Simulated message sending

        圖13 上位機監(jiān)控板接收到的發(fā)動機轉(zhuǎn)速值Fig. 13 Speed value of engine in the upper computer monitoring board

        通過以上測試結(jié)果可看出,自建的CAN底層模塊庫接收與解析功能、數(shù)據(jù)裝載與發(fā)送功能能在控制板中能正常運行,且協(xié)議解析內(nèi)容與DBC文件中設(shè)置內(nèi)容相符。

        4 結(jié)語

        本文通過Simulink自建CAN底層模塊庫,在Infineon控制板上實現(xiàn)了對數(shù)據(jù)發(fā)送和接收功能底層函數(shù)的調(diào)用,并將DBC文件的信息導(dǎo)入到模塊中;結(jié)合控制板已實現(xiàn)的C語言底層函數(shù),分別建立CAN報文接收與解析、CAN報文裝載與發(fā)送功能模塊;通過Simulink自動生成代碼技術(shù)驗證了自建模塊庫所生成的代碼在控制器上的運行結(jié)果。在基于TC21x系列芯片控制板的試驗環(huán)境中的測試結(jié)果表明:自建的CAN底層模塊庫可正常調(diào)用底層的CAN報文發(fā)送和接收函數(shù)功能,并能解析報文或根據(jù)協(xié)議裝載成原始報文。使用該方法,不需要人為對照CAN協(xié)議來編輯C代碼和對CAN報文解析與裝載,模型會自動根據(jù)DBC文件來對CAN報文信息進行處理,相比傳統(tǒng)軟件開發(fā),降低了編寫軟件時對照報文協(xié)議的錯誤率,節(jié)省了開發(fā)時間,方便后期維護工作。由于本文模塊庫在代碼中生成了較多單精度或雙精度型變量,這會占用較多的控制板數(shù)據(jù)存儲空間,因此優(yōu)化生成代碼中的數(shù)據(jù)類型是本文方案需要改進之處。

        猜你喜歡
        控制板底層報文
        關(guān)于某家用電器靜電彈簧控制板一拖多自動檢測裝置的研究與應(yīng)用
        日用電器(2023年7期)2023-09-07 00:41:56
        基于J1939 協(xié)議多包報文的時序研究及應(yīng)用
        汽車電器(2022年9期)2022-11-07 02:16:24
        航天企業(yè)提升采購能力的底層邏輯
        一種橡膠減震裝置
        CTCS-2級報文數(shù)據(jù)管理需求分析和實現(xiàn)
        淺析反駁類報文要點
        中國外匯(2019年11期)2019-08-27 02:06:30
        軌道交通AFC導(dǎo)向標(biāo)識控制板設(shè)計
        電子制作(2019年23期)2019-02-23 13:21:22
        ATS與列車通信報文分析
        一種機載SAR中心控制板的設(shè)計
        回到現(xiàn)實底層與悲憫情懷
        小說林(2014年5期)2014-02-28 19:51:47
        亚洲精品国产美女久久久| 日本一区二区啪啪视频| 男女性行为免费视频网站| 内射夜晚在线观看| 国产免费无码一区二区三区| 精品综合久久久久久8888| 熟女不卡精品久久av| 亚洲男女内射在线播放| 国产精品无码av天天爽| 传媒在线无码| 久久精品亚洲成在人线av| 亚洲黄色天堂网站在线观看禁18 | 国产精品一区二区三区av在线| 国内精品久久久久久99| 国产精品久久久久久人妻无| 精品国产人妻一区二区三区| 亚洲午夜无码久久yy6080| 一区二区三区手机看片日本韩国| 人妻少妇中文字幕在线| 亚洲乱亚洲乱妇无码麻豆| 中文字幕人妻中文av不卡专区| 亚洲加勒比无码一区二区在线播放| 国产亚洲精品一区二区在线观看| 色88久久久久高潮综合影院| 国产亚洲av手机在线观看| 最新国产美女一区二区三区| 国产精品国产三级国产剧情| 亚洲精品久久久www小说| 99在线播放视频| 91日本在线精品高清观看| 国产精品女同av在线观看| 国产精华液一区二区三区| 亚洲男人av天堂午夜在| 99久久久无码国产精品9| 久久熟女乱一区二区三区四区| 美女人妻中出日本人妻| 亚洲精品成人网线在线播放va| 天天躁日日操狠狠操欧美老妇| 国产亚洲av一线观看| 国产美女爽到喷出水来视频| 初尝黑人嗷嗷叫中文字幕|