0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

MATLAB ? 來源:djl ? 作者:李智慧 ? 2019-09-16 11:54 ? 次閱讀

致力于汽車行業(yè)基于模型設(shè)計流程的實現(xiàn)以及電控單元開發(fā)方面的技術(shù)咨詢工作。他專注于嵌入式代碼生成、系統(tǒng)集成、模型驗證、處理器在環(huán)(PIL)實現(xiàn)、模型架構(gòu)設(shè)計以及MBD工具定制等方面的開發(fā)及工具鏈的深入應用。在加入邁斯沃克之前,李智慧曾供職于法雷奧、德爾福、中汽中心公司,有10年的汽車行業(yè)產(chǎn)品開發(fā)經(jīng)驗。

圖形化建模是架構(gòu)設(shè)計普遍使用的方法。而 Simulink 已經(jīng)成為許多系統(tǒng)工程師進行架構(gòu)設(shè)計的利器。不管是在仿真驗證階段還是快速原型階段,都可以利用 Simulink 非常方便地對復雜控制模型進行功能的組織、劃分、調(diào)度等工作。

本文參考 ISO 26262 的要求,同時考慮 AUTOSAR 代碼生成的兼容性,給出使用 Simulink 實現(xiàn)軟件架構(gòu)設(shè)計的一些建議。

應用層軟件功能劃分

ISO 26262-6 要求創(chuàng)建層次化結(jié)構(gòu)的軟件組件(Software Components — SWC)。軟件組件應滿足規(guī)模適中、高內(nèi)聚、低耦合的要求。軟件組件加上ASIL(Automotive Safety Integration Level,汽車安全完整性等級)的要求就決定了開發(fā)及驗證的方法。軟件架構(gòu)中的最小實體(Entity)就是軟件單元(Software Unit)。

在 AUTOSAR(Automotive Open System Architecture)中,應用層軟件由應用軟件組件組合(Compositions of Application Software Components)組成。一個應用軟件組件(Application Software Component — ASWC)要符合特定的模板,而且通過虛擬功能總線(Virtual Functional Bus — VFB。)與其他應用組件進行通信(在控制器內(nèi)部,VBF 的具體實現(xiàn)是運行時環(huán)境 Run-time Environment — RTE)。Runnable(或可譯為運行實體)是應用軟件組件提供的、可以獨立調(diào)度的最小代碼片段。

【注】在 AUTOSAR 文檔中,軟件組件(通常指的是原子軟件組件 - Atomic Software Component)可以細分為應用軟件組件(Application Software Component)和傳感器-執(zhí)行器軟件組件(Sensor-Actuator Software Component)。本文考慮與 Simulink 建模的相關(guān)性,只講應用軟件組件。如果傳感器-執(zhí)行器軟件組件也用 Simulink 建模實現(xiàn),可以參照應用軟件組件開發(fā)方法,在 Simulink 建模層面不強調(diào)其差異性。

不管在 ISO 26262 還是 AUTOSAR 中,對于軟件單元在層次化結(jié)構(gòu)中的具體定位都沒有明確規(guī)定,實踐中通常根據(jù)具體軟件架構(gòu)以及應用復雜度而定。

在 ISO 26262 架構(gòu)下,如果某個軟件組件功能獨立而且實現(xiàn)簡單,它本身就可以是一個軟件單元;如果功能復雜,則可以進一步劃分為幾個軟件單元。

在 AUTOSAR 中情況類似:一個應用軟件組件可以只包含一個(也可能是幾個)運行實體,而且功能簡單,那么這個應用軟件組件本身就可以使一個軟件單元;如果包含多個運行實體而且功能較為復雜,每個運行實體可以是軟件單元;如果某些運行實體的功能非常復雜,則可以進一步將一個運行實體劃分為幾個軟件單元來實現(xiàn)。

在 Simulink 中,功能劃分體現(xiàn)在:將模型虛擬分組來創(chuàng)建抽象層;根據(jù)調(diào)度需求將模塊(block)分組;利用模型引用(Model Reference)來控制模型的規(guī)模。具體的軟件分層類似于以上提到的 AUTOSAR 中的分層。軟件單元通常要求為獨立模型,以便于單獨開發(fā)、驗證以及管理。其他層次根據(jù)復雜度而定。

下圖給出了一個 ISO 26262、Simulink、AUTOSAR 三者的映射關(guān)系示例:

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

該示例表示的是最為復雜的一種情況:一個應用軟件組件包含多個復雜運行實體,而運行實體進一步劃分,有多個軟件單元模型實現(xiàn)。從上到下都是通過模型引用的方式逐級展開。以下各個章節(jié)都是基于這種情況示例。

