<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的高速HIL仿真器實現(xiàn)電機控制器測試

          基于FPGA的高速HIL仿真器實現(xiàn)電機控制器測試

          作者: 時間:2010-05-04 來源:網(wǎng)絡(luò) 收藏

            當(dāng)時,上面一個電力電子器件的門極控制信號為高, 下面的器件的控制信號為低

            當(dāng)時,上面一個電力電子器件的門極控制信號為低, 下面的器件的控制信號為高

            準(zhǔn)確檢測門信號的開關(guān)時刻對仿真器正確產(chǎn)生仿真信號來說非常重要。否則仿真器可能產(chǎn)生抖動、非特征諧波等不準(zhǔn)確結(jié)果,甚至變得不穩(wěn)定。下圖為PMSM電機驅(qū)動的電流波形仿真結(jié)果。

          基于FPGA的高速HIL仿真器實現(xiàn)電機控制器測試

            PWM頻率為10 kHz??梢钥吹?,50 kHz的仿真循環(huán)速率還不足以讓仿真器及時地檢測出開關(guān)時刻

            因此不能獲得精確結(jié)果。檢測結(jié)果中包含了不想要的諧波分量,使結(jié)果與期望值偏差很大。而在200 kHz的循環(huán)速率下,檢測結(jié)果就好了很多。

            為了獲得精確結(jié)果,仿真器的采樣間隔必須比控制器的PWM周期小很多。如此高循環(huán)速率的應(yīng)用使基于的方案成為理想選擇。我們的定點PMSM模型及定點BLDC模型均能在40個時鐘周期內(nèi)完成一次更新運算。

            提示:有時,期望仿真循環(huán)速率可能超過模擬了I/O所能夠達到的速率。一般此時無需更新模擬I/O(扭矩輸入、電流輸出等)來匹配仿真循環(huán)率,用戶可使用多頻編程來保持?jǐn)?shù)字I/O及仿真循環(huán)處于高速率,從而用于門信號開關(guān)時刻的精確檢測,而將模擬I/O設(shè)置于另一個循環(huán)狀態(tài),之后再通過FIFO在兩個不同頻率的循環(huán)間傳輸數(shù)據(jù)。

            設(shè)計的前提假設(shè)

            a. 電力電子器件的理想開關(guān)模型

            將電力電子器件建模為理想開關(guān),當(dāng)門信號為真(高)時,開關(guān)為理想的短路電路。當(dāng)門信號為假(低)時,開關(guān)為理想的開路電路。理想開關(guān)模型非常適用于系統(tǒng)級仿真,此時我們不關(guān)心電力電子器件的寄生效應(yīng)。此外,理想開關(guān)模型可大幅提升仿真速度。

            對于電力電子器件的熱損失,可以計算其等效電阻,并將此電阻值計入電機的總電阻。

            b. 積分方法

            電機的數(shù)學(xué)模型是一組微分方程。當(dāng)在上仿真電機驅(qū)動模型時,實際上是在FPGA上對這些微分方程進行積分。由于期望的積分步長非常的小,僅為幾微秒的量級。

            所以用戶可選擇最簡單的積分方法,如歐拉方法,此方法適用于小步長情況。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();