在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

MBDT實現(xiàn)PIL測試步驟

冬至子 ? 來源:autoMBD ? 作者:autoMBD ? 2023-07-13 10:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 從零新建一個MBDT工程

  • 按鍵中斷 :檢測S32K144 EVB上的按鍵SW2,每按下一次,紅色LED燈切換一次亮滅狀態(tài);
  • 周期中斷 :每0.5秒(2 Hz)進(jìn)入一次周期中斷服務(wù)函數(shù),切換綠色LED燈亮滅狀態(tài),綠色LED燈會亮滅交替閃爍。

從零開始創(chuàng)建MBDT工程可以分為七個步驟:

**1. **將S32K144 EVB連接到電腦上,注意檢查OpenSDA端口號和磁盤中S32K144 EVB盤號;

**2. **選擇合適的位置作為MATLAB的工作空間,新建Simulink模型,并命名保存;

**3. **在模型中添加必要模塊,包括MBD_S32K1xx_Config_Information、Digital_Input_ISR、Periodic_Interrupt_Timer和兩個Function-Call Subsystem,如下圖:

圖片

添加模塊到新建工程中 - From autoMBD

**4. **配置模塊的參數(shù),各個模塊的配置可以參照以下截圖(未給出截圖的地方保持默認(rèn)即可):

圖片

MBD_S32K1xx_Config_Information配置1 - From autoMBD

圖片

MBD_S32K1xx_Config_Information配置2 - From autoMBD

圖片

Periodic_Interrupt_Timer配置 - From autoMBD

圖片

Digital_Input_ISR配置 - From autoMBD

**5. **構(gòu)建中斷中執(zhí)行的功能,本示例執(zhí)行的功能較為簡單,僅控制燈的亮滅。具體的模型如下(兩個模型實際上是一樣的,只不過輸出的引腳不一樣):

圖片

周期中斷的中斷函數(shù)模型 - From autoMBD

圖片

按鍵中斷的中斷函數(shù)模型 - From autoMBD

**6. **選擇固定步長,配置工程的步長為0.001 s,設(shè)置求解器為離散求解器。工程的步長根據(jù)實際需要進(jìn)行配置,但也要考慮模型的運算量。如果運算量大,在設(shè)置的步長內(nèi)不能完成計算,會導(dǎo)致錯誤結(jié)果。

圖片

工程求解器配置 - From autoMBD

**7. **至此MBDT的工程已經(jīng)完成,可以生成代碼了。在“C CODE”標(biāo)簽中點擊“Build”(快捷鍵ctr + B),Simulink編譯后會將代碼自動下載到S32K144 EVB中,并運行起來。一切正常的話,下載后可以看到綠色LED燈在不斷閃爍,按壓SW2按鍵,可以控制紅色LED燈的亮滅。

從零開始新建一個MBDT工程的基本步驟就是這樣的了。

使用模型來構(gòu)建自己的函數(shù),最常用到的是Simulink中的 Stateflow ,它可以高效的產(chǎn)生和控制各種信號(Signal)、事件(Event)和狀態(tài)(State)。后期會專門針對Stateflow開一期,歡迎關(guān)注。

2 使用S32DS下載生成的代碼

可能有讀者會疑惑,為什么需要使用S32DS下載生成的代碼,Simulink不是已經(jīng)下載好了嗎?原因我總結(jié)有以下三點:

  • 最重要的一點是 ,底層驅(qū)動并不適合通過模型的方式來實現(xiàn),最高效的還是使用S32DS來配置底層。一般建議將算法部分和底層驅(qū)動分開,這樣的話需要有一個集成的過程,這就避免不了使用S32DS;
  • 使用S32DS進(jìn)行debug更加高效和便捷,功能也更加強(qiáng)大;
  • 通過S32DS還可以對生成的代碼進(jìn)行擴(kuò)展,擴(kuò)展一些其它庫或者技術(shù)棧。

從我目前了解到的,一個完整的基于MBD的開發(fā),還很難擺脫對IDE的依賴,所以這里給出使用S32DS下載生成的代碼的示例。同樣給出一個視頻教程時長約4 min 44 s。

使用S32DS下載生成的代碼,一共有6個步驟:

**1. **打開S32DS,新建一個空白工程,并刪去main.c文件。注意新建工程時不要選擇SDK,因為生成的代碼中已經(jīng)包含了SDK,其他保持默認(rèn)即可。

圖片

*新建S32DS工程(不選擇SDK) * - From autoMBD

但如果你在 模型中使用了AMMCLIB的相關(guān)模塊 ,可以在新建的時候添加相應(yīng)的AMMCLIB庫:

圖片

*添加AMMCLIB工具 * - From autoMBD

當(dāng)然也可以通過添加庫的方式添加AMMCLIB,添加庫的方法是:選中工程,右鍵選擇“Properties”,找到Paths and Symbols中的Library Paths和Libraries,添加S32K14x_AMMCLIB.a文件和路徑即可(其他擴(kuò)展庫也是這樣的方法添加):

圖片

*添加AMMCLIB工具 * - From autoMBD

需要注意的是路徑和庫文件的格式,以我自己安裝的AMMCLIB1.1.24為例,格式如下:

  • 庫文件為 英文的冒號+文件名 ,不包含路徑

圖片

*添加庫文件 * - From autoMBD

  • 庫路徑為 路徑所在目錄 ,不包含庫文件

圖片

*添加庫路徑 * - From autoMBD

視頻展示的例程沒有使用到AMMCLIB庫,所以沒有上述過程。

**2. **將Simulink生成的代碼復(fù)制到S32DS工程中去,生成的代碼在Simulink工作空間一個標(biāo)題為 “工程名”+“_mbd_rtw” 的文件夾中。生成的代碼源文件有:

  • common文件夾內(nèi)所有文件
  • inc文件夾內(nèi)所有文件
  • S32K144文件夾內(nèi)所有文件
  • src文件夾內(nèi)所有文件
  • 目錄內(nèi)所有***.c和.h文件***

將上述所有源文件復(fù)制到新建的工程中去:

圖片

*復(fù)制生成的代碼到S32DS工程中 * - From autoMBD

**3. **下一步,添加編譯路徑。需要添加的具體路徑如下:

  • ${ProjDirPath}/src
  • ${ProjDirPath}/src/common
  • ${ProjDirPath}/src/inc
  • ${ProjDirPath}/src/S32K144/include
  • ${ProjDirPath}/src/src/clock/S32K1xx
  • ${ProjDirPath}/src/src/power/S32K1xx

值得注意的是, 如添加了庫,那么庫的include文件也需要包含到路徑中 。還是以AMMCLIB1.1.24為例,庫的包含路徑為:

  • C:NXPAMMCLIBS32K14x_AMMCLIB_v1.1.24include

同樣視頻中也沒有這個步驟。添加庫的方法是:選中工程,右鍵選擇“Properties”,找到Paths and Symbols中的“Includes”,依次添加上述路徑即可。如下圖所示:

圖片

*添加必要的編譯路徑 * - From autoMBD

**4. **將startup.c、system_S32K144.c從編譯路徑中移除,因為這些文件和新建的S32DS工程有重復(fù),編譯會報錯。從編譯路徑移除的方法是:選中要移除編譯路徑的文件,右鍵選中Buidl path -> Remove from -> Debug_FLASH。

移除編譯路徑的文件并沒有被刪除,但不會被編譯,同時文件會變成灰色。如下圖所示:

圖片

*移除編譯路徑的文件 * - From autoMBD

5. 至此生成的代碼已經(jīng)成功導(dǎo)入到S32DS中了,可以點擊編譯查看是否有錯誤。

圖片

*編譯S32DS工程 * - From autoMBD

**6. **點擊Debug蟲,開始下載代碼

圖片

下載S32DS工程* * - From autoMBD

下載成功后,即可開始Debug,下圖方框中的按鈕分別是:運行、暫停、終止、斷開連接、步入、步進(jìn)、步出。

圖片

*S32DS Debug調(diào)試 * - From autoMBD

通過S32DS下載的代碼,功能和Simulink下載的是完全一樣的。

3 基于MBDT實現(xiàn)PIL測試

通過MBDT,實現(xiàn)PIL(Processor In the Loop)是比較簡單的。

