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

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

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

構(gòu)建MBD仿真模型和狀態(tài)機(jī)

冬至子 ? 來源:autoMBD ? 作者:autoMBD ? 2023-07-14 16:15 ? 次閱讀

1 模型仿真與實(shí)際應(yīng)用之間的區(qū)別

MBD(Model-Based Design,基于模型的設(shè)計(jì))是通過模型生成代碼的,所有我們有必要弄清楚模型仿真與實(shí)際應(yīng)用之間的區(qū)別。

仿真模型與實(shí)際應(yīng)用之間的區(qū)別本質(zhì)上是理論實(shí)踐之間的差別,其中的差別可以說是兩個(gè)完全不同的話題。

這里又給大家更新三篇與電機(jī)控制實(shí)踐相關(guān)的文章。它們是由NXP工程師編寫的電機(jī)控制應(yīng)用筆記,可以在NXP官網(wǎng)找到,也可以在對話框中回復(fù)關(guān)鍵詞“ NXP應(yīng)用筆記 ”,即可收到相應(yīng)資源。

這三篇應(yīng)用筆記分別是:

  • 3-Phase Sensorless PMSM Motor Control Kit with S32K144
  • 3-Phase Sensorless BLDC Motor Control Kit with S32K144
  • 3-phase Sensorless Single-Shunt Current-Sensing PMSM Motor Control Kit with MagniV MC9S12ZVM

圖片

*NXP電機(jī)控制應(yīng)用筆記 * - From autoMBD

前兩篇分別以PMSM和BLDC為主題,介紹如何實(shí)現(xiàn)無感FOC控制;第三篇講的是單電阻無感控制方案,實(shí)現(xiàn)的也是FOC算法,軟件實(shí)現(xiàn)上是有一些區(qū)別的,也要復(fù)雜一些。

Tips :第三篇是基于MagniV MC9S12ZVM的,而不是S32K144,參考這篇文章時(shí),主要學(xué)習(xí)的是單電阻電機(jī)控制方案,這個(gè)方案也是完全可以移植到S32K1xx系列上的。

無感控制比有感控制要復(fù)雜,將無感的方案稍加改造就可以做出有感的控制方案,所以這三篇應(yīng)用筆記是很有實(shí)踐參考價(jià)值的。

這三篇應(yīng)用筆記給的都是 純代碼開發(fā)的方案 ,即介紹了工程實(shí)踐中如何從數(shù)學(xué)原理一步一步實(shí)現(xiàn)電機(jī)控制,主要內(nèi)容包括:

  1. 電機(jī)控制數(shù)學(xué)原理
  2. 電流、電壓采樣輸入和驅(qū)動輸出
  3. MCU模塊資源的使用
  4. 底層驅(qū)動配置和初始化
  5. 電機(jī)控制軟件架構(gòu)(狀態(tài)機(jī)、電機(jī)控制庫、MCAT等)

下面的這個(gè)框圖可以較為全面的展示 第1~4點(diǎn)在電機(jī)控制中的實(shí)際體現(xiàn) :系統(tǒng)從外部硬件(電機(jī)、逆變器、預(yù)驅(qū)芯片)起,經(jīng)過信號采集,再到MCU的外設(shè)模塊(白色方塊),再到底層驅(qū)動(SDK Driver/橙色方塊),然后進(jìn)入到FOC的軟件算法部分(綠色方塊),而FOC的輸出經(jīng)底層驅(qū)動、再到外設(shè)模塊(FTM模塊)輸出到預(yù)驅(qū)芯片,從而實(shí)現(xiàn)控制。第5點(diǎn)則是調(diào)度上述過程的狀態(tài)機(jī),關(guān)于第5點(diǎn)后文會更一步的講解。

圖片

*NXP電機(jī)控制軟硬件框圖 * - From NXP

從這五點(diǎn)我們就能引出我們要討論的問題: 模型仿真與實(shí)際應(yīng)用之間的區(qū)別到底有哪些

簡單的說,模型仿真只能觸及上述的第1點(diǎn);如果對建模有更深入的研究,第2點(diǎn)也能做仿真,這部分實(shí)際上和硬件電路設(shè)計(jì)有關(guān),所以很少有在模型仿真中考慮這一點(diǎn);第3、4、5點(diǎn)就是完全的非理論了,與嵌入式、編程和芯片有較強(qiáng)的關(guān)聯(lián),是實(shí)實(shí)在在的實(shí)踐過程。

