一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

MATLAB ? 來源:djl ? 作者:Guy Rouleau ? 2019-09-16 14:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在之前的導(dǎo)出函數(shù)文章中,介紹了如何配置仿真模型并將它導(dǎo)出為函數(shù):使用 Model 模塊。

案例中,我們的模型模擬的是代碼運行一次的行為。也就是說:假設(shè)這些代碼要跑在 ECU 里,當模型仿真開始ECU 啟動,這些代碼就運行,當仿真結(jié)束ECU 停止。

這是個有意思的過程,不過,要是你想仿真一些更復(fù)雜的場景,比如 ECU 多次啟動和關(guān)閉的場景呢?

這就是需要用的Initialize Function 和 Terminate Function 模塊。

下面的例子模擬了一輛車在兩種不同情況下多次啟動和關(guān)閉的場景:

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

a.當車在運行時,我們使用計數(shù)器累加來跟蹤記錄發(fā)動機的在它的整個生命周期里運行的全部時間。

b. 在正常關(guān)停的場景下,車鑰匙熄火,我們將累計的時間寫入一個 non-volatile 內(nèi)存。所以,在下次汽車啟動的時候它還可以被讀出來。

c. 假如電池沒電了汽車也會關(guān)停,但是這時候我們就沒有機會把累計時間寫入 non-volatile 內(nèi)存了。

下面我們來看看如何實現(xiàn)上述邏輯。

使用 Initialize 和 Terminate 事件

首先用一個簡單的計數(shù)器例子,用來模擬發(fā)動機運行時間計數(shù):

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

把上圖這種形式的導(dǎo)出函數(shù)模型,使用一個Model 模塊引用起來。在 R2016b 里 Model 模塊的參數(shù)設(shè)置對話框里就會出現(xiàn)兩個新選項:

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

勾選這兩個選項,Model 模塊就多出兩個輸入端口,可連接 Function-call 信號(見下圖)。

作為第一次簡單嘗試,我們用一個 Stateflow chart 來仿真車鑰匙啟、停時分別啟動和關(guān)閉這個計數(shù)器 EngineRunTime。

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

仿真結(jié)果如下:

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

當車鑰匙啟動時,計數(shù)器在增長,而當車鑰匙關(guān)停時,計數(shù)器停止計數(shù)。而當車鑰匙再次啟動的時候,計數(shù)器重置了。

自定義Initialize 和 Terminate 事件

就像之前所說的,我們并不希望這個計數(shù)器在每一次車鑰匙關(guān)停的時候都重置,不然就沒法累計發(fā)動機的運行時間了。

為了保留這個計數(shù)器的值,我們這時候就可以使用 Initialization 和 Terminate 模塊了。

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

在 Terminate Function 內(nèi)部,我們使用 State Reader 模塊來獲取當前的計數(shù)值,并保存在 Data Store 模塊里。類似的,在 Initialize Function 內(nèi)部,我們可以讀取這個 Data Store 模塊,并用這個值來初始化計數(shù)器。

譯者補充:熟悉 Simulink 代碼生成的朋友都知道,EngineRunTime 模型生成代碼時,會生成 step 函數(shù),以及相應(yīng)的Initialize 和 terminate 函數(shù)。默認情況下 Initialize 函數(shù)里進行輸入、輸出以及狀態(tài)量的初始化,terminate函數(shù)里是空的。R2016b 之后,新增加的這個 Initialize 和 terminate 模塊,可以讓你顯示的定義這兩個函數(shù)里的內(nèi)容。

我們來看結(jié)果:

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

在車鑰匙關(guān)閉和重啟后,每一次EngineRunTime 被重新調(diào)用運行時,是在持續(xù)計數(shù)的。

Reset Function

就像之前說的,我們還需要模擬由于電池電壓過低引起的車輛重啟。

這表示,在有些真實場景下,有時候計數(shù)器模型結(jié)束運行的時候,我們是沒機會往Data Store 里寫數(shù)據(jù)的。

為了模擬這種場景,我們把原來的Terminate 模塊里面的 Terminate Event Listener 模塊的事件類型從 Terminate 改為 Reset,并設(shè)置一個有含義的名字 writeNVmem。

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

這樣一來,模型里就不再有Terminate Function 模塊了。當仿真觸發(fā) terminate 事件后,就會執(zhí)行默認的模塊 terminate 函數(shù)。

