加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 一、模型交換:導(dǎo)入工具提供求解器
    • 二、聯(lián)合仿真:導(dǎo)出工具提供求解器
    • 三、聯(lián)合仿真的接口Interface
    • 四、模型描述文件是并行的
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

康謀分享 | 自動(dòng)駕駛聯(lián)合仿真——功能模型接口FMI(二)

06/27 16:41
1258
  • 2評論
閱讀需 8 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

FMU中時(shí)間概念的連續(xù)性和離散性實(shí)際上是變量的屬性。并且FMU都能夠包含連續(xù)時(shí)間的變量或是離散時(shí)間的變量。在模型交換類型和聯(lián)合仿真類的FMU通信中可以看到這一點(diǎn)。

在FMI2.0中通過通信點(diǎn)來進(jìn)行數(shù)據(jù)交換的通信結(jié)構(gòu)是離散的。

一、模型交換:導(dǎo)入工具提供求解器

  • 仿真工具之間模型集成非常緊密。
  • 在導(dǎo)入工具和模型之間的接口非常復(fù)雜。
  • 導(dǎo)入工具必須提供合適的求解器。

二、聯(lián)合仿真:導(dǎo)出工具提供求解器

  • 模型和求解器之間有著緊密的耦合關(guān)系。
  • 導(dǎo)入工具和模型之間的接口相對簡單。
  • 可以選擇不同的聯(lián)合仿真算法和通信步長來實(shí)現(xiàn)更穩(wěn)定精確的仿真方案。

三、聯(lián)合仿真的接口Interface

通信時(shí)間步長可以和內(nèi)部步長不同,通信時(shí)間步長主要是不同F(xiàn)MU之間交換信息,而在各自的內(nèi)部可以時(shí)是不同的可變時(shí)間步長。

在聯(lián)合仿真接口中,參數(shù)會(huì)根據(jù)FMI標(biāo)準(zhǔn)有著典型的調(diào)用順序:

  • 得到輸出:fmiGetXXX(...)
  • 觸發(fā)計(jì)算直到下一個(gè)通信節(jié)點(diǎn):fmidoStep(...)
  • 設(shè)置輸入值:fmi2SetXXX(...)

以C代碼為例:

  • 使用FMI2Instantiate函數(shù)實(shí)例化FMU
CALL (FMI2Instantiate(S, resourceURI, fmi2CoSimulation, modelDescription->instantiationToken, fmi2Flase, fmi2Flase))
其中涉及到的參數(shù)分別是FMI實(shí)例、FMU資源的URI、聲明FMU的類型為聯(lián)合仿真、唯一標(biāo)識符、是否顯示FMU的GUI和是否啟動(dòng)日志記錄的參數(shù)。
  • 應(yīng)用初始值和輸出
CALL(applyStartValues(S, settings));
CALL(FMIApplyInput(S, input, setttings->startTime, true, true, false));
  • 設(shè)置參數(shù)并進(jìn)入初始化模式,如果有FMU初始狀態(tài)文件的話,可以在實(shí)例化FMU后執(zhí)行
CALL(FMI2SetupExperiment(S, settings->tolerance >0, settings->tolerance, settings->startTime, fmiFalse, 0)); 
CALL(FMI2EnterInitializationMode(S));
CALL(FMI2ExitInitializationMode(S));
  • 進(jìn)入仿真循環(huán),按照時(shí)間步長進(jìn)行采樣和應(yīng)用輸入
for(ubsigned long step = 0;; step++) { const fmi2Real time = settings->startTime + step * settings->outputInterval; ...
CALL(FMISample(S, time, result));
CALL(FMIApplyInput(S, input, time, true, true, false));
......
const FMIStatus doStepStatus = FMI2DoStep(S, time, settings->outputInterval, fmiTrue);
......
CALL(FMIGetBooleanStatues(S, fmi2Terminated, &terminated))
......
CALL(FMI2GetRealStatus(S, fmi2LastSuccessfulTime, &lastSuccessfulTime));
CALL(FMISample(S, lastSuccessfulTime, result));
......

聯(lián)合仿真算法作用

  • 聯(lián)合仿真算法不屬于FMI標(biāo)準(zhǔn)的一部分,其作用主要是用于:
  • 推進(jìn)整個(gè)仿真系統(tǒng)的時(shí)間,使得各個(gè)子系統(tǒng)的FMU組件在 每個(gè)時(shí)間步長上同步執(zhí)行仿真計(jì)算,即代碼中仿真循環(huán)的部分。
  • 交換輸入和輸出數(shù)據(jù)。
  • 觸發(fā)時(shí)鐘信號,用于同步不同仿真組件或觸發(fā)某些操作,即代碼中。
settings->startTime + step * settings->outputInterval; FMI2DoStep(S, time, settings->outputInterval, fmiTrue);
  • 處理事件,例如狀態(tài)變化、外部輸入、內(nèi)部條件觸發(fā)等,即代碼中。
CALL(FMI2GetRealStatus(S, fmi2LastSuccessfulTime, &lastSuccessfulTime));CALL(FMISample(S, lastSuccessfulTime, result));

四、模型描述文件是并行的

模型描述文件modelDescription.xml包含了關(guān)于FMU所有的靜態(tài)信息,其定義了FMU支持的接口類型,無論是模型交換或是聯(lián)合仿真,同時(shí)解釋了模型變量,包括了輸入、輸出以及相關(guān)參數(shù),以便導(dǎo)入工具進(jìn)行訪問。

除此之外也會(huì)包含模型接口的一些信息,比如模型連接時(shí)數(shù)據(jù)是符合輸入輸出的。

并且在模型描述文件中還會(huì)聲明一些屬性標(biāo)志,比如“needsExcutionTool”,這一屬性表示需要特定的程序或是特定的庫文件才能夠執(zhí)行FMU,所以在導(dǎo)入FMU時(shí),在導(dǎo)入工具中需要一個(gè)額外的包裝Wrapper,并不真正的參與計(jì)算,而是用來實(shí)現(xiàn)模型、求解工具和執(zhí)行之間進(jìn)行通信。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險(xiǎn)等級 參考價(jià)格 更多信息
LM335Z 1 STMicroelectronics Precision Temperature Sensor

ECAD模型

下載ECAD模型
$0.3 查看
QRE1113GR 1 onsemi Reflective Object Sensor, 1000-REEL

ECAD模型

下載ECAD模型
$1.13 查看
SS94A1 1 Honeywell Sensing and Control / MICRO SWITCH Hall Effect Sensor, -50mT Min, 50mT Max, 1mA, Rectangular, Through Hole Mount
$60.94 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