隔壁新婚少妇真紧真爽,超碰e日韩,av无码视屏日韩,老鸭窝手机在我

文章詳情

  1. 您現(xiàn)在的位置:首頁
  2. 資訊中心
  3. 技術(shù)資料
  4. 詳情

嵌入式微控制器的自動(dòng)代碼生成

它不僅包括功率級(jí)的設(shè)計(jì),還包括控件的開發(fā),這些控件通常在微控制器上實(shí)現(xiàn)。很少有開發(fā)人員在所有學(xué)科上都具備同樣的技能,能夠以同樣高的質(zhì)量水平設(shè)計(jì)系統(tǒng)的每個(gè)部分。像我一樣的電氣工程師通常不是受過教育的軟件開發(fā)人員。在學(xué)習(xí)期間,他們中的大多數(shù)人都用C或腳本語言開發(fā)過小型程序,但只有少數(shù)人參與過大型軟件項(xiàng)目并學(xué)會(huì)遵循結(jié)構(gòu)化編程的原則。

然而,在工作中,電氣工程師經(jīng)常被分配對(duì)嵌入式微控制器進(jìn)行編程的任務(wù),這是有充分理由的:他們?cè)谌绾慰刂齐娏﹄娮与娐贩矫鎿碛薪?jīng)驗(yàn),并且了解整個(gè)系統(tǒng)的要求。此外,他們對(duì)微控制器的片上外設(shè)(例如 PWM 發(fā)生器和模數(shù)轉(zhuǎn)換器 (ADC))有很好的了解。不利的一面是,對(duì)于典型的電氣工程師來說,當(dāng)代碼編譯沒有錯(cuò)誤、系統(tǒng)按預(yù)期運(yùn)行以及所有測(cè)試都通過時(shí),產(chǎn)品開發(fā)就完成了。特別是在當(dāng)今上市時(shí)間較短的壓力下,幾乎沒有內(nèi)在動(dòng)力去編寫可在產(chǎn)品的整個(gè)生命周期內(nèi)重用和維護(hù)的代碼。

因此,手寫的代碼庫通常缺乏模塊化、清晰的結(jié)構(gòu)和適當(dāng)?shù)奈臋n。因此,對(duì)于外部人員來說,從代碼中找出它執(zhí)行的功能變得很困難。即使是控制代碼的作者自己,在幾年后重新審視自己的代碼時(shí)也可能會(huì)摸不著頭腦,想知道他們?cè)诰帉懘a時(shí)的想法是什么。這就是為什么我們應(yīng)該支持電氣工程師所擅長的領(lǐng)域,即電子和控制設(shè)計(jì),并將軟件架構(gòu)和實(shí)現(xiàn)留給經(jīng)驗(yàn)豐富的軟件開發(fā)人員或自動(dòng)生成代碼的計(jì)算機(jī)程序。

將控件建模為框圖

繪制控制系統(tǒng)自然的方法是表示信號(hào)流的框圖。他們以清晰易懂的方式可視化底層控制概念。屬于在一起的功能單元可以封裝在子系統(tǒng)中,以隱藏復(fù)雜性并創(chuàng)建層次結(jié)構(gòu)。大多數(shù)控制系統(tǒng)仿真軟件都是基于框圖,這并不奇怪。

雖然仿真軟件 PLECS 主要是為了加速電力電子電路的仿真而開發(fā)的,但它還為控制系統(tǒng)的設(shè)計(jì)提供了廣泛的信號(hào)處理模塊集合。PLECS 庫包括連續(xù)和離散傳遞函數(shù)、不連續(xù)和非線性模塊以及坐標(biāo)變換、鎖相環(huán) (PLL) 和 PID 控制器等電力電子應(yīng)用經(jīng)常需要的元件。作為示例,圖 1 顯示了太陽能逆變器中使用的電流控制器的框圖。

圖 1. 具有諧振積分器和抗復(fù)位飽和的電流控制器

與類似工具一樣,PLECS 中設(shè)計(jì)的框圖可以轉(zhuǎn)換為等效的 C 代碼。圖 2 顯示了 PLECS 為圖 1 中的控制器生成的代碼的摘錄。生成的代碼可以在不同的目標(biāo)系統(tǒng)(例如微控制器)上編譯和執(zhí)行。從框圖模型自動(dòng)生成控制代碼,而不是僅僅使用模型進(jìn)行離線仿真并手動(dòng)實(shí)現(xiàn)代碼,具有一些顯著的優(yōu)點(diǎn):