所以,在袁雷的《現(xiàn)代永磁同步電機(jī)控制原理及MATLAB仿真》中是完全不包括第2~5點(diǎn)的內(nèi)容的。

電流采樣電阻為例,實(shí)際應(yīng)用場景中,為了測量電流信號的方向,一般會對采樣電阻進(jìn)行偏置處理。NXP開發(fā)的DEVKIT驅(qū)動板相電流采樣電阻為例,其電路設(shè)計(jì)如下圖所示:

圖片

*DEVKIT驅(qū)動板相電流采樣電阻 * - From NXP

可以看到,偏置電壓為參考電壓的一半,所以最終輸入到芯片ADC的電壓是以偏置電壓為中心對稱的。

根據(jù)大于偏置電壓還是小于偏置電壓,可以判定電流是正方向還是負(fù)方向。所以在信號處理中還需要將這個(gè)偏置電壓減去。

關(guān)于電流采樣,還有布置方式的不同,常見的采樣電阻布置方式有以下這些:

  • 三電阻下橋臂采樣/相電流采樣
  • 雙電阻下橋臂采樣/相電流采樣
  • 單電阻母線采樣

Tips :這里列舉了常見采樣電阻布置方式,一般應(yīng)用中下橋臂采樣較多,相電流采樣多用于高性能、高效率電機(jī)控制的場合,而單電阻母線采樣是成本最低,但采樣方式最復(fù)雜的。

不同的布置方式,采集的電流是不同的,而控制算法是需要全部的三相電流的。三個(gè)采樣電阻可以直接得到三相電流信號,如何通過一個(gè)電阻或者兩個(gè)電阻得到三相電流數(shù)據(jù),也是有方法的。

雙電阻相對來說較為簡單,根據(jù) 三相電流和為零 ,可以直接求解出第三相電流。單電阻采樣的場景要復(fù)雜很多,具體可以參考 上述的第三篇應(yīng)用筆記

以上關(guān)于電流采樣的所有方法,在模型仿真中都沒有考慮,只是一根信號線連接到控制器 ,這就是理論仿真和實(shí)踐的巨大區(qū)別所在,如下圖所示(摘自袁雷的《現(xiàn)代永......仿真》):

圖片

*仿真模型示例 * - From 袁雷

Tips :因?yàn)槲覀円褂肕BD的開發(fā)方法,所以這里不再深入詳細(xì)展開講其他的區(qū)別,以后有需要的地方再做提示,有興趣的讀者可以自行參閱上述三篇NXP的應(yīng)用筆記。

當(dāng)我們了解了所有理論實(shí)踐之間的區(qū)別,輔以嵌入式開發(fā)和編程的基礎(chǔ),一個(gè)簡單的電機(jī)控制項(xiàng)目就可以實(shí)現(xiàn)。

即使是一個(gè)產(chǎn)品級的電機(jī)控制軟件,也只是再補(bǔ)充通信、故障診斷、功能安全等其他需求的功能。復(fù)雜度可能會高很多,但開發(fā)和設(shè)計(jì)的本質(zhì)框架就是這樣的。

2 MBD拉近模型仿真****與實(shí)際應(yīng)用之間的距離

如果要更加嚴(yán)謹(jǐn)?shù)卣f,上面討論的也只是電機(jī)控制算法部分的工程實(shí)踐。一個(gè)完整的產(chǎn)品應(yīng)用,硬件設(shè)計(jì)軟件設(shè)計(jì) 。硬件設(shè)計(jì)可以交給硬件工程師,我們把重點(diǎn)放在軟件設(shè)計(jì)上。

上面三篇應(yīng)用筆記中提到的電機(jī)控制實(shí)現(xiàn)方案,是屬于軟件設(shè)計(jì)的一部分。傳統(tǒng)的開發(fā)中,就需要將選定的電機(jī)控制方案 轉(zhuǎn)化為一行行的代碼 ,這就又涉及到數(shù)學(xué)(理論)到編程語言(實(shí)踐)之間的轉(zhuǎn)換。入門門檻高,同時(shí)效率也較低。

Tips :以我自己的經(jīng)歷為例,上述應(yīng)用筆記內(nèi)容的代碼實(shí)現(xiàn)過程,我是完整的走過一遍的。我從對嵌入式一無所知,到學(xué)習(xí)嵌入式的基本模塊和開發(fā)方法,再到能寫一些基本的嵌入式代碼,花費(fèi)了3個(gè)月的時(shí)間,然后又花了差不多1個(gè)月的時(shí)間,才實(shí)現(xiàn)了一個(gè)簡單的電機(jī)控制嵌入式程序。這還是我對電機(jī)控制理論有了足夠的基礎(chǔ)之后的開發(fā)效率。

