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

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

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

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

MATLAB ? 來(lái)源:djl ? 作者:Guy Rouleau ? 2019-09-16 14:23 ? 次閱讀

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

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

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

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

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

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

a.當(dāng)車(chē)在運(yùn)行時(shí),我們使用計(jì)數(shù)器累加來(lái)跟蹤記錄發(fā)動(dòng)機(jī)的在它的整個(gè)生命周期里運(yùn)行的全部時(shí)間。

b. 在正常關(guān)停的場(chǎng)景下,車(chē)鑰匙熄火,我們將累計(jì)的時(shí)間寫(xiě)入一個(gè) non-volatile 內(nèi)存。所以,在下次汽車(chē)啟動(dòng)的時(shí)候它還可以被讀出來(lái)。

c. 假如電池沒(méi)電了汽車(chē)也會(huì)關(guān)停,但是這時(shí)候我們就沒(méi)有機(jī)會(huì)把累計(jì)時(shí)間寫(xiě)入 non-volatile 內(nèi)存了。

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

使用 Initialize 和 Terminate 事件

首先用一個(gè)簡(jiǎn)單的計(jì)數(shù)器例子,用來(lái)模擬發(fā)動(dòng)機(jī)運(yùn)行時(shí)間計(jì)數(shù):

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

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

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

勾選這兩個(gè)選項(xiàng),Model 模塊就多出兩個(gè)輸入端口,可連接 Function-call 信號(hào)(見(jiàn)下圖)。

作為第一次簡(jiǎn)單嘗試,我們用一個(gè) Stateflow chart 來(lái)仿真車(chē)鑰匙啟、停時(shí)分別啟動(dòng)和關(guān)閉這個(gè)計(jì)數(shù)器 EngineRunTime。

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

仿真結(jié)果如下:

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

當(dāng)車(chē)鑰匙啟動(dòng)時(shí),計(jì)數(shù)器在增長(zhǎng),而當(dāng)車(chē)鑰匙關(guān)停時(shí),計(jì)數(shù)器停止計(jì)數(shù)。而當(dāng)車(chē)鑰匙再次啟動(dòng)的時(shí)候,計(jì)數(shù)器重置了。

自定義Initialize 和 Terminate 事件

就像之前所說(shuō)的,我們并不希望這個(gè)計(jì)數(shù)器在每一次車(chē)鑰匙關(guān)停的時(shí)候都重置,不然就沒(méi)法累計(jì)發(fā)動(dòng)機(jī)的運(yùn)行時(shí)間了。

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

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

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

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

我們來(lái)看結(jié)果:

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

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

Reset Function

就像之前說(shuō)的,我們還需要模擬由于電池電壓過(guò)低引起的車(chē)輛重啟。

這表示,在有些真實(shí)場(chǎng)景下,有時(shí)候計(jì)數(shù)器模型結(jié)束運(yùn)行的時(shí)候,我們是沒(méi)機(jī)會(huì)往Data Store 里寫(xiě)數(shù)據(jù)的。

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

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

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

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

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

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

仿真結(jié)果如下:

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

可以看到,在因?yàn)殡姵厥Ф鸬年P(guān)停時(shí),計(jì)數(shù)器的值并不會(huì)保存給下次重啟的時(shí)候用。

代碼生成

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

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

簡(jiǎn)單來(lái)說(shuō),就是把上面 EngineRunTime 模型里的 Data Store Read/Write 模塊替換為 Function call。

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

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

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

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

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

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

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

    關(guān)注

    32

    文章

    2256

    瀏覽量

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

    關(guān)注

    3

    文章

    4331

    瀏覽量

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

    關(guān)注

    84

    文章

    10576

    瀏覽量

    129692
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

    SDRuno軟件使用說(shuō)明 v1.22.002

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

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

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

    啟動(dòng):TPS2373X特性說(shuō)明

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

    潤(rùn)和軟件啟動(dòng)鯤鵬原生開(kāi)發(fā)合作

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

    FSP庫(kù)啟動(dòng)文件說(shuō)明

    FSP庫(kù)啟動(dòng)文件說(shuō)明
    的頭像 發(fā)表于 06-04 08:06 ?476次閱讀
    FSP庫(kù)<b class='flag-5'>啟動(dòng)</b>文件<b class='flag-5'>說(shuō)明</b>

    XC2365應(yīng)用區(qū)跳轉(zhuǎn)啟動(dòng)區(qū)程序中的特定地址一直在循環(huán),為什么?

    。 現(xiàn)在可以肯定跳轉(zhuǎn)指令沒(méi)有問(wèn)題,程序已經(jīng)跳轉(zhuǎn)到引導(dǎo)區(qū),在跳轉(zhuǎn)之前我已經(jīng)關(guān)閉了中斷。 或者提供一些關(guān)于軟件重置的代碼,我試過(guò)軟件重置,但失敗了,也許我的
    發(fā)表于 05-22 06:18

    態(tài)勢(shì)數(shù)據(jù)分析系統(tǒng)軟件

    智慧華盛恒輝態(tài)勢(shì)分析軟件系統(tǒng)的功能描述、部署環(huán)境、界面使用、技術(shù)支持及一些常見(jiàn)問(wèn)題及其解決辦法等。為數(shù)據(jù)態(tài)勢(shì)分析軟件系統(tǒng)的管理人員和使用人員提供說(shuō)明
    的頭像 發(fā)表于 04-22 11:36 ?450次閱讀

    模擬電路仿真軟件中電阻咋找

    模擬電路仿真軟件中電阻的尋找方法在設(shè)計(jì)和分析電路時(shí)非常重要。電阻是電路中常見(jiàn)的元件,它用于限制電流流過(guò)電路中的特定部分。在模擬電路仿真軟件
    的頭像 發(fā)表于 04-21 10:45 ?2571次閱讀

    PCAN軟件的使用操作說(shuō)明

    本文檔是PCAN軟件的使用操作說(shuō)明,方便剛接觸PCAN的伙伴們快速上手使用這個(gè)軟件
    的頭像 發(fā)表于 02-27 11:42 ?1.2w次閱讀
    PCAN<b class='flag-5'>軟件</b>的使用操作<b class='flag-5'>說(shuō)明</b>

    CANoe軟件的使用操作說(shuō)明

    本文檔是CANoe軟件的使用操作說(shuō)明,方便剛接觸CANoe的伙伴們快速上手使用這個(gè)軟件。
    的頭像 發(fā)表于 02-25 14:30 ?1.2w次閱讀
    CANoe<b class='flag-5'>軟件</b>的使用操作<b class='flag-5'>說(shuō)明</b>

    Ethernet_1_KIT_TC397_TFT例程 ,關(guān)閉LWIP_DHCP宏后,pc上putty軟件按照說(shuō)明配置連接不上是為什么?

    關(guān)于Ethernet_1_KIT_TC397_TFT例程 ,關(guān)閉LWIP_DHCP 宏后,pc上putty軟件按照說(shuō)明配置連接不上, 是對(duì)的嗎? 如果
    發(fā)表于 01-18 08:20

    14種電機(jī)啟動(dòng)電路分析

    【資料】14種電機(jī)啟動(dòng)電路分析
    的頭像 發(fā)表于 01-04 10:56 ?1254次閱讀
    14種電機(jī)<b class='flag-5'>啟動(dòng)</b>電路<b class='flag-5'>分析</b>