軟件單元(Software Unit)

MathWorks建議

使用 Simulink模型來表達軟件單元

相比于子系統(tǒng)庫而言,一個模型有自己的仿真及代碼生成配置參數(shù),可以單獨仿真、測試以及增量式生成代碼。由于模型的使用,多個軟件單元可以并行開發(fā),并且在配置管理系統(tǒng)中可以單獨管理。

MathWorks建議

使用模型引用(Model Reference)集成軟件單元

頂層模型(集成模型)只是一個整體框架,具體的各個軟件單元通過模型引用連接。在這種架構(gòu)下,利用 Simulink 本身的模型更新(快捷命令 Ctrl+D)功能,可以很容易地完成軟件單元集成后的靜態(tài)驗證。可以檢查軟件單元之間的接口是否匹配,可以檢查軟件單元模型與頂層集成模型配置參數(shù)的兼容性(例如解析器的選擇、硬件相關(guān)設(shè)置等)從而保證代碼生成的一致性。

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

運行實體(Runnable)內(nèi)部軟件單元(SU)的集成

在頂層模型這一層,Simulink 模塊可以顯示軟件單元的模型信息以及數(shù)據(jù)流和模塊執(zhí)行順序。

MathWorks建議

使用模型引用的方式測試軟件單元

通過頂層模型(Top Model。也可稱之為測試框架 – Test Harness)引用軟件單元模型的方式來進行單元測試(Unit Test)。單元測試的基本要求之一是測試人員不可以修改被測單元(不管是模型還是代碼)。所以要建立測試框架,輸入激勵信號以及輸出的觀測都要在測試框架環(huán)境下完成。對于模型,可以采用模型引用(Model Reference)實現(xiàn)被測模型與測試環(huán)境的獨立。

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

模型 SU1 進行 PIL 模式單元測試的框架模型

一個軟件單元模型可以在多種模式下測試驗證:

正常仿真模式(Normal Mode)

模型在環(huán)(Model-in-the-loop -- MIL)

軟件在環(huán)(Software-in-the-loop -- SIL)

處理器在環(huán)(Processor-in-the-loop -- PIL)

上圖所示的測試框架模型可以由 Simulink 軟件自動生成(上圖由 Simulink Test 生成,也可以根據(jù)實際需要,由 Simulink Verification and Validation 或者 Simulink Design Verifier 生成類似的測試框架)。工程師只需要根據(jù)功能需求,輸入測試用例(測試數(shù)據(jù)或測試序列)即可。

同樣的測試框架模型以及測試用例可以在各個測試階段重復使用:

模型階段 – 正常仿真模式或模型在環(huán) – MIL

在 PC 機上驗證生成的代碼 – SIL

在目標處理器上驗證生成的代碼 – PIL

Simulink 自帶的仿真數(shù)據(jù)觀測器(Simulation Data Inspector)可以很方便的完成測試數(shù)據(jù)觀測及分析:

不同測試用例數(shù)據(jù)(輸入或輸出)圖形化顯示或?qū)Ρ?/p>

不同測試階段結(jié)果對比(比如 MIL 和 SIL 對比,MIL 和 PIL 對比等)

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

用仿真數(shù)據(jù)觀測器分析數(shù)據(jù)

此外,Simulink Design Verifier還可以幫助工程師生成一些特定目的的測試數(shù)據(jù)來提高測試覆蓋度。

AUTOSAR運行實體(Runnable)

MathWorks 建議

使用函數(shù)調(diào)用子系統(tǒng)(Function-call Subsystem)

描述運行實體

AUTOSAR 當中,一個運行實體(Runnable)是指一個原子軟件組件(AUTOSAR Atomic Software Component)提供的最小代碼段,同時也是一個可以被單獨調(diào)度的任務。函數(shù)調(diào)用子系統(tǒng)提供了調(diào)度控制機制,可以很容易地實現(xiàn)模型各個部分周期性或非周期性的調(diào)度控制。

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

函數(shù)調(diào)用子系統(tǒng)描述運行實體

每個函數(shù)調(diào)用子系統(tǒng)由一個或幾個互相連接的軟件單元(如圖:運行實體內(nèi)部軟件單元的集成)組成。運行實體間數(shù)據(jù)交互的完整性采用AUTOSAR 運行實體間變量(Interrunnable Variable,簡稱IRV)機制來保護。因為所有函數(shù)調(diào)用由一個統(tǒng)一的觸發(fā)源產(chǎn)生,所以仿真的時候不會產(chǎn)生數(shù)據(jù)完整性問題。

軟件組件(Software Component)

