那曲檬骨新材料有限公司

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

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

3天內不再提示

Simulink Test Sequence場景測試和代碼生成步驟

冬至子 ? 來源:鳴鳴鑼的小屋 ? 作者:Maxwell Luo ? 2023-07-22 10:02 ? 次閱讀

圖片

Simulink是基于時間序列的仿真系統,因此在我們進行單元測試的時候,往往會輸入一組時間相關的數據,通過Signal Builder、Signal Editor我們可以做到快速地創建一組時間序列數據。但是有的時候,我們更加關注軟件某些時刻的行為,且測試的觸發取決于一定的先決條件。這個時候,我們就需要基于場景的測試了。在Simulink中,Test Sequence/Test Assessment就很好地滿足了這一需求。我們今天主要聚焦于使用Test Sequence完成場景測試的編輯,以及對Test Sequence進行代碼生成。

使用Test Sequence

首先創建一個簡單的模型,實現一個簡單的功能:把輸入乘以2之后再輸出。這里我們可以選擇通過創建Harness來測試,在創建時勾選使用Test Sequence來驅動。

圖片

圖片

但是我們這里不選擇自動創建,而是手動創建Test Sequence,這樣我們能夠更好地體會它的功能。

新建一個測試專用的模型,并把待測試的目標模型引用進來,再創建一個空白的Test Sequence模塊。可以從引用模型的接口看到,該模型需要一個函數調用和一個輸入數據進行驅動。我們在Test Sequence模塊中完成這一工作。

圖片

打開Test Sequence模塊,可以看到左側欄是一些標識符的定義,右側就是場景編輯界面。每一條測試都是由步驟名、步驟動作、轉移條件、下一步驟組成,操作起來很像狀態機,語句也都是MATLAB語言,非常自然。

圖片

下面嘗試編輯一個場景:初始時(t=0),輸入賦值為0;t = 1時刻,輸入賦值為1,同時調用一次Step函數;t = 5時刻,輸入賦值為2,同時調用一次Step函數。我們第一次寫出來的Test Sequence如下所示。

圖片

連接好測試模型,設置為離散求解器,步長為0.2,仿真時間為10s,記錄輸出值以及事件。

圖片

運行仿真,查看Sequence Viewer如下。遺憾地發現,Step函數并沒有像我們預期的那樣,在1s和5s時刻運行一遍。這是因為Simulink還是基于時間序列的仿真,并不能真的只在1s和5s各自運行一次。Test Sequence只是提供了一些方便的場景編輯功能,在上面那種寫法中,Simulink維持了Step在每個時刻進行調用的設置。對于數據也是同樣的道理,雖然用戶只設置了一次,但是往后的仿真時間步會延續該次設置值,并持續產生數據。

圖片

因此,正確的寫法應該是如下所示。這樣能夠保證,Step函數真的只在期望的時刻發生調用了。

圖片

圖片

對Test Sequence生成代碼

Test Sequence模塊無疑是非常好用的工具,那么是否可以應用到SIL的測試場景中呢?答案是可以的。Test Sequence模塊可以生成代碼,這樣我們就可以得到一個C代碼的測試驅動程序。我們把上述Test Sequence模塊拷貝到一個新的Simulink模型中,并進行如下的配置,就可以生成我們想要的驅動代碼形式了。

圖片

這里注意以下幾點:

  1. Test Sequence模塊既輸出了信號,也輸出了函數調用,如果希望能夠在代碼中看到函數調用,就必須構造一個Function Call Subsystem和Function Caller來承接這個函數調用,如下所示。

圖片

  1. 對于輸出的信號如果有特殊的接口形式要求(比如某個全局變量,或者接口函數),那么可以通過Simulink自定義存儲類來實現,綁定此信號線和一個Simulink.Signal對象。像下面這樣,可以讓輸出為一個全局變量x;也可以是一個標準的RTE接口。

圖片

圖片

  1. 要注意驅動模型的仿真步長一定要和被測對象進行匹配。因為本Test Sequence模塊是放在一個定速率模型中,其運行節奏是由步長決定的,代碼生成中也可以看到,Test Sequence中所謂t == 1 ,after( 1 , sec)也都會轉換到相應的步長上。因此如果步長配置錯誤會導致測試驅動的節奏錯誤。(額外提一點,包含Test Sequence的模型配置成導出函數模型或AUTOSAR模型的話,在生成代碼上有困難。)

圖片

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 仿真器
    +關注

    關注

    14

    文章

    1019

    瀏覽量

    83932
  • MATLAB語言
    +關注

    關注

    0

    文章

    12

    瀏覽量

    8715
  • simulink仿真
    +關注

    關注

    0

    文章

    75

    瀏覽量

    8611
  • sequence
    +關注

    關注

    0

    文章

    23

    瀏覽量

    2862
  • 求解器
    +關注

    關注

    0

    文章

    77

    瀏覽量

    4557
