【導讀】模型驅動(dòng)開(kāi)發(fā)已被業(yè)界采用,作為快速原型設計和縮短上市時(shí)間的解決方案。但是,在最終實(shí)現階段通常必須投入大量時(shí)間和精力,以使產(chǎn)品的性能與模型的性能相匹配。
模型驅動(dòng)開(kāi)發(fā)已被業(yè)界采用,作為快速原型設計和縮短上市時(shí)間的解決方案。但是,在最終實(shí)現階段通常必須投入大量時(shí)間和精力,以使產(chǎn)品的性能與模型的性能相匹配。因此,模型驅動(dòng)開(kāi)發(fā)的全部潛力在實(shí)踐中并未實(shí)現。在本文中,我們將討論如何在模型開(kāi)發(fā)過(guò)程中遵循一些準則和技術(shù)來(lái)解決這一差距。我們還介紹了如何從模型中生成有效的代碼,以縮短產(chǎn)品的上市時(shí)間。
介紹
分布式能源(如并網(wǎng)太陽(yáng)能逆變器)的滲透深度不斷提高,導致電力轉換社區為這些市場(chǎng)尋找更好、更高效和具有成本效益的解決方案。文獻中有許多算法和拓撲可以提高功率轉換過(guò)程的輸出質(zhì)量和效率。芯片供應商正在推出具有功能和硬件支持的新控制處理器,以有效地實(shí)現這些算法。構建完整逆變器的硬件原型并在各種條件下試驗其性能是非常昂貴的。此外,在實(shí)驗過(guò)程中算法的任何故障都可能損壞整個(gè)系統。這些市場(chǎng)中的產(chǎn)品還需要滿(mǎn)足相關(guān)的安全標準。因此,電源轉換行業(yè)在將這些創(chuàng )新技術(shù)應用于最終產(chǎn)品方面一直很慢。
模型驅動(dòng)開(kāi)發(fā)已被采用作為此問(wèn)題的解決方案。在模型驅動(dòng)開(kāi)發(fā)中,在生成硬件原型之前構建和仿真系統的完整模型。這驗證了算法功能并顯著(zhù)降低了風(fēng)險。此外,當前的建模工具支持直接從模型生成代碼,從而簡(jiǎn)化和放寬安全認證標準。然而,業(yè)界尚未接受完整的模型驅動(dòng)開(kāi)發(fā),主要是因為1)最終產(chǎn)品和模型的性能差異很大,2)生成的代碼對于目標控制處理器來(lái)說(shuō)效率不高,需要手動(dòng)修改才能將其帶到產(chǎn)品中。
在本文中,我們將討論可以使模型性能非常接近最終產(chǎn)品性能的技術(shù)和方法,以最大程度地降低硬件更改和延遲的風(fēng)險。我們還討論了如何從這些模型中有效地生成代碼,以使產(chǎn)品更快地進(jìn)入市場(chǎng)。
模型開(kāi)發(fā)指南
模型驅動(dòng)開(kāi)發(fā)
考慮并網(wǎng)住宅太陽(yáng)能逆變器的簡(jiǎn)化圖,如圖1所示。太陽(yáng)能電池板上的太陽(yáng)輻射產(chǎn)生與輻射強度成比例的直流電。轉換器將這種直流電轉換為交流電,可用于家用電器,也可以饋送到電網(wǎng)。來(lái)自信號鏈中各個(gè)點(diǎn)的電流和電壓由適當的傳感器檢測,并將饋送到逆變器中的控制處理器。在控制處理器上運行的算法分析這些信號并控制功率模塊,使產(chǎn)生的電流和電壓達到電網(wǎng)所需的頻率、幅度和相位。在這種情況下,太陽(yáng)能電池板充當電源,電網(wǎng)和家用電器充當水槽。在不同的電源轉換系統中,源和灌電流會(huì )有所不同,但大多數將落入圖2所示的結構中。
圖1.太陽(yáng)能逆變器系統。
圖2.電源轉換組件。
電源轉換系統/算法設計人員的主要目的是為模塊的控制處理器和轉換器硬件(如圖2所示)找到合適的組件和算法,并滿(mǎn)足所有源極和負載變化所需的性能。因此,在設計系統時(shí),清楚地了解系統將要運行的環(huán)境非常重要。例如,在為系統設計太陽(yáng)能逆變器時(shí)(如圖1所示),設計人員應該知道逆變器的預期安裝位置、太陽(yáng)輻射強度的變化、太陽(yáng)能電池板的效率、電網(wǎng)條件等。在模型驅動(dòng)開(kāi)發(fā)中,設計人員首先創(chuàng )建轉換器的模型,模擬預期的變化,并驗證模型是否按預期工作。大多數情況下,建模工具將提供用于對源和匯進(jìn)行建模的模型和庫塊。例如,Simscape Power Systems?來(lái)自 Mathworks 有網(wǎng)格、光伏 (PV) 面板和各種負載的模型。這些可用于模擬和驗證系統的各種用例。
系統性能取決于系統的所有組件。在某些情況下,設計人員可以自由地從頭開(kāi)始設計,并決定系統的所有組件,以滿(mǎn)足對源和負載的限制。在其他一些情況下,由于設計人員無(wú)法控制的原因,系統的一部分可能已經(jīng)修復,并且他們的自由度僅限于少數組件。在本文中,我們假設設計人員的主要目的是為現有拓撲選擇和實(shí)現正確的控制算法,但所解釋的大多數準則也可以應用于一般情況。
構建模型
使用正確的接口以模塊化方式構建模型非常重要。結構良好的模型有助于快速分析和調整模型以適應各種用例。建模工具通常提供各種選項,以在適當的抽象級別對組件進(jìn)行分組并重用。例如,Simulink 具有創(chuàng )建子系統、庫模型或參考模型的規定??紤]圖2所示的電源轉換系統。圖 3 給出了 Simulink 模型的頂層視圖作為示例。在此圖中,電源轉換器和控制處理器封裝在標記為ADIInverter的子系統中。Simscape Power Systems 提供的太陽(yáng)能電池板和電網(wǎng)模型用于對電源進(jìn)行建模,并配置強度和溫度。圖中的ADIInverter子系統可以進(jìn)一步分層劃分為控制處理器和控制算法模塊。
圖3.示例 Simulink 模型。
除控制處理器上運行的控制算法之外的所有塊都是硬件塊。因此,反映這些組件的所有約束的仿真精度是最重要的標準。
這些模塊的接口是模擬信號,最合適的選擇是連續模型。塊控制算法用于在微控制器上運行,應僅使用離散狀態(tài)和固定步長(cháng)。最好將其保留為具有不同配置和求解器設置的單獨模型,并從頂級模型中引用該模型。這也將有助于算法的代碼生成和處理器在環(huán)(PIL) 測試,如下文所述。
求解器步長(cháng)和數據類(lèi)型
仿真的速度和精度主要取決于求解器的類(lèi)型和步長(cháng)。較小的步長(cháng)將提供更準確的結果,但會(huì )使模擬運行速度變慢。我們希望以最大的精度模擬硬件組件。在大多數情況下,具有可變步長(cháng)的連續求解器應該可以工作。但是,當開(kāi)關(guān)頻率較高時(shí),可能需要手動(dòng)調整最大步長(cháng)。例如,如果步長(cháng)較大,開(kāi)關(guān)頻率為100 kHz(如圖4a所示)下的PWM產(chǎn)生可能會(huì )失真(如圖4b所示)。檢查快速開(kāi)關(guān)器件的輸出以確認步長(cháng)是否足夠始終是一個(gè)好主意。由于控制算法在微控制器上運行,因此應使用具有固定步長(cháng)的離散模型。使用的步長(cháng)應該是系統中使用的采樣周期的最大公約數(GCD)。大多數情況下,建模軟件會(huì )自動(dòng)選擇它。
(a). 具有正確步長(cháng)的輸出。
(b). 大步長(cháng)輸出。
圖4.100 kHz 的模擬 PWM 輸出。
使用的數據類(lèi)型也決定了模擬的準確性。使用雙精度算術(shù)的模擬始終比使用單精度算法的模擬更準確。對于仿真硬件塊,建議使用建模軟件支持的最高數據類(lèi)型。但是對于控制算法,我們希望獲得與在控制處理器上運行相同的算法的性能,而不是更準確。因此,我們應該使用控制處理器支持的數據類(lèi)型。例如,如果控制處理器是ADI公司的ADSP-CM41x處理器,則適當的數據類(lèi)型是單精度浮點(diǎn)數,因為它帶有帶有浮點(diǎn)單元(FPU)的Cortex-M4處理器。如果控制處理器是定點(diǎn)處理器,例如 Cortex-M3,則應以定點(diǎn)數據類(lèi)型設計和實(shí)現算法。建模軟件可能支持從浮點(diǎn)數據類(lèi)型到定點(diǎn)的自動(dòng)轉換,這將有助于加快開(kāi)發(fā)速度。?
采樣周期和精度
傳感器在功率轉換信號鏈中各個(gè)點(diǎn)感測的電流和電壓信號通過(guò)控制處理器的模數轉換器(ADC)提供給算法。ADC的采樣速率主要取決于功率模塊的開(kāi)關(guān)頻率以及應控制的速度。采樣頻率對控制算法的性能和動(dòng)態(tài)有顯著(zhù)影響。因此,仿真應通過(guò)為系統選擇合適的采樣率來(lái)完成。用于控制處理器的ADC僅接受預定義范圍內的輸入。傳感器的輸出應歸一化,使檢測信號的范圍完全適合ADC的范圍,以獲得最佳性能。
ADC的分辨率和精度也因處理器而異,這對算法性能起著(zhù)重要作用。高精度ADC有助于更好地控制輸出,并有助于簡(jiǎn)化算法并降低指定控制標準的控制頻率。為了獲得準確的仿真,這些特征應反映在模型中。例如,ADI公司的ADSP-CM41x處理器配備有效位數(ENOB)以上的16位ADC。ADC模塊的建模應使其以所需的采樣頻率和精度將連續信號作為輸入和輸出離散信號。如果ADC模型支持選擇在某些當前采樣場(chǎng)景中很重要的采樣點(diǎn),則可以進(jìn)一步提高仿真精度。
代碼生成
通過(guò)開(kāi)發(fā)模型和運行用例模擬來(lái)驗證算法的性能,可顯著(zhù)降低風(fēng)險并縮短上市時(shí)間。但是,當前的建模工具提供了在我們進(jìn)入硬件原型之前執行更多操作的功能。所有芯片供應商都提供評估平臺,用于在其處理器上開(kāi)發(fā)算法。如果我們可以在評估硬件上運行并驗證算法性能,這將為算法的性能提供額外的信心,但嵌入式處理器的編譯器通常只接受C / C++代碼,并且在建模和驗證階段手動(dòng)開(kāi)發(fā)這些代碼通常非常耗時(shí)。所以在過(guò)去,這個(gè)階段被推到了發(fā)展的后期。幸運的是,大多數建模軟件現在都支持從模型自動(dòng)生成代碼??梢詫⒖刂扑惴ǖ哪P团渲脼槭褂妙A定義的 API 生成代碼。仿真工具還提供 PIL 選項,用于直接從建模環(huán)境在目標上運行生成的代碼。在PIL仿真中,控制算法的輸入和輸出通過(guò)UART等接口與評估板交換。此選項可用于比較在目標上運行算法和在主機上運行算法的性能。
通常,建模和仿真軟件支持生成 C 代碼,面向更廣泛的處理器。硬件供應商將在處理器上具有差異化功能,以加快處理器設計的應用程序的執行速度。例如,ADSP-CM41x處理器帶有數學(xué)單元加速器,可加快正弦、余弦和平方根等數學(xué)運算。利用這些功能以獲得最佳處理器性能非常重要。建模工具提供將部分代碼替換為自定義代碼或將整個(gè)算法塊替換為其他代碼的功能。對于功率轉換算法,可以通過(guò)為常見(jiàn)算法模塊(如直接正交零點(diǎn)(DQZ)變換、鎖相環(huán)(PLL)等)提供手寫(xiě)優(yōu)化例程來(lái)生成優(yōu)化代碼。代碼生成可以配置為使用這些手寫(xiě)例程,而不是默認的泛型例程。芯片供應商可以提供模型庫,以加快算法在其處理器上的執行速度??梢岳眠@些選項為控制處理器生成優(yōu)化的代碼。
除了控制算法代碼外,控制處理器還需要用于配置外設(如ADC、PWM等)的代碼,以及用于維護系統時(shí)序和其他功能的框架代碼。建模工具也可用于生成這些代碼。但是,框架代碼應該做的不僅僅是運行控制算法。為所有這些關(guān)聯(lián)任務(wù)開(kāi)發(fā)模型并從中生成代碼可能不是一種有效的方法。在這種情況下,框架和外設配置代碼可以單獨開(kāi)發(fā),并規定集成生成的控制算法代碼。
硬件在環(huán) (HIL) 仿真
電源模塊和系統的仿真通常在主機PC上運行。即使在PIL仿真中,也只有控制算法在目標控制處理器上運行。系統的所有其他部分都由主機上的建模軟件進(jìn)行仿真。由于這種模擬需要如此多的資源和執行時(shí)間,因此不可能在軟件中實(shí)時(shí)運行這些資源和時(shí)間。ADC和PWM的系統動(dòng)態(tài)和性能未在此類(lèi)測試中得到驗證。HIL 仿真 硬件 使用 現場(chǎng) 可 編 程 門(mén) 列 (FPGA) 來(lái) 仿真 轉換 器 組 件、 源 極和 吸收 器 , 從而 克服 了 這一 缺點(diǎn)。它有助于實(shí)時(shí)運行整個(gè)仿真,并查看ADC采樣和PWM控制的實(shí)際效果。HIL 硬件 通常 由 不同 的 供應 商 提供, 并提供 接口 控制 處理 器。應該注意的是,HIL平臺無(wú)法模擬電源模塊的詳細開(kāi)關(guān)特性。應單獨分析這些影響,以在將其帶入最終產(chǎn)品時(shí)將風(fēng)險降至最低。
結論
近年來(lái),建模工具有了很大的改進(jìn)。在本文中,我們討論了使模型輸出非常接近最終產(chǎn)品輸出的各種方法。但是,應該注意的是,有些特性(例如電磁兼容性(EMC))無(wú)法在仿真環(huán)境中進(jìn)行驗證。識別這些特征并通過(guò)替代方法進(jìn)行分析和驗證非常重要。
本文中介紹的步驟(HIL級除外)已成功用于設計和開(kāi)發(fā)針對ADSP-CM41x處理器的控制算法,用于具有3電平ANPC拓撲的逆變器。
(作者:Bijesh Poyil and Martin Murnane)
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問(wèn)題,請聯(lián)系小編進(jìn)行處理。
推薦閱讀:
開(kāi)關(guān)電源環(huán)路穩定性分析(六)
基于硅納米波導倏逝場(chǎng)耦合的超緊湊光學(xué)式MEMS加速度計
“感知未來(lái)”——艾邁斯歐司朗參展2023 CES,以最新的先進(jìn)光學(xué)技術(shù)幫助應對全球挑戰
單芯片生物醫學(xué)模擬前端系列用于可穿戴市場(chǎng)