PIL的基本原理是,Simulink在下載代碼的同時,會在代碼中包含一段通信協(xié)議。該通信協(xié)議可以接受Simulink發(fā)送的指令,并傳輸代碼運算的結(jié)果到Simulink。

在Simulink的每一個步長中,Simulink會將輸入信號發(fā)送到MCU,MCU計算好后,再將結(jié)果傳回Simulink,周而復(fù)始實現(xiàn)PIL測試。一般采用的是串口通信方式,本示例中使用的是UART通訊。

**Tips:**該通信協(xié)議被稱為rtiostream,是Simulink開發(fā)的,有興趣的可以去了解一下。

這里要提一下,在MCU的應(yīng)用中,是沒必要做SIL(Software In the Loop)的,因為SIL是在電腦上跑(跑的是exe文件),而實際代碼是在MCU中跑。這樣的SIL測試結(jié)果沒什么意義。MCU的應(yīng)用中,一般只需要執(zhí)行PIL和HIL。

開展PIL測試需要創(chuàng)建兩個工程:Model工程是被測工程,會生成代碼,并下載到MCU中運行;Top工程上位機(jī)工程,用于產(chǎn)生Model工程的輸入信號,并與MCU進(jìn)行數(shù)據(jù)交互。

本示例中對 AMMCLIB中的Sin函數(shù)進(jìn)行PIL測試 ,測試其在MCU中的運行效果。開展PIL測試一共分為了四個步驟:

**1. **首先將S32K144 EVB連接到電腦上,并為MATLAB選擇合適的工作空間。前文已經(jīng)提到過,這里不再贅述。

**2. **創(chuàng)建Model工程。Model工程比較簡單,可按以下步驟進(jìn)行創(chuàng)建:

  • 添加MBD_S32K1xx_Config_Information模塊,并配置參數(shù);
  • 添加GFLIB_Sin_FLT、輸入和輸出模塊;
  • 配置工程步長為0.001 s。

創(chuàng)建的Model工程如下圖所示:

圖片

*PIL測試的Model工程 * - From autoMBD

**3. **創(chuàng)建Top工程。可按以下步驟創(chuàng)建:

  • 添加Model模塊,并關(guān)聯(lián)到需要測試的model工程;
  • 添加對照模塊,斜坡輸入(斜率π,初始值-2π)作為輸入信號;
  • 配置工程步長為0.001 s。

值得注意的是,PIL的輸入信號要轉(zhuǎn)換為單精度數(shù),因為MCU處理的是單精度數(shù)據(jù)。創(chuàng)建的Top工程如下:

圖片

*PIL測試的Top工程 * - From autoMBD

**4. **至此PIL測試的模型搭建已經(jīng)完成了。將仿真總時長設(shè)為6 s,點擊Run即可開始PIL測試。測試過程中的現(xiàn)象可查看上面的視頻,這里給出一個測試結(jié)果的圖:

圖片

*PIL測試的結(jié)果 * - From autoMBD

由于斜坡輸入的斜率為π,初始值-2π,總仿真時長為6π,那么測試的輸入信號范圍是-2π到4π。從上圖可以看到,-2π到2π之間的曲線是吻合得較好的,當(dāng)輸入信號大于2π時,MCU的Sin函數(shù)計算結(jié)果開始出現(xiàn)失真。

查看AMMCLIB的手冊說明,找到GFLIB_Sin_FLT的說明

圖片

*GFLIB_Sin_FLT的說明 * - From AMMCLIB手冊