對于應用層軟件來說,ISO 26262當中的軟件組件(SWC)對應于 AUTOSAR 中的應用軟件組件(ASWC)。

MathWorks建議

采用獨立模型來描述AUTOSAR應用軟件組件(ASWC)

在一個Simulink模型里將一個軟件組件對應的所有函數(shù)調(diào)用子系統(tǒng)封裝起來,在用Embedded Coder生成代碼時,這些函數(shù)調(diào)用子系統(tǒng)會自動映射到相應的運行實體(Runnable)。

MathWorks建議

要對應用模型架構(gòu)與AUTOSAR 的兼容性進行驗證

在架構(gòu)設(shè)計的早期,工程師可以只創(chuàng)建運行實體(Runnable)模型框架,其中的軟件單元(Software Unit)為空模型(只有頂層輸入及輸出,內(nèi)部沒有邏輯及連接,如下圖所示)。

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

空白的軟件單元模型

Embedded Coder(要求包含 AUTOSAR 支持包)可以分析模型架構(gòu),確認各個應用軟件組件(ASWC)是否可以根據(jù) AUTOSAR(指定版本)的要求正確地訪問數(shù)據(jù)接口以及是否可以正確地使用運行實體間變量(IRV)。

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

AUTOSAR 接口配置驗證

軟件單元(Software Unit)集成完成之后,在應用軟件組件(ASWC)生成代碼之前,可以利用 Embedded Coder 分析模型的 AUTOSAR 符合性,包括軟件單元(Software Unit)建模正確性分析,比如數(shù)據(jù)的耦合性檢查、全局數(shù)據(jù)存儲檢查、全局跳轉(zhuǎn)模塊檢查等等。

Embedded Coder 在生成 C 代碼的同時,還會生成對應的 arxml 文件,該文件符合指定的 AUTOSAR 版本,可以導入到外部 AUTOSAR 編輯工具(AAT)進一步完成系統(tǒng)級集成。

MathWorks建議

在 Simulink 環(huán)境下完成

AUTOSAR應用軟件組件的測試驗證

應用軟件組件(ASWC)這一級的集成測試可以完全在 Simulink 的環(huán)境下完成。

為了驗證生成的源代碼,Embedded Coder 將生成的代碼編譯打包成 S 函數(shù)(S-Function),創(chuàng)建軟件在環(huán)模塊(SIL block)。由于選擇了 autosar.tlc 作為系統(tǒng)目標文件(System Target File),S 函數(shù)運行所需要的 AUTOSAR RTE 接口會自動配置(不需要RTE代碼生成)。

軟件在環(huán)(SIL)和處理器在環(huán)(PIL)模塊可以在原始模型測試環(huán)境下直接替換被測模型(采用模型引用配置)。

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

同一測試環(huán)境完成不同測試

軟件組件(Software Component -- SWC)的層次化結(jié)構(gòu)

MathWorks建議

用虛擬子系統(tǒng)描述應用抽象層

ISO 26262 建議采用層次化的結(jié)構(gòu)來組織軟件組件(參照 ISO 26262-6 第 7 章)。在AUTOSAR 中,應用軟件組件(ASWC)集成在一起稱為組合(Composition)。在 Simulink 中,采用虛擬子系統(tǒng)對功能模塊進行分組,從而實現(xiàn)抽象層的概念。組合(Composition)加上被控對象模型(Plant Model),可以仿真運行整個應用系統(tǒng)(下圖省略了調(diào)度部分)。

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

系統(tǒng)級模型

在組合層次采用模型引用來集成軟件組件:

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

組合模型引用軟件組件模型

應用軟件調(diào)度

ISO 26262 要求指定每一個算法塊的調(diào)度方法及執(zhí)行順序。

運行實體(Runnable)內(nèi)部軟件單元(SU)的執(zhí)行順序

MathWorks建議

如果沒有對具體數(shù)據(jù)的依賴性,要將執(zhí)行順序顯示出來

在函數(shù)調(diào)用子系統(tǒng)(Runnable)內(nèi)部,Simulink可以顯示每個模型(軟件單元 - SU)的執(zhí)行順序(參考上圖:運行實體內(nèi)部軟件單元的集成)。如果模型之間存在數(shù)據(jù)依賴,Simulink可以自動判斷并設(shè)定執(zhí)行順序。如果沒有依賴,Simulink根據(jù)輸出端口編號給出推薦的執(zhí)行順序,用戶可以通過優(yōu)先級選項修改執(zhí)行順序。

運行實體的調(diào)度(Scheduling of Runnables)

MathWorks建議

使用Stateflow 或MATLAB模塊創(chuàng)建集中的調(diào)度器