控制工程師可以專注于功能而不是其實(shí)現(xiàn)。

不需要經(jīng)驗(yàn)豐富的嵌入式軟件開發(fā)人員。

即使在開發(fā)過程的后期也可以對(duì)模型進(jìn)行更改。

該模型本質(zhì)上提供了清晰且的文檔。

模型及其實(shí)現(xiàn)始終保持同步

我不想隱藏這樣一個(gè)事實(shí):使用模型作為定義控制代碼的基礎(chǔ)也有一些缺點(diǎn):

該模型必須包含有關(guān)數(shù)據(jù)類型、采樣率和執(zhí)行任務(wù)的額外信息。

在處理框圖時(shí),用于跟蹤更改的 Diff 工具仍處于起步階段。

用戶放棄了對(duì)實(shí)現(xiàn)細(xì)節(jié)和低級(jí)優(yōu)化的控制。

并非所有低級(jí)功能都可以通過模型組件獲得。

盡管自動(dòng)代碼生成有很多好處,但只有從一開始就加速和簡化開發(fā)過程,它才會(huì)被接受。然而,節(jié)省的時(shí)間很大程度上取決于所使用的工具鏈。在 Plexim,我們付出了巨大的努力,使使用 PLECS 和 PLECS Coder 的嵌入式代碼生成成為一種簡單直觀的體驗(yàn)。

訪問 I/O 外設(shè)

當(dāng)開始微控制器項(xiàng)目時(shí),令人頭疼的通常不是控制算法本身的實(shí)現(xiàn),而是配置和訪問微控制器的 I/O 外設(shè)。在開始在中斷驅(qū)動(dòng)的控制環(huán)路內(nèi)生成 PWM 并獲取 ADC 讀數(shù)之前,您需要學(xué)習(xí) 1000 多頁的技術(shù)手冊(cè)。新手不僅要應(yīng)對(duì)如此陡峭的學(xué)習(xí)曲線。即使您已經(jīng)了解某個(gè)微控制器系列的詳細(xì)信息,在處理另一家制造商的微控制器時(shí),您可能需要幾乎從頭開始。盡管競(jìng)爭(zhēng)制造商的微控制器可能提供類似的外設(shè),但命名約定和實(shí)現(xiàn)細(xì)節(jié)可能截然不同。

圖 2. PLECS 生成的控制器 C 代碼片段

對(duì)于涉及自動(dòng)代碼生成的高效工作流程,僅將控制算法的目標(biāo)無關(guān)部分從框圖轉(zhuǎn)換為 C 代碼并將生成的代碼導(dǎo)入特定于目標(biāo)的軟件項(xiàng)目是不夠的。這種方法仍然需要用戶編寫和維護(hù)粘合代碼來尋址特定于目標(biāo)的外設(shè),這是一項(xiàng)手動(dòng)且容易出錯(cuò)的任務(wù)。如果需要具有一步代碼生成功能的全自動(dòng)工作流程,則有關(guān)目標(biāo)外設(shè)的所有信息都必須包含在模型中。外設(shè)可以在模型中由在仿真期間充當(dāng)信號(hào)源或接收器的各個(gè)模塊來表示。在代碼生成過程中,這些模塊可以將特定于目標(biāo)的代碼注入到項(xiàng)目中,以配置相應(yīng)的外設(shè)并提供數(shù)據(jù)訪問。

圖 3. 太陽能逆變器的完整控制器模型,包括觸發(fā)器和任務(wù)管理

PLECS 中的目標(biāo)塊

對(duì)于電力電子應(yīng)用中常見的選定微控制器系列,Plexim 提供專用目標(biāo)支持包 (TSP),與 PLECS 和 PLECS 編碼器結(jié)合使用。這些 TSP 包含一個(gè)目標(biāo)塊庫,代表各個(gè)微控制器的各種片上外設(shè)。目標(biāo)塊可以通過其圓角與其他控制塊區(qū)分開。