但利用MBD的開發(fā)方法,我們可以大大簡化這一步驟。模型我們是比較容易得到的, 利用模型直接生成代碼,能有效地縮近理論和實(shí)踐直接的距離 。更多MBD相關(guān)的內(nèi)容,請參考本公眾號 前面幾期內(nèi)容 ,或者在對話框中回復(fù)關(guān)鍵詞“ MBD入門 ”。

圖片

*MBD的開發(fā)流程 * - From ST

如果讀了上述三篇應(yīng)用筆記,就可以發(fā)現(xiàn),嵌入式軟件設(shè)計(jì)很多是可以通過建模的方式實(shí)現(xiàn)的。這里簡單的把軟件設(shè)計(jì)分為五類,它的軟硬件層級如下圖所示(軟件為虛線框部分):

圖片

*電機(jī)軟硬件層級示例 * - From autoMBD

下面是這五類軟件關(guān)于MBD建模實(shí)現(xiàn)的分析:

  • 底層驅(qū)動 ,MCU、硬件電路強(qiáng)相關(guān)

底層驅(qū)動是和芯片和硬件電路設(shè)計(jì)緊密相關(guān)的,比如硬件引腳(Pin腳、外設(shè)、端口等)使用的不一樣,底層驅(qū)動的配置也就不一樣了。

原則上底層驅(qū)動是可以通過芯片廠商提供的MBD硬件支持包來實(shí)現(xiàn)的,但從靈活性和效率的角度來說,目前建議通過專門的底層驅(qū)動配置工具來配置底層驅(qū)動,例如NXP適用于S32K1系列的配置工具Processor Expert。

數(shù)字信號處理(Digital Signal Processing,DSP)是將真實(shí)世界中的物理量(模擬量,例如電流、電壓等)轉(zhuǎn)換為控制器需要的量的過程。

還是以電流采樣為例,在前文給的電流采樣電路基礎(chǔ)上,ADC讀到的電壓實(shí)際上是一個(gè)12 bit的整數(shù),需要將其進(jìn)行偏置消除以及物理量轉(zhuǎn)換等操作,有必要的話會需要進(jìn)行濾波處理。

可以看到,這個(gè)過程和硬件電路設(shè)計(jì)有一定的聯(lián)系,硬件設(shè)計(jì)的不一樣,處理的細(xì)節(jié)可能存在一定的差異。但基本的信號處理方法是相通的,例如濾波器、積分、微分、移位運(yùn)算、邏輯運(yùn)算等。

這一過程是可以通過建模的方式實(shí)現(xiàn),并且信號處理越復(fù)雜,模型的優(yōu)勢就更明顯,畢竟模型很容易搭建,代碼寫起來就很費(fèi)勁了。

所以我們可以把軟件設(shè)計(jì)中的這一部分納入到MBD中,通過建模的方式自動生成代碼。

  • 電機(jī)控制算法 ,硬件電路弱相關(guān)

數(shù)據(jù)信號處理后,將得到的數(shù)據(jù)傳遞到電機(jī)控制算法中??刂扑惴ㄖ幸话惆ㄗ鴺?biāo)變換、PI控制器、FOC、SVPWM等環(huán)節(jié)。電機(jī)控制算法會得到一個(gè)控制輸出量,一般是三相的占空比。

這些環(huán)節(jié)使用Simulink內(nèi)置的模塊,或者使用芯片廠商提供的MBD硬件支持包,是可以很方便快捷的實(shí)現(xiàn)的。這部分如果要編寫代碼,對初學(xué)者來說,甚至對有一定編程基礎(chǔ)的人來說,都算是不小的挑戰(zhàn)。