Simulink 中的函數(shù)調(diào)用子系統(tǒng)由函數(shù)調(diào)用事件(Function-call Event)觸發(fā)??梢援a(chǎn)生觸發(fā)事件的模塊有 Stateflow、MATLAB 模塊及函數(shù)調(diào)用生成器(Function-call Generator)。為了清楚表達所有軟件單元復雜的調(diào)度關(guān)系,建議使用 Stateflow 狀態(tài)圖。

關(guān)于用 Simulink 開發(fā)應用軟件相關(guān)介紹和分享

Stateflow 實現(xiàn)集中化調(diào)度示例

在Stateflow中,時間邏輯(Temporal Logic)可以用來產(chǎn)生周期性觸發(fā)事件,數(shù)據(jù)輸入端的轉(zhuǎn)移條件可以用來產(chǎn)生非周期觸發(fā)事件。每個并行狀態(tài)右上角的數(shù)字顯示了該狀態(tài)的執(zhí)行次序。每個狀態(tài)里的事件列表定義了觸發(fā)的先后順序。

應用層通常有許多觸發(fā)事件。為了提高效率,可以用 MATLAB 腳本自動創(chuàng)建這樣的調(diào)度器,并且自動連接到相應的函數(shù)調(diào)用子系統(tǒng)。

軟件集成人員在 AUTOSAR RTE 中進行運行實體(Runnable)的運行任務分配時,可以參照用 Stateflow 描述的任務調(diào)度。反過來,也可以參照 RTE 中的任務分配調(diào)度,設(shè)計 Stateflow 調(diào)度器。

應用層軟件接口

ISO 26262 要求完整定義軟件單元(SU)及軟件組件(SWC)之間的接口。

ISO 26262 建模標準檢查(Model Advisor)可以驗證軟件單元建模的合規(guī)性。通過運行模型更新檢查功能,Simulink 引擎自動檢查接口連接及數(shù)據(jù)定義的正確性。Embedded Coder(包括 AUTOSAR 支持包)可以用來確認應用軟件組件(ASWC)接口定義是否完整以及是否符合 AUTOSAR 的要求。