可以看到這里要求的輸入范圍是-π到π。一般對于MCU來說,算力非常緊張,所以這種非線性的數(shù)學(xué)函數(shù)會有特殊的要求,如果不滿足就會出現(xiàn)失真,結(jié)果不正確。所以我們在使用這類函數(shù)的時候一定要注意使用要求,從而保證最佳的性能。

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

    關(guān)注

    22

    文章

    1596

    瀏覽量

    109632
  • simulink仿真
    +關(guān)注

    關(guān)注

    0

    文章

    75

    瀏覽量

    8765
  • 按鍵中斷
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    6532
  • MCU芯片
    +關(guān)注

    關(guān)注

    3

    文章

    256

    瀏覽量

    12073
  • S32DS
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    1053
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    MBDT實現(xiàn)電機(jī)控制設(shè)計

    本期也屬于MBDT(Model-Based Design Tools)上手的一部分,主要是進(jìn)階一點的電機(jī)控制算法。
    發(fā)表于 07-13 09:39 ?952次閱讀
    <b class='flag-5'>MBDT</b><b class='flag-5'>實現(xiàn)</b>電機(jī)控制設(shè)計

    如何在集成模型級別上使用S32K114評估板執(zhí)行PIL?

    怎樣才能正確設(shè)置集成模型以便能夠取回探查器結(jié)果?在集成級別上完全運行 PIL 的正確步驟是什么?我應(yīng)該注意哪些約束以及應(yīng)該考慮的總體最佳實踐。 請注意,我使用的是特定架構(gòu),我在其中運行 MIL/SIL
    發(fā)表于 04-14 08:41

    嘗試運行集成模型時出現(xiàn)PIL編譯錯誤怎么解決?

    我正在使用 S32K144 和 MBDT 工具箱。我已經(jīng)成功地在單個 Simulink 模型上執(zhí)行 PIL,但是當(dāng)擁有多個模型時,我會遇到一些我不清楚如何解決的問題。它是基于配置的還是執(zhí)行 PIL 時需要考慮任何架構(gòu)限制?
    發(fā)表于 04-20 06:41

    Matlab 2022b無法運行簡單的 PIL S32CT示例是怎么回事?

    我正在為 Matlab 2022b 上的 S32K3** 版本 1.3.0 使用 MBDT 嘗試一個簡單的 PIL S32CT 示例。我正在開發(fā)的電路板是 NXP S32K3x4EVB-Q257
    發(fā)表于 04-21 07:31

    NXPs32k144 evb上的PIL仿真問題如何解決?

    確信所有的設(shè)置選項都是正確的(求解器,我配置硬件實現(xiàn)的設(shè)置,目標(biāo)塊是正確的......),但我不知道為什么我會遇到這個錯誤。 奇怪的是,如果我通過嵌入式編碼器應(yīng)用程序構(gòu)建代碼,我在刷新 evb 時不會遇到任何問題。 使用 harnest 和 SIL/PIL
    發(fā)表于 05-19 07:50

    如何設(shè)置PIL模擬的環(huán)境以及在哪里包含我的C代碼項目?

    我看到 MBDT 用于生成基于 Simulink 模塊的 C代碼,以減少原型設(shè)計過程。就我而言,我想 在 Simulink 中的 PIL(處理器在環(huán))仿真中測試我自己的 C 代碼項目。我想
    發(fā)表于 06-08 08:47

    關(guān)于MIL、SIL、PIL和HIL之間的聯(lián)系和異同分析

    SIL和PIL是等效性測試,測試的目的是為了驗證自動生成的代碼和模型具有相同的行為,既然如此,對于SIL和PIL測試用例就沒有功能意義上的
    的頭像 發(fā)表于 09-17 11:51 ?1.6w次閱讀
    關(guān)于MIL、SIL、<b class='flag-5'>PIL</b>和HIL之間的聯(lián)系和異同分析

    PIL硬件支持包開發(fā)指南

    在航空和汽車等安全攸關(guān)的行業(yè),如果采用基于模型的設(shè)計方法論(MBD),需要額外引入背靠背測試的概念,具體來說,使用模型開發(fā)的過程中,背靠背測試包含 SIL(Software-in-the-Loop)和 PIL(Processor
    的頭像 發(fā)表于 02-28 09:21 ?2228次閱讀

    看直播 | 電機(jī)控制:如何使用恩智浦MBDT實現(xiàn)快速設(shè)計、開發(fā)和部署?

    直播預(yù)告 6月8日 ?15:15–15:45 MATLAB EXPO 2023年6月8日,恩智浦的技術(shù)專家將在MATLAB EXPO上發(fā)表題為 《電機(jī)控制:使用恩智浦 MBDT實現(xiàn)快速設(shè)計、開發(fā)
    的頭像 發(fā)表于 06-04 13:45 ?1431次閱讀

    PiL測試實戰(zhàn)(上)| 單元級代碼的PiL測試

    作者:酷兔本兔小編:吃不飽對于嵌入式代碼,為了測試軟件能否在目標(biāo)芯片上實現(xiàn)預(yù)期的功能,通常需要進(jìn)行PiL測試(Processor-in-the-Loop-Testing)。目前市面上較
    的頭像 發(fā)表于 11-22 10:19 ?1436次閱讀
    <b class='flag-5'>PiL</b><b class='flag-5'>測試</b>實戰(zhàn)(上)| 單元級代碼的<b class='flag-5'>PiL</b><b class='flag-5'>測試</b>

    PiL測試實戰(zhàn)(下)| PiL階段的閉環(huán)測試

    作者:酷兔本兔小編:吃不飽上篇我們介紹了單元級軟件的PiL測試,對于集成級的PiL測試,其流程和單元階段基本一致。然而,對于一些帶有反饋控制邏輯的集成
    的頭像 發(fā)表于 12-15 10:31 ?1216次閱讀
    <b class='flag-5'>PiL</b><b class='flag-5'>測試</b>實戰(zhàn)(下)| <b class='flag-5'>PiL</b>階段的閉環(huán)<b class='flag-5'>測試</b>

    TPT19新特性之在虛擬環(huán)境中執(zhí)行PiL測試

    使用TPT 19,您可以獲得一些PiL測試(處理器在循環(huán)測試)的新特性。在C平臺上,您現(xiàn)在可以直接為您的PiL構(gòu)建目標(biāo)代碼,并在目標(biāo)板上或仿真環(huán)境中執(zhí)行它。
    的頭像 發(fā)表于 05-05 15:54 ?839次閱讀
    TPT19新特性之在虛擬環(huán)境中執(zhí)行<b class='flag-5'>PiL</b><b class='flag-5'>測試</b>

    MBDT快速上手

    基于模型的設(shè)計(Model-Based Design,MBD)的實戰(zhàn)系列從MBDT開始。
    的頭像 發(fā)表于 07-13 09:34 ?1731次閱讀
    <b class='flag-5'>MBDT</b>快速上手

    如何安裝Python圖像處理PIL

    安裝PIL庫 要使用PIL庫,我們首先需要安裝它。有兩種方法可以安裝PIL庫: 方法一:使用pip命令,在終端或命令行中輸入以下代碼: pip install Pillow 方法二:從官網(wǎng)下
    的頭像 發(fā)表于 09-12 17:15 ?3199次閱讀
    如何安裝Python圖像處理<b class='flag-5'>PIL</b>庫

    如何實現(xiàn)PIL和OpenCV之間圖像數(shù)據(jù)的轉(zhuǎn)換呢?

    PIL圖像數(shù)據(jù)格式轉(zhuǎn)換成OpenCV圖像數(shù)據(jù)格式
    的頭像 發(fā)表于 02-25 13:43 ?1703次閱讀
    主站蜘蛛池模板: 午夜宅男在线视频 | 色无五月 | 特级黄色毛片 | 亚洲一级毛片免费在线观看 | 午夜影院三级 | 国产黄色在线看 | 一级做a爱片就在线看 | 午夜视频在线观看免费高清 | 国产香蕉75在线播放 | 狠狠干天天干 | 色偷偷97 | 伊人网大 | 182.t v香蕉人人网站 | 手机看片国产免费久久网 | 精品国产一区二区三区成人 | 男女交性高清视频无遮挡 | 在线视频久久 | 一级特黄aaa大片大全 | 2022天天操| 日本欧美午夜 | 久久草在线视频国产一 | 国产精品美女自在线观看免费 | 欧美色图一区二区 | 99免费观看视频 | 色多多拼多多网站 | 性欧美xxxx | 久草视频在线免费看 | 欧美日韩视频综合一区无弹窗 | 欧美成人伊人久久综合网 | 欧美一区二区三区不卡视频 | 男人日女人的网站 | 手机看片国产免费永久 | 天天做爽夜夜做爽 | 亚洲第成色999久久网站 | 免费又黄又硬又大爽日本 | 成人中文在线 | 色玖玖 | 天堂视频免费 | 色偷偷人人 | 成人欧美另类人妖 | 久久久久久久久久免观看 |