每個(gè)目標(biāo)塊都有一個(gè)對(duì)話框,允許用戶配置相應(yīng)的硬件外設(shè)。如果是模擬輸入,用戶可以選擇 ADC 單元、輸入通道、比例、偏移和采集時(shí)間窗口。由于每次數(shù)據(jù)采集都是由事件(例如定時(shí)器)啟動(dòng)的,因此用戶還可以指定觸發(fā)源。用戶無需在配置寄存器中設(shè)置各個(gè)位,而是使用自然語言選項(xiàng)在更抽象的級(jí)別上配置外設(shè)。盡管不同微控制器系列之間的選項(xiàng)可能略有不同,并且并非所有硬件資源在每個(gè)芯片上都可用,但目標(biāo)塊提供的硬件抽象使得將模型移植到另一個(gè)微控制器變得非常容易。

PLECS 中的目標(biāo)塊不僅提供對(duì)數(shù)字和模擬輸入或輸出的直觀訪問。它們還可以組合多個(gè)外設(shè)以提供更復(fù)雜的功能,例如具有斜坡補(bǔ)償和前沿消隱的峰值電流控制。圖 3 顯示了太陽能逆變器的完整控制器模型,包括特定于目標(biāo)的外圍模塊。當(dāng)前控制器子系統(tǒng)包含圖 1 的模型。

當(dāng)查看目標(biāo)塊的底層時(shí),您會(huì)注意到兩種不同的實(shí)現(xiàn),就像在可配置子系統(tǒng)中一樣。一種實(shí)現(xiàn)是基于文本的,并包含 Lua 腳本語言的元代碼。它用于根據(jù)對(duì)話框條目生成片上外設(shè)的代碼。另一種實(shí)現(xiàn)是 PLECS 模型,它在離線仿真期間模擬硬件外設(shè)的行為。對(duì)于 ADC,離線模型由觸發(fā)采樣保持元件和量化器組成。

代碼生成子系統(tǒng)

要利用 I/O 外設(shè)的離線模型,控件必須與目標(biāo)塊一起包裝在子系統(tǒng)中。當(dāng)代表數(shù)據(jù)源的目標(biāo)模塊(例如 ADC)被放置在子系統(tǒng)中時(shí),輸入端子將被添加到子系統(tǒng)模塊。該輸入可以連接到控制子系統(tǒng)外部的信號(hào)源,例如電路模型中的測(cè)量。同樣,代表數(shù)據(jù)端點(diǎn)的目標(biāo)模塊(例如 PWM 發(fā)生器)將在子系統(tǒng)中創(chuàng)建輸出端子。該輸出可用作電源電路中半導(dǎo)體開關(guān)的柵極信號(hào)。將子系統(tǒng)中的控件分組不會(huì)對(duì)控制代碼生成產(chǎn)生不利影響,因?yàn)榭梢愿嬖V PLECS 編碼器僅為單個(gè)子系統(tǒng)生成代碼。相反,當(dāng)遵循這種方法時(shí),在將代碼部署到微控制器之前,可以使用離線仿真根據(jù)工廠模型來開發(fā)和驗(yàn)證控制系統(tǒng)。事實(shí)上,無需修改即可使用完全相同的模型進(jìn)行離線仿真和代碼生成,這確保了模型和代碼始終保持同步。圖 4 顯示了太陽能逆變器的整體電路模型,其中圖 3 中的控制器模型包含在一個(gè)子系統(tǒng)中。

基于事件的控制任務(wù)執(zhí)行 當(dāng)采用微控制器對(duì)電力電子系統(tǒng)進(jìn)行閉環(huán)控制時(shí),電流和電壓測(cè)量值的采集通常與 PWM 生成同步。同步采樣確保以盡可能低的開關(guān)諧波采集電流和電壓。在大多數(shù)數(shù)字電流控制環(huán)路中,PWM 發(fā)生器會(huì)定期觸發(fā) ADC 以對(duì)模擬測(cè)量結(jié)果進(jìn)行采樣。一旦 ADC 完成采樣量的轉(zhuǎn)換,它就會(huì)通過觸發(fā)中斷來發(fā)出新數(shù)字值存在的信號(hào)。在中斷服務(wù)程序中,使用新獲取的值計(jì)算控制算法,并將更新的占空比傳遞到 PWM 生成器。在其他配置中,