我們重寫 Stateflow 調(diào)度器,處理這兩種關(guān)停的情況:

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

注意,在上面這個模型中,我們在 Model 的參數(shù)對話框里勾選了 "Show model reset ports",所以就出來了這個額外的 writeNVmem 端口。

仿真結(jié)果如下:

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

可以看到,在因為電池失效而引起的關(guān)停時,計數(shù)器的值并不會保存給下次重啟的時候用。

代碼生成

現(xiàn)在,仿真結(jié)果跟我們想要的一致了,接著我們來生成代碼。

在生成的代碼里,寫入 non-volatile 內(nèi)存一般都是用戶自定義代碼來實現(xiàn),或者是 Embedded target 提供的硬件服務(wù)。為了模擬這種情況,我們使用 Function call 模塊和 Simulink Function 來實現(xiàn),以前的帖子有介紹過這兩個模塊的用法。

簡單來說,就是把上面 EngineRunTime 模型里的 Data Store Read/Write 模塊替換為 Function call。

另外,為了能在仿真的時候得到同樣的結(jié)果,我們使用 Simulink Function 來完成讀寫 Data Store 這個功能,跟之前在Initialize 和Terminate function 的讀寫功能一樣。

這就是整個模型的結(jié)構(gòu):

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

之前的帖子有介紹過,在代碼生成的時候,可以在 EngineRunTime模型里設(shè)置配置選項,告訴 Simulink 在鏈接的時候,去哪里找這個 writeEngineRunTimNV 和 readEngineRunTimNV 函數(shù)。

我們把這個導(dǎo)出函數(shù)模型生成如下代碼:

關(guān)于模擬軟件的啟動和關(guān)閉的分析說明

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

    關(guān)注

    32

    文章

    2291

    瀏覽量

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

    關(guān)注

    3

    文章

    4380

    瀏覽量

    64850
  • 電池
    +關(guān)注

    關(guān)注

    84

    文章

    11078

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    【案例2.36】芯片啟動異常的故障分析

    【案例2.36】芯片啟動異常的故障分析在某產(chǎn)品的調(diào)試中發(fā)現(xiàn),板上核心處理芯片在每次啟動后的表現(xiàn)不同,偶爾會出現(xiàn)無法啟動的故障。經(jīng)過幾百次反復(fù)上下電測試發(fā)現(xiàn),在大多數(shù)情況下,芯片
    的頭像 發(fā)表于 06-26 08:24 ?159次閱讀
    【案例2.36】芯片<b class='flag-5'>啟動</b>異常的故障<b class='flag-5'>分析</b>

    盟通方案|專業(yè)的CANopen總線分析軟件

    過程中用最短的時間通過數(shù)據(jù)幀分析排除每一個問題。除了數(shù)據(jù)幀分析功能外,分析軟件還需要能夠模擬和仿真數(shù)據(jù)幀的指令操作,才能更方便地確認問題,驗
    的頭像 發(fā)表于 05-23 16:06 ?226次閱讀
    盟通方案|專業(yè)的CANopen總線<b class='flag-5'>分析</b><b class='flag-5'>軟件</b>

    MDMF304L1CAM-MINAS A6 系列 Block動作應(yīng)用說明資料 -Modbus啟動- 松下

    電子發(fā)燒友網(wǎng)為你提供Panasonic(Panasonic)MDMF304L1CAM-MINAS A6 系列 Block動作應(yīng)用說明資料 -Modbus啟動-相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有
    發(fā)表于 02-07 19:03
    MDMF304L1CAM-MINAS A6 系列 Block動作應(yīng)用<b class='flag-5'>說明</b>資料 -Modbus<b class='flag-5'>啟動</b>- 松下

    模擬電路分析技巧

    在現(xiàn)代電子技術(shù)中,模擬電路扮演著至關(guān)重要的角色。它們不僅用于信號放大、濾波和轉(zhuǎn)換,還廣泛應(yīng)用于傳感器接口和功率管理等領(lǐng)域。掌握模擬電路分析技巧對于電子工程師來說是必不可少的。 1. 理解電路原理 在
    的頭像 發(fā)表于 01-24 09:24 ?788次閱讀

    示波器波形分析軟件使用指南

    示波器波形分析軟件的基本功能 1.1 波形顯示 波形顯示是示波器波形分析軟件的核心功能。它能夠?qū)⑹静ㄆ鞑东@的模擬信號轉(zhuǎn)換為數(shù)字信號,并以圖
    的頭像 發(fā)表于 12-06 09:52 ?1867次閱讀

    干貨?。?!開關(guān)電源的軟啟動過程分析

    過去,要測試電源的特征,我們只是停留在用萬用表測量靜態(tài)電流和電壓,并用計算器進行復(fù)雜的計算。今天,示波器成為了很多工程師的首選電源測量平臺。有些高性價比的示波器甚至配備了電源分析軟件,簡化了設(shè)置
    發(fā)表于 11-26 17:40

    LM4811在啟動時或者shutdown開啟關(guān)閉過程中,增益控制跟預(yù)想的有偏差是為什么?

    各位大家好,關(guān)于LM4811的使用本人遇到了問題,手頭上有若干塊LM4811,有些工作正常,有些在啟動時或者shutdown開啟關(guān)閉過程中,增益控制跟預(yù)想的有偏差(一般差1個檔位),目前想確認是
    發(fā)表于 10-23 07:19

    開關(guān)電源設(shè)計,啟動電源串聯(lián)三極管關(guān)閉電路原理

    保護電路,這兩個三極管并不是過壓保護,而是關(guān)閉啟動電阻的作用,在一些場合,需要電源非常低的損耗,提高電源效率,常在電池供電系統(tǒng),在能減少功耗的地方一定會關(guān)閉,開關(guān)電源的設(shè)計有時候會兼顧很多方面,成本
    發(fā)表于 10-18 10:10

    SDRuno軟件使用說明 v1.22.002

    SDRuno軟件使用說明 v1.22.002
    發(fā)表于 10-14 11:44 ?4次下載

    AIC3204設(shè)置了時鐘常輸出,關(guān)閉模擬電源后BCLK WCLK不能保持輸出是怎么回事?

    /WCLK output。 2.P0_R29_D2=0, BCLK/WCLK are used in clock。 問題說明: 當設(shè)置P2_R2_D3=1關(guān)閉模擬電源快時BCLK/WCLK 無clock輸出
    發(fā)表于 10-12 07:59

    啟動:TPS2373X特性說明

    電子發(fā)燒友網(wǎng)站提供《軟啟動:TPS2373X特性說明.pdf》資料免費下載
    發(fā)表于 09-25 11:20 ?0次下載
    軟<b class='flag-5'>啟動</b>:TPS2373X特性<b class='flag-5'>說明</b>

    借助 MSPM0 精密模擬,輕松進行系統(tǒng)設(shè)計應(yīng)用說明

    電子發(fā)燒友網(wǎng)站提供《借助 MSPM0 精密模擬,輕松進行系統(tǒng)設(shè)計應(yīng)用說明.pdf》資料免費下載
    發(fā)表于 09-09 15:00 ?1次下載
    借助 MSPM0 精密<b class='flag-5'>模擬</b>,輕松進行系統(tǒng)設(shè)計應(yīng)用<b class='flag-5'>說明</b>

    關(guān)于降壓轉(zhuǎn)換器中啟動電阻器的設(shè)計注意事項

    電子發(fā)燒友網(wǎng)站提供《關(guān)于降壓轉(zhuǎn)換器中啟動電阻器的設(shè)計注意事項.pdf》資料免費下載
    發(fā)表于 09-06 11:29 ?0次下載
    <b class='flag-5'>關(guān)于</b>降壓轉(zhuǎn)換器中<b class='flag-5'>啟動</b>電阻器的設(shè)計注意事項

    潤和軟件啟動鯤鵬原生開發(fā)合作

    近日,江蘇潤和軟件股份有限公司(以下簡稱“潤和軟件”)與華為舉辦鯤鵬原生開發(fā)啟動儀式,宣布正式啟動鯤鵬原生開發(fā)。潤和軟件將以openEule
    的頭像 發(fā)表于 08-28 17:27 ?1006次閱讀

    請問如何關(guān)閉系統(tǒng)啟動輸出信息?

    就是關(guān)閉這段信息 ets Jan8 2013,rst cause:2, boot mode:(3,6) load 0x40100000, len 27368, room 16 tail 8
    發(fā)表于 07-22 07:13