精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

構建MBD仿真模型和狀態機

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

1 模型仿真與實際應用之間的區別

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

仿真模型與實際應用之間的區別本質上是理論實踐之間的差別,其中的差別可以說是兩個完全不同的話題

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

這三篇應用筆記分別是:

  • 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電機控制應用筆記 * - From autoMBD

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

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

無感控制比有感控制要復雜,將無感的方案稍加改造就可以做出有感的控制方案,所以這三篇應用筆記是很有實踐參考價值的。

這三篇應用筆記給的都是 純代碼開發的方案 ,即介紹了工程實踐中如何從數學原理一步一步實現電機控制,主要內容包括:

  1. 電機控制數學原理
  2. 電流、電壓采樣輸入和驅動輸出
  3. MCU模塊資源的使用
  4. 底層驅動配置和初始化
  5. 電機控制軟件架構(狀態機、電機控制庫、MCAT等)

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

圖片

*NXP電機控制軟硬件框圖 * - From NXP

從這五點我們就能引出我們要討論的問題: 模型仿真與實際應用之間的區別到底有哪些

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

所以,在袁雷的《現代永磁同步電機控制原理及MATLAB仿真》中是完全不包括第2~5點的內容的。

電流采樣電阻為例,實際應用場景中,為了測量電流信號的方向,一般會對采樣電阻進行偏置處理。NXP開發的DEVKIT驅動板相電流采樣電阻為例,其電路設計如下圖所示:

圖片

*DEVKIT驅動板相電流采樣電阻 * - From NXP

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

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

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

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

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

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

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

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

圖片

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

Tips :因為我們要使用MBD的開發方法,所以這里不再深入詳細展開講其他的區別,以后有需要的地方再做提示,有興趣的讀者可以自行參閱上述三篇NXP的應用筆記。

當我們了解了所有理論實踐之間的區別,輔以嵌入式開發和編程的基礎,一個簡單的電機控制項目就可以實現。

即使是一個產品級的電機控制軟件,也只是再補充通信、故障診斷、功能安全等其他需求的功能。復雜度可能會高很多,但開發和設計的本質框架就是這樣的。

2 MBD拉近模型仿真****與實際應用之間的距離

如果要更加嚴謹地說,上面討論的也只是電機控制算法部分的工程實踐。一個完整的產品應用,硬件設計軟件設計 。硬件設計可以交給硬件工程師,我們把重點放在軟件設計上。

上面三篇應用筆記中提到的電機控制實現方案,是屬于軟件設計的一部分。傳統的開發中,就需要將選定的電機控制方案 轉化為一行行的代碼 ,這就又涉及到數學(理論)到編程語言(實踐)之間的轉換。入門門檻高,同時效率也較低。

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

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

圖片

*MBD的開發流程 * - From ST

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

圖片

*電機軟硬件層級示例 * - From autoMBD

下面是這五類軟件關于MBD建模實現的分析:

  • 底層驅動 ,MCU、硬件電路強相關

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

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

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

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

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

這一過程是可以通過建模的方式實現,并且信號處理越復雜,模型的優勢就更明顯,畢竟模型很容易搭建,代碼寫起來就很費勁了。

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

  • 電機控制算法 ,硬件電路弱相關

數據信號處理后,將得到的數據傳遞到電機控制算法中。控制算法中一般包括坐標變換、PI控制器、FOC、SVPWM等環節。電機控制算法會得到一個控制輸出量,一般是三相的占空比。

這些環節使用Simulink內置的模塊,或者使用芯片廠商提供的MBD硬件支持包,是可以很方便快捷的實現的。這部分如果要編寫代碼,對初學者來說,甚至對有一定編程基礎的人來說,都算是不小的挑戰。

此外建模可以很方便地調整控制算法的結構,開發初期這是很常見的。手寫代碼的話,每一次調整結構就需要重復工作一遍,效率很低。

因此電機控制算法部分是很適合通過建模生成代碼來實現的。

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

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

  • 狀態機 ,與硬件電路無關

狀態機是與硬件電路完全無關的,而且在Simulink中提供的****Stateflow是專門用于狀態控制建模的工具 ,用它開發狀態機效率可以提高一個檔次。所以狀態機使用MBD來實現也是毫無問題的。

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

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

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

圖片

*V型開發流程 * - From ST

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 狀態機
    +關注

    關注

    2

    文章

    492

    瀏覽量

    27486
  • PMSM
    +關注

    關注

    14

    文章

    246

    瀏覽量

    41832
  • BLDC電機
    +關注

    關注

    7

    文章

    211

    瀏覽量

    21447
  • MBD
    MBD
    +關注

    關注

    0

    文章

    24

    瀏覽量

    8941
  • FOC算法
    +關注

    關注

    1

    文章

    17

    瀏覽量

    9657
收藏 人收藏

    評論

    相關推薦

    SaberRD狀態機建模工具介紹(一)什么是狀態機建模

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

    Verilog狀態機+設計實例

    的是有限狀態機(Finite-State Machine,FSM),簡稱為狀態機,表示在有限個狀態以及這些狀態之間的轉移和動作等行為的數學模型
    的頭像 發表于 02-12 19:07 ?3857次閱讀
    Verilog<b class='flag-5'>狀態機</b>+設計實例

    基于有限狀態機的虛擬訓練過程模型研究

    通過一個基于操作規程的虛擬訓練系統研究了系統仿真流程,分析了有限狀態機(FSM)的原理,結合虛擬仿真訓練的特點,設計出了操作過程模型,并通過Windows 消息機制編程實
    發表于 12-07 14:23 ?14次下載

    狀態機舉例

    狀態機舉例 你可以指定狀態寄存器和狀態機狀態。以下是一個有四種狀態的普通狀態機。 // Th
    發表于 03-28 15:18 ?977次閱讀

    狀態機代碼生成工具

    狀態機代碼生成工具狀態機代碼生成工具狀態機代碼生成工具狀態機代碼生成工具
    發表于 11-19 15:12 ?9次下載

    狀態機原理及用法

    狀態機原理及用法狀態機原理及用法狀態機原理及用法
    發表于 03-15 15:25 ?0次下載

    狀態機概述 如何理解狀態機

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

    FPGA:狀態機簡述

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

    使用獨立于內核的外設構建硬件狀態機

    狀態機是邏輯單元、存儲器單元和反饋的組合。狀態機的輸入與狀態機的當前狀態組合在一起,確定下一個狀態。當出現
    發表于 03-30 15:58 ?7次下載
    使用獨立于內核的外設<b class='flag-5'>構建</b>硬件<b class='flag-5'>狀態機</b>

    什么是狀態機狀態機5要素

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

    狀態模式(狀態機)

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

    如何構建基于狀態機的軟件系統

    模式(Design Pattern)。本文介紹如何構建基于狀態機的軟件系統,以及如何利用Linux下的工具來自動生成實用的狀態機框架。
    的頭像 發表于 09-14 10:55 ?1514次閱讀

    Verilog狀態機的類型

    有限狀態機(Finite-State Machine,FSM),簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學模型
    的頭像 發表于 06-01 15:23 ?1791次閱讀
    Verilog<b class='flag-5'>狀態機</b>的類型

    如何生成狀態機框架

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

    什么是狀態機狀態機的種類與實現

    狀態機,又稱有限狀態機(Finite State Machine,FSM)或米利狀態機(Mealy Machine),是一種描述系統狀態變化的模型
    的頭像 發表于 10-19 10:27 ?9054次閱讀