收藏 人收藏

    評論

    相關推薦

    基于base test如何來構造測試用例

    在設計仿真用例時,有限制條件的激勵相比漫無目的的仿真更加有效的找出RTL的bug。因此,同一份測試方案,不同的sequence往往代表著不同的test_case。真正的測試用例都是基于
    的頭像 發表于 09-19 09:16 ?2430次閱讀

    CCS打開simulink生成的dsp代碼

    simulink生成DSP代碼,并成功下載到板子上后,用CCS選中生成代碼文件確卻不能打開,這是為什么?
    發表于 10-29 18:33

    Simulink模型生成代碼

    本文首先通過一個簡單的Simulink模型生成代碼,然后將代碼copy到一個STM32工程中去編譯軟件。最后將軟件下載到STM32F407中,通過串口輸出
    發表于 08-11 07:56

    通過一個簡單的Simulink模型生成代碼

    本文首先通過一個簡單的Simulink模型生成代碼,然后將代碼copy到一個Arduino路徑中去編譯軟件。最后將軟件下載到Arduino Uno中,通過串口輸出
    發表于 08-18 06:22

    手把手教你SIMULINK代碼生成

    FrancisZhao:專欄文章列表以及一些說明?zhuanlan.zhihu.comFrancisZhao:手把手教你代碼生成(下):SIMULINK代碼
    發表于 08-18 06:03

    請問simulink代碼如何生成2020a?

    請問simulink代碼如何生成2020a?
    發表于 11-22 06:38

    MATLAB/SIMULINK生成嵌入式代碼有哪些步驟

    昨天參加了Mathworks公司在東南大學舉辦的關于MATLAB的培訓,內容是關于MATLAB/SIMULINK的嵌入式代碼生成以及物理建模,在這里把代碼
    發表于 12-16 07:16

    基于Simulink代碼生成過程是怎樣的?

    基于Simulink代碼生成過程是怎樣的?
    發表于 02-18 07:46

    Simulink 自動代碼生成原理分享

    多出來一些目標系統可以選擇。自定義目標系統是為了讓Simulink生成代碼能根據用戶的需要,與底層驅動做集成。我們首先需要了解Simulink目標編譯的流程,如下圖,
    發表于 05-31 11:19

    MathWorks推出新款代碼生成工具Simulink

      MathWorks 今日宣布 Simulink 代碼生成工具箱已通過 Embedded Coder 嵌入到 Freescale 的新款 Motor Control Development Toolbox 中。該工具箱包括
    發表于 04-26 08:39 ?1309次閱讀

    MBD的Simulink使用技巧:Simulink代碼生成的基本概念(1)

    MATLAB/Simulink中一共提供三個代碼生成的工具
    的頭像 發表于 07-13 15:11 ?2953次閱讀
    MBD的<b class='flag-5'>Simulink</b>使用技巧:<b class='flag-5'>Simulink</b><b class='flag-5'>代碼</b><b class='flag-5'>生成</b>的基本概念(1)

    MBD的Simulink使用技巧:詳解代碼生成中的模型與代碼(2)

    上一篇文章中提到,生成嵌入式代碼,必須選擇定步長求解器。實際中,生成嵌入式代碼幾乎不會使用Simulink模型庫中的連續模型,往往需要通過最
    的頭像 發表于 07-13 15:13 ?5707次閱讀
    MBD的<b class='flag-5'>Simulink</b>使用技巧:詳解<b class='flag-5'>代碼</b><b class='flag-5'>生成</b>中的模型與<b class='flag-5'>代碼</b>(2)

    利用Simulink自動生成STM32串口代碼

    功能:利用Simulink自動生成STM32串口代碼,在Keil中編譯后直接下載到主芯片,實現串口通訊的功能。
    的頭像 發表于 10-25 17:04 ?1914次閱讀
    利用<b class='flag-5'>Simulink</b>自動<b class='flag-5'>生成</b>STM32串口<b class='flag-5'>代碼</b>

    simulink自動生成ROS代碼

    當我們用simulink完成控制程序的搭建后,我們期望下一次可以直接對ROS進行控制,而不是每次都需要啟動matlab和simulink,因此我們可以使用simulink代碼
    的頭像 發表于 11-15 17:53 ?913次閱讀
    <b class='flag-5'>simulink</b>自動<b class='flag-5'>生成</b>ROS<b class='flag-5'>代碼</b>

    Simulink自動生成代碼現階段的學習筆記

    在車載控制器的軟件開發中,simulink的身影幾乎隨處可見,主要是在控制算法和控制邏輯的實現。平時看同事點點點就生成代碼了,看起來很簡單,但是實際操作起來確各種磕磕絆絆。 下面記錄了一下
    的頭像 發表于 04-17 10:56 ?4068次閱讀
    <b class='flag-5'>Simulink</b>自動<b class='flag-5'>生成</b><b class='flag-5'>代碼</b>現階段的學習筆記
    百家乐赌场破解方法| 乐天堂百家乐官网娱乐| 喀喇沁旗| 额尔古纳市| 老牌百家乐官网娱乐城| 七乐百家乐官网现金网| 金城百家乐官网玩法平台| 现金百家乐官网技巧| 百家乐官网五湖四海娱乐场开户注册 | 百家乐庄闲作千| 广州百家乐酒店用品制造有限公司 | 百家乐官网网站排名| 利澳百家乐官网的玩法技巧和规则 | 百家乐隔一数打投注法| 新百家乐的玩法技巧和规则| 水果机游戏| 武功县| 百家乐官网玩法皇冠现金网 | 百家乐官网赌博代理荐| 风水24山辛山乙| 百家乐微笑不倒| 大发888娱乐游戏充值| 岳普湖县| 百家乐官网8点直赢| 百家乐官网计划工具| 玩百家乐输澳门百家乐现场| 大发888特惠代码| 承德县| 利都百家乐官网国际娱乐网| 百家乐手机投注平台| 怎么玩百家乐的玩法技巧和规则| 大发888娱| 澳门百家乐官网21点| 太子百家乐官网的玩法技巧和规则| 最好的百家乐投注| 水果机遥控器价格| 百家乐官网金币游戏| 什么叫百家乐官网的玩法技巧和规则| 赌百家乐的下场| 百家乐策略大全| 百家乐园百乐彩|