此外建??梢院芊奖愕卣{(diào)整控制算法的結(jié)構(gòu),開發(fā)初期這是很常見的。手寫代碼的話,每一次調(diào)整結(jié)構(gòu)就需要重復(fù)工作一遍,效率很低。

因此電機(jī)控制算法部分是很適合通過建模生成代碼來實(shí)現(xiàn)的。

這里解釋一下電機(jī)控制算法****為什么是硬件電路弱相關(guān) 。一般來說,通用的電機(jī)控制算法是可以做到與硬件電路無關(guān)的。

但在某些場景下,例如有的芯片具有硬件加速模塊,或者使用一些特殊的控制算法(無感和有感就有硬件上的差異),可能會影響控制算法的執(zhí)行,所以電機(jī)控制算法和硬件有一定的關(guān)聯(lián)。

  • 狀態(tài)機(jī) ,與硬件電路無關(guān)

狀態(tài)機(jī)是與硬件電路完全無關(guān)的,而且在Simulink中提供的****Stateflow是專門用于狀態(tài)控制建模的工具 ,用它開發(fā)狀態(tài)機(jī)效率可以提高一個(gè)檔次。所以狀態(tài)機(jī)使用MBD來實(shí)現(xiàn)也是毫無問題的。

  • 其他軟件 ,例如通信、失效檢查等,暫時(shí)我們不考慮這部分內(nèi)容

從上面的分析來看,除開底層驅(qū)動,其他軟件部分均可以通過MBD建模的方式實(shí)現(xiàn),并且能大大提高效率。

下圖是較為常見的V型開發(fā)流程,參考這個(gè)流程就可以開發(fā)一個(gè)基于MBD的電機(jī)控制軟件。

圖片

*V型開發(fā)流程 * - From ST

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

    關(guān)注

    2

    文章

    492

    瀏覽量

    27541
  • PMSM
    +關(guān)注

    關(guān)注

    14

    文章

    246

    瀏覽量

    41887
  • BLDC電機(jī)
    +關(guān)注

    關(guān)注

    7

    文章

    211

    瀏覽量

    21487
  • MBD
    MBD
    +關(guān)注

    關(guān)注

    0

    文章

    25

    瀏覽量

    8970
  • FOC算法
    +關(guān)注

    關(guān)注

    1

    文章

    18

    瀏覽量

    9671
收藏 人收藏

    評論

    相關(guān)推薦

    SaberRD狀態(tài)機(jī)建模工具介紹(一)什么是狀態(tài)機(jī)建模

    狀態(tài)機(jī)建模是使用狀態(tài)圖和方程式的手段,創(chuàng)建基于混合信號的有限狀態(tài)機(jī)模型的一種建模工具。
    的頭像 發(fā)表于 12-05 09:51 ?1727次閱讀
    SaberRD<b class='flag-5'>狀態(tài)機(jī)</b>建模工具介紹(一)什么是<b class='flag-5'>狀態(tài)機(jī)</b>建模

    Verilog狀態(tài)機(jī)+設(shè)計(jì)實(shí)例

    的是有限狀態(tài)機(jī)(Finite-State Machine,F(xiàn)SM),簡稱為狀態(tài)機(jī),表示在有限個(gè)狀態(tài)以及這些狀態(tài)之間的轉(zhuǎn)移和動作等行為的數(shù)學(xué)模型
    的頭像 發(fā)表于 02-12 19:07 ?4149次閱讀
    Verilog<b class='flag-5'>狀態(tài)機(jī)</b>+設(shè)計(jì)實(shí)例

    基于有限狀態(tài)機(jī)的虛擬訓(xùn)練過程模型研究

    通過一個(gè)基于操作規(guī)程的虛擬訓(xùn)練系統(tǒng)研究了系統(tǒng)仿真流程,分析了有限狀態(tài)機(jī)(FSM)的原理,結(jié)合虛擬仿真訓(xùn)練的特點(diǎn),設(shè)計(jì)出了操作過程模型,并通過Windows 消息機(jī)制編程實(shí)
    發(fā)表于 12-07 14:23 ?14次下載

    狀態(tài)機(jī)舉例

    狀態(tài)機(jī)舉例 你可以指定狀態(tài)寄存器和狀態(tài)機(jī)狀態(tài)。以下是一個(gè)有四種狀態(tài)的普通狀態(tài)機(jī)。 // Th
    發(fā)表于 03-28 15:18 ?987次閱讀

    狀態(tài)機(jī)代碼生成工具

    狀態(tài)機(jī)代碼生成工具狀態(tài)機(jī)代碼生成工具狀態(tài)機(jī)代碼生成工具狀態(tài)機(jī)代碼生成工具
    發(fā)表于 11-19 15:12 ?9次下載

    狀態(tài)機(jī)原理及用法

    狀態(tài)機(jī)原理及用法狀態(tài)機(jī)原理及用法狀態(tài)機(jī)原理及用法
    發(fā)表于 03-15 15:25 ?0次下載

    狀態(tài)機(jī)概述 如何理解狀態(tài)機(jī)

    本篇文章包括狀態(tài)機(jī)的基本概述以及通過簡單的實(shí)例理解狀態(tài)機(jī)
    的頭像 發(fā)表于 01-02 18:03 ?1w次閱讀
    <b class='flag-5'>狀態(tài)機(jī)</b>概述  如何理解<b class='flag-5'>狀態(tài)機(jī)</b>

    FPGA:狀態(tài)機(jī)簡述

    本文目錄 前言 狀態(tài)機(jī)簡介 狀態(tài)機(jī)分類 Mealy 型狀態(tài)機(jī) Moore 型狀態(tài)機(jī) 狀態(tài)機(jī)描述 一段式
    的頭像 發(fā)表于 11-05 17:58 ?7404次閱讀
    FPGA:<b class='flag-5'>狀態(tài)機(jī)</b>簡述

    使用獨(dú)立于內(nèi)核的外設(shè)構(gòu)建硬件狀態(tài)機(jī)

    狀態(tài)機(jī)是邏輯單元、存儲器單元和反饋的組合。狀態(tài)機(jī)的輸入與狀態(tài)機(jī)的當(dāng)前狀態(tài)組合在一起,確定下一個(gè)狀態(tài)。當(dāng)出現(xiàn)
    發(fā)表于 03-30 15:58 ?7次下載
    使用獨(dú)立于內(nèi)核的外設(shè)<b class='flag-5'>構(gòu)建</b>硬件<b class='flag-5'>狀態(tài)機(jī)</b>

    什么是狀態(tài)機(jī)?狀態(tài)機(jī)5要素

    玩單片機(jī)還可以,各個(gè)外設(shè)也都會驅(qū)動,但是如果讓你完整的寫一套代碼時(shí),卻無邏輯與框架可言。這說明編程還處于比較低的水平,你需要學(xué)會一種好的編程框架或者一種編程思想!比如模塊化編程、狀態(tài)機(jī)編程、分層思想
    的頭像 發(fā)表于 07-27 11:23 ?2w次閱讀
    什么是<b class='flag-5'>狀態(tài)機(jī)</b>?<b class='flag-5'>狀態(tài)機(jī)</b>5要素

    狀態(tài)模式(狀態(tài)機(jī))

    以前寫狀態(tài)機(jī),比較常用的方式是用 if-else 或 switch-case,高級的一點(diǎn)是函數(shù)指針列表。最近,看了一文章《c語言設(shè)計(jì)模式–狀態(tài)模式(狀態(tài)機(jī))》(來源:embed linux
    發(fā)表于 12-16 16:53 ?9次下載
    <b class='flag-5'>狀態(tài)</b>模式(<b class='flag-5'>狀態(tài)機(jī)</b>)

    如何構(gòu)建基于狀態(tài)機(jī)的軟件系統(tǒng)

    模式(Design Pattern)。本文介紹如何構(gòu)建基于狀態(tài)機(jī)的軟件系統(tǒng),以及如何利用Linux下的工具來自動生成實(shí)用的狀態(tài)機(jī)框架。
    的頭像 發(fā)表于 09-14 10:55 ?1549次閱讀

    Verilog狀態(tài)機(jī)的類型

    有限狀態(tài)機(jī)(Finite-State Machine,F(xiàn)SM),簡稱狀態(tài)機(jī),是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間的轉(zhuǎn)移和動作等行為的數(shù)學(xué)模型。
    的頭像 發(fā)表于 06-01 15:23 ?1882次閱讀
    Verilog<b class='flag-5'>狀態(tài)機(jī)</b>的類型

    如何生成狀態(tài)機(jī)框架

    生成狀態(tài)機(jī)框架 使用FSME不僅能夠進(jìn)行可視化的狀態(tài)機(jī)建模,更重要的是它還可以根據(jù)得到的模型自動生成用C++或者Python實(shí)現(xiàn)的狀態(tài)機(jī)框架。首先在FSME界面左邊的樹形列表中選擇"R
    的頭像 發(fā)表于 09-13 16:54 ?991次閱讀
    如何生成<b class='flag-5'>狀態(tài)機(jī)</b>框架

    什么是狀態(tài)機(jī)?狀態(tài)機(jī)的種類與實(shí)現(xiàn)

    狀態(tài)機(jī),又稱有限狀態(tài)機(jī)(Finite State Machine,F(xiàn)SM)或米利狀態(tài)機(jī)(Mealy Machine),是一種描述系統(tǒng)狀態(tài)變化的模型
    的頭像 發(fā)表于 10-19 10:27 ?9576次閱讀