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

        ?

        一種基于M語言的MBD軟件開發(fā)自動化腳本工具

        2020-03-13 07:48:12李延紅張書朋
        汽車電器 2020年2期
        關(guān)鍵詞:浮點定點代碼

        李延紅,張書朋,李 成

        (中國重型汽車集團有限公司技術(shù)發(fā)展中心,山東 濟南 250101)

        在汽車嵌入式軟件V模式開發(fā)中,應(yīng)用層代碼一般會采用基于模型的開發(fā) (Model-Based Development,MBD)模式實現(xiàn)。即利用美國邁斯沃克 (MathWorks)公司研發(fā)的工業(yè)標準建模工具MATLAB建立算法模型,經(jīng)過浮點模型和定點模型測試完成后,會通過自動生成代碼工具Embedded coder自動生成代碼。本文對基于模型的開發(fā)MBD模式中大量重復(fù)性操作工作效率低問題,進行自動化腳本工具開發(fā),并通過發(fā)動機后處理控制算法模型進行腳本工具應(yīng)用驗證。1 基于MBD軟件開發(fā)

        隨著汽車嵌入式軟件復(fù)雜程度的增加、系統(tǒng)開發(fā)周期的逐漸縮短,基于MBD軟件開發(fā)模式逐漸替代傳統(tǒng)C代碼開發(fā)方式?;贛BD軟件開發(fā)模式可以用建模工具對復(fù)雜邏輯進行設(shè)計,使得系統(tǒng)需求分析與軟硬件開發(fā)結(jié)合更加緊密,系統(tǒng)分析可以直接與設(shè)計結(jié)合;在軟件開發(fā)仿真開始,開發(fā)人員就可以調(diào)試邏輯,加快調(diào)試進度;可以自動生成代碼,避免手工編碼方式可能存在的低級錯誤;模型建立后,可利用快速原型仿真,加快需求設(shè)計完善;模型可移植性高,可迅速建立系統(tǒng)設(shè)計模塊庫,節(jié)約開發(fā)成本。

        基于MBD軟件開發(fā)流程,開發(fā)汽車嵌入式軟件依次經(jīng)過系統(tǒng)設(shè)計、模型設(shè)計、C代碼生成編譯、硬件代碼生成調(diào)試、硬件在環(huán)、實車測試6個步驟。在實車測試之前,模型設(shè)計階段完成之后,會對應(yīng)系統(tǒng)功能設(shè)計進行MIL(model in the loop,模型在環(huán))測試,從模型仿真階段驗證模型功能實現(xiàn)滿足系統(tǒng)功能定義;C代碼生成編譯階段完成后,會對應(yīng)模型設(shè)計進行SIL(software in the loop,代碼在環(huán))測試,從代碼階段驗證模型與生成代碼功能一致性;硬件代碼生成調(diào)試階段完成后,會對應(yīng)C代碼生成編譯階段進行PIL(processor in the loop,處理器在環(huán))測試,驗證模型與運行在目標處理器上的代碼功能一致性;硬件在環(huán)階段,會對應(yīng)系統(tǒng)功能定義進行HIL(hardware in the loop,硬件在環(huán))測試,用物理模型控制器和控制模型控制器聯(lián)合驗證是否滿足系統(tǒng)功能定義。基于MBD開發(fā)流程如圖1所示。

        由圖1可見,基于MBD開發(fā)嵌入式軟件時,基于系統(tǒng)功能定義準確搭建模型、保證代碼生成與模型一致性是關(guān)鍵。由于要達到準確搭建模型、保證代碼與模型一致,要求按照MBD開發(fā)流程進行大量重復(fù)性操作,因此有必要進行模型開發(fā)自動化腳本工具開發(fā),以便提高工作效率。

        2 基于MBD軟件開發(fā)自動化需求分析

        圖1 基于MBD軟件開發(fā)流程

        基于MBD流程進行嵌入式軟件模型開發(fā)時,一般經(jīng)過浮點模型搭建、浮點模型規(guī)范化、浮點模型測試、浮點模型多模型檢查、定點模型搭建、定點模型規(guī)范化、定點模型測試、定點模型多模型檢查、代碼生成、代碼測試、代碼集成11個步驟?;贛BD模型開發(fā)流程如圖2所示。

        1)步驟1:浮點模型搭建

        首先根據(jù)系統(tǒng)功能定義進行浮點double數(shù)據(jù)類型模型搭建,模型復(fù)雜程度隨著功能不同而不同。汽車嵌入式軟件開發(fā)中一般會遵循MISRA C規(guī)范,規(guī)范要求模塊使用和模型可視兩方面。規(guī)范使用Simulink模塊在搭建過程中可以通過使用模型庫來提高效率,由于模塊庫會不斷更新,因此在搭建模型時需要使用最新版本模塊庫。規(guī)范模型可視化對應(yīng)到Simulink中搭建模型時需要將模型分層、信號線上需要顯示信號名稱、信號線需要對齊。由于模型分層會造成不同層子系統(tǒng)之間輸入輸出口需要手動連接,還會造成連接后的信號線凌亂。

        浮點模型搭建過程自動化需求為:模塊庫版本確認、懸空的輸入輸出口信號線連接、輸入輸出口信號線對齊、模型頂層信號線上添加變量名稱、非模型頂層信號線上添加信號繼承標志以顯示信號變量名稱、刪除冗余變量。

        2)步驟2:浮點模型規(guī)范化檢查

        浮點模型規(guī)范化檢查采用Simulink工具Model Advisor來實現(xiàn)。由于Simulink工具Model Advisor檢查涵蓋的規(guī)范較廣,開發(fā)人員很難確定檢查項。

        浮點模型規(guī)范化檢查過程自動化需求為:自動調(diào)用Model Advisor和自動選擇符合本項目要求的檢查項來檢查模型規(guī)范符合度。

        3)步驟3:浮點模型測試

        浮點模型測試過程中會首先用Simulink工具Simulink Design Verifier進行形式檢查,然后用Simulink工具Simulink Test進行功能驗證。由于測試會根據(jù)結(jié)果反復(fù),需要多次手動打開測試工具,在功能驗證階段多次手動導(dǎo)入測試用例及測試結(jié)果。

        圖2 基于MBD模型開發(fā)流程

        在浮點模型測試過程自動化需求為:自動調(diào)用Simulink Design Verifier對模型進行形式化檢查、自動調(diào)用Simulink Test搭建測試模型、導(dǎo)入測試用例、運行及保存測試結(jié)果。

        4)步驟4:浮點模型多模型檢查

        浮點模型多模型檢查主要是核對接口信號是否存在遺漏或者重復(fù)的情況。

        在浮點模型多模型檢查過程自動化需求為:批量提取模型接口信號名稱、核對接口信號來源及去處、檢查所有模型中全局系統(tǒng)常數(shù)數(shù)值沖突。

        5)步驟5:定點模型搭建

        由于浮點模型均是double類型,生成代碼占用空間大且執(zhí)行效率低,因此在保證代碼效率、數(shù)據(jù)精度和數(shù)據(jù)范圍前提下需要將浮點模型轉(zhuǎn)換為定點模型。浮點模型轉(zhuǎn)換為定點模型過程中需要對每個信號及模塊定標,工作繁瑣且容易產(chǎn)生錯誤。

        定點模型搭建過程自動化需求為:建立數(shù)據(jù)對象、關(guān)聯(lián)數(shù)據(jù)字典和模型中的數(shù)據(jù)對象、定標整數(shù)常數(shù)模塊為最短長度的整型類型、自動定標輸出線上有測量變量的模塊為“向后繼承”屬性、將子系統(tǒng)設(shè)置為原子子系統(tǒng)。

        6)步驟6:定點模型規(guī)范化

        定點模型規(guī)范化檢查主要分為用Simulink工具Model Advisor來實現(xiàn)定點部分檢查以及定標合理性檢查。

        定點模型規(guī)范化過程自動化需求為:自動調(diào)用Model Advisor檢查、頂層輸入必須有信號且關(guān)聯(lián)、減法輸出類型設(shè)定不為無符號數(shù)、數(shù)據(jù)類型為浮點或超過32位。

        7)步驟7:定點模型測試

        定點測試方法與浮點測試相同,測試結(jié)果要與浮點測試結(jié)果對比以便核對定點過程中的精度損失是否在允許范圍內(nèi)。

        在定點模型測試過程自動化需求為:自動調(diào)用Simulink Design Verifier進行形式化檢查、自動調(diào)用Simulink Test進行功能測試、進行定點模型和浮點模型測試結(jié)果對比。

        8)步驟8:定點模型多模型檢查

        定點模型多模型檢查主要是核對接口信號及全局系統(tǒng)常數(shù)是否存在數(shù)據(jù)類型沖突。

        定點模型多模型檢查過程自動化需求為:批量提取模型接口信號名稱、核對接口信號數(shù)據(jù)類型、檢查全局系統(tǒng)常數(shù)數(shù)據(jù)類型。

        9)步驟9:代碼生成

        代碼生成通過Simulink工具Embedder Coder來實現(xiàn),不同經(jīng)驗開發(fā)人員單獨使用代碼生成工具時花費時間不同,造成開發(fā)周期增長;自動生成的代碼中包含全局變量的定義和聲明,導(dǎo)致全局變量會重復(fù)定義和聲明;自動生成的代碼會自動放置在模型所在文件夾下新建‘模型名_ert_rtw’文件夾,導(dǎo)致集成時讀取不方便。

        代碼生成過程自動化需求為:自動調(diào)用自動生成代碼模板配置批量生成代碼、將所有模型生成代碼放到一個文件夾。

        10)步驟10:代碼測試

        代碼測試通過SIL進行,即將模型自動生成的C代碼封裝為可以在MATLAB環(huán)境中執(zhí)行的S函數(shù)模塊,代替定點模型進行測試。

        代碼測試過程自動化需求為:自動調(diào)用SIL測試,進行SIL測試和定點模型測試結(jié)果對比。

        11)步驟11:代碼集成

        代碼集成是將生成代碼放置在代碼編譯環(huán)境中集成,手動操作容易造成版本失誤。

        代碼集成過程自動化需求為:生成全局系統(tǒng)常數(shù)聲明文件、自動生成A2L文件。

        3 基于M語言的MBD軟件開發(fā)自動化腳本工具實現(xiàn)

        3.1 M語言

        MALTAB自帶的M語言采用解釋執(zhí)行的方式,繼承了計算、可視化以及數(shù)據(jù)表達式相似的編程環(huán)境,降低編程所需難度并節(jié)省時間。M語言提供的函數(shù)能夠控制模型仿真、獲取和設(shè)置模型及模塊的屬性,還支持模型的打開、關(guān)閉、保存以及模塊的拷貝、移動、刪除及信號線的連接和斷開。

        3.2 自動化腳本實現(xiàn)

        本文采用M語言編寫各功能函數(shù),通過GUI可視化界面函數(shù)調(diào)用的方式實現(xiàn)。

        1)建模輔助腳本GUI可視化界面

        自動化工具可讀性非常重要,本文利用GUI制作了自動化工具運行可視化界面。按照MBD開發(fā)過程中自動化需求逐條體現(xiàn)在界面以checkbox形式顯示,運行界面圖如圖3所示。MBD開發(fā)單個功能模型時,運用本自動化工具需要先將模型打開。然后按照自動化需求勾選check box,點擊pushbutton屬性運行按鈕即可完成自動化操作。

        圖3 建模輔助腳本工具運行界面圖

        開發(fā)時首先通過guide命令創(chuàng)建空GUI界面,然后將每條自動化需求以checkbox形式進行界面設(shè)計,實現(xiàn)時是pushbutton屬性運行按鈕回調(diào)函數(shù)調(diào)用功能函數(shù)來實現(xiàn),實現(xiàn)代碼如圖4所示。

        2)自動化功能函數(shù)

        M語言提供的函數(shù)可以控制模型仿真,獲取和設(shè)置模型、模塊的屬性等功能,自動化功能函數(shù)是利用M語言本身提供的函數(shù)獲取功能自動化對象,然后增加判斷邏輯實現(xiàn)。

        圖4 自動化工具調(diào)用自動化需求功能函數(shù)代碼示例

        浮點模型搭建過程中自動化需求均是對模型中的Simulink模塊的屬性進行修改,基本采用find_system、get_param、set_param函數(shù)來實現(xiàn)。用find_system函數(shù)來找到要自動化實現(xiàn)的模塊路徑或句柄,用get_param獲取自動化模塊名或者屬性,用set_param函數(shù)來實現(xiàn)模塊參數(shù)設(shè)置。自動化需求模型頂層信號線增加變量名稱代碼如圖5所示。

        圖5 模型頂層信號線增加變量名稱代碼示例圖

        浮點模型規(guī)范化檢查是針對自動調(diào)用Model Advisor工具來實現(xiàn)的,用ModelAdvisor工具中函數(shù)來實現(xiàn),如ModelAdvisor.Run為運行Model Advisor工具,圖6為自動調(diào)用Model Advisor工具代碼示例圖。

        圖6 自動調(diào)用Model Advisor工具代碼示例圖

        浮點模型測試是自動調(diào)用Simulink工具Simulink Design Verifier和Simulink工具Simulink Test。自動調(diào)用Simulink工具Simulink Design Verifier直接采用sldvrun函數(shù)來實現(xiàn),Simulink工具Simulink Test工具調(diào)用采用sltest.harness.create函數(shù)來創(chuàng)建測試模型,導(dǎo)入測試用例進行測試。

        浮點模型多模型檢查實現(xiàn)時首先用find_sysytem函數(shù)提取找到各個子模塊輸入輸出變量和全局系統(tǒng)常數(shù),然后用strcmp函數(shù)對比較輸入輸出來源及系統(tǒng)常數(shù)數(shù)值。

        定點模型搭建過程中的建立數(shù)據(jù)對象時是利用mpt.Signal函數(shù)和mpt.Parameter函數(shù)來創(chuàng)建,代碼示例可見圖7。數(shù)據(jù)對象關(guān)聯(lián)、自動定標整數(shù)、自動定標為向后繼承及設(shè)置為原子子系統(tǒng)均是對模型或者模塊進行設(shè)置,基本采用find_system、get_param、set_param函數(shù)來實現(xiàn)。

        定點模型規(guī)范化實現(xiàn)自動調(diào)用Model Advisor檢查時代碼基本與浮點模型規(guī)范化代碼一致,設(shè)置CheckIDList來實現(xiàn)不同測試配置。

        頂層輸入信號關(guān)聯(lián)、減法輸出類型設(shè)定不為無符號數(shù)、數(shù)據(jù)類型為浮點或超過32位判斷可通過find_sysytem函數(shù)及strcmp函數(shù)來實現(xiàn)。

        定點模型測試測試實現(xiàn)與浮點模型測試實現(xiàn)代碼基本一致,實現(xiàn)定點模型和浮點模型測試結(jié)果對比通過strcmp函數(shù)來實現(xiàn)。

        定點模型多模型檢查實現(xiàn)與浮點模型多模型檢查實現(xiàn)代碼基本一致,通過find_sysytem函數(shù)及strcmp函數(shù)來實現(xiàn)。

        代碼生成過程自動調(diào)用自動生成代碼模板配置批量生成代碼實現(xiàn)時是首先用open函數(shù)打開第一個模型,然后對該模型進行生成代碼配置及生成代碼,保存,然后再打開下一個模型直至結(jié)束。單獨模型生成代碼配置及生成代碼實現(xiàn)代碼示例如圖8所示。

        圖7 建立數(shù)據(jù)對象代碼示例

        圖8 單獨模型生成代碼配置及生成代碼實現(xiàn)代碼示例

        將所有模型生成代碼放到一個文件夾是依次循環(huán)將所有模型生成代碼文件放到一個文件夾,單個模型生成代碼放到一個文件夾代碼實現(xiàn)示例如圖9所示。

        圖9 單個模型生成代碼放到一個文件夾代碼實現(xiàn)示例

        代碼測試過程實現(xiàn)調(diào)用SIL測試,進行SIL測試和定點模型測試結(jié)果對比時首先創(chuàng)建測試模型,然后進行正常測試和SIL測試,最后進行結(jié)果對比。示例代碼如圖10所示。

        圖10 SIL測試實現(xiàn)代碼示例

        代碼集成過程實現(xiàn)生成全局系統(tǒng)常數(shù)聲明文件時與生成數(shù)據(jù)對象代碼基本一致,使用mpt.Parameter來實現(xiàn)。自動生成A2L文件是將自動生成代碼中單獨子模塊生成的A2L文件組成為一個A2L文件,刪去重復(fù)生成的變量,并利用編譯代碼生成的MAP文件進行地址替換。在替換地址時首先要進行變量識別,識別過程采用正則表達式實現(xiàn)。識別標定量正則表達式部分代碼示例如圖11所示。

        圖11 識別標定量正則表達式代碼示例

        4 應(yīng)用實例

        以某型發(fā)動機后處理再生開關(guān)故障判斷模型為例,由于正常情況下后處理再生開關(guān)按下之后10s之內(nèi)會自動彈起,當后處理再生開關(guān)按下狀態(tài)持續(xù)大于20s則認為后處理再生開關(guān)處于按下卡滯狀態(tài)。當發(fā)動機后處理再生開關(guān)處于按下卡滯狀態(tài)時,會導(dǎo)致再生請求一直存在,發(fā)動機后處理顆粒捕集器存在燒熔的風險。

        按照功能定義手工搭建模型如圖12所示。

        圖12 手工搭建浮點原始模型

        從圖12可見,該模塊使用了模塊庫,但是明顯不是最新版本模塊庫,輸入輸出口信號凌亂、信號線上無變量名。

        運行自動化腳本工具勾選項如圖13所示,點擊運行模型變化為圖14所示。

        圖13 浮點功能建模自動化工具運行界面

        由圖14可見,執(zhí)行完自動化操作后,模型替換為最新版本模塊庫,輸入輸出口信號整齊,信號線上添加了變量名,模型封裝為子系統(tǒng)且子系統(tǒng)變量名默認取模型名。當存在多個子系統(tǒng)時模型名后依次加序號區(qū)別。

        5 結(jié)束語

        本文針對MBD模式開發(fā)過程中大量重復(fù)性工作導(dǎo)致的效率低問題進行開發(fā)自動化腳本工具,采用MATLAB/M語言來實現(xiàn)。本文的MBD軟件開發(fā)自動化腳本工具提高了開發(fā)人員工作效率,降低了對開發(fā)人員針對MBD開發(fā)模式的專業(yè)程度,細節(jié)化操作選項靈活組合提高了腳本復(fù)用率。該自動化腳本工具開發(fā)方法為同領(lǐng)域嵌入式軟件自動化開發(fā)提供了借鑒參考。

        圖14 浮點功能建模自動化執(zhí)行后模型圖

        猜你喜歡
        浮點定點代碼
        例談圓錐曲線中的定點定值問題
        LEO星座增強GNSS PPP模糊度浮點解與固定解性能評估
        定點幫扶讓村民過上美好生活
        解析幾何中定點問題的處理策略
        直線過定點的5種特優(yōu)解法
        基于浮點DSP的鐵路FSK信號檢測
        創(chuàng)世代碼
        動漫星空(2018年11期)2018-10-26 02:24:02
        創(chuàng)世代碼
        動漫星空(2018年2期)2018-10-26 02:11:00
        創(chuàng)世代碼
        動漫星空(2018年9期)2018-10-26 01:16:48
        創(chuàng)世代碼
        動漫星空(2018年5期)2018-10-26 01:15:02
        免费看美女被靠的网站| 91蜜桃精品一区二区三区毛片| 国产精品日本一区二区三区在线| 男女男在线精品免费观看| 区一区二区三区四视频在线观看| 国产a∨天天免费观看美女| 日本做受120秒免费视频| 日本公与熄乱理在线播放| 97伦伦午夜电影理伦片| 国产女高清在线看免费观看| 亚洲av午夜成人片精品| 女同亚洲一区二区三区精品久久 | 亚洲αv在线精品糸列| 视频国产自拍在线观看| 99久久亚洲精品日本无码| 国产一区二区波多野结衣| 国产精品自在线免费| 中文字幕av人妻一区二区| 一道本久久综合久久鬼色| 亚洲av无码久久精品蜜桃| 免费AV一区二区三区无码| 无码一区二区三区久久精品| 亚洲成人激情深爱影院在线 | 国产欧美日韩综合一区二区三区| 久久综合久中文字幕青草| 本道天堂成在人线av无码免费| 亚洲国产成人精品无码区在线秒播| 少妇激情av一区二区| av天堂精品久久久久| 国产麻豆国精精品久久毛片| 强开小婷嫩苞又嫩又紧视频| 在线亚洲人成电影网站色www | 国产精品av免费网站| 在线观看av网站永久| 欧美成人一区二区三区| 国产免费一级高清淫日本片| 国产熟妇一区二区三区网站| 自拍视频在线观看首页国产 | 国模无码人体一区二区| 亚洲精品午夜精品国产| 国产亚洲精品av一区|