在 PLECS 中,我們引入了一種特殊的信號(hào)類型(如圖 3 中的棕色虛線所示)來定義和可視化觸發(fā)事件的傳播。為了對(duì)上述控制環(huán)進(jìn)行建模,用戶首先需要選擇 PWM 發(fā)生器應(yīng)在何種條件下發(fā)出觸發(fā)事件,例如計(jì)數(shù)器下溢或溢出。然后,將 PWM 發(fā)生器的觸發(fā)輸出連接到 ADC 模塊的觸發(fā)輸入,以控制采集時(shí)序。為了指示每次轉(zhuǎn)換完成后都調(diào)用控制任務(wù)計(jì)算,ADC 的觸發(fā)輸出終必須連接到特殊的“控制任務(wù)觸發(fā)器”塊。

多任務(wù)環(huán)境

單個(gè)控制回路通常不足以控制逆變器和驅(qū)動(dòng)系統(tǒng)。大多數(shù)情況下,您會(huì)發(fā)現(xiàn)級(jí)聯(lián)結(jié)構(gòu)具有快速的內(nèi)部電流控制環(huán)路和用于電壓或速度調(diào)節(jié)的較慢的外部環(huán)路。雖然外環(huán)的計(jì)算可能需要一些時(shí)間,但簡單電流控制任務(wù)的計(jì)算通常很快。然而,由于電流控制是高度動(dòng)態(tài)的,因此必須以更高的執(zhí)行速率來執(zhí)行。為了地利用微控制器的計(jì)算能力,這種級(jí)聯(lián)控制方案可以通過搶占式速率單調(diào)多任務(wù)處理來實(shí)現(xiàn),其中快速電流控制任務(wù)中斷較慢的外部控制環(huán)路的計(jì)算??刂颇P捅仨毞殖删哂胁煌蓸勇屎椭袛鄡?yōu)先級(jí)的多個(gè)任務(wù)。在PLECS中,這種劃分是使用每個(gè)幀都包含一組塊的幀以圖形方式執(zhí)行的。每個(gè)框架引用編碼器設(shè)置中定義的特定任務(wù)。如果您的目標(biāo)是多核處理器,您可以將各個(gè)任務(wù)分配給不同的。在圖 3 中,黃色框?qū)为?dú)的任務(wù)分配給功率點(diǎn)跟蹤器 (MPP) 和電壓調(diào)節(jié)器,它們以比控制系統(tǒng)其他部分更低的采樣率運(yùn)行。

圖 4. 太陽能逆變器的電源電路,其控件包含在代碼生成子系統(tǒng)中

要在同一任務(wù)中計(jì)算的塊不一定必須放在同一幀中。由于多個(gè)幀可以引用相同的任務(wù),因此將塊分配給不同的任務(wù)不會(huì)干擾控制系統(tǒng)的邏輯結(jié)構(gòu)。其他嵌入式代碼生成工具采用子系統(tǒng)或特殊塊來將各個(gè)任務(wù)彼此分開。然而,為了不同的目的而重復(fù)使用這些現(xiàn)有的結(jié)構(gòu)可能會(huì)令人困惑。相反,PLECS 中的任務(wù)幀讓用戶立即識(shí)別出一組共享特定于實(shí)現(xiàn)的屬性的塊。

 


色站 在线| 国产区欧美区蜜| 亚州免费色图视频| 野花社区精品视频免费| 香蕉国产综合久久集体洗澡图| 人妻交尾在线| 国产日韩欧美亚洲综合首页| 无码av永久免费专区无毒| 99久久精品国产片| 亚洲91黄色片| 久久久噜噜噜久久中文| 精品国产AⅤ一区二| 60后熟妇乱视频| 高清在线播放成人r| 国产强伦姧午夜| 亚洲综合鲁鲁久久五月天| 亚洲综合色战| 黄片免费观看一区二区| 久久精品国产日韩亚洲| 国产免费福利| 一道本超碰在线播放| 亚洲AV成人无码精品久久漂雪| 十八禁在线h| 91美女综合| 日日噜噜夜夜狠狠视频| 色欲亚洲AV无码精品天堂| 国产国语免费视频| 日韩婷婷色综合社区| 在线国内精品免费视频| 中文字幕久久久久久久| 欧美毛a级高潮| 欧亚色男女视频网| 蜜臀久久久av无码| 激情另类图区| 国产热の有码热の无码| 久久蜜桃三| 日韩毛片无码免费看| 亚洲AV无码国产精品十七八区| 久久无码av一区二区三区电影网 | 久久东京热一本之道| 韩国AV无码|