Simulink 軟件提供的工具鏈(主要用到算法開發(fā)類、測試驗證類、代碼生成類等工具箱)以及開發(fā)方法可以很好地滿足符合 ISO 26262 及 AUTOSAR 要求的應用軟件開發(fā)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7030

    瀏覽量

    89038
  • 調(diào)制解調(diào)器

    關(guān)注

    3

    文章

    854

    瀏覽量

    38817
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62622
收藏 人收藏

    評論

    相關(guān)推薦

    Simulink自定義模塊開發(fā)教程 Simulink 在控制系統(tǒng)中的應用

    在控制系統(tǒng)的設(shè)計和分析中,Simulink 提供了一個強大的工具集,允許工程師通過圖形化界面快速構(gòu)建和測試復雜的系統(tǒng)模型。然而,Simulink 的標準庫可能不包含所有特定的功能,這時就需要開發(fā)
    的頭像 發(fā)表于 12-12 09:21 ?357次閱讀

    可以直接ADS1192ECG-FE連接到電腦上CCS進行調(diào)試嗎?

    如何用ADS1192開發(fā)板進行調(diào)試呢,user\'s guid 中無關(guān)于調(diào)試介紹,別回復讓我自己去看,要么你就詳細指出來在哪里,還有就是關(guān)于CCS
    發(fā)表于 12-12 06:58

    數(shù)據(jù)智能應用軟件公司明略科技遞表港交所

    近日,中國數(shù)據(jù)智能應用軟件領(lǐng)域的佼佼者明略科技(匯智控股)正式向港交所遞交了上市申請,標志著公司在資本市場的新征程。
    的頭像 發(fā)表于 12-03 11:22 ?311次閱讀

    潤和軟件榮獲全國首批應用軟件國產(chǎn)化等級認證證書

    近日,中國質(zhì)量認證中心在南京召開“2024(首屆)認證賦能江蘇高質(zhì)量發(fā)展大會”并頒發(fā)了全國首批“應用軟件國產(chǎn)化等級認證”證書,江蘇潤和軟件股份有限公司(以下簡稱“潤和軟件”)等四家企業(yè)成為全國首批
    的頭像 發(fā)表于 11-17 09:19 ?611次閱讀

    Matlab/Simulink/Stateflow建模開發(fā)及仿真測試

    matlab 模擬仿真 熟悉Matlab/Simulink/Stateflow建模開發(fā)及仿真測試,熟悉V模型開發(fā)流程。 熟悉自動代碼生成,能夠編寫或者配置自動代碼生成腳本。
    發(fā)表于 10-24 17:23

    ECU電控軟件開發(fā)及測試介紹

    本文重點介紹符合AutoSar架構(gòu)的應用軟件開發(fā)、MBD開發(fā)模式下的軟件質(zhì)量評估與優(yōu)化方案、復雜場景下的ECU性能壓力測試方案。
    的頭像 發(fā)表于 09-26 14:25 ?3353次閱讀
    ECU電控<b class='flag-5'>軟件開發(fā)</b>及測試<b class='flag-5'>介紹</b>

    9月12日云技術(shù)研討會 | ECU電控軟件開發(fā)及測試全流程解決方案

    本次研討會,經(jīng)緯恒潤將結(jié)合業(yè)務團隊多年來在軟件開發(fā)和測試領(lǐng)域的工程實踐經(jīng)驗,分享探討基于AutoSar架構(gòu)的應用軟件開發(fā)、基于MBD開發(fā)軟件質(zhì)量評估和優(yōu)化、復雜場景下ECU性能壓力測
    的頭像 發(fā)表于 09-26 14:18 ?1385次閱讀
    9月12日云技術(shù)研討會 | ECU電控<b class='flag-5'>軟件開發(fā)</b>及測試全流程解決方案

    使用MATLAB、Simulink和Polyspace加速軟件定義汽車開發(fā)

    開發(fā)軟件定義汽車 (SDV) 時,開發(fā)團隊必須具備新的能力,例如進行連續(xù)的軟件發(fā)布,減少軟件更改的交付周期以及盡可能減少部署失敗。同時,平臺團隊需要為車載計算機和區(qū)域控制器創(chuàng)建新
    的頭像 發(fā)表于 09-05 09:57 ?470次閱讀
    使用MATLAB、<b class='flag-5'>Simulink</b>和Polyspace加速<b class='flag-5'>軟件</b>定義汽車<b class='flag-5'>開發(fā)</b>

    單片機上位機軟件什么開發(fā)

    開發(fā)單片機上位機軟件時,選擇合適的開發(fā)工具和編程語言至關(guān)重要。本文將詳細介紹單片機上位機軟件開發(fā)的各個方面,包括
    的頭像 發(fā)表于 06-07 09:17 ?1370次閱讀

    上位機軟件開發(fā)什么語言

    維護的上位機軟件至關(guān)重要。本文將詳細介紹幾種常用的上位機軟件開發(fā)編程語言,并分析它們的優(yōu)缺點。 C/C++ C和C++是兩種廣泛使用的編程語言,它們在上位機軟件開發(fā)中具有很高的地位。C
    的頭像 發(fā)表于 06-06 10:44 ?1844次閱讀

    是德科技為手持射頻分析儀的FieldFox產(chǎn)品系列進一步擴充應用軟件

    新的應用軟件使 FieldFox手持式分析儀 具備了內(nèi)置信號發(fā)生器,頻率高達 54 GHz
    的頭像 發(fā)表于 05-11 17:34 ?793次閱讀

    電路仿真軟件simulink的工作原理

    Simulink是MATLAB的一個模塊,它采用圖形化的方式來創(chuàng)建動態(tài)系統(tǒng)模型并進行仿真分析。Simulink的工作原理主要基于模塊化的建模和仿真方式。
    的頭像 發(fā)表于 03-29 15:21 ?1687次閱讀

    電路仿真軟件simulink使用方法

    Simulink是MATLAB的一個重要組件,用于進行動態(tài)系統(tǒng)的建模和仿真。
    的頭像 發(fā)表于 03-29 14:25 ?2589次閱讀

    英特爾發(fā)布全新邊緣平臺,為AI應用軟件擴展提供強大動力

    在2024年世界移動通信大會上,英特爾發(fā)布了全新的邊緣平臺,這一模塊化、開放式的軟件平臺,讓企業(yè)能夠像在云端一樣便捷地開發(fā)、部署、運行、保護和管理大規(guī)模的邊緣和AI應用軟件
    的頭像 發(fā)表于 02-29 18:14 ?672次閱讀

    關(guān)于恩智浦S32通平臺的介紹

    易于使用的工具和軟件的驅(qū)動優(yōu)先考慮。工具和軟件是我們的客戶的一個關(guān)鍵的決策標準。開發(fā)人員通過我們的工具和軟件體驗NXPSoCs。SW是我們的客戶在
    的頭像 發(fā)表于 02-19 16:31 ?331次閱讀
    <b class='flag-5'>關(guān)于</b>恩智浦S32通<b class='flag-5'>用</b>平臺的<b class='flag-5'>介紹</b>